Alles anzeigenGuten Morgen, ich suche verzweifelt seit 2 Stunden nach dem Fehler weswegen mein Accounts nicht
laden.
Situation-Beschreibung
Ich registriere mich, drücke auf Spawn. Alles ist
da, dass Level(2), das Geld(10000), das Adminlevel(0).
Jetzt kommt das Problem. Und zwar wenn ich disconnecte
und dann wieder connecte wird nichts aus der .ini datei
durch den stock AccountLaden(playerid) ausgelesen
obwohl in der Spielerdatei in der .ini Datei
bei Geld, Level und Admin --> 2, 10000, und Admin(Level)0 steht.
Aber im Game steht alles auf 0.
Hier die Stocks/Callbacks usw...
public OnPlayerConnect(playerid){ new Spielerdatei[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); // Findet den Namen des Spielers heraus format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name); // Gibt den Pfad zu den Accounts an. if(dini_Exists(Spielerdatei)) { new regstring[128],rest[200]; format(regstring,sizeof(regstring),"%s, die Datenbank hat einen Account von dir identifiziert, logge dich bitte ein.",SpielerName(playerid)); format(rest,sizeof(rest),"%s",regstring,rest); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{FF5000}Login-Vorang auf [GSR]",rest,"Einloggen","Abbrechen"); SetPVarInt(playerid,"Eingeloggt",1); } else { new regstring1[128],regstring2[128],regstring3[128],rest[600]; format(regstring1,sizeof(regstring1),"%s, das Serverteam heißt dich willkommen. Die Datenbank hat bemerkt das du neu bist.",SpielerName(playerid)); format(regstring2,sizeof(regstring2),"Lege dir einen Account an und spiele auf dem Server. Gib bitte ein Passwort an was"); format(regstring3,sizeof(regstring3),"du dir gut merken kannst. Gebe das Passwort an niemanden weiter, sogar nicht an Admins."); format(rest,sizeof(rest),"%s\n%s\n%s",regstring1,regstring2,regstring3,rest); ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"{FF5000}Registrierungs-Vorang auf [GSR]",rest,"Register","Abbrechen"); } return 1;}
public OnPlayerDisconnect(playerid, reason){ if(GetPVarInt(playerid,"Eingeloggt") == 1) // Fragt ab ob wir Eingeloggt sind. { SpielerSpeichern(playerid); // Speichert uns wenn wir Disconnecten - Funktionen erstellen wir jetzt! } return 1;}if(dialogid == DIALOG_LOGIN) { if(response == 0) { SendClientMessage(playerid,COLOR_RED,"Du hast den Login Vorgang abgebrochen!"); Kick(playerid); return 1; } if(response == 1) { if(!strlen(inputtext)) { SendClientMessage(playerid,COLOR_GREEN,"Dein eingegebenes Passwort war nicht lang genug!"); ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Ihr Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen"); return 1; } else { Login(playerid,inputtext); return 1; } } } if(dialogid == DIALOG_REGISTER) { if(response == 0) { SendClientMessage(playerid,COLOR_RED,"Sie haben die Registrierung abgebrochen!"); Kick(playerid); // Kickt den Spieler return 1; } if(response == 1) { if(!strlen(inputtext)) { SendClientMessage(playerid,COLOR_GREEN,"Dein eingegebenes Passwort war nicht lang genug!"); new regstring1[128],regstring2[128],regstring3[128],rest[600]; format(regstring1,sizeof(regstring1),"%s, dass System hat bemerkt das du nicht eingegeben hast.",SpielerName(playerid)); format(regstring2,sizeof(regstring2),"Wenn du nichts eingibst kannst du nicht spielen. Gebe ein Passwort ein"); format(regstring3,sizeof(regstring3),"das du dir gut merken kannst. Gebe das Passwort an niemanden weiter, sogar nicht an Admins."); format(rest,sizeof(rest),"%s\n%s\n%s",regstring1,regstring2,regstring3,rest); ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{FF5000}Registrierungs-Vorang auf [GSR]",rest,"Register","Abbrechen"); return 1; } else { Register(playerid,inputtext); // Funktion wird gleich erstellt. return 1; } } } return 1;stock Register(playerid,key[]){ new Spielerdatei[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name); // dini_Create(Spielerdatei); dini_Set(Spielerdatei,"Passwort",key); dini_IntSet(Spielerdatei,"Admin",0); dini_IntSet(Spielerdatei,"Level",2); dini_IntSet(Spielerdatei,"Geld",10000); // SetPlayerScore(playerid,2); GivePlayerMoney(playerid,10000); SetPVarInt(playerid,"Eingeloggt",1); return 1;}
stock Login(playerid,key[]){ new Spielerdatei[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name); if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false)) { AccountLaden(playerid); } else { SendClientMessage(playerid,COLOR_GREEN,"Du hast ein falsches Passwort eingegeben!"); ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen"); } return 1;}
stock AccountLaden(playerid){ new Spielerdatei[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name); //Spieler[playerid][Eingeloggt] = dini_Int(Spielerdatei,"Eingeloggt");//Ausgeschlossen fürs erste Spieler[playerid][Admin] = dini_Int(Spielerdatei,"Admin"); Spieler[playerid][Level] = dini_Int(Spielerdatei,"Level"); Spieler[playerid][Geld] = dini_Int(Spielerdatei,"Geld"); SetPVarInt(playerid,"Eingeloggt",1); return 1;}
stock SpielerSpeichern(playerid){ if(GetPVarInt(playerid,"Eingeloggt") == 1) { new Spielerdatei[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name); //dini_IntSet(Spielerdatei,"Eingeloggt",Spieler[playerid][Eingeloggt]);//Ausgeschlossen fürs erste dini_IntSet(Spielerdatei,"Admin",Spieler[playerid][Admin]); dini_IntSet(Spielerdatei,"Level",Spieler[playerid][Level]); dini_IntSet(Spielerdatei,"Geld",Spieler[playerid][Geld]); } return 1;}
Übrigens, Errors habe ich keine. Aber der Fehler kommt den noch vor.
Ich hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen, Kristik47.
//Edit Zeig mal OnPlayerDisconnect bitte ich denke du hast das Spieler speichern vergessen