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
  • Habe jetzt alles erstetzt bloß:



    new query[128], pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    mysql_format(dbhandle, query, sizeof(query), "SELECT * FROM `user` WHERE `username` = '%e' LIMIT 1", pname);
    mysql_query(dbhandle, query, "OnPlayerDataLoaded", "d", playerid);//fehler:


    error 035: argument type mismatch (argument 3)

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

  • [21:45:08] [WARNING] cache_get_row_count - no active cache
    [21:45:10] [WARNING] cache_get_row_count - no active cache
    [21:45:11] [WARNING] cache_get_row_count - no active cache
    [21:45:12] [WARNING] cache_get_row_count - no active cache
    [21:51:06] [WARNING] cache_get_row_count - no active cache
    [21:51:09] [WARNING] cache_get_row_count - no active cache
    [21:51:10] [WARNING] cache_get_row_count - no active cache
    [21:51:18] [WARNING] cache_get_row_count - no active cache
    [21:51:19] [WARNING] cache_get_row_count - no active cache
    [21:51:20] [WARNING] cache_get_row_count - no active cache
    [21:51:25] [WARNING] cache_get_row_count - no active cache
    [21:51:25] [WARNING] cache_get_row_count - no active cache
    [21:51:25] [WARNING] cache_get_row_count - no active cache

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

  • Habe ich unter OnGameModeInit gepackt, und es kommen nun: (Also ist gleich geblieben)
    [17:50:12] [WARNING] cache_get_row_int - no active cache
    [17:50:20] [WARNING] cache_get_row_count - no active cache
    [17:50:23] [WARNING] cache_get_row_count - no active cache

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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ja ist nur die mysql_log.txd und da steht genau dass gleiche.


    //EDIT:


    Das Login System geht nicht richtig. Also Register geht einwandfrei(glaube ich) aber wenn ich auf Login drücke, obwohl ich einen Account auf der Datenbank habe, steht da dass ich keinen habe.

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

  • Ok, ist auch egal. Poste bitte den Code so wie er jetzt ist, das bekommen wir auch ohne Log hin, so viel ist es ja nicht.


    Alles Klar! :



    else if(clickedid == Textdraw3)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    if(OnPlayerDataLoaded(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;
    }
    }
    }
    //___________________________________
    public OnPlayerDataLoaded(playerid)
    {
    new NumRows = cache_num_rows();
    //printf("There are %d players with the same name.", NumRows);
    return 1;
    }
    //___________________________________
    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);
    SpawnPlayer(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
    {
    return 1;
    }
    return 1;
    }
    //___________________________________
    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort richtig
    SpielerInfo[playerid][eingeloggt] = 1;
    SpielerInfo[playerid][Level] = cache_get_field_content_int(0,"Level",dbhandle);//So liest man etwas aus der Datenbank!
    SetPlayerScore(playerid,SpielerInfo[playerid][Level]);
    SpielerInfo[playerid][u_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid, cache_get_field_content_int(0,"Geldaufhand",dbhandle));
    }
    else
    {
    //passwort Falsch
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    }
    return 1;
    }

    Bitteschön :thumbup:

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

  • Auch hier musst du nach dem Prinzip der Cache-Nutzung vorgehen:
    else if(clickedid == Textdraw3)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnPlayerDataLoaded","i",playerid);
    }
    }


    //___________________________________
    public OnPlayerDataLoaded(playerid)
    {
    if(cache_num_rows() == 0)
    {
    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;
    }
    //printf("There are %d players with the same name.", NumRows);
    return 1;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Dann poste bitte den Code von dem dazugehörigen Code, von dem Textdraw das du andrückst, und von dem Textdraw, das die Aktion eigentlich ausführen soll.



    else if(clickedid == Textdraw3) //ist der Textdraw der aufgerufen werden soll...
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    }


    Und der Textdraw:
    new Text:Textdraw3;


    Textdraw3 = TextDrawCreate(552.904663, 67.257781, "~r~E~w~inloggen <");
    TextDrawLetterSize(Textdraw3, 0.548995, 2.328000);
    TextDrawTextSize(Textdraw3, 650.00, 20.00);
    TextDrawAlignment(Textdraw3, 1);
    TextDrawColor(Textdraw3, -1);
    //TextDrawUseBox(Textdraw3, true);
    TextDrawBoxColor(Textdraw3, 255);
    TextDrawSetShadow(Textdraw3, 0);
    TextDrawSetOutline(Textdraw3, 1);
    TextDrawBackgroundColor(Textdraw3, 51);
    TextDrawFont(Textdraw3, 0);
    TextDrawSetProportional(Textdraw3, 1);

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

  • Du sollst den Code posten, von dem Textdraw das du andrückst und von dem das den Dialog eigentlich zeigen soll. Du hast nur letzteres gemacht.


    Außerdem steht doch bei Textdraw3 einloggen, was also passt denn nicht?
    Kannst du mal versuchen dich klarer auszudrücken?

  • Du sollst den Code posten, von dem Textdraw das du andrückst und von dem das den Dialog eigentlich zeigen soll. Du hast nur letzteres gemacht.


    Außerdem steht doch bei Textdraw3 einloggen, was also passt denn nicht?
    Kannst du mal versuchen dich klarer auszudrücken?


    Ja sry, ich versuchs nochmal: Also, wenn ich online komme erscheint das "Login Dilaog" sofort , eigentlich sollte es erst erscheinen wenn ich auf "EINLOGGEN" Drücke....

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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen