[LogIn-/Registersys] Ich finde den Fehler nicht!

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


    ich habe das Problem, dass mein LogIn-/Registersys "UserLevel", "Admin" und "Geld" nicht abspeichert.
    Es wird in den Ordner zwar eine .ini mit dem Accountnamen erstellt, davon wird allerdings nur das Passwort vom Account gespeichert, "UserLevel", "Admin" und "Geld" werden mit jedem relogg auf 0 zurück gesetzt.


    Hier einmal der PWN-Code, Fehlermeldungen gibt es bei mir keine.
    Ich hoffe ich habe keine Zeile vergessen.


    Ich hoffe ihr könnt mir zeigen, was ich dabei Falsch gemacht habe.


    #define DIALOG_REGISTER 2
    #define DIALOG_LOGIN 3


    enum Spielerdaten
    {
    Admin,
    Geld,
    UserLevel
    }
    new sSpieler[MAX_PLAYERS][Spielerdaten];


    public OnPlayerConnect(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt")==1)
    {
    AccountLaden(playerid);
    }
    //LogInSystem
    new Playerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    if(dini_Exists(Playerdatei))
    {
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"Login","Account gefunden, gib dein Passwort ein!","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das von dir gewünschte Passwort ein:","Register","Abbrechen");
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort ist zu kurz!");
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"Login","Account gefunden, gib dein Passwort ein!","Login","Abbrechen");
    return 1;
    }
    else
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    }
    if(dialogid == DIALOG_REGISTER)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort ist zu kurz!");
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrieren","Gib bitte das von dir gewünschte Passwort ein:","Register","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    stock Register(playerid,key[])
    {
    new Playerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    dini_Create(Playerdatei);
    dini_Set(Playerdatei,"Passwort",key);
    SendClientMessage(playerid,BLAU,"Erfolgreich registriert.");
    SetPlayerScore(playerid,0);
    dini_IntSet(Playerdatei,"Geld",0);
    dini_IntSet(Playerdatei,"UserLevel",0);
    dini_IntSet(Playerdatei,"Admin",0);
    SetPVarInt(playerid,"Eingeloggt",1);
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Playerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
    {
    AccountLaden(playerid);
    SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Dein hast ein falsches Passwort eingegeben!");
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"LogIn Vorgang","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","LogIn", "Abbrechen");
    }
    return 1;
    }


    stock AccountLaden(playerid)
    {
    new Playerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    sSpieler[playerid][UserLevel] = dini_Int(Playerdatei,"UserLevel");
    sSpieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");
    sSpieler[playerid][Geld] = dini_Int(Playerdatei,"Geld");
    SetPVarInt(playerid,"Eingeloggt",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Playerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    dini_IntSet(Playerdatei,"UserLevel", sSpieler[playerid][UserLevel]);
    dini_IntSet(Playerdatei, "Admin", sSpieler[playerid][Admin]);
    dini_IntSet(Playerdatei,"Geld", sSpieler[playerid][Geld]);
    }
    }


    stock isPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }

    DIVIDE ET IMPERA

    Einmal editiert, zuletzt von [GSD]AlphaGen ()

  • public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }


    So habe ich das schon, habe die Zeilen nur vergessen zu posten..

    DIVIDE ET IMPERA

  • bei onplayerconnect muss das Account laden weg du kannst ja den Account erst laden wen der Spieler eingeloggt ist du fragst aber ganz am Anfang schon ab ob der Spieler eingeloggt ist das kann aber nicht sein.

  • Laden: GivePlayerMoney(playerid,sSpieler[playerid][Geld]);

  • bei onplayerconnect muss das Account laden weg du kannst ja den Account erst laden wen der Spieler eingeloggt ist du fragst aber ganz am Anfang schon ab ob der Spieler eingeloggt ist das kann aber nicht sein.

    Soll das AccountLaden komplett weg, oder nur in einer anderen Zeile kommen?


    Zitat

    Laden: GivePlayerMoney(playerid,sSpieler[playerid][Geld]);


    Bitte etwas genauer?

    DIVIDE ET IMPERA