MySQL Datenbank | 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
  • Hay,


    Ich habe ein Problem, undzwar wird mein Skin nicht gespeichert.
    meine Datenbank hat bereits die Spalte "Skin" in der Tabelle "accounts"
    meine Speicherung im Script:


    Das Laden im Script:

    Jetzt hab ich jedoch das Problem, das wenn ich mich ingame registriere, garnichts mehr in der Datenbank gespeichert wird, d.h. auch nicht die Account daten (Name/Passwort)
    Sobald ich bei beiden stocks die Sache mit dem Skin rausnehme, funktionierts wieder.


    Was hab ich falsch gemacht?


    Weitere Stocks:

  • Versuche es mal bitte so:



    Außerdem habe ich noch eine Frage wenn es nicht klappen sollte, undzwar welche Mysql Plugin Version benutz du?


    Mit freundlichen Grüßen German_ScripterHD


    //Edit #1:


    &s zu %s geändert.


    Mit freundlichen Grüßen
    German_ScripterHD

  • Hat nicht geklappt.
    Ich nutze die Version R5.
    Ich glaube es liegt an diesem stock:


    Ich weiß jedoch nicht was ich daran änderen wollte.
    Weil wenn du bedenkst, wo ich die Skinspeicherung bei LoadPlayer und SavePlayer nicht drin hatte, hatte er 5 Sachen zu speichern (bei SetInt)
    Und wenn du da zählst, sind es genau 4 Strings. also das hier:

    Code
    mysql_real_escape_string(Table, Table);
            mysql_real_escape_string(Field, Field);
            mysql_real_escape_string(Where, Where);
            mysql_real_escape_string(Where2, Where2);

    Eventuell muss da noch was hinzugefügt werden? Was genau, weiß ich leider nicht... :/


    /e
    Klappt mit deiner zweiten Version immernoch nicht.

  • Was sagen denn die Logs?
    Würde spontan sagen, dass man damit mehr anfangen kann.


    Gruß.

    Ich bin Online gekommen, hab mich registriert, mir einen Skin gesetzt, wieder offline gegangen, den Server abgeschaltet und die Datenbank überprüft. (nichts drin.)

  • @iEnergy


    /e
    So habs geschafft, jedoch noch ein kleines Problem.
    Die Datenbank sieht nun so aus:

    Das Problem:
    Er Speichert nicht meinen Level/Geld/Kills/Tode/Skin/Health richtig ab, ich habe mir z.B. ingame den Skin 50 gesettet und es wird in der Datenbank nicht aktualisiert. Es bleibt beim default Wert.. jemand ne idee?

    Einmal editiert, zuletzt von ryaN.jeZoo ()

  • Dein Name wird scheinbar nicht in pName gespeichert.
    Mach es lieber damit:
    stock SpielerName(x){new pName[MAX_PLAYER_NAME+1];GetPlayerName(x, pName, sizeof(pName));return pName;}
    Dann halt den Array von pName mit der Funktion ersetzen.


    Gruß.

    Doch hat ja funktioniert, er speichert jetzt alles.
    bzw. die Account Daten (Name/Password)
    Der Rest bleibt leider Default Wert, keine Ahnung was ich da falsch gemacht habe.

  • Erstmal braucht Skin einen Standardwert.
    Wenn du einen Skin änderst, musst du die Variable imme mit ändern.


    Aber laut Logs wird das ja alles nicht gespeichert. Somit bleibt der Wert NULL.


    Wäre besser wenn du den Log löschst und dich nochmal registrierst, dir einen Skin settest und dann offline gehst.
    Anschließend die Zeilen posten.
    Den neuen Code natürlich ebenfalls - sehen die Änderungen ja nicht


    Das sollte so erstmal reichen. ;)

  • So, das wird jetzt alles gespeichert - also der Skin in der Datenbank, das Geld in der Datenbank etc.
    Nun wenn ich das laden möchte, hab ich bei "OnPlayerConnect" diese Zeilen geschrieben:

    Code
    public OnPlayerConnect(playerid)
    {
        SpielerInfo[playerid][pGeld] = GetPlayerMoney(playerid);
        SpielerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
        LoadPlayer(playerid);
        return 1;
    }


    Problem:
    Er läd nichts, die Sachen werden wieder auf 0 gesetzt, d.h. das Geld und Skin wird wieder auf Standartwert gesetzt.

  • Guten Abend ryaN.jeZoo,
    nach flüchtigem drüberschauen erkenne ich nicht den Punkt, an dem du den Spieler den Skin zuweist sondern eher wieder resettest.


    In der Theorie hast du den Skin bereits in der Variable gespeichert somit sollte SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]); an entsprechender Stelle (Nachdem du die DB-Daten lädst) völlig ausreichen.
    Deine Zeilen unter OnPlayerConnect außer LoadPlayer(playerid); sind unsinnig - kann es sein das du dort die Daten setzen wolltest ?



    Mit freundlichen Grüßen,
    KleineHilfe

  • D

    Das versteh ich jetzt nicht so ganz.


    Kann mir jemand im TeamSpeak behilflich sein? mit Teamviewer?

  • Entferne


    SpielerInfo[playerid][pGeld] = GetPlayerMoney(playerid);SpielerInfo[playerid][pSkin] = GetPlayerSkin(playerid);


    Setze den Skin an der Stelle wo du ihn setzen möchtest mit


    SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin])


    Nachdem du dies beseitigst sehen wir ob die Daten korrekt aus der Datenbank gelesen und gesetzt werden.


    Mit freundlichen Grüßen,
    KleineHilfe

    Einmal editiert, zuletzt von KleineHilfe ()