Kleiner Kritikpunkt:
//ID definieren
#define ERROR_INVEHICLE 0
// Array erstellen
new ErrorMsg[][158] = {
"{0000FF}You cannot use this command in a vehicle."
};
// Ausgeben
SendClientMessage(playerid, -1, ErrorMsg[ERROR_INVEHICLE]);
Erachte ich als schwachsinniges Beispiel, denn es kommt nicht der Intention des Threads nach, effektiv zu programmieren.
Man nutzt unnötig viel Code.
Wenn man sowieso noch defines verwendet, dann kann man die Errors auch direkt in den Defines definieren, anstatt erst mit den Defines einen Index zu bestimmen und anhand dessen dann aus dem Array die Fehlermeldung zu entnehmen.
Dadurch macht man sich nur unnötig Arbeit, nicht nur beim Hinufügen von Errors, sondern auch beim Anwenden der Errormeldungen.
SendClientMessage(playerid, -1, ErrorMessages[ERROR_INVEHICLE]);
SendClientMessage(playerid, -1, ERROR_INVEHICLE);
Ich denke, man sieht den Unterschied beim Tippen deutlich.