1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/**************************************************************************************************************************/
// draw_my_text(x,y,str)
// Erklärung:
// Zeichnet einen Text an der Position x/y:
// Sonderheit:
// Es kann ein Schlüsselwort übergeben werden um den Text andersfabig zu zeichnen.
// Beispiel:
// draw_my_text(x,y,"<!c_255000000!>Auto");
// //Alles nach diesem "Tag" wird rot gezeichnet
//
// draw_my_text(x,y,"<!c_normal!>Auto");
// //Alles nach diesem "Tag" wird mit der eingestellten Farbe gezeichnet
//
/**************************************************************************************************************************/
var pos_x,pos_y,text, i,j, line,buffer, tmpcolor;
pos_x = argument0; //Sollte klar sein
pos_y = argument1; //Sollte klar sein
text = argument2; //Sollte auch klar sein
tmpcolor = draw_get_color(); //Speichert die eingestellte Farbe um sie falls der normal-Tag aufgerufen wird zu zeichnen
line = 0; //Wird benötigt um Zeilenbrüche zu zählen
buffer = ""; //Wird benötigt um den Zeichenabstand berechnen zu können
for(i=0;i<string_length(text)+1;i+=1) { //Ich gehe den ganzen Text durch um seine Zeichen zu prüfen
if(string_string_at(text, "<!c_?????????!>",i)) { //Es wird überprüft ob der Text die Farbe wechseln wird
color = string_copy(text, i+5, 9); //Hier wird die Farbkombination aus dem String "herausgefischt"
draw_set_color(make_color_rgb(real(string_copy(color,1,3)),real(string_copy(color,4,3)),real(string_copy(color,7,3)))); //Die Farbkombination wird in den RGB-Code geteilt
text = string_delete(text,i+1,string_length("<!c_?????????!>")); //Der Farb-Tag wird gelöscht (damit er nicht geschrieben wird
} else if ((string_string_at(text, "<!c_normal!>",i))) { //Es wird überprüft ob der Text die Farbe wechseln wird
draw_set_color(tmpcolor); //Die Farbe wird auf die oben voreingestellte Farbe gewechselt
text = string_delete(text,i+1,string_length("<!c_normal!>")); //Der Normal-Tag wird wieder gelöscht
}
if(string_char_at(text,i+1) == "#") { //Es wird überprüft ob ein Zeilenumbruch verlangt wird
line += 1; //dann wird ein Zeilenumbruch hinzugefügt
buffer = ""; //und der buffer auf 0 gesetzt
} else {
draw_text(pos_x+string_width(buffer),pos_y+string_height("A")*line, string_char_at(text,i+1)); //hier wird jedes zeichen einzelnt gezeichnet und lines sowie die buffer-länge berücksichtigt
buffer += string_char_at(text,i+1); //Der Buffer wird um das gezeichnete Zeichern erhöht
}
}
draw_set_color(tmpcolor); //Die alte Farbe wird wieder eingestellt, da die Funktion nicht mit anderen draw-Funktionen in Konflikt treffen sollte
|