Nach Passworteingabe passiert nix mehr

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, habe ein Problem und zwar habe ich ein Register/Login Sys gescriptet und nichts, dass ausgeführt werden soll, wenn das passwort falsch ist, wird auch ausgeführt
    case DIALOG_LOGIN1:
    {
    if(!response)
    {
    Kick(playerid);
    }
    else
    {
    new pwlength = strlen(inputtext);
    if(pwlength > 0)
    {
    new pw[200];
    format(pw, sizeof(pw), "%s", dini_Get(path, "password"));
    if(strcmp(inputtext, pw) == 0)
    {
    pInfo[playerid][Geschlecht] = dini_Int(path, "Geschlecht");
    pInfo[playerid][Alter] = dini_Int(path, "Alter");
    pInfo[playerid][Logged] = 1;
    SpielerLaden(playerid);
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast ein falsches Passwort eingegeben und wurdest gekickt!"); //Das hier wird nicht ausgeführt
    Kick(playerid); //Das auch nicht
    }
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_NOPW2, DIALOG_STYLE_MSGBOX, "Login", "Gib ein Passwort ein!", "OK", "Abbrechen");
    }
    }
    }
    alles andere, wie laden, speichern beim disconnect etc. funktioniert.

    Greetz

  • Sorry, wenn ich jetzt noch mal nachfrage, aber ich verstehe dein Problem leider nicht...


    Zitat

    Hey, habe ein Problem und zwar habe ich ein Register/Login Sys gescriptet und nichts, dass ausgeführt werden soll, wenn das passwort falsch ist, wird auch ausgeführt


    Also ist das Problem, dass du ein Register/Login Sys gescriptet hast...


    Weil du dann returns mit 0 indem du sagst "und nichts".


    Also es wird ausgeführt (nichts) wenn das Passwort falsch ist?










    Du musst es mit einem Timer oder mit dem Include von Bevis machen...


    Des heißt, BanFix.inc
    [ INCLUDE ] Kick/Ban Fix

  • Ich überprüfe mit strcmp ob der Input des Dialoges mit dem gespeicherten Passwort übereinstimmt. Falls nicht, soll der Spieler eine Message kriegen und gekickt werden, doch das passiert nicht. Wenn ich ein falsches Passwort eingebe, werde ich weder gekickt, noch bekomme ich eine Message. Der Dialog verschwindet einfach und ich bekomme die Spawn buttons unten, wenn ich draufdrücke spawne ich. Zwar an einem anderen Ort, aber trotzdem mit dem Geld, level etc. des spielers.
    der Banfix würde zwar (wahrscheinlich) beheben, dass der Spieler gekickt wird, aber behebt er auch die Message, die eigtl erscheinen sollte?

    Greetz

  • Ich überprüfe mit strcmp ob der Input des Dialoges mit dem gespeicherten Passwort übereinstimmt. Falls nicht, soll der Spieler eine Message kriegen und gekickt werden, doch das passiert nicht. Wenn ich ein falsches Passwort eingebe, werde ich weder gekickt, noch bekomme ich eine Message. Der Dialog verschwindet einfach und ich bekomme die Spawn buttons unten, wenn ich draufdrücke spawne ich. Zwar an einem anderen Ort, aber trotzdem mit dem Geld, level etc. des spielers.
    der Banfix würde zwar (wahrscheinlich) beheben, dass der Spieler gekickt wird, aber behebt er auch die Message, die eigtl erscheinen sollte?



    Ja, die Message kommt dann auch, bevor er gekickt wird..

  • case DIALOG_LOGIN1:


    {


    if(!response)


    {


    Kick(playerid);


    return 0;


    }


    else


    {


    new pwlength = strlen(inputtext);


    if(pwlength > 0)


    {


    new pw[200];


    format(pw, sizeof(pw), "%s", dini_Get(path, "password"));


    if(strcmp(inputtext, pw) == 0)


    {


    pInfo[playerid][Geschlecht] = dini_Int(path, "Geschlecht");


    pInfo[playerid][Alter] = dini_Int(path, "Alter");


    pInfo[playerid][Logged] = 1;


    SpielerLaden(playerid);


    return 1;


    }


    else if(strcmp(inputtext, pw) == 1)


    {


    SendClientMessage(playerid,Rot,"Du hast ein falsches Passwort eingegeben und wurdest gekickt!"); //Das hier wird nicht ausgeführt


    Kick(playerid); //Das auch nicht


    return 0;


    }


    }


    else


    {


    ShowPlayerDialog(playerid, DIALOG_NOPW2, DIALOG_STYLE_MSGBOX, "Login", "Gib ein Passwort ein!", "OK", "Abbrechen");


    }


    }


    }


    Bitte :) Hoffe es geht habe else if hinzugefügt und eingerückt ^^


  • @BrotZeit Include rein, compilen, und immernoch nix^^ war wohl das falsche für meine situation, ich lass es trotzdem mal drin vlt für zukünftige probleme
    Ravez gute überlegung, leider immernoch keine message, kein kick sowie spawn buttons

    Greetz

  • Zitat

    Important Note: As of SA-MP 0.3x, any action taken before Kick() (such as sending a message with SendClientMessage) will not work. A timer must be used to delay the kick.

    Stand im WIki du musst es so machen



    //////////////////////////////////////////////////////////////////


    forward KickPublic(playerid);


    public KickPublic(playerid) Kick(playerid);


    ///////////////////////////////////////////////////////////////////


    case DIALOG_LOGIN1:


    {


    if(!response)


    {


    Kick(playerid);


    return 0;


    }


    else


    {


    new pwlength = strlen(inputtext);


    if(pwlength > 0)


    {


    new pw[200];


    format(pw, sizeof(pw), "%s", dini_Get(path, "password"));


    if(strcmp(inputtext, pw) == 0)


    {


    pInfo[playerid][Geschlecht] = dini_Int(path, "Geschlecht");


    pInfo[playerid][Alter] = dini_Int(path, "Alter");


    pInfo[playerid][Logged] = 1;


    SpielerLaden(playerid);


    return 1;


    }


    else if(strcmp(inputtext, pw) == 1)


    {


    KickWithMessage(playerid, 0xFF0000FF, "You have been kicked.");


    return 1;


    }


    }


    else


    {


    ShowPlayerDialog(playerid, DIALOG_NOPW2, DIALOG_STYLE_MSGBOX, "Login", "Gib ein Passwort ein!", "OK", "Abbrechen");


    }


    }


    }


    ////////////////////////////////////////////////////////////////////////////////


    stock KickWithMessage(playerid, color, message[])


    {


    SendClientMessage(playerid, color, message);


    SetTimerEx("KickPublic", 1000, 0, "d", playerid); //Delay of 1 second before kicking the player so he recieves the message



    }
    Wiki Eintrag