Gangzonefarben in Mysql laden/speichern

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 möchte bei Gangzones die Farben speichern/laden mit Mysql.
    Sie werden aber immer als 0 geprintet.


    Datenbank-Struktur siehe Anhang

    enum GangzoneInfo
    {
    zonecolor,
    textcolor
    };
    new GangZone[][GangzoneInfo];


    stock LoadGangZone(id)
    {
    new var[50],str[50];
    format(str, sizeof(str),"SELECT * FROM `gangzones` WHERE `id` = '%d'", id);
    self_mysql_queryEx(str);
    mysql_store_result();
    while(mysql_fetch_row_format(str,"|")){
    mysql_get_field("zonecolor",var ); GangZone[id][zonecolor] = strval(var);
    mysql_get_field("textcolor",var ); GangZone[id][textcolor] = strval(var);
    }
    printf("%d",GangZone[id][textcolor]);
    GangZone[id][gangzoneid] = M_CreateZone(GangZone[id][minX],GangZone[id][minY],GangZone[id][maxX],GangZone[id][maxY],GangZone[id][zonecolor],GangZone[id][gOwner],GangZone[id][gtext],GangZone[id][textcolor]);
    return 1;
    }

    Wo liegt der Fehler, find ihn nicht?

  • Das liegt daran, dass du keinen HEX Wert als VARCHAR speichern darfst, der dann über strval zu einem Integer konvertiert wird.


    Du musst als INT die Farbe speichern, und auch den Integer Wert der Farbe in die Datenbank speichern.
    Das kannst du entweder mit einem Konverter herausfinden, dem Taschenrechner in Windows, oder indem du es hart in den Code schreibst:
    printf("%d", 0x008080FF);


    Es muss in der Datenbank eine Zahl stehen, kein HEX Wert.



    Du kannst zwar auch den HEX Wert speichern, aber dann brauchst du einen Code der dir das konvertiert etc, und das ist nicht wirklich sinnvoll.