Accounts werden beim GMX resettet

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
  • Hey Leute,


    verstehe es nicht. Wenn ich meinen /serverrestart Befehl ausführe und danach wieder on komme, ist alles auf 0 Resettet (DINI) bis auf Geld und Level.
    Woran liegt das? Habe extra mehrere Schleifen im Script, dass auch wirklich jeder Spieler zu 100% gespeichert wird...


    LG


    MB-Tech


  • Zeig mal dein GMX Befehl

  • Hier der GMX:



    if (strcmp("/serverrestart", cmdtext, true) == 0)
    {
    if(isPlayerAnAdmin(playerid,5))
    {
    new string[128];
    SetTimer("RestartTime",5000,0);
    format(string, sizeof(string), "~r~Achtung!~n~~w~Der Server wird in 5 Sekunden neu gestartet!");
    GameTextForAll(string, 5000, 3);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Ihr Adminlevel ist zu niedrig.");
    }
    return 1;
    }


    public RestartTime()
    {
    for(new x=0;x<MAX_PLAYERS;x++)
    {
    if(IsPlayerConnected(x)==1)
    {
    SaveAccount(x);
    }
    }
    SaveFKassen();
    SendRconCommand("gmx");
    }



    //Account Speichern
    stock SaveAccount(playerid)
    {
    new name[128];
    format(name, sizeof(name), "%s",GetSpielername(playerid));
    new Account[64];
    format(Account,sizeof(Account),"/Accounts/%s.ini",name);


    dini_IntSet(Account,"Level",GetPlayerScore(playerid)); //Level speichern
    dini_IntSet(Account,"Levelpunkte",GetPVarInt(playerid,"Levelpunkte")); //Levelpunkte speichern
    dini_IntSet(Account,"Geld",GetPlayerMoney(playerid)); //Geld speichern

    if(GetPVarInt(playerid,"isPlayerSEK")==1 )
    {
    //SkinID nicht speichern
    dini_IntSet(Account,"SkinID",GetPVarInt(playerid,"SkinID")); //Alte Skin ID
    }
    else
    {
    dini_IntSet(Account,"SkinID",GetPlayerSkin(playerid)); //SkinID speichern
    }

    dini_IntSet(Account,"Wanteds",GetPlayerWantedLevel(playerid)); //Wanteds
    dini_IntSet(Account,"Adminlevel",GetPVarInt(playerid,"Adminlevel")); //Adminlevel speichern
    dini_IntSet(Account,"Premiumlevel",GetPVarInt(playerid,"Premiumlevel")); //Premiumlevel speichern
    dini_IntSet(Account,"Fraktion",GetPVarInt(playerid,"Fraktion")); //Fraktion speichern
    dini_IntSet(Account,"Rang",GetPVarInt(playerid,"Rang")); //Rang speichern
    dini_IntSet(Account,"isLeader",GetPVarInt(playerid,"isLeader")); //Leaderposten?
    dini_IntSet(Account,"Banned",GetPVarInt(playerid,"Banned")); //Gebannt ja/nein speichern
    dini_IntSet(Account,"Warns",GetPVarInt(playerid,"Warns")); //Warns
    dini_IntSet(Account,"zBan",GetPVarInt(playerid,"zBan")); //Zeitbann Zeit
    dini_IntSet(Account,"Bankkonto",GetPVarInt(playerid,"Bankkonto")); //Bankkonto Geld
    dini_IntSet(Account,"pMinute",GetPVarInt(playerid,"pMinute")); //Paydayzeit
    dini_IntSet(Account,"kMinute",GetPVarInt(playerid,"kMinute")); //Knastzeit
    dini_IntSet(Account,"Alter",GetPVarInt(playerid,"Alter")); //Alter
    dini_IntSet(Account,"HatHandy",GetPVarInt(playerid,"HatHandy")); //Handybesitz
    dini_IntSet(Account,"HandyNummer",GetPVarInt(playerid,"HandyNummer")); //Handynummer
    dini_IntSet(Account,"HandyAkku",GetPVarInt(playerid,"HandyAkku")); //Handyakku
    dini_IntSet(Account,"HandyAn",GetPVarInt(playerid,"HandyAn")); //Handystatus


    new Geschlecht[128],Herkunft[128];
    GetPVarString(playerid, "Geschlecht", Geschlecht, 128);
    GetPVarString(playerid, "Herkunft", Herkunft, 128);
    dini_Set(Account,"Geschlecht",Geschlecht); //Geschlecht
    dini_Set(Account,"Herkunft",Herkunft); //Herkunft


    //Scheine
    dini_IntSet(Account,"M",GetPVarInt(playerid,"M")); //Mofaschein
    dini_IntSet(Account,"B",GetPVarInt(playerid,"B")); //Autoschein
    dini_IntSet(Account,"A",GetPVarInt(playerid,"A")); //Motorradschein
    dini_IntSet(Account,"C",GetPVarInt(playerid,"C")); //LKW Schein
    dini_IntSet(Account,"D",GetPVarInt(playerid,"D")); //Busschein
    dini_IntSet(Account,"PPL",GetPVarInt(playerid,"PPL")); //Flugschein
    dini_IntSet(Account,"PPL-H",GetPVarInt(playerid,"PPL-H")); //Helischein
    dini_IntSet(Account,"SBF",GetPVarInt(playerid,"SBF")); //Bootsschein
    dini_IntSet(Account,"Perso",GetPVarInt(playerid,"Perso")); //Personalausweis
    dini_IntSet(Account,"ADAC",GetPVarInt(playerid,"ADAC")); //ADAC Club


    return 1;
    }



    Finde einfach keine Fehler. Mein Script ist Selfmade, 20k Zeilen bis jetzt und hat 0 Errors und 0 Warnings :/

  • Du rufst das ganze erst auf, wenn der spieler den server verlässt. Bei einem restart ist das ganze so das die spieler nicht disconnecten jedoch gehen die variabeln verloren
    du kannst beim gmx command das ganze aufrufen also eine forschleife durch die spieler machen und die account speichern also deine stock-funktion aufrufen.

  • du speicherst bei deinem restart befehl erst mal alle spieler,
    dann setzt du eine variable auf 1
    in der speichern funktion machst du eine abfrage rein, dass sie nur funktioniert, wenn die variable von oben false ist.
    dann sendest du den rcon cmd fürn gmx

  • forward Restart();


    public Restart()
    {
    SendRconCommand("gmx");
    return 1;
    }


    if(strcmp(cmd,"/restart",true)==0)
    {
    if(IsPlayerAdmin(playerid))
    {
    SetTimer("Restart",5000,0);
    for(new i=0;i <MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    SpielerSpeichern(i);
    SendClientMessage(i,GRAU,"Es werden alle Accounts vom Server gespeichert. Dies kann zu Lags führen.");
    }
    }
    }
    return 1;
    }