Was ist hieran falsch?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • ocmd:m(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du hast kein Megafon!");
    new string[128],text;
    if(sscanf(params, "s",text))return SendClientMessage(playerid,0xB0AFB0FF,"/(m)egaphone [text]");
    format(string,128,">>>> LSPD Officer %s ruft: %s! <<<<",SpielerName(playerid),text);
    for(new i = 0;i<MAX_PLAYERS;i ++)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(IsPlayerInRangeOfPoint(i,30.0,X,Y,Z))
    {
    SendClientMessage(i,GELB,string);
    }
    }
    else if(isPlayerInFrakt(playerid,2))return SendClientMessage(playerid,ROT,"Du hast kein Megafon!");
    {
    new string2[128],text2;
    if(sscanf(params, "s",text2))return SendClientMessage(playerid,0xB0AFB0FF,"/(m)egaphone [text]");
    format(string2,128,">>>> SEK %s ruft: %s! <<<<",SpielerName(playerid),text2);
    for(new i = 0;i<MAX_PLAYERS;i ++)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(IsPlayerInRangeOfPoint(i,30.0,X,Y,Z))
    {
    SendClientMessage(i,GELB,string2);
    }
    }
    }
    return 1;
    }
    Mein Megafon geht iwie nicht jemand ne Idee?

  • 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