Gut. Hast du eine Ahnung, wodurch das kommen könnte? Was hast du bei OnPlayerConnect und OnPlayerDisconnect stehen? Irgendwas verdächtiges?
Beiträge von Ditti
-
-
Selfmade oder GF (o.ä.)?
-
FoX: du solltest nun auch die Zeilen markieren, die die Fehler verursachen.
Offtopic: Oh oh, Kaliber ist hier. Ich glaube, damit ist das Thema erledigt.
-
Wir versuchen mal, zusammen einen kick-Befehl zu erstellen.
Was soll der alles machen? So, wie ich es sehe, soll eine Nachricht an den gekickten und an alle Admins geschickt werden.
Durch das "an alle Admins" wird es durch die for-Schleife schon ressourcenfressend, wieso also nicht an alle schicken?Natürlich soll der Spieler gekickt werden, er soll aber noch sehen, warum -> erst die Kick-Msg. schicken, dann kicken.
Und es sollen nur Admins mit dem Adminlevel 5 dürfen. Wenn du das ganz oben hinschreibst, also bevor du überhaupt Variablen initialisierst, kannst du auch das Ressourcen sparen, da die Variablen nicht erstellt werden, wenn der Spieler kein Admin ist.
Sind meine Vermutungen soweit richtig?
-
sry.., aber wo füge ich diesen sscanf-code dann ein?
Edit: Habs jetzt drin, geht aber iwie nicht (Also wie mache ich das nun mit switch und das mit /spawncar Infernus zum Beispiel?)
Hier mal mein /vspawn (Farben sind hardcoded, müsstest du also dahingehend modifizieren):
/vspawn - pastebin.com -
Ich verstehe echt nicht, warum sscanf immer falsch eingesetzt wird.
Bevor du sID verwenden kannst, musst du diese via sscanf herausfinden.
//e: Hier mal mein kick-Befehl:
COMMAND:kick(playerid, params[])
{
if(GetPVarInt(playerid, "adminscore") >= 1)
{
new id, reason[128], string[128];
if(!sscanf(params, "us", id, reason))
{
format(string, sizeof(string), "Türsteher: %s wurde von %s gekickt. - Grund: %s", GetName(id), GetName(playerid), reason);
SendClientMessageToAll(COLOR_RED, string);
Kick(id);
}
else if(!sscanf(params, "u", id))
{
format(string, sizeof(string), "Türsteher: %s wurde von %s gekickt.", GetName(id), GetName(playerid));
SendClientMessageToAll(COLOR_RED, string);
Kick(id);
}
else
{
SendClientMessage(playerid,COLOR_BLUE,"/kick [ID] [Grund]");
}
}
else
{
new string[128];
format(string, sizeof(string), "Türsteher: %s wurde gekickt. - Grund: /kick? Bitch, please!", GetName(playerid));
SendClientMessageToAll(COLOR_RED, string);
Kick(playerid);
}
} -
Beim Countdownstart in einer for-Schleife prüfen, wer denn alles in der Nähe des Punktes ist und nur diesen den Countdown anzeigen.
-
Ich bau das heute mal bei mir ein und schau es mir an.
-
Dann kann man IsPlayerInAnyVehicle gleich ganz weglassen und nur GetPlayerState verwenden.
-
Du machst switch(carID), obwohl diese gar nicht gesetzt ist , die wird erst bei sscanf gesetzt.
Und als Tipp zu sscanf:
sscanf(params, "k<vehicle>ii", carID, Color1, Color2)Dann kannst du /spawncar Infernus oder /spawncar 411 schreiben und es kommt beides auf's gleiche hinaus.
-
das mit pickup hab ich auch
Nimm die Version von Sh12, die sollte laufen. -
Wenn ich den Spieler so teleportiere funktioniert es bei mir
if(!IsPlayerInAnyVehicle(playerid)) {
SetPlayerPos(playerid, pX,pY,pZ);
SetPlayerFacingAngle(playerid, pA);
} else {
SetVehiclePos(veh, pX,pY,pZ+1);
SetVehicleZAngle(veh, pA);
PutPlayerInVehicle(playerid, veh, 0);
}
So könnte aber der Beifahrer das Car jacken. -
Ich danke für's korrigieren. -
Noch als Hinweis:
sscanf muss VOR die erste Verwendung der dort festgelegten Variablen.
Also bevor du carID switchen kannst, musst du sscanf aufrufen.
Und für Vehicle-IDs/Namen kannst du den identifier "k<vehicle>" verwenden - dann ergeben "/vspawn Infernus" und /vspawn 411" das gleiche. -
Da kamen wieder meine PHP-Gewohnheiten durch.
Ersetzt mal das "and" durch "&&". Das sollte schon einiges fixen.
//e: mh, Sh12 war schneller.
-
-
Ich pflanz mich mal fix an'n Rechner und bastel was zurecht.
-
ocmd:revive(playerid, params[])
{
if(GetPVarInt(playerid, "Fraktion") == 2) //anpassen für Medics
{
new pID;
if(sscanf(params, "u", pID)) return SendClientMessage(playerid, ROT, "/revive [ID]");
SetPlayerHealth(pID, 30);
ClearAnimations(pID);
}
}Reicht das?
//e: Für den Pickup-Kram müsste ich in OnPlayerDeath rumpfuschen, macht sich aber am Handy doof.
Die Position des Medics ist jetzt hier auch noch nicht bedacht. -
switch(dini_Int(Gangzone1,"Besitzer"))
{
case 1:
{
//Code
}
case 2:
{
//Code
}
//Und so weiter
}
Und das für alle 3 Gangzonen. -
hä doch gibt es in deinem uhrsystem?
(Um es mal in deinem Stil zu schreiben)Du hast oben als Ausschnitt "dein" Uhrsystem gelistet und darin musst du jetzt rumpfuschen.