Wie sieht dein Code zum speichern die Spielerstatistiken aus?
Beiträge von Jeffry
-
-
ocmd:autoparken(playerid, params[])
{
new vID = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, hellgrün, "Du bist in kein Auto!");
for (new i = 0; i < sizeof(aInfo); i++)
{
printf("i: %d | vID: %d | idx: %d", i, vID, aInfo[i][id_x]);
if(vID == aInfo[i] [id_x])
{
printf("besitzer: %s | SpielerName: %s", aInfo[i][besitzer], SpielerName(playerid));
if(!strcmp(aInfo[i][besitzer], SpielerName(playerid)))
{
printf("Passt.");
new query[256];
GetVehiclePos(vID, aInfo[i][c_x],aInfo[i][c_y],aInfo[i][c_z]);
GetVehicleZAngle(vID,aInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET c_x='%f',c_y='%f',c_z='%f',c_r='%f' WHERE id='%i'",aInfo[i] [c_x],aInfo[i] [c_y],aInfo[i] [c_z],aInfo[i] [c_r],aInfo[i] [db_id]);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, hellgrün, "Du hast dein Auto geparkt.");
return 1;
}
break;
}
}
return SendClientMessage(playerid, hellgrün, "Du sitzt nicht in deinem Auto!");
}
Was steht so im Log?Bei dem was du gepostet hast fehlt, wie du den Besitzer speicherst, also in die Variable schreibst.
-
Du benötigst dieses MySQL Plugin: http://forum.sa-mp.com/showthread.php?t=56564
Sowie das sscanf Plugin: http://forum.sa-mp.com/showthread.php?t=570927 -
Der Pawn BB Code - Die richtige Anwendung?
Am besten du erstellst einen extra Thread, da es wahrscheinlich nicht auf eine kleine Frage hinausläuft.
-
Wie schreibst du den Besitzername in aInfo[ i ][besitzer] rein?
Wie sieht deine SpielerName(playerid) Funktion aus? -
Der Fehler im MySQL Log hat nichts mit dem Speichern des Spielers zu tun, da die Spieler ID 1 ist, und im Fehler id = 2000 steht.
Das Speichern des Spielers sollte ohne Probleme gehen. -
Was steht so im Log?
ocmd:autoparken(playerid, params[])
{
new vID = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, hellgrün, "Du bist in kein Auto!");
for (new i = 0; i < sizeof(aInfo); i++)
{
printf("i: %d | vID: %d | idx: %d", i, vID, aInfo[i][id_x]);
if(vID == aInfo[i] [id_x])
{
printf("besitzer: %s | SpielerName: %s", aInfo[i][besitzer], SpielerName(playerid));
if(!strcmp(aInfo[i][besitzer], SpielerName(playerid)))
{
printf("Passt.");
new query[256];
GetVehiclePos(vID, aInfo[i][c_x],aInfo[i][c_y],aInfo[i][c_z]);
GetVehicleZAngle(vID,aInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET c_x='%f',c_y='%f',c_z='%f',c_r='%f' WHERE id='%i'",aInfo[i] [c_x],aInfo[i] [c_y],aInfo[i] [c_z],aInfo[i] [c_r],aInfo[i] [db_id]);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, hellgrün, "Du hast dein Auto geparkt.");
return 1;
}
break;
}
}
return SendClientMessage(playerid, hellgrün, "Du sitzt nicht in deinem Auto!");
} -
Was steht im Server Log, wenn du es so schreibst?
if(dialogid == DIALOG_DARKNET)
{
if(response)
{
if(listitem == 0)
{
ShowPlayerDialog(playerid,DIALOG_ILLEGALEORTE,DIALOG_STYLE_LIST,"Illegale Orte","Bank-Rob\nSchwarzmarkt\nDrogenpakete\nWaffenpakete\nGangJail\nAuto-Crusher","Wählen","Abbrechen");
}
if(listitem == 1)
{
ShowPlayerDialog(playerid,DIALOG_HITMANAUFTRAG,DIALOG_STYLE_INPUT,"Hitman.onion","Bitte den Namen des Opfers eingeben:","Okay","Abbrechen");
}
}
}
if(dialogid == DIALOG_HITMANAUFTRAG)
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_HITMANAUFTRAG2,DIALOG_STYLE_INPUT,"Hitman.onion","Kopfgeld eingeben:","Okay","Abbrechen");
SetPVarString(playerid, "OpferName", inputtext);
printf("OpferName: %s", inputtext);
}
}
if(dialogid == DIALOG_HITMANAUFTRAG2)
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_HITMANAUFTRAG3,DIALOG_STYLE_INPUT,"Hitman.onion","Fraktion des Opfers:","Okay","Abbrechen");
SetPVarString(playerid, "OpferKopfgeld", inputtext);
printf("OpferKopfgeld: %s", inputtext);
}
}
if(dialogid == DIALOG_HITMANAUFTRAG3)
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_HITMANAUFTRAG4,DIALOG_STYLE_INPUT,"Hitman.onion","Aufenthalt(e) des Opfers:","Okay","Abbrechen");
SetPVarString(playerid, "OpferFraktion", inputtext);
printf("OpferFraktion: %s", inputtext);
}
}
if(dialogid == DIALOG_HITMANAUFTRAG4)
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_HITMANAUFTRAG5,DIALOG_STYLE_INPUT,"Hitman.onion","Sonstige Informationen zum Opfer:","Okay","Abbrechen");
SetPVarString(playerid, "OpferAufenthalt", inputtext);
printf("OpferAufenthalt: %s", inputtext);
}
}
if(dialogid == DIALOG_HITMANAUFTRAG4)
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_HITMANAUFTRAG6,DIALOG_STYLE_MSGBOX,"Hitman.onion"," *- Auftrag abgeschickt -* ","Okay","Abbrechen");
SetPVarString(playerid, "OpferInfos", inputtext);
printf("OpferInfos: %s", inputtext);
new OpferName[128];
new OpferKopfgeld[128];
new OpferFraktion[128];
new OpferAufenthalt[128];
new OpferInfos[128];
GetPVarString(playerid, "OpferName", OpferName, sizeof(OpferName));
GetPVarString(playerid, "OpferKopfgeld", OpferKopfgeld, sizeof(OpferKopfgeld));
GetPVarString(playerid, "OpferFraktion", OpferFraktion, sizeof(OpferFraktion));
GetPVarString(playerid, "OpferAufenthalt", OpferAufenthalt, sizeof(OpferAufenthalt));
GetPVarString(playerid, "OpferInfos", OpferInfos, sizeof(OpferInfos));
new str[145];
format(str, sizeof(str), "{FF0000}Auftrag: Opfer: %s - Kopfgeld: %s - Fraktion: %s !", OpferName, OpferKopfgeld, OpferFraktion);
SendeFraktion(6,WEIS, str);
printf("str: %s", str);
format(str, sizeof(str), "{FF0000}Auftrag: {FFFFFF}Aufenthaltsort(e): %s", OpferAufenthalt);
SendeFraktion(6,WEIS, str);
printf("str: %s", str);
format(str, sizeof(str), "{FF0000}Auftrag: {FFFFFF}Sonstige Infos: %s", OpferInfos);
SendeFraktion(6,WEIS, str);
printf("str: %s", str);
format(str, sizeof(str), "{FF0000}Auftrag: {FFFFFF}/Accept hitman - Auftrag annehmen");
SendeFraktion(6,WEIS, str);
printf("str: %s", str);
}
} -
savePlayer(playerid)
{
if(sInfo[playerid][eingeloggt]==0)return 1;
//speichern level,money
new query[256];
format(query,sizeof(query),"UPDATE user SET level='%i', money='%i', alevel='%i', fraktion='%i', rang='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][db_id]);
printf("Query: %s", query);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
Was steht im Server Log? -
wenn ich einsteige sagt er mir fahrzeug gehört nicht ihnen
Wenn du einsteigst kann keine Nachricht kommen, da dort nichts steht.Meinst du diese Nachricht im Befehl?
SendClientMessage(playerid, hellgrün, "Du sitzt nicht in deinem Auto!"); -
TextDrawShowForPlayer(playerid, Textdraw67)
zu:
TextDrawHideForPlayer(playerid, Textdraw67)Allerdings, wenn du das so machst, wirst du Probleme bekommen, wenn mehrere Spieler online sind.
Ich rate dir, das ganze Zeug weg zu machen (oder komplett neu) und stattdessen das zu nutzen: http://forum.sa-mp.com/showthread.php?t=537468Dass der Text unter der Box ist liegt an der Reihenfolge wie die Textdraws erstellt werden.
-
new query[128];
zu:
new query[256];Beim Speichern.
-
Wie sieht der Code vom Einsteigen aus?
-
Jetzt hast du zwei Threads offen, die beide das gleiche Problem beschreiben.
Warum hast du das gemacht?Poste bitte was im Log steht, wenn du dich ausloggst.
-
-
Er hat das hier andersherum stehen:
resetPlayer(playerid);
savePlayer(playerid);
also so:
savePlayer(playerid);
resetPlayer(playerid);Das hast du vorhin nicht zurück geändert.
-
Entferne das
ladebalken[playerid]++;
welches jeweils im if-Teil steht. Du hast es über allen einmal oben stehen, das reicht. -
Es fehlt der WHERE Teil am Ende. Du sagst nicht, in welcher Zeile er es updaten soll.
-
Du musst alle SetPVarStrings um eins nach unten verschieben, da die Eingabe ja erst ausgelesen wird, wenn der Dialog ausgeführt wird, nicht wenn er angezeigt wird.
Sprich dort wo
SetPVarString(playerid, "OpferKopfgeld", inputtext);
steht kommt
SetPVarString(playerid, "OpferName", inputtext);
hin.
Und so weiter... -
Laut dem Log wurde savePlayer(playerid) gar nicht aufgerufen. Du musst den Server natürlich schon betreten und dich ausloggen.
