Spielerdatei setzt sich manchmal zurück.

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 Brotfische.


    Ich habe ein sehr großes Problem.
    Und zwar habe ich jetzt schon des Öfteren gemerkt, dass bei mir oder meinem Freund die Spielerdatei resettet ist. Also alles auf 0!
    Ich arbeite mit Dini. Wenn jemand einen Codeschnipsel sehen möchte, einfach fragen. Möchte hier jetzt nicht alles posten...


    Leider habe ich noch nicht heraus bekommen, wann genau/unter welchen Bedingungen der Reset erfolgt.



    Mit freundlichen Grüßen,
    Bosei

  • Du lässt bestimmt irgendwo die Spielerdatei öffnen und beschreiben ohne die richtigen Werte auszulesen, Stock korrekt geschrieben, onplayerdisocnnect und ongamemodeexit den stock korrekt abgerufen?
    Lässt du dein LoadStock auch korrekt laden!?
    Resettet es nur beim leave eines Spielers oder beim einloggen.
    Man kann hier nur spekulieren!!

    KleineHilfe 2.0


  • stock SpielerSpeichern(playerid)
    {
    new Spielerdatei[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",Sname);
    if(dini_Exists(Spielerdatei))
    {
    dini_IntSet(Spielerdatei,"AdminLevel",sInfo[playerid][aLevel]);
    dini_IntSet(Spielerdatei,"Level",sInfo[playerid][Level]);
    dini_IntSet(Spielerdatei,"Fraktion",sInfo[playerid][Fraktion]);
    dini_IntSet(Spielerdatei,"Paytime",sInfo[playerid][Paytime]);
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Bank",sInfo[playerid][Bank]);
    dini_IntSet(Spielerdatei,"Respektpunkte",sInfo[playerid][Respektpunkte]);
    dini_IntSet(Spielerdatei,"FirstLog",sInfo[playerid][FirstLog]);
    dini_IntSet(Spielerdatei,"FrakRang",sInfo[playerid][FrakRang]);
    dini_IntSet(Spielerdatei,"Leader",sInfo[playerid][Leader]);
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",Sname);
    if(dini_Exists(Spielerdatei))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    sInfo[playerid][aLevel] = dini_Int(Spielerdatei,"AdminLevel");
    sInfo[playerid][Level] = dini_Int(Spielerdatei,"Level");
    sInfo[playerid][Fraktion] = dini_Int(Spielerdatei,"Fraktion");
    sInfo[playerid][Paytime] = dini_Int(Spielerdatei,"Paytime");
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    sInfo[playerid][Bank] = dini_Int(Spielerdatei,"Bank");
    sInfo[playerid][Respektpunkte] = dini_Int(Spielerdatei,"Respektpunkte");
    sInfo[playerid][FirstLog] = dini_Int(Spielerdatei,"FirstLog");
    sInfo[playerid][FrakRang] = dini_Int(Spielerdatei,"FrakRang");
    sInfo[playerid][Leader] = dini_Int(Spielerdatei,"Leader");
    sInfo[playerid][sLogin] = 1;
    TextDrawShowForPlayer(playerid,Forumlink);
    }
    return 1;
    }


    Die werden nur bei OnPlayerDisconnect aufgerufen.


    //edit: Kann es daran liegen, dass die nur da gespeichert werden? Bsp. bei gmx nicht? Aber irgendwie müssten die dann ja auch nicht neu laden. Von daher... ähh ich verstehs gerade nicht! ?(

    Einmal editiert, zuletzt von Bosei ()

  • Ja, wird wohl am GMX liegen. Mach "SpielerSpeichern" noch in deinen GMX-Befehl rein ( mit for-Schleife.. ), dann sollte es funktionieren.


    Also:

    //GMX Befehl:
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    SpielerSpeichern(i);
    }
    SendRconCommand("gmx");
    return 1;