Fehler im Registersystem

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 bin gerade dabei mein Registersystem zu bearbeiten, jedoch habe ich ein kleines Problem.


    Aus irgendeinem Grund wird der Register Dialog doppelt angezeigt. Die Funktionen werden alle aufgerufen, jedoch doppelt, sodass ich zwei mal den gleichen Account mit unterschiedlichem PW in der DB habe. Was ist da inkorrekt?


    MfG


    Allrounder18

  • Lösche Zeile 14...


    Wieso zeigst du auch den Dialog 2x an...das macht ja keinen Sinn, dort hat er ja bereits sein pw eingegeben xD

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also AccountCheck muss immer aufgerufen werden, sonst weißt du ja nicht, ob der Spieler schon registriert ist oder nicht.


    Und RegisterDialog wird bei dir immer aufgerufen...


    Das könntest du ja so schreiben:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Jetzt wird alles richtig aufgerufen. Was muss ich machen wenn ich bei AccountCheck nen Abbrechen Button habe damit man gekickt wird?


    Edit: Wenn ich aktuell auf Esc drücke und nichts eingebe komme ich trotzdem weiter.

  • C
    stock registerdialog(playerid, dialogid, inputtext[])
    {
        if(!response) return Kick(playerid);
        if(6 <= strlen(inputtext) <= 24)
        {
            bcrypt_hash(inputtext, BCRYPT_COST, "OnPasswordHashed", "d", playerid);
        }
        else ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration","Bitte gib ein Passwort für deinen Account an:","Bestätigen","Abbrechen");
        return 1;
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • das bringt irgendwie nix, ich werde bei abbrechen immernoch nicht gekickt. muss dan ich t bei Accpuntcheckauch was hin?

    Nein, da muss nur angegeben werden, dass es einen Abbrechen Button gibt.


    Mal doof gefragt, wie rufst denn jetzt registerdialog auf, da ja response gar nicht in der Funktion definiert ist :D


    Übergibst du das denn richtig? xD

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Aus irgendeinem Grund sagt mir das Game jetzt is ist ein Account vorhanden obwohl keiner da ist.


    Edit: Hab den Fehler gefunden, hab die dialoge vertauscht, darum stahd da der acc wurde gefunden.

  • Code
    public OnPlayerConnect(playerid)
    {
        new string[128];
        GetPlayerName(playerid,AccountInfo[playerid][account_Name],MAX_PLAYER_NAME);
        mysql_format(handle, string, sizeof(string), "SELECT * FROM `accounts` WHERE `Name` = '%e'", AccountInfo[playerid][account_Name]);
        mysql_tquery(handle, string, "AccountCheck", "d", playerid);
        return 1;
    }

    Edit: Weiterer Fehler:


    So sieht meine Loginfunktion aus, somit wird überprüft oft das Passwort richtig ist. Irgendwas ist hier falsch, immer wenn ich das richtige Passwort eingebe komt der Dialog, dass das PW falsch ist.