Kommentiere in deinem OnPlayerUpdate mal das hier aus:
if(IsPlayerConnected(playerid))
Geht es dann? Wenn nicht, sieht der Log gleich aus?
Dann müssten wir es morgen mal genauer debuggen.
Beiträge von Jeffry
-
-
Schreibe die Schleife so, das hatte ich übersehen:
for(new i=0; i<sizeof(tkInfo); i++) -
In welchem Zusammenhang steht das denn im Befehl?
Kannst du bitte den ganzen Befehl posten? -
Wie sieht es denn aus, wenn du alleine im Server bist (keine NPCs!) und du dich selbst bannst?
Mit einem Timer, der einmal pro Minute aufgerufen wird. Zur Zeit speicherst du den Spieler ca 50 mal pro Sekunde, das sind 3000 Speicherung pro Minute.

-
Du hast playerid 1 gebannt, aber von playerid 0 gepostet.
[21:44:22] var: Gesperrt=0
| playerid: 0Da muss playerid: 1 stehen. Und das sollten nicht viele sein, nach dem Ban.
Außerdem finde ich es immer noch schlecht, dass deine Speicherung bei OnPlayerUpdate durchgeführt wird. Sowohl deine CPU als auch deine Festplatte werden dir das nicht danken.
-
Die Verzögerung kann an allem möglichen liegen. Von der Hardware der Maschine bis zu irgendeinem Code. Das kann ich dir leider nicht sagen, da musst du nach dem Grund suchen.
Zwecks der Virtual World:
Mache es wie mit dem Interior. Lege es einfach in dem iInfo an, nach dem Interior. Dann kannst du angeben, wann welche Welt vergeben werden soll.
Beim Teleport machst du dann:
SetPlayerVirtualWorld(playerid,iInfo[i][IP_World]); -
Das liegt daran, dass ID 0 ja noch im Server ist.
Schreibe den print so:
format(var, 32, "Gesperrt=%d\n",PlayerInfo[playerid][pGesperrt]);fwrite(hFile, var);printf("var: %s | playerid: %d", var, playerid);Dann poste nur die Zeilen entsprechend der playerid die du gebannt hast. Das dürften nach dem Ban nicht all zu viele sein.
-
Sehr gut!
Jetzt fügst du nach dem hier (das ist ganz unten)
format(var, 32, "ammoslot13=%d\n", ammo[12]);fwrite(hFile, var);
Das hier ein:
format(var, 32, "lastLogin=%s\n", PlayerInfo[playerid][lastLogin]);fwrite(hFile, var); -
Oben hast du nur Fraktion stehen. Ändere
if(sSpieler[playerid][sFraktion] == fraktionsid) return 1;
Mal zu
if(sSpieler[playerid][Fraktion] == fraktionsid) return 1; -
Daran ist nichts falsch. Was steht über dieser Funktion?
Bleibt der Fehler an genau diesem Code, wenn du ihn zum Beispiel nach ganz unten in den Gamemode setzt? Oder bleibt der Fehler in der gleichen Zeilen Nummer? -
Wieso kommt der print 7 Sekunden nachdem du den Server verlassen hast??
Setze dann auch mal hier noch einen print:
SendClientMessageToAll(COLOR_LIGHTRED, string);
format(string, sizeof(string), "AdmCmd: Du wurdest von %s gebannt, Grund: %s", sendername, (result));
SendClientMessage(giveplayerid,COLOR_LIGHTRED, string);
printf("Banned: %d", giveplayerid);
PlayerInfo[giveplayerid][pGesperrt] = 1;
printf("gesperrt: %d",PlayerInfo[giveplayerid][pGesperrt]);
OnPlayerUpdate(giveplayerid);
return 1; -
Poste doch bitte mal die ganze IstSpielerInFraktion Funktion.
-
Naja, laut der Fehlermeldung hast du einen String der nicht beendet wird, also sowas:
"String bla bla
anstatt:
"String bla bla"In deinem Code findet sich das nícht, zumindest in diesen Bruchstücken.
-
Siehe ebenfalls:
http://forum.sa-mp.com/showthread.php?t=291202und:
http://forum.sa-mp.com/showthread.php?t=291722
(Achtung bei Solidfiles, teilweise sind Viren vor den Download geschaltet, auf jeden Fall prüfen!) -
Nach dem Teleport, also wenn du wieder raus geht dauert es? Das ist ja klar, es ist für 3 Sekunden gesperrt.
Das Problem mit der Welt verstehe ich nicht.
Rein => Welt 0 => Raus => Welt 1 => Rein => Welt 0 => Raus => Welt 0 => ... Ist das falsch? -
Poste bitte mal ein paar Zeilen drum herum. Der Fehler ist wahrscheinlich ein (paar) Zeilen drüber.
-
Meinst du die Preview Models?
Hier hast du einen Editor: http://forum.sa-mp.com/showthread.php?t=406833 -
format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, Grund: %s (%d-%d-%d)", giveplayerid, sendername, (result),month,day,year);
zu:
format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);Ebenso bei der anderen Nachricht.
Ändere bei OnPlayerUpdate mal:
format(var, 32, "Gesperrt=%d\n",PlayerInfo[playerid][pGesperrt]);fwrite(hFile, var);
zu:
format(var, 32, "Gesperrt=%d\n",PlayerInfo[playerid][pGesperrt]);fwrite(hFile, var);printf("var: %s", var);Was wird geprintet, wenn du den Spieler bannst?
-
Doch, so wie ich es gemacht habe bringt er was, sofern du das wieder zu 0 setzt bei OnPlayerDisconnect. Die Include ist trotzdem besser.
Poste den Befehl bitte.
-
new query[256],Name[MAX_PLAYER_NAME];
zu:
new query[512],Name[MAX_PLAYER_NAME];Dein query ist zu kurz.