Das hab ich gemacht, Funktioniert trotzdem noch nicht!
Wie präzise ![]()
Was funktioniert denn nicht...?!
Das hab ich gemacht, Funktioniert trotzdem noch nicht!
Wie präzise ![]()
Was funktioniert denn nicht...?!
Das hat mir leider nicht weiter geholfen.
Doch sollte es..er meint du sollst es so schreiben: http://pastebin.com/8vFRYz4s
In den meisten fällen fällt deshalb die Konstante weg.
Im Gegenteil.
Man sollte viel lieber schauen, ob man nicht doch das als Konstante nutzen könnte.
In den wenigsten Fällen ist eine Variable notwendig als Schleifen-Bedingung ![]()
mfg. ![]()
Was noch anzumerken sind die Bedinungen und wie schnell diese sind:
for(new i; i<MAX_PLAYERS; i++)
Das sieht man ja ganz häufig und das ist auch gut so, da MAX_PLAYERS eine Konstante ist.
sizeof zählt auch zu einer Konstanten, da dies ein unärer Operator ist.
new max = MAX_PLAYERS;
if(new i; i<max; i++)
Dieser Code zum Beispiel wäre erheblich langsamer, da dies keine Konstante ist.
for(new i; i<GetMaxPlayers(); i++)
Dies wäre noch langsamer, da immer wieder ein Funktionsaufruf stattfinden würde, da sollte man doch lieber mit einer Variable arbeiten:
for(new i,l=GetMaxPlayers(); i<l; i++)
//Edit:
Zitat von iFluXnew Words[] = {"Hallo", "ich", "bin", "ein", "Loop!"};
Damit man da also schneller durch Loopen kann, sollte man es konstant deklarieren:
stock const Words[][] = //ja btw das sollte 2 Dimensional sein, damit man auf die einzelnen chars zugreifen kann
{
"Hallo", "ich", "bin", "ein", "Loop!"
};
mfg. ![]()
Oder gehört da auch noch ein medic hin?
Ja ups da habe ich mich verschrieben, natürlich kommt da ein medic hin ![]()
Ich will mal eine andere Methode vorstellen.
Es geht viel leichter, viel schneller und man spart jede Menge Ressourcen ![]()
new lspd[2],medic[2];
Also, man brauch einfach nur ein Array mit 2 Feldern.
Jetzt erstellt man z.B. so die Fahrzeuge:
lspd[0] = CreateVehicle(...); //LSPD Fahrzeug (erstes Fahrzeug)
CreateVehicle(...); //LSPD Fahrzeug
CreateVehicle(...); //LSPD Fahrzeug
CreateVehicle(...); //LSPD Fahrzeug
CreateVehicle(...); //LSPD Fahrzeug
CreateVehicle(...); //LSPD Fahrzeug
lspd[1] = CreateVehicle(...); //LSPD Fahrzeug (letztes Fahrzeug)
medic[0] = CreateVehicle(...); //Medic Fahrzeug (erstes Fahrzeug)
CreateVehicle(...); //Medic Fahrzeug
CreateVehicle(...); //Medic Fahrzeug
CreateVehicle(...); //Medic Fahrzeug
CreateVehicle(...); //Medic Fahrzeug
CreateVehicle(...); //Medic Fahrzeug
medic[1] = CreateVehicle(...); //Medic Fahrzeug (letztes Fahrzeug)
Und dann einfach folgendes (man braucht nicht einmal eine Schleife!):
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(lspd[0] <= vehicleid <= lspd[1]) return SendClientMessage(playerid,-1,"Sie sitzen in einem LSPD Fahrzeug!");
else if(medic[0] <= vehicleid <= medic[1]) return SendClientMessage(playerid,-1,"Sie sitzen in einem Medic Fahrzeug!");
}
return 1;
}
Viel Spaß mit diesem System ![]()
mfg. ![]()
//Edit: Fehler
"This property doesn't exist
Das liegt an einem Filterscript und zwar gl_property ![]()
Entferne das einfach mal aus deiner server.cfg ![]()
mfg. ![]()
Könnte man das nicht auch mit einem Timestamp lösen? Beim Öffnen des Dialogs den timestamp speichern, und bei response bzw. !response einfach den Vergleich machen. Find ich persönlich eine schönere Variante.
Du solltest dir nochmal anschauen, was das Include alles macht...
und an alle anderen, danke, dass es euch gefällt ![]()
Die Pickups
Ich denke einfach mal du meinst die gelben Interior Pickups.
Schreibe dafür einfach folgendes unter OnGameModeInit:
DisableInteriorEnterExits();
mfg. ![]()
Doch weil ich alle punkte eigentlich weg haben wollte
Was denn für Punkte?!
CreatePickup(2,4,1199.1300,-920.5710,43.0292,0);
Du musst ja auch folgendes schreiben:
pickup = CreatePickup(2,4,1199.1300,-920.5710,43.0292,0);
Aber 2 Sachen dazu:
1. modelid 2 existiert in diesem Sinne nicht.
2. Ein Pickup zu erstellen und danach zu zerstören macht wenig Sinn...
Aber das mit den pickupnicht
Ein bisschen Code wäre schön, damit man dir helfen kann... ![]()
Serverinfo(
Schreib das:
SendRconCommand("gmx");
#define pickup
Nein, das ist Blödsinn.
new pickup;
pickup = CreatePickup(...); //Erstmal erstellen
DestroyPickup(pickup); //dann zerstören
mfg. ![]()
SetSpawnInfo(playerid,0,271,691.3540,-1186.2450,15.3186,57.3406,24,658,31,444,38,89985);
Das muss so lauten:
SetPlayerPos(playerid,691.3540,-1186.2450,15.3186);
mfg. ![]()
neues problem leider
Da fehlt eine Klammer unten ![]()
Mach über das return 1; eine } ![]()
mfg. ![]()
Man kann auch strcmp dafür nutzen ohne sscanf & strtok ![]()
Sieht dann so aus:
if(strcmp("/heilen", cmdtext , true) == 0)
{
if(strlen(cmdtext) < 9) return SendClientMessage(playerid,-1,"Verwendung: /heilen [spielerid]");
new pID = strval(cmdtext[8]);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Ein Spieler mit dieser ID ist nicht online!");
SetPlayerHealth(pID,100.0);
return 1;
}
mfg. ![]()
Kaliber liegt da schon richtig denke ich.
Ja...das tue ich ![]()
stock kann man nicht nur bei Funktionen anwenden, auch z.B. bei globalen Variablen:
new stock Var1;
/*
Wenn man diese nicht nutzt, kommt ja meistens ein Warning, so von wegen, Variable never used.
Aber durch stock, wird sie vom Compiler automatisch ignoriert.
So kann man unnötige Speicherverschwendung verhindern.
*/
mfg. ![]()
Bei stocks werden Warnings beim Compilen nicht angezeigt.
Quatsch!
Das Wort stock sorgt nur dafür, dass wenn die Funktion nicht aufgerufen wird, vom Compiler ignoriert wird ![]()
mfg. ![]()
Geht das nur mit MSG_BOX-Dialogen ?
Es würde theoretisch auch mit anderen gehen...aber was hätte das für einen Sinn? ![]()
und an alle anderen, vielen Dank für euer Feedback ![]()
mfg. ![]()