MySQL Speicher nix
- Marschl
- Geschlossen
- Erledigt
-
-
Fehler, denn ich am Anfang gesagt habe, wurde bestätigt.
Führe mal den Query aus:SQLUPDATE user SET Age=0, Geschlecht=0, AdminLevel=0, Mapper=0, Scripter=0, Premium=0, Level=0, Respektpunkte=0, BarGeld=0, BankKonto=0, BankGeld=0,Skin=0, Fraktion=0, FraktionRang=0, Spawn=0, Handy=0, Handynummer=0, PayDay=0, Spielzeit=0, Jail=0, JailTime=0, Prison=0, PrisonCheckpoints=0 WHERE id=3
Ergebnis bitte.
-
In der datenbank oder im Script?
-
Datenbank. Was Du als letztes gemacht hast.
-
-
Existiert überhaupt eine Datensatz mit der ID 0?
-
In der Änderung sind 0 Datensätze betroffen, sprich die WHERE Bedingung passt nicht.
Das Query ist korrekt.
Poste bitte den Screenshot der Daten aus der Tabelle, also das wo du den Name und das Passwort siehst.
-
Du meinst den User? mit der ID 0
-
-
-
Also der User ist da:
http://prntscr.com/a2963z -
Oh man, im Feld ID steht doch 0. Es kann ja nicht funktionieren. Du willst den Datensatz mit der ID 3 updaten, der existiert aber nicht...
-
Poste bitte die Funktion mit der du den Spieler einloggst, sprich die Daten lädst.
-
Mein SpielerLaden
Code
Alles anzeigenstock SpielerLaden(playerid) { sInfo[playerid][pID] = cache_get_field_content_int(0, "id", Handle); sInfo[playerid][pEingeloggt] = 1; sInfo[playerid][pAge] = cache_get_field_content_int(0,"Age",Handle); sInfo[playerid][pSex] = cache_get_field_content_int(0,"Geschlecht",Handle); sInfo[playerid][pAdminLevel] = cache_get_field_content_int(0,"AdminLevel",Handle); sInfo[playerid][pMapper] = cache_get_field_content_int(0,"Mapper",Handle); sInfo[playerid][pScripter] = cache_get_field_content_int(0,"Scripter",Handle); sInfo[playerid][pPremium] = cache_get_field_content_int(0,"Premium",Handle); sInfo[playerid][pLevel] = cache_get_field_content_int(0,"Level",Handle); SetPlayerScore(playerid, sInfo[playerid][pLevel]); sInfo[playerid][pRespektpunkte] = cache_get_field_content_int(0,"Respektpunkte",Handle); sInfo[playerid][pBarGeld] = cache_get_field_content_int(0,"BarGeld",Handle); ResetPlayerMoney(playerid); GivePlayerMoney(playerid, sInfo[playerid][pBarGeld]); sInfo[playerid][pBankKonto] = cache_get_field_content_int(0,"BankKonto",Handle); sInfo[playerid][pBankGeld] = cache_get_field_content_int(0,"BankGeld",Handle); sInfo[playerid][pSkin] = cache_get_field_content_int(0,"Skin",Handle); SetPlayerSkin(playerid, sInfo[playerid][pSkin]); sInfo[playerid][pFraktion] = cache_get_field_content_int(0,"Fraktion",Handle); sInfo[playerid][pFraktionRang] = cache_get_field_content_int(0,"FraktionRang",Handle); sInfo[playerid][pSpawn] = cache_get_field_content_int(0,"Spawn",Handle); sInfo[playerid][pHandy] = cache_get_field_content_int(0,"Handy",Handle); sInfo[playerid][pHandynummer] = cache_get_field_content_int(0,"Handynummer",Handle); sInfo[playerid][pPayDay] = cache_get_field_content_int(0,"PayDay",Handle); sInfo[playerid][pSpielzeit] = cache_get_field_content_int(0,"Spielzeit",Handle); sInfo[playerid][pJail] = cache_get_field_content_int(0,"Jail",Handle); sInfo[playerid][pJailTime] = cache_get_field_content_int(0,"JailTime",Handle); sInfo[playerid][pPrison] = cache_get_field_content_int(0,"Prison",Handle); sInfo[playerid][pPrisonCheckpoints] = cache_get_field_content_int(0,"PrisonCheckpoints",Handle); return 1; }
-
-
Wie sieht denn dein Query aus, das du beim Login abschickst?
Den stock musst du auf jeden Fall in ein public mit forward ändern.
-
Das ist die Login funktion wo ich den Player lade:
Code
Alles anzeigenforward OnPasswortResponse(playerid); public OnPasswortResponse(playerid) { new num_rows, num_fields; cache_get_data(num_rows, num_fields, Handle); if(num_rows) { //Passwort richtig SpielerLaden(playerid); SpawnPlayer(playerid); } else { //Passwort falsch SendClientMessage(playerid, -1, "Das eingegebene Passwort ist falsch!"); new str[145], name[MAX_PLAYER_NAME], ip[16]; GetPlayerName(playerid, name, MAX_PLAYER_NAME); GetPlayerIp(playerid, ip, sizeof(ip)); format(str, sizeof(str), ""#HTML_GELB"Hallo %s \n"#HTML_WEIS"Dein Account wurde gefunden! \nBitte gib nun dein Passwort ein \n Deine IP: "#HTM_GELB"%s", name, ip); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,""ServerTag"Login",str ,"Login","Abbrechen"); } return 1; }
@Jeffrydas Problem ist, dass es gar nicht gespeichert wird
Und so lade ich mein Spieler:
Code
Alles anzeigenstock SpielerLaden(playerid) { sInfo[playerid][pID] = cache_get_field_content_int(0, "id", Handle); sInfo[playerid][pEingeloggt] = 1; sInfo[playerid][pAge] = cache_get_field_content_int(0,"Age",Handle); sInfo[playerid][pSex] = cache_get_field_content_int(0,"Geschlecht",Handle); sInfo[playerid][pAdminLevel] = cache_get_field_content_int(0,"AdminLevel",Handle); sInfo[playerid][pMapper] = cache_get_field_content_int(0,"Mapper",Handle); sInfo[playerid][pScripter] = cache_get_field_content_int(0,"Scripter",Handle); sInfo[playerid][pPremium] = cache_get_field_content_int(0,"Premium",Handle); sInfo[playerid][pLevel] = cache_get_field_content_int(0,"Level",Handle); SetPlayerScore(playerid, sInfo[playerid][pLevel]); sInfo[playerid][pRespektpunkte] = cache_get_field_content_int(0,"Respektpunkte",Handle); sInfo[playerid][pBarGeld] = cache_get_field_content_int(0,"BarGeld",Handle); ResetPlayerMoney(playerid); GivePlayerMoney(playerid, sInfo[playerid][pBarGeld]); sInfo[playerid][pBankKonto] = cache_get_field_content_int(0,"BankKonto",Handle); sInfo[playerid][pBankGeld] = cache_get_field_content_int(0,"BankGeld",Handle); sInfo[playerid][pSkin] = cache_get_field_content_int(0,"Skin",Handle); SetPlayerSkin(playerid, sInfo[playerid][pSkin]); sInfo[playerid][pFraktion] = cache_get_field_content_int(0,"Fraktion",Handle); sInfo[playerid][pFraktionRang] = cache_get_field_content_int(0,"FraktionRang",Handle); sInfo[playerid][pSpawn] = cache_get_field_content_int(0,"Spawn",Handle); sInfo[playerid][pHandy] = cache_get_field_content_int(0,"Handy",Handle); sInfo[playerid][pHandynummer] = cache_get_field_content_int(0,"Handynummer",Handle); sInfo[playerid][pPayDay] = cache_get_field_content_int(0,"PayDay",Handle); sInfo[playerid][pSpielzeit] = cache_get_field_content_int(0,"Spielzeit",Handle); sInfo[playerid][pJail] = cache_get_field_content_int(0,"Jail",Handle); sInfo[playerid][pJailTime] = cache_get_field_content_int(0,"JailTime",Handle); sInfo[playerid][pPrison] = cache_get_field_content_int(0,"Prison",Handle); sInfo[playerid][pPrisonCheckpoints] = cache_get_field_content_int(0,"PrisonCheckpoints",Handle); return 1; }
-
Ah, so machst du das. Das sieht mir dann aber korrekt aus.
Was mir da eigentlich nur in den Sinn kommt ist, dass du die pID irgendwo überschreibst.Versuche es doch mal so:
stock SpielerSpeichern(playerid)
{
if(sInfo[playerid][pEingeloggt] == 0)return 1;
new query[1024], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
format(query, sizeof(query), "UPDATE user SET Age='%i', Geschlecht='%i', AdminLevel='%i', Mapper='%i', Scripter='%i', Premium='%i', Level='%i', Respektpunkte='%i', ",
sInfo[playerid][pAge], sInfo[playerid][pSex], sInfo[playerid][pAdminLevel], sInfo[playerid][pMapper], sInfo[playerid][pScripter],
sInfo[playerid][pPremium], sInfo[playerid][pLevel], sInfo[playerid][pRespektpunkte]);
format(query, sizeof(query), "%sBarGeld='%i', BankKonto='%i', BankGeld='%i',Skin='%i', Fraktion='%i', FraktionRang='%i', Spawn='%i', Handy='%i', Handynummer='%i', ",
query, GetPlayerMoney(playerid), sInfo[playerid][pBankKonto], sInfo[playerid][pBankGeld],sInfo[playerid][pSkin], sInfo[playerid][pFraktion],
sInfo[playerid][pFraktionRang], sInfo[playerid][pSpawn], sInfo[playerid][pHandy], sInfo[playerid][pHandynummer]);
format(query, sizeof(query), "%sPayDay='%i', Spielzeit='%i', Jail='%i', JailTime='%i', Prison='%i', PrisonCheckpoints='%i' WHERE username='%s'",
query, sInfo[playerid][pPayDay], sInfo[playerid][pSpielzeit], sInfo[playerid][pJail], sInfo[playerid][pJailTime],
sInfo[playerid][pPrison], sInfo[playerid][pPrisonCheckpoints], name);
mysql_function_query(Handle, query, false, "", "");
return 1;
}Dann dürfte die Bedingung auf jeden Fall korrekt sein, da über den Name zugegriffen wird.
-
Also ich habe es eingefügt,.... aber es wird nicht gespeichert. Es wird nur geladen
-
Lasse dir das Query per print ausgeben, nachdem du dir das Admin Level und das Geld hoch gesetzt hast:
print(query);Was steht dann im Server Log?
-