Also format ist sehr langsam und sollte tunlichst vermieden werden.
In diesem Fall kannst du komplett darauf verzichten.
Und wenn du direkt einen String zuweisen kannst (in diesem Fall den Dialog-Titel), dann tue dies, dann brauchst du keinen extra Speicher für eine Variable reservieren.
Der Crash entsteht hier, da kein \n verwendet wird und somit alles in eine Zeile geschrieben wird und diese überläuft.
Der Code kann aber deutlich schöner geschrieben werden, z.B. mit einem Makro:
//Also strcat ist was du nutzen willst, anstatt format ;)
#define AddActiveSetting(%0,%1) strcat(info,(pInfo[playerid][%0])?("{00FF00}"#%1#": aktiviert\n"):("{FF0000}"#%1#": deaktiviert\n"))
#define AddOnlineSetting(%0,%1) strcat(info,(pInfo[playerid][%0])?("{00FF00}"#%1#": angeschaltet\n"):("{FF0000}"#%1#": ausgeschaltet\n"))
new info[800];
AddOnlineSetting(TogPhone,"Handy");
AddActiveSetting(TogRingtone,"Klingelton");
AddActiveSetting(TogAds,"Werbe-Chat");
AddActiveSetting(TogOOC,"OOC-Chat");
AddActiveSetting(TogGov,"Regierungsmeldungen");
AddActiveSetting(TogNews,"Newsmeldungen");
AddOnlineSetting(TogHitsound,"Hitsound");
AddOnlineSetting(TogKillsound,"Killsound");
AddOnlineSetting(TogJoinmsg,"Join/Leave Nachrichten");
if(pInfo[playerid][pAdmin]) strcat(info,"{00FF00}Servereinstellungen\n");
ShowPlayerDialog(playerid, DIALOG_SETTINGS, DIALOG_STYLE_LIST, !"Spieler-Einstellungen", info, !"Wählen", !"Abbruch");
Alles anzeigen