Integer 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
  • Hallo. Ich habe das Problem das die Variable Hunger die für jeden einzelnen Spieler definiert ist nicht gespeichert wird. Das Speicherungssystem läuft via MySQL.


    Hier mal den Speicher Schnipsel :
    mysql_SetInt("user,","Hunger", Spieler[playerid][hunger], "Name", Spieler[playerid][sName]);
    Anscheinend wird der Wert immer wieder auf 0 gesetzt ?


    Hier der Lade Schnipsel :
    Spieler[playerid][hunger] = mysql_GetInt("user", "Hunger", "Name", Spieler[playerid][sName]);.


    Beim Registrieren wird der Wert Hunger dann auf 100 gesetzt die Maximale Länge in der Datenbank beträgt testweise 200 Zeichen .


    Falls das Enum ebenfalls benötigt wird:
    enum SpielerD
    {
    sName[MAX_PLAYER_NAME],
    hunger
    }
    new Spieler[MAX_PLAYERS][SpielerD];


    Danke im Vorraus !.

  • Das GetInt :
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }
    SetInt:
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    Sollte daran eigentlich nicht liegen , weil alles andere ja auch vernünftig gespeichert wird.

  • Na spitze. Also ich sehe eigentlich keine Fehler in meinem Script.
    public HungersystemDurstsystem()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    Spieler[playerid][hunger] -= 1;
    Spieler[playerid][durst] -= 2;

    //Hunger System
    switch(Spieler[playerid][hunger])
    {
    case 80..100:
    {
    TextDrawHideForPlayer(playerid,Hunger[playerid]);
    TextDrawColor(Hunger[playerid] , 0x28f21dFF);
    TextDrawShowForPlayer(playerid,Hunger[playerid]);
    }
    Daran sollte es auch nicht liegen.

  • Ich habe mal einen neuen Account erstellt :
    Beim Connect ( weil ich noch nicht registriert bin ) : 0 Hunger
    Beim Disconnect ( schon Registriert :( 99 Hunger
    Dann hatte ich natürlich direkt in der Datenbank nachschaut. Es wurde aber keine 99 gespeichert.
    Dann bin ich nochmal dem Server beigetreten:
    Beim Connect : 99 Hunger ( warum auch immer ? )
    Beim Disconnect : -1.
    Das heißt schonmal er hat keinen Wert von Hunger den er abruft sonst würde er nicht 0 - 1 Rechnen.
    // Bin jetzt erstmal weg werde morgen wieder vorbei schauen !.

  • Dann hatte ich natürlich direkt in der Datenbank nachschaut. Es wurde aber keine 99 gespeichert.

    Ich würde vermuten, das er nicht zu deinem Speicherungspunkt kommt.
    Und ihn einfach überspringt.


    Beim Connect : 99 Hunger ( warum auch immer ? )


    hast die Variable nicht restettet.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Haben ihn dir via PN geschickt.
    Theoretisch ist aber der Rest des codes nicht nötig. Das -1 liegt daran , dass er anscheinend den nicht gespeicherten Wert
    nimmt also 0 und dann von der 0 - 1 an rechnet.


    //Habe jetzt mal die Werte 100 und 20 eingetragen. Das Textdraw spielt mit nur Spieler[playerid][hunger]
    nicht.Das wird beim connect wieder auf -1 gesetzt und beim Disconnect wird 98 angezeigt.