[Frage]Hexcode speichern und laden

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
  • Ich stehte gerade von einem komischen Problem.


    Ich möchte den Hexcode (Farbwert), einer GangZone aus meiner Datenbank lesen und hineinschreiben.


    Das hineinschreiben ist ja noch recht einfach, da ich einfach einen String benutze.


    Nun benutz ich diesen Code aus dem Wiki:



    HexToInt(string[]){
    if (string[0]==0) return 0;
    new i;
    new cur=1;
    new res=0;
    for (i=strlen(string);i>0;i--) {
    if (string[i-1]<58) res=res+cur*(string[i-1]-48);
    else res=res+cur*(string[i-1]-65+10) cur=cur*16; }
    return res; }


    Quelle: http://wiki.sa-mp.com/wiki/Colors_List


    Um den String in einen Integer-Farbcode zu verwandeln.


    Beispiel:


    #define COLOR_GREEN 0x33AA33AA


    Dann speichere ich 33AA33AA als Code ab, um diesen in einen Integerwert zumzuschreiben.


    Problem ist, dass die Gangzone Farbe dann nicht, Grün, sondern dunkelblau ist, auch wenn ich folgendes Beispiel nehme:


    Code
    #define COLOR_RED 0xAA3333AA


    Zum Test habe ich das ganze dann mit SetPlayerColor ausprobiert, da bei dieser Funktion der integer Farbcode "erlaubt ist", aber die spielerfarbe wird ebenfalls nur dunkelblau.


    Schon mal jemand damit gearbeitet :D?


    Danke.

  • in der uf.inc habe ich folgendes gefunden:
    stock HexToInt(string[])
    {
    if (string[0]==0)
    {
    return 0;
    }
    new cur=1;
    new res=0;
    for (new i=strlen(string);i>0;i--)
    {
    if (string[i-1]<58)
    {
    res=res+cur*(string[i-1]-48);
    }
    else
    {
    res=res+cur*(string[i-1]-65+10);
    }
    cur=cur*16;
    }
    return res;
    }


    stock IntToHex(number)
    {
    new m=1;
    new depth=0;
    while (number>=m)
    {
    m = m*16;
    depth++;
    }
    depth--;
    new str[MAX_STRING];
    for (new i = depth; i >= 0; i--)
    {
    str[i] = ( number & 0x0F) + 0x30; // + (tmp > 9 ? 0x07 : 0x00)
    str[i] += (str[i] > '9') ? 0x07 : 0x00;
    number >>= 4;
    }
    str[8] = '\0';
    return str;
    }


    schon IntToHex probiert? Ansonsten fällt mir auch nichts so leicht ein

  • Ja aber das ist ja nen String dann, und kein Hexcode =P?


    Weil wenn ich ja #define COLOR_RED 0xAA3333AA benutze, setze ich ja 0xAA3333AA auch nicht in (""), somit hätte ich ja garnichts ändern brauchen, aber ich teste es mal ^^


    EDIT: wie erwartet Type mismatch ;D, aber danke.

    Einmal editiert, zuletzt von 8D ()

  • einfch mit dini ist witzig beschreib es genauer, auserdem geht es um ne Datenbank nicht um ein file aber wenn du uns sagst wie genau du es mit dini gemacht haben kann dies vielleicht für die datenbank umgeschrieben werden ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • bei seif GangzoneCreater gehts:
    TurfInfo[areaid][tColor] = strval(turf[6])+ALPHA;


    GangZoneCreate(TurfInfo[areaid][tMin_X], TurfInfo[areaid][tMin_Y], TurfInfo[areaid][tMax_X], TurfInfo[areaid][tMax_Y]);
    GangZoneShowForAll(gangid, TurfInfo[areaid][tColor]-ALPHA);
    quelle: http://pastebin.com/f54de55f6 zeile 712 & 721


    edit: dies ist ein Antwort auf Maxx

  • Hallo 8D, wie gehts dir denn so? ^^ Ka warum ich schwelgen muss aber naja...


    Zu deinem Problem, ich nütze den Datentyp Int bzw. Integer und kann damit auch Ganzzahlen im negativen Bereich abspeichern lassen, außer du den Datentyp Integer in der Spalte vorzeichenlose erstellt hast. (Unsigned)



    Bedeutet hier ein Beispiel wenn du den Integer normal erstellt hast, ohne den Parameter (Unsigned):



    new farbe=HexToInt("0xFFFFFFFF"); //Farbe Schwarz, wie einfallsreich


    format(query,sizeof(query),"UPDATE <TableName> SET Farbe = '%d' WHERE <Irgendwas> = '<IrgendeinenWert>'",farbe);
    mysql_query(query);



    //Und natürlich kann SetPlayerColor auch mit Dezimalwerten umgehen und kannst einfach den Wert 'farbe' von oben so hernehmen....
    SetPlayerColor(playerid,farbe);



    Info: Hab kein [pwn] Format, da sonst GoogleChrome damit bissl spackt...

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Nene lies richtig, ich hab "schwelgen" geschrieben ^^ Vielleicht war es eigentlich eh nur mein Ego, der protzig sein musste... Aber egal, Glückwunsch fürs Gelingen ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!