Das ist auch nicht richtig so.
Poste mal den Code mit dem du die Spieler-Statistiken lädst, am besten in einem separaten Thread.
Beiträge von Jeffry
-
-
Ändere in dem Code: mysql_fetch_row zu mysql_fetch_row_format und mysql_init zu mysql_connect.
Siehe hier: http://forum.sa-mp.com/showthread.php?t=56564 -
Das ist falsch. UPDATE ändert einen Wert in der Datenbank. Du musst mit SELECT arbeiten, so wie du die Spieler-Statistiken (Geld etc...) aus der Datenbank lädst.
Bei OnPlayerDisconnect -> SavePlayer nutzt du UPDATE, du speicherst etwas. Bei OnPlayerConnect -> LoginPlayer nutzt du SELECT, du lädst etwas. -
Nein, so erstellst du ja bei jedem Connect 2xMAX_PLAYERS Textdraws.
Mach die Schleife weg und nutze anstatt TextDrawCreate: http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw
Und für die Einstellungen ebenfalls die PlayerTextdraw-Funktionen.Grapefruit:
Zeig mal, wie und wo du das sLogout aus der Datenbank lädst. -
Möglicherweise hast du das Textdraw Limit überschritten, wenn MAX_PLAYERS noch auf 500 bzw. 1000 ist, dann ist das sehr wahrscheinlich.
Erstelle PlayerTextdraws anstatt diesen globalen Textdraws, und erstelle diese bei OnPlayerConnect, zeige sie dem Spieler bei OnPlayerSpawn an und lösche sie bei OnPlayerDisconnect wieder. -
Ein Prozentzeichen musst du mit
%%
anzeigen. Nur % geht nicht. -
- Erstelle das Textdraw bei OnPlayerConnect (CreatePlayerTextDraw + Einstellungen von deinem ersten Post).
- Zeige dem Spieler das Textdraw bei OnPlayerSpawn.
- Lösche das Textdraw bei OnPlayerDisconnect.Anstatt "Money1", das du einmal geschrieben hast schreibe "Money".
-
Achso, na dann, ja. Interessante Bezeichnung für Koordinaten.

-
Im enum:
MinX,
zu:
Float:MinX,Gleich für alle anderen Floats.
Die Flaggen sind sicher keine Floats, daher cache_get_field_content_int für diese.
Anscheinend doch.
-
OnPlayerCommandText muss 0 zurück geben, damit es in den nächsten Code weiter geht.
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/Drivein", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IstErAnEinemDrivein(playerid))
{
ShowPlayerDialog(playerid,DIALOG_Essen, DIALOG_STYLE_LIST, "Willkommen im Drivein\n Bitte geben sie ihre Bestellung auf", "Cheesburger\nMcWraps\n Big Mac", "Weiter", "Schließen");
}
else
{
SendClientMessage(playerid, ROT, "Du bist an keinem Drivein !");
return 1;
}
}
return 1;
}
return 0;
}
Du hattest die beiden letzten returns vertauscht. So passt es.Für OnPlayerCommandText gilt:
return 1 -> Ende.
return 0 -> Ende des aktuellen OnPlayerCommandText, nächster Code in dem OnPlayerCommandText vorhanden ist wird genommen. -
@[LnD]JustMe.77: Das ist dann relativ kompliziert. Du benötigst eine Datei in die du alle deine Admins rein schreibst und darüber dann ausgeben lässt. Kommt jemand dazu, musst du ihn der Datei hinzufügen (fwrite) und wenn jemand das Team verlässt musst du ihn entfernen (alle Zeilen auslesen, wieder in die Datei schreiben, außer die Zeile mit entsprechendem Name).
Grapefruit:
Du setzt das wahrscheinlich nicht auf 0 zurück.
Schreibe es dann einfach so:
public OnPlayerDisconnect(playerid, reason)
{
new Float:x, Float:y, Float:z, string[80], hour, mins, sec;
SpielerInfo[playerid][sLogout] = gettime()+60;
GetPlayerPos(playerid, x, y, z);
gettime(hour, mins, sec);
new pickup = CreatePickup(1272, 2, x, y, z, -1);
format(string, sizeof(string), "*%s*\n**%d.%d.%d", SpielerInfo[playerid][sName], hour, mins, sec);
new Text3D:label = Create3DTextLabel(string, COLOR_WHITE, x, y, z, 40.0, 0, 0);
SetTimerEx("Logout", 60000, 0, "dd", _:label, pickup);
SavePlayer(playerid);
SpielerInfo[playerid][sLogout] = 0;
return 1;
}Außerdem musst du das sLogout beim Login natürlich auch aus der Datenbank laden lassen, sonst bringt es ja nichts.
-
Mit random. http://wiki.sa-mp.com/wiki/Random
Falls das nicht reicht, poste bitte aus was per Zufall etwas ausgewählt werden soll. -
https://dev.mysql.com/doc/refman/5.0/en/gone-away.html
Dein Server hat keine Verbindung (mehr) zur Datenbank.Was sagt der Log denn beim Verbindungsaufbau, wird der erfolgreich abgeschlossen, oder ist der auch fehlerhaft?
-
if(!strcmp(mysql_GetString("accounts","IP", "id",idstring2), myIP) || !strcmp(mysql_GetString("accounts","GPCI", "id",idstring2), myGPCI))
Nutze strcmp um zwei Strings zu vergleichen.
-
Hast du den Kopf von "Logout" dazu geändert?
public Logout(label, pickup)
ebenso beim forward.Das _: entfernt den Tag (also das Text3D:) und macht daraus eine Zahl.
@[LnD]JustMe.77: Oh, sorry. Hab ich nicht gesehen.
MySQL oder Dini? -
Zeile 390 war mein Fehler, die muss so aussehen:
SetTimerEx("Logout", 60000, 0, "dd", _:label, pickup);Was steht in Zeile 1171 und 1172 bei dir?
-
Ok, dann musst du mit dem Timestamp den gettime zurück gibt arbeiten.
public Logout(label, pickup)
{
DestroyPickup(pickup);
Delete3DTextLabel(Text3D:label);
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
new Float:x, Float:y, Float:z, string[80], hour, mins, sec;
SpielerInfo[playerid][sLogout] = gettime()+60;
GetPlayerPos(playerid, x, y, z);
gettime(hour, mins, sec);
new pickup = CreatePickup(1272, 2, x, y, z, -1);
format(string, sizeof(string), "*%s*\n**%d.%d.%d", SpielerInfo[playerid][sName], hour, mins, sec);
new Text3D:label = Create3DTextLabel(string, COLOR_WHITE, x, y, z, 40.0, 0, 0);
SetTimerEx("Logout", 60000, 0, "dd", _:label, pickup);
SavePlayer(playerid);
return 1;
}if(SpielerInfo[playerid][sLogout] > gettime()) return SendClientMessage(playerid, COLOR_WHITE, "Dein Logout Pickup ist noch nicht verschwunden!");
-
Ok, da du ja jetzt den Filterscript erstellt hast, müsste dieser im Ordner "filterscripts" gespeichert sein.
Öffne nun die server.cfg und trage bei "filterscripts" einfach den Name der Datei ein (Filterscript-Name). Dann startest du den Server und kannst ihn ganz normal verwenden (Befehle etc...). -
Das was du da vor hast klappt so nicht, weil die playerid nach OnPlayerDisconnect ja nicht mehr online ist, sprich nach den 60 Sekunden SavePlayer aufzurufen klappt nicht.
Wie genau willst du es denn haben?Spieler geht offline -> Pickup wird erstellt (wird nach 60 Sekunden entfernt) -> Spieler kommt online -> Falls 60 Sekunden rum kann er spawnen, ansonsten muss er warten. Ist das richtig so?
-
Hm, interessant. Hast du zufällig eine mehrzeilige Meldung mit vielen Zahlen im Compiler stehen?
Was sagt der MySQL Log, hast du da mal rein geschaut?