Próbáld meg így: (nem teszteltem, de valószínûleg mûködik)
new DialogString[4097];//ezt célszerû lenne globálisan létrehozni és innentöl nagy méretû dialogoknál ezt használni
CMD:races( playerid, parmas[])
{
if(RaceBusy == 0x01 || RaceStarted == 1) return SendClientMessage( playerid, -1, \"[Hiba]: Már elíndult egy verseny!\");
new string[64];
//format(rNameFile, sizeof(\"/rRaceSystem/RaceNames/RaceNames.txt\"), ); ez a rész itt teljesen felesleges. ha nincs a stringben változó érték miért ne írd be állandóként?
TotalRaces = dini_Int(\"/rRaceSystem/RaceNames/RaceNames.txt\", \"TotalRaces\");
DialogString[0] = EOS;//kiürítjük a stringet azzal, hogy string vége karakterre cseréljük a legelsõ karaktert.
Loop(x, TotalRaces)
{
string[0] = EOS;//már korábban leírtam
valstr(string,x);//stringgé alakítjuk az int számot
strins(string,\"Race_\",0);//a szám elé beszúrjuka szöveget ez sokkal gyorsabb mint a format
strmid(RaceNames
- , dini_Get(\"/rRaceSystem/RaceNames/RaceNames.txt\", string), 0, 20, sizeof(RaceNames));//nem látom miért szükséges neked ezt így eltárolni de azért bennehagyom viszont amugy meg fölösleges
//nem tudom mennyi a maximum mérete a verseny neveknek ezért használom a RaceNames
- tömböt, viszont ezt helyettesiteni lehetne egyetlen egy dimenziós stringel.
strcat(DialogString,RaceNames
if(x != x-1) strca(DialogString,\"\\n\");//ha nem a legutolsó elemrõl vna szó rakunk egy új sor karaktert, amúgy ez nem szükséges mert az üres sorokat amúgy sem jeleníti meg a Lista dialog ha utánna nem áll semmi viszont más esetekben még hasznos lehet.
ShowPlayerDialog(playerid, 4224, DIALOG_STYLE_LIST, \"Melyik verseny legyen?\", DialogString, \"Índitás\", \"Bezárás\");
}
return 1;
}