Problem mit Login Dialog

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 !
    Ich habe gerade mein "Login & Register System" Fertig , aber Ich habe ein Problem...


    Wenn Ich mich "Einloggen" will und dann "Ohne" ein Passwort einzugeben auf "Login" klicke,
    loggt er sich Trotzdem ein ....


    Dabei will Ich aber , das wenn man "Kein Passwort" eingibt eine Meldung kommt mit
    "Das Pawwort ist Falsch" und der Dialog wird neu Aufgerufen.


    Und wenn man das "Falsche" Passwort eingibt , auch wieder die Meldung kommt
    "Das Passwort ist Falsch" und der Dialog wird Neu Aufgerufen.


    Was habe Ich in diesem Stock falsch gemacht ?


    stock Login (playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    SendClientMessage(playerid,HBLAU,"Erfolg : {F0F0F0}Du hast dich eingeloggt !");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Fehler : {F0F0F0}Das Passwort ist Falsch !");
    Kick(playerid);
    }
    return 1;
    }

  • Also zuerst zum Abfragen ob der Spieler irgendetwas eingibt:


    Dazu gibts diese Funktion:


    if(!strlen(key)) // fragt ob nichts eingegeben wird
    {
    ShowPlayerDialog(playerid...); // Das ist der Dialog der dann erscheint.
    return 1; // Funktion wird beendet
    }


    Und wenn der Nutzer ein falsches Passwort eingibt musst du die Kick(playerid); Funktion rausnehmen und dafür den ShowPlayerDialog(playerid...); einfügen.



    Gruß - Lincoln.

  • Ok , und wie muss ich das Einfügen ? Könntest du mir mein
    Oben gepostetes Stock richtig machen damit das Abgfragt wird ?
    Bin noch neu.

  • so müsste es eigentlich funktionieren:


    stock Login (playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,HBLAU,"Erfolg : {F0F0F0}Du hast dich eingeloggt !");
    return 1;
    }

    else
    {
    SendClientMessage(playerid,ROT,"Fehler : {F0F0F0}Das Passwort ist Falsch !");
    ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE,"Login","Dein Account wurde gefunden. Gibt bitte das Passwort ein.","Login","Abbrechen");
    }
    return 1;
    }


    MfG


    Einmal editiert, zuletzt von nehli ()

  • Die strlen(key) - Abfrage musst du über


    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))


    einfügen. Bei den Dialogen kann ich dir nicht weiterhelfen, da ich den Gamemode nicht kenne. Also must du suchen, nach dem Befehl oder dem Dialog wo der Spieler den Dialog zum Einloggen erhält, diesen must du kopieren und für Kick(playerid); und bei der strlen(key) Funktion einfügen.


    // Nachtrag: Ups, da war wohl jmd schneller :)

  • zeig mal bitte auch die Zeilen wo der Spieler auf dem Server connected und hast du es mit einem Dialog gemacht wo er das Passwort eingibt?


    Wenn ja dann zeig mal bitte was du bei "OnDialogResponse" geschrieben hast also bei dem Logindialog


    MfG