MySQL Problem (Textdraws)

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
  • Moin Leute!


    Da ich ich derzeitg eine neue MySQL Version "upgrade" , bräuchte ich etwas hilfe :) Undzwar:


    -> Ich habe ein MySQL Login/register system ! Jedoch geht das nicht richtig, immer wenn ich auf Login drücke steht da "Du hast keine Account du musst dich registrierten..." stimmt ja auch , aber dann kommt der Dialog der nicht auftauchen sollte!
    Und es wird auch kein Account regestriert wenn ich fertig war mit Passwort eingebeben.. Hier die ganzen Codes: (MySQL Version : R39 Glaube ich! Und versucht habe ich es mit MrMonat TuT..)




    //hier das mit den Anklickbaren Textdraws:
    if(_:clickedid != INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw2)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    if(OnUserCheck(playerid))//Wür überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    }
    else //Falls doch
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist bereits Regestriert!");
    }
    }
    return 1;
    }
    else if(clickedid == Textdraw3)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    if(OnUserCheck(playerid))
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist nicht Regestriert! Um hier spielen zu können, musst du dich Regestrieren!");
    }
    else//Falls doch
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    }
    }
    return 1;
    }


    //Hier das mit den Dialogs
    if(dialogid==DIALOG_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,dbhandle);//Fragt ab ob das Passwort richtig ist
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //keine Eingabe
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast auf Abrrechen gedrückt!");
    }
    return 1;
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>=3)
    {
    //Registerfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,passwort) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    }
    else
    {
    //Kleiner als 4 Zeichen
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Das angegebende Passwort war zu kurz! Bitte versuchs nochmal:","Register","Abbrechen");
    }


    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast auf Abrrechen gedrückt!");
    }
    return 1;
    }


    //Hier ist das "OnUserCheck"
    public OnUserCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    //Registrierung
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    }
    else
    {
    //Login
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    }
    return 1;

    Fals ihr noch was braucht, einfach schreiben :P , wäre sehr verbunden für eure Hilfe!

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • So, nicht anders.
    if(clickedid == Textdraw2)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    if(OnUserCheck(playerid))//Wür überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    return 1;
    }
    else //Falls doch
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist bereits Regestriert!");
    return 1;
    }
    }
    }

  • Hmm.. ich versuch einfach mal:



    //Textdraws:
    new Text:Textdraw0;
    new Text:Textdraw1;
    new Text:Textdraw2;
    new Text:Textdraw3;
    new Text:Textdraw4;
    new Text:Textdraw5;
    new Text:Textdraw6;
    new PlayerText:Textdraw7[MAX_PLAYERS]; //ist skinanzeige , braucht euch nicht drum kümmern :)


    &
    //unter einen Timer
    TextDrawShowForPlayer(playerid, Textdraw0);
    TextDrawShowForPlayer(playerid, Textdraw1);
    TextDrawShowForPlayer(playerid, Textdraw2);
    TextDrawShowForPlayer(playerid, Textdraw3);
    TextDrawShowForPlayer(playerid, Textdraw4);
    TextDrawShowForPlayer(playerid, Textdraw5);
    TextDrawShowForPlayer(playerid, Textdraw6);



    //unter onplayerclicktextdraw
    if(_:clickedid != INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw2)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0) //Als erstes fragen wir ab ob der Spieler schon eingeloggt ist oder nicht, damit wir nicht bei jeder Skin auswahl uns neu Einloggen müssen.
    {
    if(OnUserCheck(playerid))//Wür überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    return 1;
    }
    else //Falls doch
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist bereits Regestriert!");
    return 1;
    }
    }
    }
    else if(clickedid == Textdraw3)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    if(OnUserCheck(playerid))
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist nicht Regestriert! Um hier spielen zu können, musst du dich Regestrieren!");
    return 1;
    }
    else//Falls doch
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    return 1;
    }
    }
    }
    //________________



    //hier die Diaolgs:
    if(dialogid==DIALOG_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,dbhandle);//Fragt ab ob das Passwort richtig ist
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //keine Eingabe
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast auf Abrrechen gedrückt!");
    }
    return 1;
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>=3)
    {
    //Registerfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,passwort) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    }
    else
    {
    //Kleiner als 4 Zeichen
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Das angegebende Passwort war zu kurz! Bitte versuchs nochmal:","Register","Abbrechen");
    }


    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast auf Abrrechen gedrückt!");
    }
    return 1;
    }


    Was falsches?

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Ich denke mal du hast den DL Link von MrMonat genommen, sollte also bedeuten du hast r34


    mfg :thumbup:


    UserCheck steht oben , aber egal ist hast du es nochmal!



    forward OnUserCheck(playerid);


    public OnUserCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    //Registrierung
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    }
    else
    {
    //Login
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    }
    return 1;
    }



    //EDIT:


    Es kommt immer 2 Fehler: [19:48:30] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'root' localhost (using password: YES)
    [19:48:30] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'root' localhost (using password: YES)

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    Einmal editiert, zuletzt von [GeD]Max ()

  • Es kommt immer 2 Fehler: [19:48:30] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'root' localhost (using password: YES)
    [19:48:30] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'root' localhost (using password: YES)


    Nimm kein Passwort. root hat standardmäßig kein Passwort. Wenn du da nichts geändert hast, ist das auch noch so.


    Wenn es dann noch nicht klappt, aber die Fehler im Log weg sind, beschreibe dein Problem bitte nochmals genauer (was meinst du mit "der Dialog der nicht auftauchen sollte"?)


  • Nimm kein Passwort. root hat standardmäßig kein Passwort. Wenn du da nichts geändert hast, ist das auch noch so.


    Wenn es dann noch nicht klappt, aber die Fehler im Log weg sind, beschreibe dein Problem bitte nochmals genauer (was meinst du mit "der Dialog der nicht auftauchen sollte"?)


    1) Habe jetzt passwort rausgemacht , jedoch kommt dieser Error:
    [20:46:42] [ERROR] CMySQLConnection::Connect - (error #1044) Access denied for user '' localhost to database 'samp'
    [20:46:42] [ERROR] CMySQLConnection::Connect - (error #1044) Access denied for user '' localhost to database 'samp'

    #define db_host "127.0.0.1"
    #define db_user "samp"
    #define db_pass ""
    #define db_db "samp"




    2) Also ich habe einiege Textdraws erstellt(die schon anklickbar sind!) für den Login/Register System! Bloß wenn ich auf Login drücke öffnet sich ein Dialog, obwohl kein Dialog sich öffnen soll! Also da soll halt nur [Error] Account ist schon ...
    Und aber Register ist es ebenso.. halt nur andersrum!

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Der User muss weiterhin root sein, nicht samp.


    Wir beheben jetzt erstmal das Problem mit MySQL. Wenn das gescheit läuft gehen wir an die Textdraws ran, aber vielleicht klärt sich das von selbst wenn MySQL läuft.


    alles , also ist schon besser geworden! Also jetzt kommt ganz am anfang der Dialog... zum register.. aber es kommen noch MySQL warnings :O


    [21:00:12] [WARNING] cache_get_data - no active cache
    [21:00:14] [WARNING] cache_get_data - no active cache
    [21:00:17] [WARNING] cache_get_data - no active cache


    das kommt aber erst wenn ich auf Login oder Register drücke..



    Also eigentlich können wir jetzt zu den Textdraws rüber oder nicht?

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Sieht sehr gut aus. Ja, jetzt können wir zu den Textdraws.


    Poste bitte den Code, bei wessen Ausführung diese Cache Warnungen kommen.


    Ich weiß es jetzt leider nicht genau da keine Zeile angegeben wurde , aber ich poste dir einfach mein ganzes Login/register system eben hin:



    new Text:Textdraw0;
    new Text:Textdraw1;
    new Text:Textdraw2;
    new Text:Textdraw3;
    new Text:Textdraw4;
    new Text:Textdraw5;
    new Text:Textdraw6;
    new PlayerText:Textdraw7[MAX_PLAYERS];//Skinanzeige, (Ignorieren!)


    //MySQL Verbindung(ongamemodeinit)
    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);


    //OnPlayerConnect
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);


    //Die beiden Dialogs
    if(dialogid==DIALOG_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,dbhandle);//Fragt ab ob das Passwort richtig ist
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //keine Eingabe
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast auf Abrrechen gedrückt!");
    }
    return 1;
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>=3)
    {
    //Registerfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,passwort) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,false,"OnPlayerRegister","i",playerid);
    }
    else
    {
    //Kleiner als 4 Zeichen
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Das angegebende Passwort war zu kurz! Bitte versuchs nochmal:","Register","Abbrechen");
    }


    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast auf Abrrechen gedrückt!");
    }
    return 1;
    }


    //und das halt die anklickbare Textdraw
    if(_:clickedid != INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw2)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0) //Als erstes fragen wir ab ob der Spieler schon eingeloggt ist oder nicht, damit wir nicht bei jeder Skin auswahl uns neu Einloggen müssen.
    {
    if(OnUserCheck(playerid))//Wür überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    return 1;
    }
    else //Falls doch
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist bereits Regestriert!");
    return 1;
    }
    }
    }
    else if(clickedid == Textdraw3)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    if(OnUserCheck(playerid))
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist nicht Regestriert! Um hier spielen zu können, musst du dich Regestrieren!");
    return 1;
    }
    else//Falls doch
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    return 1;
    }
    }
    }


    //OnUserCheck & OnPlayerRegiter
    public OnPlayerRegister(playerid)
    {
    SpielerInfo[playerid][u_id] = cache_insert_id(dbhandle);
    return 1;
    }


    public OnUserCheck(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    //Registrierung
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    }
    else
    {
    //Login
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    }
    return 1;
    }



    So das wars, falls was fehlt einfach zurück schreiben :)

    Mit freundlichen Grüßen
    [KoSoVa] :klugs: