Farbige Textdraws mit #define einbinden?

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 gruesse euch liebe Community,


    Ich will mein Script schoen dynamisch gestalten damit man alles veraendern kann ohne das ganze Skript neuaufzubauen.


    Ich habe einen Textdraw welcher den Namen des Teams anzeigt, hier mal Beispiel:



    In der Teamauswahl wurde es wie folgt dargestellt:


    Team: VIOLET


    Dabei habe ich wie folgt formatiert:



    format(astring,sizeof(astring),"Team: {610D96}VIOLET");


    Also alles in Ordnung.



    Nun wollte ich das ganze jedoch so machen, so dass ich die Farbe und den Teamnamen am Anfang des Skripts definiere.[/b]


    #define FIRST_TEAM_COLOR_TAG "{610D96}VIOLET"




    format(astring,sizeof(astring),"Team: "#FIRST_TEAM_COLOR_TAG);



    Jedoch wird es dann falsch dargestellt, undzwar ingame als:


    Team: ? 610D96 VIOLET


    Wie kann ich das so machen, so dass es wie im ersten Beispiel, korrekt mit Farbe dargestellt wird?



    so soll es am Ende aussehen Team: VIOLET


  • Beitrag von Xauber ()

    Dieser Beitrag wurde von seegras aus folgendem Grund gelöscht: Du kannst Posts auch löschen ;) ().
  • Beitrag von Xauber ()

    Dieser Beitrag wurde von seegras gelöscht ().
  • Du brauchst den String nicht formatieren, wenn es eine Konstante ist...



    #define FIRST_TEAM_COLOR_TAG "{610D96}VIOLET"


    SendClientMessage(playerid, -1, FIRST_TEAM_COLOR_TAG);

    Es reicht hier sowas...du musst dir einfach vorstelle, dass das Makro 1zu1 vom Compiler übersetzt wird...und das sieht ja nicht wirklich gut aus:


    SendClientMessage(playerid, -1, ""#"{610D96}VIOLET""");


    Ich meine gut, könnte sogar compilen...aber nunja e^pi*i ist auch -1...aber deshalb muss man es ja nicht hinschreiben xD

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe es hingekriegt, danke an euch


    Habe es gerade mal mit Textdraws probiert, da kommt es immernoch auf dieses ? FF00FF YELLOW heraus.


    Bei SendClientMessage interessanterweise kein Problem.
    Kann es eventuell sein, dass das ganze mit Textdraws nicht moeglich ist?


    Habe auch mal strcat(string,FIRST_TEAM_COLOR_TAG); probiert, klappt bei SendClientMessage aber nicht bei TextDraws

    2 Mal editiert, zuletzt von Sub Royal ()

  • So


    Habe mal als Bilder wie es sein sollte, und wie es jetzt ist:


    Damals habe ich die Farbe direkt im Textdrawstring drin gehabt.


    Jetzt will ich das ganze aber nicht mehr statisch drin haben, sondern dynamisch per Makro einbauen koennen.



    Der komplette Codeblock:




    Damals als alles noch "statisch" war habe ich den string fuer den Textdraw wie folgt formatiert:


    format(astring,sizeof(astring),"Team: {610D96}VIOLET");


    Da sah es so aus


    sa-mp-052.png


    Alles super, so wie es sein sollte.


    Nun habe ich folgende Konstrukte probiert um das gleiche Ergebnis wie oben zu erhalten


    format(astring,sizeof(astring),"Team: "#FIRST_TEAM_COLOR_TAG);





    format(astring,sizeof(astring),"Team:");


    und/oder strcat(astring,FIRST_TEAM_COLOR_TAG);


    Erschien mir logisch da sogesehen beides einfache Strings sind, jedoch war das Ergebnis bei allen meinen Versuchen folgendes


    sa-mp-058.png


    Der String scheint zwar drin zu sein, aber das mit der Farbe haut irgendwie nicht hin.
    Einzigen workaround den ich sehe, welcher aber nicht wirklich das gelbe vom Ei ist, ist das erstellen von 2 Textdraws, 1 Textdraw nur mit dem Inhalt "Team:" und ein 2ter der direkt daneben ist mit dem Inalt FIRST_COLOR_TEAM_TAG

  • Also mal als erstes, wenn du schon Makros nutzt, dann pack sie statisch rein, da brauchst keine extra Funktionen und auch keine Variablen:


    C
    PlayerTextDrawSetString(playerid, TeamText[playerid], "Team: "#FIRST_TEAM_COLOR_TAG);
    PlayerTextDrawShow(playerid,TeamText[playerid]);
    
    
    PlayerTextDrawSetString(playerid, LocText[playerid], "Location: "#FIRST_TEAM_LOCATION);
    PlayerTextDrawShow(playerid,LocText[playerid]);

    Der Grund aber, wieso das in SendClientMessage Funktioniert, aber nicht mit TextDraws oder GameTexten liegt daran, dass es dort diese Color codes mit den Klammern {FFFFFF} nicht gibt!



    Schau mal hier:
    http://wiki.sa-mp.com/wiki/Colors_List#GameText


    Wenn da musst du eben sowas verwenden:


    #define FIRST_TEAM_COLOR_TAG "~b~~h~~h~VIOLETT"


    #grammar nazi

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ohje danke dir dass du mich auf den Leim gebracht hast :D habe die ganze nicht gerafft dass das bei Textdraws nicht geht.


    Habe daher nun 2 Textdraws gemacht, einer wo Team: Steht, in weiss, und einer mit der Teambezeichnung und diese mit PlayerTextDrawColor dann gesetzt :D Jetzt ist es so wie ich wollte.


    Achso wegen dem Violett danke Kaliber :D Habe gedacht dass es auch im deutschen immer Violet gewesen sei :D




    So eine weitere Frage, oder vielleicht mache ich deswegen lieber ein neues Thema auf


    Habe leider wegen der Farbcodes (Fuer Spieler, Textdraws., Client Messages) verdammt viele #defines drin.
    Kann ich die irgendwie kuerzen? Bzw. ist es moeglich beispielweise Funktionen in #defines einzubauen, durch die ich aus einer Hexfarbe alle anderen Farben ableiten kann?




    Das ist das was ich habe



    Rein logisch gedacht kann man ja aus den Codes in den Zeilen 11-14 alles andere zusammenzimmern, hat jemand dazu einen Ansatz?

  • Hier mal ein Beispiel:


    Hoffe ich konnte dir bisschen zeigen, was man da so alles anstellen kann ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S