Farbcode wird falsch abgespeichert

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
  • C
    format(Clan[Spieler[playerid][Gang]][cFarbe], 10,"%s",inputtext);

    Inputtext ist z.B. 0x78BBC2FF


    Wenn ich Clan[Spieler[playerid][Gang]][cFarbe] in einem Dialog anzeige, dann zeigt er mir den inputtext richtig an


    C
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    SendClientMessage(playerid, COLOR_GREY, Clan[Spieler[playerid][Gang]][cFarbe]);


    in dem sendclientmessage aber nur 78BBC2FF


    speicher ich die farbe in meine datenbank kommt auch nur 78BBC2FF an.


    Woran liegts?
    Es fehlt halt das 0x



    Es ist halt nicht nur beim speichern so, sondern auch wenn ich es mir als SendClientMessage ausgebe.
    Im Dialog, wie oben schon gesagt, funktioniert es ja bestens.


    VARCHAR 10 Zeichen angelegt.

  • Was ich meinte, zeigt dir das SendClientMessage den Text korrekt an, wenn du es so machst?

    C
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    SendClientMessage(playerid, COLOR_GREY, str);
  • Was ich meinte, zeigt dir das SendClientMessage den Text korrekt an, wenn du es so machst?

    C
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    SendClientMessage(playerid, COLOR_GREY, str);

    Getestet. Ebenfalls komischerweise ohne 0x

  • Das ist aber komisch.
    Versuche es mal so:

    C
    printf("cFarbe: %s", Clan[Spieler[playerid][Gang]][cFarbe]);
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    printf("str: %s", str);
    format(str, sizeof(str),"Ausgewählter Farbcode: 0x%s",Clan[Spieler[playerid][Gang]][cFarbe]);
    printf("str: %s", str);
    SendClientMessage(playerid, COLOR_GREY, str);

    Was wird zum einen im Spiel angezeigt, und was wird zum anderen im Server Log geprintet? Mache vom Spiel mal einen Screenshot auf dem man Dialog und Nachricht sieht, und poste was im Server Log steht.

  • Das ist aber komisch.
    Versuche es mal so:

    C
    printf("cFarbe: %s", Clan[Spieler[playerid][Gang]][cFarbe]);
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    printf("str: %s", str);
    format(str, sizeof(str),"Ausgewählter Farbcode: 0x%s",Clan[Spieler[playerid][Gang]][cFarbe]);
    printf("str: %s", str);
    SendClientMessage(playerid, COLOR_GREY, str);

    Was wird zum einen im Spiel angezeigt, und was wird zum anderen im Server Log geprintet? Mache vom Spiel mal einen Screenshot auf dem man Dialog und Nachricht sieht, und poste was im Server Log steht.

    Zitat

    cFarbe: 0xEB0000F


    str: Ausgewählter Farbcode: EB0000F
    str0x: Ausgewählter Farbcode: 0xEB0000F

  • Ok. Erhöhe im Enum das cFarbe auf 11, anstatt 10.


    Und dann versuche es mal so:

    C
    printf("cFarbe: %s", Clan[Spieler[playerid][Gang]][cFarbe]);
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    printf("str1: %s", str);
    format(str, sizeof(str),"Ausgewählter Farbcode: 0x%s",Clan[Spieler[playerid][Gang]][cFarbe]);
    printf("str2: %s", str);
    format(Clan[Spieler[playerid][Gang]][cFarbe], 11,"0x%s",Clan[Spieler[playerid][Gang]][cFarbe]);
    printf("str3: %s", str);
    SendClientMessage(playerid, COLOR_GREY, str);

    Was steht dann im Log?

  • Ich habe es jetzt mit "Zwischenspeicherung" versucht.


    Immer noch der selbe Aufbau:

    1. Schritt (Code):

    C
    format(Clanfarbe[playerid][Zwischen], 12,"%s",inputtext);
       printf("Zwischen: %s", Clanfarbe[playerid][Zwischen]);
    //GROßER DIALOG (Schritt 2 Dialog)
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clanfarbe[playerid][Zwischen]);
    printf("str: %s", str);
    format(str, sizeof(str),"Ausgewählter Farbcode: 0x%s",Clanfarbe[playerid][Zwischen]);
    printf("str0x: %s", str);



    Ausgaben im Log:

    Zitat

    Zwischen: 0xEB0000FF


    str: Ausgewählter Farbcode: EB0000FF
    str0x: Ausgewählter Farbcode: 0xEB0000FF


    2. Schritt (Code):


    C
    format(Clan[Spieler[playerid][Gang]][cFarbe], 12, "%s", Clanfarbe[playerid][Zwischen]);
    printf("cFarbe: %s", Clan[Spieler[playerid][Gang]][cFarbe]);


    Ausgabe im Log:



    Zitat

    cFarbe: EB0000FF



    Das komische dabei ist ja, dass die Zwischenspeicherung richtig ist und auch im großen Dialog angezeigt wird.
    Im Kleinen dann wieder nicht und dieses dann auch so gespeichert wird.

  • Mit zu 100% deinem Code:



    cFarbe: EB0000FF
    str1: Ausgewählter Farbcode: EB0000FF
    str2: Ausgewählter Farbcode: 0xEB0000FF
    str3: Ausgewählter Farbcode: 0xEB0000FF


    Im Chat:
    Ausgewählter Farbcode: 0xEB0000FF


    /e


    Wenn ich jetzt noch

    C
    format(Clan[Spieler[playerid][Gang]][cFarbe], 12, "%s", inputtext);

    davor setze, dann klappt alles.


    Habe ich nämlich vor diesem Edit nicht.


    Log:

    Code
    [15:20:49] cFarbe: 0xEB0000FF
    [15:20:49] str1: Ausgewählter Farbcode: 0xEB0000FF
    [15:20:49] str2: Ausgewählter Farbcode: 0x0xEB0000FF
    [15:20:49] str3: Ausgewählter Farbcode: 0x0xEB0000FF


    //fehler gefunden

  • Ah! Kopiere den string einfach in eine temporäre Variable im stock (anstatt die aus dem Funktionskopf zu nehmen), dann geht es.
    Strings werden nämlich als Referenz übergeben, in PAWN.

    Habs nicht ganz verstanden :D


    Sein Code:

  • Er macht es interessanterweise schon, aber nicht komplett.
    So meinte ich:

    Dass eben in "tmp" gearbeitet wird, und nicht in der Referenz von dem Farbcode (string).