Colored Custom Draw Text

    • Skript

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Colored Custom Draw Text



      Willst du ein Teil von Text drehen lassen? Oder Farbe ändern? Oder Alpha-Werte ändern? Markieren? Position ändnern? Mitte im Text andere Font zeichnen? Kein Problem, mit diesen Skript löst deine Problem! Schau einfach Video für mehr Informationen an!

      Dieser Effekte sind in diesem Skript drin:
      • change color of text
      • change font of text
      • change angle of text
      • add underline of text
      • change position of text
      • change scale of text
      • change alpha of text
      • add sprite of text
      • change text to hide/secret modus
      • add mark of text


      BESCHREIBUNG

      Spoiler anzeigen

      Each command can be used only once, as example:
      "[$=scale(0.5,0.5)][$=angle(45)] Lorem ipsum dolor sit amet"

      The effect work only [$=angle(45)], you can't use two or more effect.
      If you swapping "scale" and "angle", then "scale" will work and "angle" not.
      BUT there are some exceptions, as example:

      * [$=a(ALPHA VALUE)]
      * [$=font(FONT VALUE)]
      * [$=COLOR VALUE]

      This works with other commands multiple. As Example:
      "[$=c_red] [$=size(2,2)] I'LL KILL YOU"

      But it don't work, if you use:
      "[$=size(2,2)] [$=c_red] I'LL KILL YOU"

      The text will be draw as red, but it won't be resized.

      If you want to break commands, just use [$=/]

      INFO of [$=/] break commands
      This don't work on font, because there is no draw_get_font();,
      it's planned on future as feature on Game Maker: Studio.
      Then I can update this script again.
      If you want to back default font, just
      use [$=font(yourdefaultfont)]

      If you want a rotating text, just use:

      Quellcode

      1. draw_text_custom(25,200,"Hello [$=angle("+string(direction)+")]Woororororooolld[$=/]",1)


      COMMANDS LISTE

      Spoiler anzeigen

      Change color of text: [$=COLOR VALUE]
      Example:
      [$=c_green] Lorem ipsum dolor sit amet
      [$=rgb(255,16,33)] Lorem ipsum dolor sit amet
      [$=make_color_rgb(100,255,100)] Lorem ipsum dolor sit amet
      [$=hsv(128,5,167)] Lorem ipsum dolor sit amet
      [$=make_color_hsv(125,213,24)] Lorem ipsum dolor sit amet
      [$=merge_color(c_green,c_blue,0.5)] Lorem ipsum dolor sit amet


      Change font of text: [$=font(FONT)]
      Example:
      [$=font(fnt_8bit)] Lorem ipsum dolor sit amet
      [$=font(fnt_8bit_bold)] Lorem ipsum dolor sit amet


      Change angle of a text: [$=angle(digits)]
      Example:
      [$=angle(90)] Lorem ipsum dolor sit amet

      Underline: [$=u(y,width,color,alpha)]
      Example:
      [$=u(5,10,c_white,1)] Lorem ipsum dolor sit amet

      Change position of a text: [$=pos(x,y)]
      Example:
      [$=pos(0,100)] Lorem ipsum dolor sit amet

      Change scale of a text: [$=scale(xscale,yscale)]
      Example:
      [$=scale(2,2)] Lorem ipsum dolor sit amet

      Change alpha value of a text: [$=a(value)]
      Example:
      [$=a(0.5)] Lorem ipsum dolor sit amet

      Put Sprite in text: [$=img(sprite,image_index)] or [$=img_ext(sprite,image_index, x, y, xscale, yscale, rot, alpha)]
      Example:
      [$=img(spr_ammo,0)] Lorem ipsum dolor sit amet
      [$=c_red][$=img_ext(spr_heart,2,5,10,1.5,1.5,15,1)] Lorem ipsum dolor sit amet (it change the blend of sprite to red)


      Random/Secret of Text: [$=secret(letters)]
      Example:
      var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
      Hello [$=secret("+letters+")]John[$=/]!


      Mark Text: [$=mark(color,alpha)]
      Example:
      [$=mark(c_yellow, 0.3)] Lorem ipsum dolor sit amet


      Stop all commands of a text: [$=/] or # (don't work on font commands)
      Example:
      Hello [$=angle(90)]World[$=/], this is john.


      Example Script:

      GML-Quellcode

      1. //draw_text_custom(x,y,string,alpha)
      2. draw_text_custom(10,10,"[$=c_lime]HULE#[$=angle(45)]Studios[$=/]",1);

      WICHTIGER INFO!! draw_set_halign/draw_set_valign funktioniert nicht richtig bei diesen Skript. Ich werde das fixxen, wenn "draw_get_align" in GM:S eingeführt wurde..




      [video]http://www.youtube.com/watch?v=l4676ouCXAY[/video]


      Ihr stinkt.

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von Chinafreak ()

    • McGamemake schrieb:

      Sehr cool :D
      Muss mal gucken ob ich das irgendwo einbauen kann, ich finde das witzig :D

      Wieder mal Daumen rauf :thumbsup:

      -Nils


      Danke :love:

      ---

      just a small update:

      jetzt kann man constant-farbe folgendes ausführen:

      "[$=c_white]White text by constant variable!"

      statt

      "[$="+string(c_white)+"]White text by constant variable!"


      WICHTIG

      Das funktioniert nur bei constant variable. Skripte wie make_color_rgb/hsv würde es nicht gehen, also muss man diesen Skript immer noch mit "string()" benutzen.

      ---

      Hat jemand eine Idee, wie ich von string "make_color_rgb/hsv" ausführen kann? execute_string funktioniert ja ab Game Maker: Studio nimmer, schade... :----S
      Ihr stinkt.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Chinafreak ()

    • Chinafreak schrieb:

      Hat jemand eine Idee, wie ich von string "make_color_rgb/hsv" ausführen kann? execute_string funktioniert ja ab Game Maker: Studio nimmer, schade... :----S

      Hmm, nachdem c_white ja einfach eine Konstante mit dem Wert 16.777.215 ist, c_red den Wert 255, c_green 32.768, und c_blue den Wert 16.711.680 hat müsste es irgendwie gehen wenn man herausfindet wie die Übergänge verlaufen.

      Ich habe gerade ein paar Tests gemacht: Also der Wert 255 ist definitiv rot, wenn man 256 verwendet beginnt der Verlauf von dunkel nach hell wieder neu, allerdings mit einem Grün-Wert von 1, bei 512 wäre der Grün-Wert 2, bei 5120 sollte der Grün-Wert demnach bei 19 liegen - bis es eben c_green ( 32768 ) erreicht hat, und nachher wird es dann wohl komplizierter bis es zum Wert von c_blue und c_white kommt (da wird es dann wohl Kombinationen von den R- G- und B-Werten geben). :/

      Aber div und mod sollten dir da behilflich sein um die Zahlenwerte zu zerlegen und in ein sinnvolles Skript umzusetzen, wenn ich jetzt keinen Denkfehler drin habe sollte das also möglich sein, ist nur unter Umständen viel Arbeit.^^
      Wenn du dann mit string_char_at() die Eingabe durchgehst und überprüfst ob der String make_color_soundso vorkommt könntest du das kombinieren, aber uff ... vielleicht gibt es auch einen einfacheren Weg.

      Btw. nettes Skript! Solche Vereinfachungen sind natürlich immer praktisch.
    • Chinafreak schrieb:

      Ja gibt es:
      "[$=rgb(red,green,blue)] Blabla"
      Sprich: einfach string "rgb/hsv" erkennen lassen. Wenn es erkannt wurde, dann werden die Farbzahlen in Variable gespeichert, welches später dann zur make_color_rgb/hsv übertragt. ^^
      Ist mir so gerade eingefallen. xD

      Aaaah stimmt, das ist bedeutend einfacher. xD
      Manchmal liegen die einfachen Lösungen direkt vor einem, aber man sieht sie nicht.^^
    • RLP schrieb:

      Chinafreak schrieb:

      Ja gibt es:
      "[$=rgb(red,green,blue)] Blabla"
      Sprich: einfach string "rgb/hsv" erkennen lassen. Wenn es erkannt wurde, dann werden die Farbzahlen in Variable gespeichert, welches später dann zur make_color_rgb/hsv übertragt. ^^
      Ist mir so gerade eingefallen. xD

      Aaaah stimmt, das ist bedeutend einfacher. xD
      Manchmal liegen die einfachen Lösungen direkt vor einem, aber man sieht sie nicht.^^


      Das ist leider oft so. ^^


      ** UPDATE **

      Jetzt lassen sich make_color_rgb, make_color_hsv und merge_color in string ausführen.
      Beispiel:

      GML-Quellcode

      1. draw_text_custom(25,25,"[$=rgb(145,147,205)]HULE Studios",1,1,1)
      2. draw_text_custom(25,25,"[$=make_color_rgb(190,40,40)]HULE Studios",1,1,1)
      3. draw_text_custom(25,25,"[$=hsv(10,255,255)]HULE Studios",1,1,1)
      4. draw_text_custom(25,25,"[$=make_color_hsv(90,200,200)]HULE Studios",1,1,1)
      5. draw_text_custom(25,25,"[$=color_merge(c_green,c_blue,0.5)]HULE Studios",1,1,1)


      Außerdem ist es jetzt auch das neu:



      Man kann nun underline ausführen! Mit dem Befehl [$=u(y,width)]

      Beispiel:

      GML-Quellcode

      1. draw_text_custom(25,25,"[$=c_yellow][$=u(-10,6)]Hu[$=c_green]le [$=u(10,10)]Studios",1,1,1);

      ---
      Zukünftige Update:



      Angle/Rotation,Font, Position und Alpha support!
      Ihr stinkt.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Chinafreak ()

    • RLP schrieb:

      [...] müsste es irgendwie gehen wenn man herausfindet wie die Übergänge verlaufen.


      Dazu hätte ich noch was anzumerken, auch wenn's sich inzwischen erledigt hat.
      Der GM repräsentiert Farben als 24-bit Hexadezimalzahlen - das kennt man im Grunde von jedem beliebigen HTML-Dokument, wo diese Zahl irgendwie so aussieht:
      #AF08BE
      Dabei repräsentieren die beiden höchsten Stellen, also die am weitesten links liegenden 8 Bit, den roten Wert, die mittleren den grünen und die niedrigsten den blauen.
      Aus was für einem Grund auch immer macht der GM es andersrum, also quasi:
      #BE08AF
      Da sind die niedrigsten Bits die roten, deswegen läuft man auch, wenn man immer +1 rechnet, immer wieder rote Spektren durch bis der Grünanteil irgendwann hoch genug ist, um sichtbar zu werden. Normalerweise würde man blaue Spektren durchlaufen.
      Was make_color_rgb also intern macht ist, es rechnet R + (2^8 * G) + (2^16 * B) und das Ergebnis ist dann eure Farbe.

      Und dann wär da noch der Zusammenhang zwischen RGB und HSV. Die sind ineinander umrechenbar, aber das ist eine etwas... komplizierte Sache - von RGB nach HSV sind es nur ein paar relativ einfach zu programmierende Formeln, in umgekehrter Richtung ist das eine abschnittsweise definierte Funktion mit 6 (eigentlich 7) unterschiedlichen Körpern. Das liegt daran, dass RGB normalerweise auf einem Würfel repräsentiert wird, und HSV auf einem Zylinder. Man muss da also x/y/z-Koordinaten in sowas wie 3D-Polarkoordinaten umrechnen und umgekehrt. Mehr zur Umrechnung HSV -> RGB gibt's hier und mehr zur Umrechnung RGB -> HSV gibt's hier (unter dem eigentlichen Tool).
      Wer das im GM bauen will, sollte sich dran erinnern, dass diese Formeln davon ausgehen, dass ihr eure Zahlen im Format #RRGGBB speichert, nicht im GM-Format #BBGGRR. Das ist auch so schon mit genug Stolpersteinen verbunden. :P
    • Bald drehe ich durch. :D

      Ich glaube, es ist jetzt feritg. Ich werde vielleicht schon morgen updaten. ^^
      Nur der Titel "Colored Custom Draw Text" passt jetzt dann hier nicht mehr.

      Features bei diesen Update:

      • Font
      • Angle
      • Position
      • Scale
      • Alpha
      • Sprite
      • Sprite Ext
      Ihr stinkt.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Chinafreak ()

    • Riesen Update, siehe bei Startpost. ;)
      Beschreibung und Commando-Liste ganzer wieder in Deutsch zu übersetzen wäre es umständlich. Falls jemand so dringend in Deutsch braucht, sollte einfach mir per PN anschreiben und ich werde es dann übersetzen.
      Viel Spaß damit noch. Falls jemand das Skript ohne Marketplace haben möchte, just send me a PN.
      Ihr stinkt.