Megaphone Befehl funktioniert nicht

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
  • Hallo,


    liebe Com ich habe einen Befehl gescriptet aber dieser geht nicht. :(


    if(strcmp(cmdtext, "/m", true) == 0)
    {
    if(IstSpielerInFraktion(playerid, 1))
    {
    new string[180];
    if(!cmdtext[3])return SendClientMessage(playerid, COLOR_YELLOW, "Benutze: /m [Forderung] (Megaphone)");
    new str[128];
    new Float:X,Float:Y,Float:Z;
    GetPlayerName(playerid, str, sizeof(str));
    GetPlayerPos (playerid,X,Y,Z);
    OnPlayerCommandText(playerid,"/me holt sein Megaphone heraus.");
    format(str, sizeof(str), "%s(Megaphone): %s", str, cmdtext[4]);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, X, Y, Z))
    {
    SendClientMessage(i, COLOR_YELLOW, string);
    return 1;
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist!");
    }
    //return 1;
    }



    Wenn man kein Polizist ist kommt dort auch "Du bist kein Polizist!" aber wenn man Polizist ist, kommt einfach nix :(


    Was ist den da falsch?

  • Da sind ziemlich viele Fehler angefangen beim Namen auslesen bis hin zum Absenden
    lad dir mal ocmd + sscanf runter oder warte bis hier wer dein Befehl korrekt schreibt.
    ocmd & sscanf wäre es so


    ocmd:m(playerid,params[])
    {
    if(!IstSpielerInFraktion(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist!");
    new text[126],string[126];
    if(sscanf(params,"s"text)) return SendClientMessage(playerid, COLOR_YELLOW, "Benutze: /m [Forderung] (Megaphone)");
    new Name[MAX_PLAYER_NAME];
    new Float:X,Float:Y,Float:Z;
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerPos (playerid,X,Y,Z);
    OnPlayerCommandText(playerid,"/me holt sein Megaphone heraus.");
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i, 10.0, X, Y, Z))
    {
    format(string, sizeof(string), "%s(Megaphone): %s", Name, text);
    SendClientMessage(i, COLOR_YELLOW, string);
    }
    }
    }
    return 1;
    }
    /e1

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()

  • ocmd:m(playerid,params[]) { if(!IstSpielerInFraktion(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist!"); new text[126],string[126]; if(sscanf(params,"s"text)) return SendClientMessage(playerid, COLOR_YELLOW, "Benutze: /m [Forderung] (Megaphone)"); new Name[MAX_PLAYER_NAME]; new Float:X,Float:Y,Float:Z; GetPlayerName(playerid, Name, sizeof(Name)); GetPlayerPos (playerid,X,Y,Z); OnPlayerCommandText(playerid,"/me holt sein Megaphone heraus."); for(new i=0;i


    Danke dafür, aber über ocmd habe ich keine Ahnung mehr.
    Gibt es eine Möglichkeit das normal zu machen? :)

  • public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/m", true))
    {
    if(!IstSpielerInFraktion(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist!");
    new text[126],string[126];
    if(sscanf(params,"s"text)) return SendClientMessage(playerid, COLOR_YELLOW, "Benutze: /m [Forderung] (Megaphone)");
    new Name[MAX_PLAYER_NAME];
    new Float:X,Float:Y,Float:Z;
    GetPlayerName(playerid, Name, sizeof(Name));
    GetPlayerPos (playerid,X,Y,Z);
    OnPlayerCommandText(playerid,"/me holt sein Megaphone heraus.");
    for(new i=0;i<max_players;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i, 10.0, X, Y, Z))
    {
    format(string, sizeof(string), "%s(Megaphone): %s", Name, text);
    SendClientMessage(i, COLOR_YELLOW, string);
    }
    }
    }
    return 1;
    }
    So Sollte es gehen :)
    Ist aber Ungetestet ^^

    Man soll weder annehmen noch besitzen, was man nicht wirklich zum Leben braucht.



  • Problem ist nur, das ich nicht so gerne mit sccanf arbeite bzw. damit nicht umgehen kann. (Kp warum)


  • Du weißt hoffentlich schon, dass OnPlayerCommandText keine Parameter (params) enthält, oder? ^^


    Versuch es mal so: (kP ob das 100% geht, kann strtok nicht so gut 8o)


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new tmp[128], cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/m", true) == 0)
    {
    if(IstSpielerInFraktion(playerid, 1))
    {
    new name[32], Float:X,Float:Y,Float:Z;
    tmp = strtok(cmd,idx);
    if(!tmp[0])return SendClientMessage(playerid, COLOR_YELLOW, "Benutze: /m [Forderung] (Megaphone)");
    GetPlayerName(playerid,name,32);
    format(str, sizeof(str), "[Megaphone] %s: %s", name, tmp);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(playerid, 30.0, X, Y, Z))
    {
    SendClientMessage(i, COLOR_YELLOW, string);
    return 1;
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist!");
    }
    //return 1;
    }
    }

  • Funktioniert leider nicht. :(
    Kommt auch bei "Du bist kein Polizist" nichts.