Account Speichert nicht ? o.O

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 unswa habe ich gerade ein fehler gefunden wenn ich mich Registriere und bekomme ich Level 1 und bekomme 2500 aber wenn ich raus gehe und mich wieder einlogge ist mein level auf 0 Gesetzt und mein Geld ebenfalls ?



    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s') ",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid, ROT, "Du hast dich Erfolgreich Registriert !");
    SendClientMessage(playerid, LEUCHTENDBLAU, "=====>Willkommen auf Red-Game0v3r-Reallife<=====");
    SetPlayerMoney(playerid, 2500);
    SetPlayerScore(playerid,1);
    SetPlayerColor(playerid, 0xFF00FFFF);


    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //speichern
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],
    GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Spieler laden


    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    SendClientMessage(playerid,GRÜN,"Erfolgreich eingeloggt!");
    loadPlayerCars(playerid);
    }


    oder Liegt es vlt hier dranne ?


    resetPlayer(playerid)
    {
    sInfo[playerid][level]=0;
    sInfo[playerid][eingeloggt]=0;
    sInfo[playerid][db_id]=0;
    sInfo[playerid][alevel]=0;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id])continue;
    GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
    GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
    new query[256];
    format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    }
    savePlayer(playerid);
    resetPlayer(playerid);
    if(newbie[playerid]) DestroyVehicle(newbie[playerid]),newbie[playerid]=0;
    return 1;
    }

  • Dann bekomme ich einen warning
    C:\Dokumente und Einstellungen\Tobi\Desktop\Selfmadescript\gamemodes\Reallife-Kopie.pwn(1073) : warning 215: expression has no effect


    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>3)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s') ",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid, ROT, "Du hast dich Erfolgreich Registriert !");
    sInfo[playerid][db_id];
    SendClientMessage(playerid, LEUCHTENDBLAU, "=====>Willkommen auf Red-Game0v3r-Reallife<=====");
    SetPlayerMoney(playerid, 2500);
    SetPlayerScore(playerid,1);
    SetPlayerColor(playerid, 0xFF00FFFF);
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,ROT,"Dein Passwort muss mindestens 4 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Okay","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }
    return 1;
    }

  • Um die ID zu erhalten benötigst du mysql_insert_id. Aber weil du mysql_function_query verwendest ist es ein kleiner Gedankensprung:


    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>3)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s') ",name,passwort);
    mysql_function_query(dbhandle,query,false,"OnPlayerRegister","d",playerid);
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,ROT,"Dein Passwort muss mindestens 4 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Okay","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }
    return 1;
    }
    forward OnPlayerRegister(playerid);
    public OnPlayerRegister(playerid)
    {
    sInfo[playerid][db_id] = mysql_insert_id();
    SendClientMessage(playerid, ROT, "Du hast dich Erfolgreich Registriert !");
    SendClientMessage(playerid, LEUCHTENDBLAU, "=====>Willkommen auf Red-Game0v3r-Reallife<=====");
    SetPlayerMoney(playerid, 2500);
    SetPlayerScore(playerid,1);
    SetPlayerColor(playerid, 0xFF00FFFF);
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Habe das jetze so eingefügt natürlich das forward oben aber funktioniert immernoch nicht :/
    Er soll ja wenn er sich registriert In der Datenbank in der Tabella User den spieler erstellen und speichern er Erstellt ihn auch aber er speichert das nicht :(

  • Ein Teil fehlt mir beim Laden: Ich brauch die Zeile wo du mysql_function_query für den Callback OnPasswordResponse aufrufst.


    Sonst sehe ich so auf den Hinblick überhaupt nichts.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ein Teil fehlt mir beim Laden: Ich brauch die Zeile wo du mysql_function_query für den Callback OnPasswordResponse aufrufst.


    Sonst sehe ich so auf den Hinblick überhaupt nichts.


    //Login/Register
    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);


    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //speichern
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],
    GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id])continue;
    GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
    GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
    new query[256];
    format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    }
    savePlayer(playerid);
    resetPlayer(playerid);
    if(newbie[playerid]) DestroyVehicle(newbie[playerid]),newbie[playerid]=0;
    return 1;
    }


    saveCarToDB(playerid,carid)
    {
    new query[128];
    format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
    return 1;
    }


    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }


    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Spieler laden


    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    SendClientMessage(playerid,GRÜN,"Erfolgreich eingeloggt!");
    loadPlayerCars(playerid);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Das eigegeben Passwort ist fasch");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Willkommen auf Red-Game0v3r-Reallife,\n\n\n\n Bitte logge dich nun ein!\n\n\n","Login","Abbrechen");
    }
    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)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s') ",name,passwort);
    mysql_function_query(dbhandle,query,false,"OnPlayerRegister","d",playerid);
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,ROT,"Dein Passwort muss mindestens 4 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Okay","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }
    return 1;
    }


    public OnPlayerRegister(playerid)
    {
    sInfo[playerid][db_id] = mysql_insert_id();
    SendClientMessage(playerid, ROT, "Du hast dich Erfolgreich Registriert !");
    SendClientMessage(playerid, LEUCHTENDBLAU, "=====>Willkommen auf Red-Game0v3r-Reallife<=====");
    SetPlayerMoney(playerid, 2500);
    SetPlayerScore(playerid,1);
    SetPlayerColor(playerid, 0xFF00FFFF);
    }

  • Hah xD Hast zwar viel reinkopiert, aber das mit OnPasswordResponse wohl irgendwie vergessen :P Also ich suche den Codeteil, wo du per mysql_function_query OnPasswordResponse aufrufst.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Sorry wenn ich das so frage aber kann es sein, dass es von MrMonat ist?

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Beitrag von xSnake ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Also schau: Ich sehe einen mysql_function_query mit dem Callback 'OnUserCheck' und dort solltest du die id bekommen, die du dort setzen musst. Den interessant ist wie du dann OnPasswordResponse aufrufst. Also ob der User hier nach der id oder wieder nach dem Namen gesucht wird.


    Weil was ich in 'public OnPasswordResponse' sehe ist, dass du dort die Datenbank-ID setzt. Also kann der einzige Fehler nurmehr an dem Query mit OnPasswordResponse liegen.


    Aus diesem Grund schick mir nur alle Zeilen (nicht die Codeblöcke), die 'OnPasswordResponse' in der CodeZeile stehen haben.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Beitrag von xSnake ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s') ",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPlayerIsRegister","d",playerid);
    SendClientMessage(playerid, ROT, "Du hast dich Erfolgreich Registriert !");
    SendClientMessage(playerid, LEUCHTENDBLAU, "=====>Willkommen auf Red-Game0v3r-Reallife<=====");
    SetPlayerMoney(playerid, 2500);
    SetPlayerScore(playerid,1);
    SetPlayerColor(playerid, 0xFF00FFFF);



    forward OnPlayerIsRegister(playerid);
    public OnPlayerIsRegister(playerid)
    {
    sInfo[playerid][db_id] = cache_insert_id(dbhandle);
    return 1;
    }


    Versuch das mal ;)
    @snake112:

    Einmal editiert, zuletzt von AirM4X ()

  • @[NGD]Manne


    Danke das du meinen post von hier aus Account Speichert nicht ? o.O wiederholst. OnPlayerRegister ist bei ihm fehlerfrei. Er hat das Problem, wenn er nochmals auf den Server verbindet, dass nichts richtig geladen wird.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Templer: Ich dachte der Fehler wäre, das wenn er sich registriert hat, das nichts in die Datenbank gespeichert wird.
    So wie es aussieht hat er sich die Videos von MrMonat angeschaut, und da hat er das auch mit cache_insert_id(dbhandle); gemacht, so habe ich ihn das auch geschrieben.
    Du hattest das aber mit mysql_insert_id gemacht.
    Ob das beides die gleiche Wirkung hat, weiß ich nicht.

  • Laut der neusten a_mysql.inc ist es das gleiche



    #define mysql_insert_id cache_insert_id


    Ich verwende noch den alten Namen, weil ich keine Lust habe alles umzubenennen im Script xD

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

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