Hallo ihr Lieben,
ja das Thema ist eigentlich relativ alt, dennoch haben viele Menschen Probleme damit und es gibt immer wieder falsche Lösungsansätze.
Also schauen wir uns das ganze doch mal ein wenig an.
Was ist das Problem?
Wenn man eine zu lange Zeile in Pawno erstellt und diese compilt, dann kann es passieren, dass keine Fehlermeldung ausgegeben wird und der Compiler einfach crasht.
Das ist ein Compiler Bug, es gibt einen Compiler Fix, aber man kann dies natürlich auch skript-technisch lösen.
Das Problem tritt auf, wenn 512 Zeichen in einer Zeile überschritten werden.
Wie kann man das Problem lösen?
Meistens hat man einen langen Text in dieser Zeile, zum Beispiel:
ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo","Dies ist ein sehr sehr sehr sehr langer Text!","Ok","");
Viele denken nun, man kann folgendes tun:
ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo","Dies ist ein sehr sehr \
sehr sehr langer Text!","Ok","");
Das ist FALSCH!
Für den Compiler ist das immer noch eine Zeile. (Alles was zwischen den " steht, gilt für den Compiler als EINS.)
Man könnte folgendes tun:
ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo","Dies ist ein sehr sehr sehr sehr langer Text!","Ok","");
Das wären für den Compiler jetzt 3 Zeilen und nicht mehr eine.
Sieht aber halt kacke aus, ist unübersichtlich und meistens immer noch zu lang xD
Deshalb gilt Funktionen zu nutzen, die den String zusammenführen:
new string[64];
strcat(string, "Dies ist ein sehr sehr ");
strcat(string, "sehr sehr langer Text!");
ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo",string,"Ok","");
//Edit:
Ja, wenn man nun format nutzt, kann man das auch einfach aufteilen:
new string[256];
format(string,sizeof(string),"Dies ist der erste Teil mit ein Paar (%s) Variablen (%f).",x,y);
format(string,sizeof(string),"%s Nun hängen wir noch was hinten dran! (%s)",string,z);
Kurze Erklärung:
In der 3. Zeile steht man Anfang ein %s dies ist wichtig, da gesagt wird, dass der String aus dem vorherigen format nun davor gehangen wird.
(Deshalb steht auch hinten vor dem z nochmal das string).
Schlusswort
Ja, vielen ist das Problem bekannt und ein alter Hut, aber wollte nur kurz für alle Anfänger was dazu schreiben.
Viel Spaß noch beim Skripten!