Mysql spinnt - Datenbank

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,
    Ich verstehe nicht was da los ist, in der Datenbank ist alles auf 0 Adminlevel unso Geld etc aber ingame /stats habe ich 1Warn 3500Geld Adminlevel 5 etc und kills death obwohl das garnicht stimmt?


    Screen:http://www.imagebanana.com/view/ep0tge11/Unbenannt.png
    http://www.imagebanana.com/view/78xc7gkw/samp313.png

    stock LoadPlayer(playerid)
    {
    new str5[128];
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pBanned] = mysql_GetInt("accounts", "Bann", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pWarn] = mysql_GetInt("accounts", "Warn", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pDeaths] = mysql_GetInt("accounts", "Deaths", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Admin] = mysql_GetInt("accounts", "AdmLevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][APrison] = mysql_GetInt("accounts", "APrison", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Muted] = mysql_GetInt("accounts", "Muted", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTot] = mysql_GetInt("accounts", "Tot", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);
    GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]);
    SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
    }
    if(SpielerInfo[playerid][pWarn] >4)
    {
    format(str5,128,"[SERVER] Dein Account %s wurde gebannt, Grund: 5/5 Verwarnungen",SpielerName(playerid));
    SendClientMessage(playerid,ROT,str5);
    Kick(playerid);
    }
    if(SpielerInfo[playerid][pBanned] == 1)
    {
    format(str5,128,"[SERVER] Dein Account %s wurde gebannt!");
    SendClientMessage(playerid,ROT,str5);
    Kick(playerid);
    }
    return 1;
    }


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(SpielerInfo[playerid][LoggedIn] == 1)
    {
    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", "Bann", SpielerInfo[playerid][pBanned], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Warn", SpielerInfo[playerid][pWarn], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Deaths", SpielerInfo[playerid][pDeaths], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "AdmLevel", SpielerInfo[playerid][Admin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "APrison", SpielerInfo[playerid][APrison], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Muted", SpielerInfo[playerid][Muted], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tot", SpielerInfo[playerid][pTot], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);
    // pSkin & pTod
    SpielerInfo[playerid][ADuty] = 0;
    SpielerInfo[playerid][LoggedIn] = 0;
    SpielerInfo[playerid][BHopWarns] = 0;
    }
    }
    return 1;
    }

  • Du solltest Enum werte auch beim Connect auf 0 setzen, da wenn ein neuer Spieler on kommt, übernimmt er die alten werde des Spielers daher kommt das


    Wie meinst du das? :D

    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pKills,
    pDeaths,
    Float:pHealth,
    Admin,
    ADuty,
    APrison,
    LoggedIn,
    Muted,
    BHopWarns,
    pBanned,
    pTot,
    pWarn,
    pSkin
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];

  • was meine ich mit den zurücksetzen?
    Auf 0 setzen die werte
    wenn er connectet dann so mit den werten
    SpielerInfo[playerid][pLevel] = 0;


    So?


    public OnPlayerConnect(playerid)
    {
    new text[256];
    SetPlayerColor(playerid,0xFFFFFF00);
    if(IsPlayerNPC(playerid))return 1;
    ResetPlayer(playerid);
    if(SpielerInfo[playerid][LoggedIn] == 0)
    {
    if(mysql_CheckAccount(playerid) == 0)
    {
    format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen auf Pure Gaming, {00B700}%s {FFFFFF}!\nEs wurde kein Account in der Datenbank mit deinem Namen gefunden.\nAccount legst du an, indem du ein Accountpasswort eingibst und auf Registrieren drückst.",SpielerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register",text,"Register","Exit");
    }
    else if(mysql_CheckAccount(playerid) == 1)
    {
    format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen zurück auf Pure Gaming, {00B700}%s {FFFFFF}!\nBitte gib unten in das Eingabefeld dein Accountpasswort ein,\num dich einzuloggen. Anschließend werden deine Accountdaten geladen.",SpielerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",text,"Login","Abbrechen");
    }
    SetTimerEx("Connect",1104,0,"d",playerid);
    }



    stock ResetPlayer(playerid)
    {
    SpielerInfo[playerid][LoggedIn] = 0;
    SpielerInfo[playerid][pLevel] = 0;
    SpielerInfo[playerid][Admin] = 0;
    SpielerInfo[playerid][pGeld] = 0;
    SpielerInfo[playerid][pKills] = 0;
    SpielerInfo[playerid][pDeaths] = 0;
    return 1;
    }

  • Du solltest Enum werte auch beim Connect auf 0 setzen, da wenn ein neuer Spieler on kommt, übernimmt er die alten werde des Spielers daher kommt das


    Wieso muss man denn sowas machen ?


    Wenn man es läd, muss er doch eigentlich die alten Werte mit den aus der Datenbank geladenen Werte ersetzen ?

    VIVA LA REVOLUCIÓN


  • Wieso muss man denn sowas machen ?


    Wenn man es läd, muss er doch eigentlich die alten Werte mit den aus der Datenbank geladenen Werte ersetzen ?


    Das macht er bei einem bereits existierende Spieler, aber wenn sich jemand neu Registriert hat er ja alle Werte auf Null da er neu auf dem Server ist und dadurch das die Werte nicht Gelöscht wurden vom vorherigen Spieler auf dieser ID, bekommt er die Werte von dem Spieler der vorher auf dieser ID Connected war.