MySQL | Skin und Level werden resettet

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 Breadfish,


    ich habe ein etwas größeres Problem mit meinem Accountsystem.
    Der Skin und das Level wird nach 2 GMX's oder nach 2 Reloggs wieder resettet als auf 0 gesetzt.


    Hier mal der Code:



    Spieler wird geladen


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
    SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Perso] = mysql_GetInt("accounts", "Perso", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Autoschein] = mysql_GetInt("accounts", "Autoschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Waffenschein] = mysql_GetInt("accounts", "Waffenschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Motorradschein] = mysql_GetInt("accounts", "Motorradschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Angelschein] = mysql_GetInt("accounts", "Angelschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Reisepass] = mysql_GetInt("accounts", "Reisepass", "Name", SpielerInfo[playerid][pName]);
    // SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    if(SpielerInfo[playerid][pBanned] == 1)
    {
    Kick(playerid);
    }
    }
    return 1;
    }



    Spieler wird gespeichert.



    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Query[256];
    format(Query, sizeof(Query),"UPDATE `accounts` SET `Name` = '%s', `Level` = '%i', `Adminlevel` = '%i', `Kills` = '%i', `Tode` = '%i', `Banned` = '%i', `Skin` = '%i', `Level` = '%i' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pName], SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pAdminlevel], SpielerInfo[playerid][pKills], SpielerInfo[playerid][pTode], SpielerInfo[playerid][pBanned], SpielerInfo[playerid][pSkin], SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pName]);
    mysql_query(Query);

    /*
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Banned", SpielerInfo[playerid][pBanned], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]); */

    }
    }
    return 1;
    }


    Woran kann das liegen ?


    MfG

  • Du kannst schonmal nicht den Namen speichern lassen, wie du das da tust. wenn du durch einen Befehl den Namen änderst, kann die Datenbank das nicht speichern, weil du in der Speicherung WHERE `Name` stehen hast un der Datensatz dann nicht existiert, nach den du updaten willst. Außerdem speicherst du im SQL Befehl das Level doppelt ab. Ansonsten fällt mir nichts auf.