Spielerdatei "zerschossen" nach einiger Zeit. Dringend Hilfe benötigt !

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Liebe Community,


    Ich habe mit meinem Server seit längerem ein Problem.
    Meine Normale .ini Datei eines Spieler sieht beispielsweise so aus:


    passwort=1234
    password=1234
    password2[SICHERUNG]=1234
    wanted=0
    skin=28
    geld=1803
    score=857
    Admin=0
    Premium=1
    status=1
    Junioradmin=0
    ip=80.253.191.54


    Nach einiger Zeit sieht das ganze aber so aus:


    geld=1803
    score=857
    Premium=1
    ip=80.253.191.89
    passwort=


    Teilweise fehlt auch manchmal der Score, oder der Geld in der .ini .
    Es ist auch schon vorgekommen, dass das ganze System einfach die userdatei leert.
    So jetzt ist auch kein passwort vorhanden.
    Das heißt niemand kann sich einloggen.
    Ich habe das System notbedürftigt schon umgeschrieben, dass man sich einloggen kann, aber keine Daten übernommen werden.
    Oder das man aus meinen Sicherungen wie "password" oder "password[SICHERUNG2]" , sofern die nach dem Userdatei "zerschuss" noch vorhanden sind,
    das passwort nach erneuter Eingabe wieder reinstellen kann.
    Nur das Funktioniert in 80% der Fälle leider nicht, und jetzt frage ich: wie kann das sein ?
    Kann es an den rechten, bzw den Schreib / Lese Rechten im Linux Server liegen ?
    Oder liegt es an irgendeinem Speicherfehler im Server ?
    Bitte um schnelle Hilfe, ich verzweifel schon länger an diesem Problem ..


    Mit Freundlichen Grüßen, Cedric

  • Ja, richtig ;).
    Einfach die Alte Normale Eingesessene Dini speicherweise ;).
    Nun denn ...
    Also ich habe mal drüber geschaut über die Speicherungsverfahren, habe aber bislang noch keine Funktion gefunden die nach belang sein könnte :S .
    Also könnte hierran (siehe unten) etwas sein ?
    Beim Disconnect, das ist ja das wichtigste ;).
    Weil mein Verfahren funktioniert so, dass ich beim Disconnect alle Daten einmal eintrage, und beim Login die Daten abfrage.
    Im Spiel allein wird nichts gespeichert. Das habe ich extra gemacht, wegen meine Serverlast, damit die niedrig bleibt.


    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
    if(fexist(accFormat) && Spieler[playerid][eingeloggt])
    {
    //dini_IntSet(accFormat,"wanted",GetPlayerWantedLevel(playerid)); //Wird zz. nicht gebraucht.
    //dini_IntSet(accFormat,"skin",GetPlayerSkin(playerid)); //Wird zz. nicht gebraucht, oder wird manuell eingetragen.
    dini_IntSet(accFormat,"geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"score",GetPlayerScore(playerid));
    if(ISPREMIUM[playerid] == 1)
    {
    dini_IntSet(accFormat,"Premium",eins);
    }
    if(ISPREMIUM[playerid] == 0)
    {
    dini_IntSet(accFormat,"Premium",null);
    }
    new pip[32];
    GetPlayerIp(playerid,pip,sizeof(pip));
    dini_Set(accFormat,"ip",pip);
    }


    Ich hab jetzt schon 3-4 Monate nicht mehr gescriptet, ist schon etwas her, aber ich entsinne mich das da mal was mit fexit; oder ähnliches war ;).
    Muss das dahinter ?


    //Edit: Auf MySQL wollte ich nicht umsteigen, weil ich dann meinen Ganzen Gamemode überarbeiten müsste :p , und dafür fehlt mir ehrlich gesagt zurzeit die Zeit zu ;)