Account System

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 ein Accountsystem erstellt, aber wenn ich auf den Server connecten erscheint nut der Login Dialog, obwohl mein Acount garnicht in der Datenbank ist und deshalb nimmt er das PW auch nicht an.
    bitte um hilfe hier die wichtigsten stellen im Script.



    //MySql
    #define db_host "localhost"
    #define db_user "root"
    #define db_pass ""
    #define db_db "samp"


    // Dcmd
    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    // Forwards
    forward tot(playerid);
    forward OnPlayerCheck(playerid);
    forward OnPasswordResponse(playerid);


    //Enums
    enum SpielerDaten
    {
    Eingeloggt,
    Adminlevel,
    Level,
    Fraktion,
    Team,
    Geld
    };
    new sDaten[MAX_PLAYERS][SpielerDaten];


    /* GLOBALE VARIABLEN */


    //my sql
    new db_handle;


    public OnGameModeInit()
    {
    SetGameModeText("LOL 1.0.0");


    //My SQL
    db_handle = mysql_connect(db_host,db_user,db_db,db_pass);


    // MySql Account System
    new name[MAX_PLAYER_NAME], query [128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT ID FROM User WHERE Benutzername='%s'",name);
    mysql_function_query(db_handle,query,true,"OnPlayerCheck","i",playerid);


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,db_handle);
    format(query, sizeof(query),"SELECT * FROM USER WHERE Benutzername='%s' AND Passwort='%s'",name,passwort);
    mysql_function_query(db_handle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Gib bitte ein Passwort ein.");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }

    if(dialogid == REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>4)
    {
    mysql_escape_string(inputtext,passwort,db_handle);
    format(query,sizeof(query),"INSERT INTO User(Benutzername,Passwort) VALUES('%s','%s')",name, passwort);
    mysql_function_query(db_handle,query,false,"","");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Dein Passwort ist zu kurz. Es muss mindestens 5 Zeichen enthalten");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registration","Dein Account wurde nicht in unserer Datenkbank gefunden. Bitte gebe ein Passwort ein um dich nun auf unserem Server zu Regestrieren.","Regestrieren","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }


    public OnPlayerCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,db_handle);
    if(num_rows==0)
    {
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
    SendClientMessage(playerid,BLAU,"Hallo, Wilkommen zurrück auf Royal_Elite");
    }
    else
    {
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registration","Dein Account wurde nicht in unserer Datenkbank gefunden. Bitte gebe ein Passwort ein um dich nun auf unserem Server zu Regestrieren.","Regestrieren","Abbrechen");
    SendClientMessage(playerid,BLAU,"Herzlich Wilkommen auf dem Royal_Elite Samp Server");
    }

    return 1;
    }


    public OnPasswordResponse(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,db_handle);
    if(num_rows==1)
    {
    sDaten[playerid][Eingeloggt] = 1;
    sDaten[playerid][Adminlevel] = cache_get_field_content_int(0,"Adminlevel",db_handle);
    sDaten[playerid][Level] = cache_get_field_content_int(0,"Level",db_handle);
    sDaten[playerid][Fraktion] = cache_get_field_content_int(0,"Level",db_handle);
    sDaten[playerid][Geld] = cache_get_field_content_int(0,"Level",db_handle);

    }
    else
    {
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
    SendClientMessage(playerid,ROT,"Das eingegebene Passwort ist inkorrekt!");
    }
    return 1;
    }



    Ich habe auch keine Errors im Script


    Mfg Infictible

  • public OnPlayerCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,db_handle);
    if(mysql_num_rows()>0)
    {
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
    SendClientMessage(playerid,BLAU,"Hallo, Wilkommen zurrück auf Royal_Elite");
    }
    else
    {
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registration","Dein Account wurde nicht in unserer Datenkbank gefunden. Bitte gebe ein Passwort ein um dich nun auf unserem Server zu Regestrieren.","Regestrieren","Abbrechen");
    SendClientMessage(playerid,BLAU,"Herzlich Wilkommen auf dem Royal_Elite Samp Server");
    }

    return 1;
    }



    //e


    Ich weiß nicht welche Mysql version du hast , ich benutze R5 und so würde das dann aussehen.

  • [14:43:10] Loaded.
    [14:43:10] Loading plugin: mysql
    [14:43:10] >> plugin.mysql: R34 successfully loaded.
    [14:43:10] Loaded.
    [14:43:10] Loading plugin: nativechecker
    [14:43:10] Loaded.
    [14:43:10] Loaded 3 plugins.


    [14:43:10]
    [14:43:10] Filterscripts
    [14:43:10] ---------------
    [14:43:10] Loaded 0 filterscripts.


    [14:43:10] Number of vehicle models: 0
    [14:43:35] Incoming connection: 127.0.0.1:64602
    [14:43:35] [join] [RE]Infictible has joined the server (0:127.0.0.1)
    [14:44:41] [part] [RE]Infictible has left the server (0:1)


    Hier Der ServerLog ich glaub da steht es