Spieler werden nicht richtig bei Restart gespeichert

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
  • Guten Tag,


    da ich aus Versehen meinen anderen Beitrag auf "Abgeschlossen" gestellt habe erstelle ich jetzt einen neuen Beitrag.
    Und zwar: Alle Sachen werden beim Einloggen normal geladen und bei /q auch gespeichert.
    Bei einem Serverrestart aber werden nur die Sachen gespeichert die es schon in Pawn gibt, also Geld, Fightstyle usw., aber dazugescriptete Dinge wie Bank, Adminlevel usw. werden aber immer wieder auf 0 gesetzt.
    In meinem letzten Beitrag wurde ja schon gesagt, dass ich in den Restart Befehl eine Schleife machen soll die alle Spieler durchläuft und dann speichert, dies habe ich getan, aber nach dem Restart sind die Dinge wieder auf 0 gesetzt.
    Hier mein SaveAccount stock:
    stock SaveAccount(playerid)
    {
    new name[128], save[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Spieler/%s.ini",name);
    if(dini_Exists(save))
    {
    dini_IntSet(save,"Geld",GetPlayerMoney(playerid)); // speichert das aktuelle Geld, was der Spieler zum schluss hatte
    dini_IntSet(save,"Skin",GetPlayerSkin(playerid)); // speichert den aktuellen Skin, welchne der Spieler zum schluss hatte
    dini_IntSet(save,"Bank",GetPVarInt(playerid,"Bank"));
    dini_IntSet(save,"Perso",GetPVarInt(playerid,"Perso"));
    dini_IntSet(save,"Fightstyle",GetPlayerFightingStyle(playerid));
    dini_IntSet(save,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(save,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(save,"Level",GetPlayerScore(playerid));
    }
    return 1;
    }


    Mein OnPlayerDisconnect:
    public OnPlayerDisconnect(playerid, reason)
    {
    new name[128], save[128];// Gleiche
    GetPlayerName(playerid,name,sizeof(name)); // wie
    format(save,sizeof(save),"/Spieler/%s.ini",name);// oben
    if(dini_Exists(save)) // steht
    {
    SaveAccount(playerid);
    }
    return 1;
    }


    Und mein Restart Befehl:
    if(strcmp(cmdtext, "/gmx", true) == 0)
    {
    if(IsPlayerAnAdmin(playerid,2000))
    {
    SendClientMessageToAll(COLOR_YELLOW,"[Server-Restart] Der Server wird neugestartet, wir sind gleich wieder zurück.");
    SendRconCommand("gmx");
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
    SaveAccount(i);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht das ausreichende Adminlevel.");
    }
    return 1;
    }



    Ich weiß nicht wo der Fehler liegen könnte und ich hoffe ihr wisst wie ich das Problem lösen kann.


    Mit freundlichen Grüßen,
    Mr.Cro997

  • Du musst speichern bevor du den Restart machst bzw. vor "gmx".

    Jetzt siehts so aus, funktioniert aber trotzdem nicht:
    if(strcmp(cmdtext, "/gmx", true) == 0)
    {
    if(IsPlayerAnAdmin(playerid,2000))
    {
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
    SaveAccount(i);
    }
    SendClientMessageToAll(COLOR_YELLOW,"[Server-Restart] Der Server wird neugestartet, wir sind gleich wieder zurück.");
    SendRconCommand("gmx");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht das ausreichende Adminlevel.");
    }
    return 1;
    }