Hilfe beim Register/Login System

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
  • Ich habe gerade ein Register/Login System gescriptet, dass allerdings nicht so funktioniert wie ich es mir vorgestellt habe. Also ich kann mich ohne Probleme registrieren, aber wenn ich mich dann wieder einloggen will sagt er mir falsches Passwort. Ich hoffe ihr könnt mir helfen.
    #define REGISTER 2
    #define LOGIN 3


    public OnPlayerConnect(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))
    {
    SendClientMessage(playerid,GELB,"Herzlich Willkommen zurück auf unserem Server");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden, bitte gebe nun dein Passwort ein, um dich einzuloggen","Login","Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,GELB,"Willkommen auf dem Server!");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dich zu registrieren.","Registrieren","Abbrechen");
    }
    return 1;


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])


    if(dialogid == LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,GELB,"Du hast den Loginvorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,MD5_Hash(inputtext));
    return 1;
    }
    }
    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,GELB,"Du hast den Registrierungsvorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,GELB,"Bitte gebe ein Passwort ein.");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dich zu registrieren.","Registrieren","Abbrechen");
    return 1;
    }
    Register(playerid,MD5_Hash(inputtext));
    return 1;
    }


    stock Register(playerid,key[])
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    dini_Create(Accounts);
    dini_Set(Accounts,"Passwort",key);
    SendClientMessage(playerid,GELB,"Du hast dich erfolgreich Registriert.");
    dini_IntSet(Accounts,"Fraktion",0);
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Accounts,"Passwort"),true))
    {
    SendClientMessage(playerid,GELB,"Du hast dich erfolgreich eingeloggt.");
    }
    else
    {
    SendClientMessage(playerid,GELB,"Du hast ein falsches Passwort eingegeben.");
    Kick(playerid);
    }


    return 1;
    }

  • Ich weis ja nicht wie die anderen das Sehen, aber ich denke mal das


    #define REGISTER 2
    #define LOGIN 3


    if(dialogid == LOGIN)
    if(dialogid == REGISTER)
    mit
    stock Login(playerid,key[])
    stock REGISTER(playerid,key[])
    nicht miteinander vertragen nenne die Dialogs mal um in


    Dialogid_Login oder so...


    Nur ne Vermutung.

  • Ändert leider auch nichts.
    Ich habe ja stock Register , aber der Dialog nennt sich ja REGISTER. Ich weiß nicht ob das ein Unterschied ist , aber denke ich schon.
    Wenn du verstehst was ich meine.

  • Ich weiß jetzt nicht was du mit verschlüsseln meinst. Ich vermute mal du meinst das: stock Register und stock Login.
    Dann kommen aber 2 Errors.
    Dominiks.pwn(391) : error 017: undefined symbol "Login"
    Dominiks.pwn(411) : error 017: undefined symbol "Register"

  • Print mal aus was beim Login passiert also ob die Zahlen etc gleich sind.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • print mal if(!strcmp(key,dini_Get(Accounts,"Passwort"),true)) aus ..

  • Erstell nochmal ein stock und nenn in zbs. stock LadeAccounts hier ein Beispiel.

    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }



    Und das machst du so.



    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    SetPVarInt(playerid,"loggedin",1);
    if(dini_Exists(Accounts))
    {
    SendClientMessage(playerid,GELB,"Herzlich Willkommen zurück auf unserem Server");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden, bitte gebe nun dein Passwort ein, um dich einzuloggen","Login","Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,GELB,"Willkommen auf dem Server!");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dich zu registrieren.","Registrieren","Abbrechen");
    }
    return 1;
    }


    Und wenn das nicht Hilft, mach lieber das Reg/Login system hier.


    [ SCRIPTING ] Register/Login System mit PVar


    Das ist im Fast das selbe ;)

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Goldjunge bringt nichts wenn er ein anderes System nimmt... so wird dieser Fehler nie behiben.
    Und gibt mal aus was dini_Get(Accounts,"Passwort") raushaut und dein inputtext mit MD5