Laden / Speichern Probleme - Dini

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,
    Ich habe ein Problem. Ich habe in meinen Ordner "User" mein Level auf 4 gesetzt. Aber Ingame bekomme ich nur das Level 1!


    stock SpielerSpeichern(playerid)
    {
    new Spielerdatei[500];
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    GetPlayerMoney(playerid),GetPVarInt(playerid,"Geld");
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Wanteds",GetPlayerWantedLevel(playerid));
    dini_IntSet(Spielerdatei,"Waffenschein",GetPVarInt(playerid,"Waffenschein"));
    return 1;
    }
    stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",SpielerName(playerid));
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPlayerWantedLevel(playerid,dini_Int(Spielerdatei,"Wanteds"));
    SetPVarInt(playerid,"Waffenschein",dini_Int(Spielerdatei,"Waffenschein"));
    return 1;
    }


    Grüße,
    TheBester

  • So, habe noch ein Problem :)


    Habe nun in SpielerLaden und SpielerSpeichern, noch eine Variable "Waffenschein" erstellt. Wenn ich mir dann ein Waffenschein kaufe, und ein Relog mache, bleibt es gespeichert.
    Mache ich aber ein Serverrestart von der Konsole aus, wird das nicht geladen.


    Grüße

  • Die Fraktion, und Adminlevel werden auch nicht geladen.
    Das Level allerdings schon.


    stock SpielerSpeichern(playerid)
    {
    new Spielerdatei[500];
    format(Spielerdatei,sizeof(Spielerdatei),"/User/%s.txt",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    GetPlayerMoney(playerid),GetPVarInt(playerid,"Geld");
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Wanteds",GetPlayerWantedLevel(playerid));
    dini_IntSet(Spielerdatei,"Waffenschein",GetPVarInt(playerid,"Waffenschein"));
    return 1;
    }
    stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/User/%s.txt",SpielerName(playerid));
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPlayerWantedLevel(playerid,dini_Int(Spielerdatei,"Wanteds"));
    SetPVarInt(playerid,"Waffenschein",dini_Int(Spielerdatei,"Waffenschein"));
    return 1;
    }

  • Ich würde an deiner Stelle nicht über die Konsole neustarten, da sonst meistens Daten verloren gehen. Erstelle einen Restart Befehl, lasse eine Schleife laufen, die alle Spieler speichert, die online sind und setze einen Timer, 3 Sekunden sollten reichen. Im Timer wird RconCommand GMX aufgerufen.. Falls es sich komisch anhört mit dem Timer lass es bleiben, bei mir lag es allerdings daran.. Deshalb würde ich es dir empfehlen..

    Greetz

  • Um das nochmal klarzustellen: Wenn du reloggst, wird alles gespeichert und korrekt geladen. Wenn du einen restart machst, ist alles weg, außer dem Level. Stimmt das so? Wenn nein erklär es bitte nochmal.. Ach ja: Zeig mal deinen /restart Befehl, hatte ich dir ja empfohlen und du sagtest, der geht nicht

    Greetz

  • Genau, richtig ! :)


    dcmd_restart(playerid,params[])
    {
    #pragma unused params
    if(IstSpielerAdmin(playerid,6))
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    SpielerSpeichern(i);
    }
    SetTimer("GMX",3000,0);
    SendClientMessageToAll(ROT,"AdmCmd: ServerGMX in 3 Sekunden! => Alle Spielaccounts wurden abgespeichert!");
    }
    return 1;
    }
    public GMX()
    {
    SendRconCommand("gmx");
    return 1;
    }

  • Probier es mal so:
    dcmd_restart(playerid,params[])
    {
    #pragma unused params
    if(IstSpielerAdmin(playerid,6))
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    SpielerSpeichern(i);
    }
    }
    SetTimer("GMX",3000,0);
    SendClientMessageToAll(ROT,"AdmCmd: ServerGMX in 3 Sekunden! => Alle Spielaccounts wurden abgespeichert!");
    }
    return 1;
    }
    Ansonsten wüsste ich aber gerade auch nicht, an was es liegt.. :/

    Greetz