Hi
Was mir direkt mal aufgefallen ist:
new string[128],text;
if(sscanf(params, "s",text))return SendClientMessage(playerid,0xB0AFB0FF,"/(m)egaphone [text]");
Du deklarierst einen Integer mit dem Namen "text", verwendest in sscanf aber den Specifier für einen String, also s. Wenn Du einen Text verwenden möchtest, musst Du der Variable text eine Stringlänge angeben, also zB text[64]. Nun verwendest Du aber bei SendClientMessage die Variable string, also möchtest Du in sscanf nicht lieber grad den String string verwenden ?
Was man noch sagen ist, dass Du string und text entweder im Funktionsheader deklarieren kannst (nach ocmd...) oder im Schleifenheader(nach if und else if). Du musst im 2.Schleifenkopf (also im else if für das SEK string und text nicht zu string2 und text2 umbennen, da diese einen unterschiedlichen Gültigkeitsbereich (auch Scope genannt) aufweisen, sprich sich nicht kennen und darum gleich heissen dürfen, sofern sie natürlich nicht gleich nach ocmd:m(playerid, params[]), also dem Funktionsheader deklariert sind.
Gruss Simon
Edit: Rechtschreibung