Skin wird nicht gespeichert

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
  • Hey wie meine Überschrift schon sagt speichert bzw wird die SKIN ID nicht eingetragen und es steht nur 0 in der Datebank anstatt ID 137.
    Nach der Registration hat er den richtigen SKIn nur wen ich rausgehe und wieder reingehe den Cj Skin.


    Hier mal alles was mit dem Skin zu tun hat:


    Unter Onplayerspawn:


    SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);


    Wen der Spieler sich registriert hat :


    PlayerInfo[playerid][pSkin] = noobskin;


    Wo ich den Account lade:



    case THREAD_LOAD_ACCOUNTS:
    {
    if(Rows)
    {
    new tmp[130];
    cache_get_field_content(0, "ID", tmp);
    PlayerInfo[extraid][pID] = strval(tmp);
    cache_get_field_content(0, "Password", tmp);
    format(PlayerInfo[extraid][pPassword], 129, "%s", tmp);
    cache_get_field_content(0, "Level", tmp);
    PlayerInfo[extraid][pLevel] = strval(tmp);
    cache_get_field_content(0, "Gender", tmp);
    PlayerInfo[extraid][pGender] = strval(tmp);
    cache_get_field_content(0, "Age", tmp);
    PlayerInfo[extraid][pAge] = strval(tmp);
    cache_get_field_content(0, "Admin", tmp);
    PlayerInfo[extraid][pAdmin] = strval(tmp);
    cache_get_field_content(0, "Skin", tmp);
    PlayerInfo[extraid][pSkin] = strval(tmp);
    format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist registriert. Bitte trage dein Passwort ein.", SpielerName(extraid));
    ShowPlayerDialog(extraid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", szQuery, "Login", "Abbruch");
    }
    else if(!Rows)
    {
    format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist zum Registrieren freigegeben.", SpielerName(extraid));
    ShowPlayerDialog(extraid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", szQuery, "Registrieren", "Abbruch");
    }
    }


    Loadplayer funktion wen der spieler eingelogt wird rufe ich dies auf --> LoadPlayer(playerid);
    die Funktion dazu :



    LoadPlayer(playerid)
    {
    SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
    SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    Wo der Account gespeichert wird:



    SpielerSpeichern(playerid)
    {
    new query[1024];
    mysql_format(db,query,sizeof(query),"UPDATE `accounts` SET `Level`='%i',`Gender`='%i',`Age`='%i',`Admin`='%i',",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pGender],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pAdmin]);



    mysql_format(db,query,sizeof(query),"%s`Skin`='%i' WHERE `ID`='%i'",
    query,PlayerInfo[playerid][pSkin],PlayerInfo[playerid][pID]);



    printf("query: %s", query);
    mysql_tquery(db,query);
    printf("Der Account von %s wurde erfolgreich gespeichert!",SpielerName(playerid));
    return 1;
    }


    Vielen dank schonmal :)


    @Jeffry @Kaliber

  • Der print wird ja im Server Log ausgegeben, daher reicht das.
    Wenn kein MySQL Error ausgegeben wird, und das Logging auf nur Errors gestellt ist, dann wird auch kein MySQL Log erstellt.


    Poste mal, was der print im Server Log ausgibt, wenn der Spieler gespeichert wird.

  • Der print wird ja im Server Log ausgegeben, daher reicht das.
    Wenn kein MySQL Error ausgegeben wird, und das Logging auf nur Errors gestellt ist, dann wird auch kein MySQL Log erstellt.


    Poste mal, was der print im Server Log ausgibt, wenn der Spieler gespeichert wird.

    In der Server_Log steht :



    [18:45:46] [join] Aerox has joined the server (0:**.***.***.**)
    [18:45:58] query: UPDATE `accounts` SET `Level`='1',`Gender`='1',`Age`='21',`Admin`='0',`Skin`='137' WHERE `ID`='0'
    [18:45:58] Der Account von Aerox wurde erfolgreich gespeichert!
    [18:46:21] query: UPDATE `accounts` SET `Level`='1',`Gender`='1',`Age`='21',`Admin`='0',`Skin`='137' WHERE `ID`='0'
    [18:46:21] Der Account von Aerox wurde erfolgreich gespeichert!
    [18:46:21] [part] Aerox has left the server (0:1)

  • Dann kann es den Skin auch nicht updaten.
    Wie sieht denn dein Code von der Registration aus, und wo setzt du den Wert von "PlayerInfo[playerid][pID]"?

    Dialog_Register:


    case DIALOG_REGISTER: { if(!response) return Kick(playerid); if(strlen(inputtext) < 6) { format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist zum Registrieren freigegeben. Bitte trage ein Sechsstelliges Passwort ein!", SpielerName(playerid)); ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", szQuery, "Registrieren", "Abbruch"); } if(response) { WP_Hash(PlayerInfo[playerid][pPassword], 129, inputtext); mysql_format(db,szQuery,sizeof szQuery,"INSERT INTO `accounts` (`username`,`password`) VALUES ('%e','%e')",SpielerName(playerid),PlayerInfo[playerid][pPassword]); mysql_function_query(db, szQuery, true, "OnQueryFinish", "ii", THREAD_NO_RESULT, playerid); ShowPlayerDialog(playerid, DIALOG_GESCHLECHT, DIALOG_STYLE_LIST, "Geschlecht", "Mann\nFrau", "Auswahl", "Abbruch"); } }




    Hier werden die sachen nach der Altereingabe gesetzt sprich nach der Registration:


    case DIALOG_ALTER: { if(!response) return ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Bitte trage dein Alter in das Dialogfenster ein.", "Auswahl", "Abbruch"); if(response) { if(strval(inputtext) < 5 || strval(inputtext) > 99) return ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Fehler! Dein Alter muss zwischen 5 und 99 Jahren liegen. Bitte trage ein Korrektes Alter ein.", "Auswahl", "Abbruch"); format(szQuery, sizeof(szQuery), "Ok, du bist also [%d] Jahre alt.", strval(inputtext)); SendClientMessage(playerid, -1, szQuery); PlayerInfo[playerid][pAge] = strval(inputtext); PlayerInfo[playerid][pLevel] = 1; SetPlayerHealth(playerid, 100); PlayerInfo[playerid][pSkin] = noobskin; SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]); //SetSpawnInfo(playerid, 0, 137, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0); SpielerSpeichern(playerid); CancelSelectTextDraw(playerid); SpawnPlayer(playerid); } }


    Ehm den wert von PlayerInfo[playerid][pID] setze ich eig nicht der wird nur hier geladen :


    forward OnQueryFinish(resultid, extraid, ConnectionHandle);public OnQueryFinish(resultid, extraid, ConnectionHandle){ new Rows, Fields; if(resultid != THREAD_NO_RESULT) { cache_get_data(Rows, Fields); } switch(resultid) { case THREAD_LOAD_ACCOUNTS: { if(Rows) { new tmp[130]; cache_get_field_content(0, "ID", tmp); PlayerInfo[extraid][pID] = strval(tmp); cache_get_field_content(0, "Password", tmp); format(PlayerInfo[extraid][pPassword], 129, "%s", tmp); cache_get_field_content(0, "Level", tmp); PlayerInfo[extraid][pLevel] = strval(tmp); cache_get_field_content(0, "Gender", tmp); PlayerInfo[extraid][pGender] = strval(tmp); cache_get_field_content(0, "Age", tmp); PlayerInfo[extraid][pAge] = strval(tmp); cache_get_field_content(0, "Admin", tmp); PlayerInfo[extraid][pAdmin] = strval(tmp); cache_get_field_content(0, "Skin", tmp); PlayerInfo[extraid][pSkin] = strval(tmp); format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist registriert. Bitte trage dein Passwort ein.", SpielerName(extraid)); ShowPlayerDialog(extraid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", szQuery, "Login", "Abbruch"); } else if(!Rows) { format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist zum Registrieren freigegeben.", SpielerName(extraid)); ShowPlayerDialog(extraid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", szQuery, "Registrieren", "Abbruch"); } } } return 1;}und hier soweit ich micht nicht irre:[pwn]SpielerSpeichern(playerid){ new query[1024]; mysql_format(db,query,sizeof(query),"UPDATE `accounts` SET `Level`='%i',`Gender`='%i',`Age`='%i',`Admin`='%i',", PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pGender],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pAdmin]); mysql_format(db,query,sizeof(query),"%s`Skin`='%i' WHERE `ID`='%i'", query,PlayerInfo[playerid][pSkin],PlayerInfo[playerid][pID]); printf("query: %s", query); mysql_tquery(db,query); printf("Der Account von %s wurde erfolgreich gespeichert!",SpielerName(playerid)); return 1;}


    SpielerSpeichern(playerid) { new query[1024]; mysql_format(db,query,sizeof(query),"UPDATE `accounts` SET `Level`='%i',`Gender`='%i',`Age`='%i',`Admin`='%i',", PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pGender],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pAdmin]); mysql_format(db,query,sizeof(query),"%s`Skin`='%i' WHERE `ID`='%i'", query,PlayerInfo[playerid][pSkin],PlayerInfo[playerid][pID]); printf("query: %s", query); mysql_tquery(db,query); printf("Der Account von %s wurde erfolgreich gespeichert!",SpielerName(playerid)); return 1; }

    5 Mal editiert, zuletzt von _AEROX_ ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kannst du das bitte leserlich posten?
    (Erster BBC-Button -> Quellcode)

    Bekomme das irgendwie nicht übersichtlicher :O habe dir ja bereits eine PN geschickt lade es dir bei pastebin.com hoch und du kannst mir ja da kurz helfen und die lösung können wir ja hier dann posten :)

  • Ändere im DIALOG_REGISTER:
    mysql_function_query(db, szQuery, true, "OnQueryFinish", "ii", THREAD_NO_RESULT, playerid);
    zu:
    mysql_function_query(db, szQuery, true, "OnQueryFinish", "ii", THREAD_REGISTER_ACCOUNT, playerid);


    Und füge bei OnQueryFinish den case hinzu:
    case THREAD_REGISTER_ACCOUNT:
    {
    PlayerInfo[extraid][pID] = cache_insert_id();
    }


  • Und füge bei OnQueryFinish den case hinzu:
    case THREAD_REGISTER_ACCOUNT:{ PlayerInfo[extraid][pID] = cache_insert_id();}

    ehm so richtig?



    forward OnQueryFinish(resultid, extraid, ConnectionHandle);
    public OnQueryFinish(resultid, extraid, ConnectionHandle)
    {
    new Rows, Fields;
    if(resultid != THREAD_NO_RESULT)
    {
    cache_get_data(Rows, Fields);
    }
    switch(resultid)
    {
    case THREAD_REGISTER_ACCOUNT:
    {
    PlayerInfo[extraid][pID] = cache_insert_id();//Hier richtig ?
    }
    case THREAD_LOAD_ACCOUNTS:
    {
    if(Rows)
    {
    new tmp[130];
    cache_get_field_content(0, "ID", tmp);
    PlayerInfo[extraid][pID] = strval(tmp);
    cache_get_field_content(0, "Password", tmp);
    format(PlayerInfo[extraid][pPassword], 129, "%s", tmp);
    cache_get_field_content(0, "Level", tmp);
    PlayerInfo[extraid][pLevel] = strval(tmp);
    cache_get_field_content(0, "Gender", tmp);
    PlayerInfo[extraid][pGender] = strval(tmp);
    cache_get_field_content(0, "Age", tmp);
    PlayerInfo[extraid][pAge] = strval(tmp);
    cache_get_field_content(0, "Admin", tmp);
    PlayerInfo[extraid][pAdmin] = strval(tmp);
    cache_get_field_content(0, "Skin", tmp);
    PlayerInfo[extraid][pSkin] = strval(tmp);
    format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist registriert. Bitte trage dein Passwort ein.", SpielerName(extraid));
    ShowPlayerDialog(extraid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", szQuery, "Login", "Abbruch");
    }
    else if(!Rows)
    {
    format(szQuery, sizeof(szQuery), "Hallo %s, dieser Account ist zum Registrieren freigegeben.", SpielerName(extraid));
    ShowPlayerDialog(extraid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", szQuery, "Registrieren", "Abbruch");
    }
    }
    }
    return 1;
    }