Frage zu einem Dialogproblem

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,
    ich habe vor mein altes Login system in ein neues umzuarbeiten. Jeoch habe ich ein Problem beim aufbauen dieses neuen systems.
    Ich möchte es so haben, wenn man kein Passwort eingibt, das man es nochmal versuchen kann. Momentan wird mir ausgegeben das Passwort ist falsch und man wird automatisch gekickt . Da dies jedoch die richtige reaktion meines servers ist, da das passwor ja falsch ist. Nun ist meine frage wie kann ich es so machen das wenn kein Passwort oder ein passwort mit weniger als 3 zeichen eingegeben wurde man es nochmal versuchen kann.


    Mein momentaner Script:


    Bitte um hilfe

  • public OnDialogResponse (playerid, dialogid, response, listitem, inputtext[])
    {
    if (!response || !strlen(inputtext)) return ShowPlayerDialog(playerid,1, DIALOG_STYLE_PASSWORD, "Anmelden", "Bitte gebe dein Passwort errneut ein.", "Anmelden", "Verlassen");
    if (gPlayerLogged[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    new tmppass[64];
    strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid, tmppass);
    return 1;
    }


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Dann hast du noch irgendetwas im Script, von dem wir nichts wissen.
    So wie ich es oben geschrieben habe, sollte er lediglich den Dialog erneut öffnen, sofern das eingegebene Passwort entweder 0 Zeichen lang ist oder auf abbrechen gedrückt wurde.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • du musst noch die dialogid angeben unter ondialogresponse.


    public OnDialogResponse (playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == Dialog_xxxxxx) // wenn du den dialog definiert hast oder
    if(dialogid == 1/2/3) // hier die dialogid angeben
    {
    if (!response || !strlen(inputtext)) return ShowPlayerDialog(playerid,1, DIALOG_STYLE_PASSWORD, "Anmelden", "Bitte gebe dein Passwort errneut ein.", "Anmelden", "Verlassen");
    if (gPlayerLogged[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    new tmppass[64];
    strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid, tmppass);
    return 1;
    }
    }

  • Leider Funktioniert es immernoch nicht.
    bekomme aber eine Warnung von Pawo

    Code
    C:\server\gamemodes\gf.pwn(27305) : warning 209: function "JB_OnDialogResponse" should return a value


    Zeile 27305:

    Code
    }


    Zeile 27293-3005:


  • Du meinst, wenn du das RICHTIGE Passwort eingibst, sagt er es wäre falsch? Dann brauchen wir mal einen Einblick in deine OnPlayerLogin-Funktion.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • nein wenn ich es richtig eingebe loggt er mich ein wenn ich einfach nichts eingebe und auf anmelden drücke bekomme ich die meldung das mein passwort falsch ist!
    OnePlayerlogin:

  • public OnDialogResponse (playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_LOGIN) // wenn du den dialog definiert hast oder
    {
    if (!response || !strlen(inputtext)) return ShowPlayerDialog(playerid,1, DIALOG_STYLE_PASSWORD, "Anmelden", "Bitte gebe dein Passwort errneut ein.", "Anmelden", "Verlassen");
    if (gPlayerLogged[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    OnPlayerLogin(playerid,inputtext);
    }
    return 1;
    }


    versuchs mal so das strmid ist hier völligunötig da wir ja nur das passwort übergeben

  • ich habe nun eine Lösung gefunden!



    Ich habe dabei gleich eine mindestlänge für passwort eingebaut. Ebenfalls habe ich es mit der registrierung auch schon gemacht.


    Trotzdem danke für eure hilfe.

    Einmal editiert, zuletzt von XxReNeXx10 () aus folgendem Grund: Lösung