Durch Serverrestart resetten sich Accounts

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
  • Also die Accounts resetten sich ,dass heist Level,Adminlevel,Fraktion!
    stock SpielerSpeichern(playerid)
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    if(dini_Exists(Accounts) && GetPVarInt(playerid,"EG")==1)
    {

    dini_IntSet(Accounts,"Adminlevel",sSpieler[playerid][Adminlevel]);
    dini_IntSet(Accounts,"Staatsfraktion",sSpieler[playerid][Staatsfraktion]);
    dini_IntSet(Accounts,"Gang",sSpieler[playerid][Gang]);
    dini_IntSet(Accounts,"Mafia",sSpieler[playerid][Mafia]);
    }
    return 1;
    }
    stock Login(playerid,key[])
    {
    SetPVarInt(playerid,"EG",1);
    SpawnPlayer(playerid);
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    SendClientMessage(playerid,Blau,"Du hast dich erfolgreich eingeloggt!");
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast ein falsches Passwort eingegeben ,das System hat dich gekickt!");
    Kick(playerid);

    }
    return 1;
    }
    public OnGameModeExit()
    {
    for(new i = 0; i < GetMaxPlayers(); i++)


    {
    SpielerSpeichern(i);
    print("Alle Accounts wurden nach einem Serverneustart gespeichert.");
    }



    return 1;
    }

  • und wenn du ganz normal einen testbefehl machst wo du deinen account abspeichern lässt das funktioniert?
    falls das klappen sollte würde ich auch mal die schleife testen mit einem testbefehl. was sein könnte ist das ongamemodeexit erst dann aufgerufen wird wenn bereits alle variablen gelöscht sind unter anderem auch die PVars.

  • Ma ne blöde Frage, aber wenn man sich eingeloggt hat, also die Nachricht

    SendClientMessage(playerid,Blau,"Du hast dich erfolgreich eingeloggt!");


    sieht, wird doch gar nichts aus der Datei in Variablen gespeichert. Demnach wird dann auch beim ausloggen die leere Variable , bzw der Wert Null zum speichern verwendet.

  • Ja da fehlt Code:


    sSpieler[playerid][Adminlevel] = dini_GetInt(Spieler,"Adminlevel"); // grad ka wie die Funktion zum Holen eines Integer Wertes heißt. oder dini_IntGet?


    Das machst du für die übrigen Variablen auch.

  • C:\Users\Abdul\Desktop\Scripts\Selfmade.pwn(646) : error 006: must be assigned to an array


    stock Login(playerid,key[])
    {
    SetPVarInt(playerid,"EG",1);
    SpawnPlayer(playerid);
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Sname);
    sSpieler[playerid][Adminlevel] = dini_Get(Spieler,"Adminlevel"); // grad ka wie die Funktion zum Holen eines Integer Wertes heißt. oder dini_IntGet?
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    SendClientMessage(playerid,Blau,"Du hast dich erfolgreich eingeloggt!");
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast ein falsches Passwort eingegeben ,das System hat dich gekickt!");
    Kick(playerid);

    }
    return 1;
    }

  • Eh der Wert Adminlevel ist ein Integer, demnach msust du auch einen Integer aus der Datei auslesen. Die FUnktion dini_Get "holt" aber Strings.
    Ich meine die Funktion zum auslesen von Integern ist dini_GetInt oder dini_IntGet. Kannst beide ja mal ausprobieren.
    Und ich würde das ganze erst auslesen, wenn man das richtige Passwort eingegeben hat, also die Nachricht sieht, dass man eingeloggt ist.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen