[MYSQL] Loginproblem

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
  • Guten Morgen Breadfish,


    ich habe seid gestern wieder angefangen zu Scripten und wollte mich bisschen einüben, jedoch habe ich ein Problem mit meinem Loginsystem. Wenn sich ein Spieler Registriert
    wird sein Account in der Datenbank gespeichert, aber wenn er sich ausloggt und wieder einloggt, funktioniert es nicht. Da wird kein Dialog mehr angezeigt.


    Wenn der Spieler raufkommt, soll das ausgeführt werden:
    public OnPlayerConnect(playerid)
    {
    /*######################## LOGIN- REGISTERSYSTEM #########################*/
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM spieleraccounts WHERE Name = '%s'",name);
    mysql_function_query(dbhandle,query,true,"SpielerVorhanden","i",playerid);
    /*########################################################################*/
    return 1;
    }


    Es wird zu teils ausgeführt, jedoch wenn er das Spiel startet und er schon ein Account besitzt, kommt kein Dialog.


    public SpielerVorhanden(playerid)
    {
    new num_rows, num_fields,string[256],string2[256],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    cache_get_data(num_rows, num_fields, dbhandle);
    if(num_fields==0){
    format(string,sizeof(string),"test",name);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"regist",string,"Anmelden"," ");
    }else{
    format(string2,sizeof(string2),"test",name);
    ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"login",string,"Spielen"," ");
    }
    return 1;
    }


    Ich hoffe mir kann jemand weiterhelfen! Grüße ChunkZz1337


  • Schreib das mal so:


    public SpielerVorhanden(playerid)
    {
    new rows, fields;
    cache_get_data(rows, fields);
    if(rows)
    {
    //Wenn der Account existiert
    new fetch[11],id;
    cache_get_row(0, 0, fetch), id = strval(fetch);
    //fetch holt den String aus dem cache und da id ein Integer ist, muss es dann nochmal umgewandelt werden.
    //Du fragst ja nur die id ab in deinem Query, deshalb sind alle anderen Felder leer, wenn du mehr abfragen würdest, machst du das einfach so:
    //cache_get_row(0, 1, fetch); hier hättest du dann den nächsten Eintrag
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kaliber, in der Zeile 'if(rows)', wo soll ich dort dann die Dialoge hinschreiben? Also wenn ein Account existiert soll sein Loginfenster kommen, wenn er ein Account hat, soll ein Registerfenster kommen
    irgendwie blick ich grad nicht durch, was du gepostet hast.


    Achso :D Das wolltest du einfach nur...dann einfach so:


    public SpielerVorhanden(playerid)
    {
    new rows, fields;
    cache_get_data(rows, fields);
    if(rows) return ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"login",string,"Spielen"," ");
    return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"regist",string,"Anmelden"," ");
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S