Leichter als es aussieht ( Login/Register )

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
  • Da ich viele sehe die immer aus dem GF kopieren & meinen das es ach so schwer so sei , hier hab ich mal ein Beispiel vorbereitet,
    daraus könnt ihr einige Informationen fassen & schauen wie das ganze Funktioniert, hab das Speichern in diesem Fall mit meinen Ini ähnlichen System gemacht ( bfx_ini )


    Schaut euch das Beispiel an & lernt eventuelle draus


    • Registrierung umfasst { Abfragen ob der Account existiert oder nicht > Datei erstellen > Datei Öffnen > Passwort eintragen > Speichern & Schließen }
    • Login umfasst { Abfragen ob Account existiert oder nicht > Datei Öffnen > Passwort Laden > Passwort abfragen > entscheiden ob richtig oder Falsch > Handeln }


    #define MAX_PASS 13 // 13 = Maximale Passwort Länge.. kann verändert werden
    #define ACC_EXIST 5 // Fehler Codes damit ihr wisst welche Nummer für welchen Fehler steht...
    #define ACC_NOT_EXIST 8
    #define LOGGED_IN 9
    #define NOT_LOGGED_IN 10
    #define REGISTER_FAILED 11
    #define PASS_LEN_ERR 12
    new bool:player_logged[MAX_PLAYERS];


    OnPlayerRegister(playerid,Passwort[])
    {
    if(fexist(accform(playerid)))return ACC_EXIST;
    if(strlen(Passwort) >=MAX_PASS)return PASS_LEN_ERR;
    CreateINI(accform);
    if(OpenINI(accform))
    {
    SetKeyString("passwort",Passwort);
    SaveINI();
    CloseINI();
    return 1;
    }
    return REGISTER_FAILED;
    }
    OnPlayerLogin(playerid,Passwort[])
    {
    if(!fexist(accform(playerid)))return ACC_NOT_EXIST;
    new readpw[MAX_PASS];
    if(OpenINI(accform(playerid))
    {
    strmid(readpw,ReadStringKey("passwort"),MAX_PASS);
    CloseINI();
    }
    return (!strcmp(readpw,Passwort)) ? (LOGGED_IN):(NOT_LOGGED_IN);
    }



    /* Beispiel


    switch(OnPlayerLogin(playerid,"Pass bla"))
    {
    case LOGGED_IN:
    {
    // Weitere Ladevorgänge...
    player_logged[playerid] = true;
    }
    case ACC_NOT_EXIST:return SendClientMessage(playerid,0xFF0000FF,"Dieser Account existiert nicht!");

    usw...


    }



    Bei OnPlayerRegister Funktionierts genau so


    */



    accform(playerid)
    {
    new acc[MAX_PLAYER_NAME+5];
    format(acc,sizeof acc,"%s.acc",spielername(playerid));
    return acc;
    }
    spielername(playerid)
    {
    new player[MAX_PLAYER_NAME];
    GetPlayerName(playerid,player,sizeof player);
    return player;
    }



    Das System gibt Fehler Codes zurück je nach Fehler Code kann man dann entscheiden was passiert & Spieler Daten Laden aber das müsst ihr dann selber übernehmen, sollte kein Ding sein für
    etwas fortgeschrittene, wie gesagt nicht einfach kopieren & machen, hier müsst ihr schon selber denken

    Mfg. BlackFoX_UD_ alias [BFX]Explosion