Vorwort:
Jeder kennt es. Es handelt sich um format(string,sizeof(string),"Blubb ist %d",blubb);Erschreckenderweise habe ich festgestellt, dass viele nicht richtig damit umgehen können und den wiki.sa-mp.com Eintrag nicht richtig verstehen. Hier eine kleine Anleitung dazu:
Syntax
format(output[], len, const format[], {Float,_}:...)
output
Eine Variable, die den Inhalt annimmt.
len
new Name[länge];
Die Länge kann variieren. Es empfielt sich den Array nur so groß zu machen, wie es benötigt wird und zum Beispiel für Namen keinen 256er nehmen, weil Namen maximal 20 Zeichen haben können.
Beispiele:
Chat: 128
Textdraws: 1024
Namen: 20
Es gibt nun zwei Möglichkeiten, wie man die Größe angeben kann.
Möglichkeit 1:
new string[26]:
format(string,26,"Name: %s",name);
Möglichkeit 2:
new string[26]:
format(string,sizeof(string),"Name: %s",name);
Ich empfehle die zweite Möglichkeit (für faule wie mich xD)
const format[], {Float,_}:...
Hier wird der String formatiert. In dem Text werden so genannte Platzhalter eingefügt (Bsp: %i für ein Integer). in {Float,_}:... werden diese dann durch etwas ersetzt, zum Beispiel eine Zahl oder ein Name.
Platzhalter:
%c - Einen einzelnen Buchstaben, Beispiel: "D"
%d - Einen Integer (ganze Zahl), Beispiel: "2"
%f - Einen Float (Dezimalzahl), Beispiel: "2.001"
%i - Integer (ganze Zahl), Beispiel: "4"
%s - Zeichenkette, Beispiel: "Hallo Welt"
Beispiel:
new wert = 500;
new string[50];
format(string, sizeof(string), "Mein Computer ist %d Euronen wert.", wert);
Gibt aus:
"Mein Computer ist 500 Euronen wert."
Optimierungen
Man kann das ganze natürlich auch noch optimieren oder Werte anders darstellen lassen.
Beispiel 1:
Ich mache den Array nur so groß, wie ich ihn auch braucht. So werde ich den Array, wenn ich in die Variable "%s.ini" packen möchte, wobei %s ein Name ist, nicht 256 Zellen groß machen, sondern nur 24. Grund: Die maximale Länge eines Namens ist 20 + 4 (.ini) = 24.
Beispiel 2:
Ganz oft bei Uhrzeiten. Man möchte eine reale Uhrzeit, zum Beispiel 12:03, darstellen, es wird aber 12:3 ausgegeben. Dafür gibt es eine ganz einfache Methode. Statt %dbenutzen wir einfach d. Warum nun d? Ganz einfach. die 2 gibt an, wie Lang die Zahl dargestellt werden soll. Ist der Integer aber kürzer wird vor ihm einfach eine 0 plaziert. Ergebnis: 12:03 statt 12:3.
format(uhrzeit,sizeof(uhrzeit), "%d:%02d", Zeit1, Zeit2);
MfG
NeoPhoenix
Verbesserungen sind gern gesehen
Edit: Fehler verbessert
Edit2: Chatlänge editiert