[WBB_Connect] Login und Registrierungssystem

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
  • Heute will ich euch zeigen, wie man mit WBB_Connect ein Login und Registersystem baut.


    Was braucht man:

    • Woltlab Burning Board Forum
    • WBB_Connect-Paket (Auf Forum installiert und Filterscripts bzw. Include in PAWN bzw. SA:MP Server eingebunden)
    • PAWNO
    • geringe PAWN-Kenntnisse


    Ihr solltet euer Skript schon erstmal soweit haben, dass es sich mit WBB überhaupt verbindet, wer da Schwierigkeiten hat, kann sich via PN melden.
    Dann mal los.


    1. Der Spieler loggt sich ein, zunächst wird überprüft ob ein Forumaccount vorhanden ist.
    public OnPlayerRequestClass(playerid, classid){
    WBB_IsValidUser(SpielerName(playerid);
    return 1;
    }

    Mit der Funktion WBB_IsValidUser("Name des Spielers"); fragt ihr ab ob ein gültiger Forumaccount besteht, das Ergebnis bekommt ihr im Callback ausgegeben. GetPlayerName sollte jedem bekannt sein.



    public WBB_GotUserValidState ( Index , State) {
    if( State == true)
    {
    ShowPlayerDialog( Index, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login","Bitte gib dein Passwort ein, um dich anzumelden.", "Anmelden","Abbrechen");
    }
    else
    {
    ShowPlayerDialog( Index, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Kein Account vorhanden!","Du hast noch keinen Account.\n Bitte melde dich an, um einen Spielaccount zu bekommen!","Ok","Abbrechen");
    }
    return 1;
    }
    Unter public WBB_GotUserValidState wird ausgegeben, ob der Spieler einen Forumaccount hat bzw. ob er überhaupt einen Account hat. Der Parameter "state" gibt die Werte 0(= false) und 1(=true) zurück. Sollte der Wert 1 bzw. true zurückgeben werden, so öffnen wir mit der Funktion ShowPlayerDialog eine DialogBox wo eine Passworteingabe zum Login erforderlich ist.
    Wird der Wert 0 zurückgegeben, so wird eine DialogBox zum registrieren geöffnet.



    2. Der Spieler besitzt einen Account und loggt sich nun ein.
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_LOGIN)
    {
    if(response)
    {
    WBB_CheckUserPassword(SpielerName(playerid),inputtext);

    }
    else
    {
    SendClientMessage(playerid,0xFF3200FF,"Du hast den Loginprozess abgebrochen!");
    Kick(playerid);
    }
    }
    Hier werden die Dialoge verarbeitet. Sollte der Spieler bei den Buttons vom LoginDialog auf Login gedrückt haben so wird mit der Funktion WBB_CheckUserPassword("Name des Spielers","Dialogboxeintrag"); überprüft ob das Passwort stimmt, dies wird im untenstehenden public wiedergegeben. Sollte er auf abbrechen drücken, so wird er vom Server gekickt.


    public WBB_GotUserPasswordCheckState ( Index , State )
    {
    if( State == true )
    {
    SendClientMessage( Index, GREEN, "Du hast dich erfolgreich angemeldet!");
    SpawnPlayer(Index);
    }
    else
    {
    SendClientMessage( Index, RED, "Falsches Passwort!");
    SendClientMessage( Index, RED, "Probier es nochmal neu.");
    ShowPlayerDialog( Index, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login","Bitte gib dein Passwort ein, um dich anzumelden.", "Anmelden","Abbrechen"); }
    return 1;}


    Unter public WBB_GotUserPasswordCheckState wird nun überprüft, ob das Passwort richtig oder falsch ist. State gibt wieder die Werte 0 und 1 wieder, welche für false oder true stehen. Sollte das Passwort richtig sein, so erhält der Spieler die Nachricht: "Du hast dich erfolgreich angemeldet" und wird gespawnt. Sollte das Passwort falsch sein, so wird erneut die LoginDialogBox geöffnet und der Prozess beginnt von neu.


    3. Der Spieler besitzt keinen Account und muss sich registrieren
    Der Server hat erkannt, dass der Spieler keinen Account besitzt und muss sich daher registrieren.
    Unter public OnDialogResponse
    if(dialogid == DIALOG_REGISTER)
    {
    if(response)
    {
    WBB_AddUser(SpielerName(playerid),"info@mail.de",inputtext,1); // Account wird angelegt. Parameter = 1. Name | 2. E-Mail | 3. Passwort.
    WBB_SetUserToGroup(SpielerName(playerid),3); // User wird der BenutzerGruppe hinzugefügt
    WBB_EnableUser(SpielerName(playerid)); //User wird aktiviert
    SendClientMessage(playerid, WHITE, "Du hast dich erfolgreich registriert");
    SpawnPlayer(playerid);
    }
    else
    {
    Kick(playerid);
    }
    }


    Mit den Funktionen WBB_AddUser();, WBB_SetUserToGroup(); und WBB_EnableUser wird zunächst der Forenaccount angelegt, danach wird dem Account die Benutzergruppe "3" hingzugefügt und zum Schluss wird der Account aktiviert.
    Und schon ist das Login und Registersystem fertig.


    Hier nochmal die Funktion SpielerName(playerid);
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }



    Farben müsst ihr selber definieren.
    Bei Lob oder Kritik bin ich offen und ihr könnt sie gerne posten. Fragen bitte in den Thread stellen.


    Gruß
    Dragonas

    "Stay hungry! Stay foolish!" - Steve Jobs

    Einmal editiert, zuletzt von r0b () aus folgendem Grund: Rechtschreibfehler + PAWN Fehler entfernt.