/mute Command
#1

Hey, I need to add so I can set a timer to my mute command. Could I have some help please?

Code:
if(strcmp("/mute", cmd, true) == 0)
        {
                new tmp[256], tmp2[256], cmdid;

                tmp = strtok(cmdtext, idx);
                tmp2 = strtok(cmdtext, idx);
                if(PlayerInfo[playerid][AdminLevel] < 1) return 0;
                if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_RED, "/mute [id] [reason]");
                                  if(IsPlayerConnected(strval(tmp)) == 0) return SendClientMessage(playerid, COLOR_RED, "That player is not connected");
                if(!strlen(tmp2)) return SendClientMessage(playerid, COLOR_RED, "/mute [id] [reason]");
                cmdid = strval(tmp);
      if(PlayerInfo[cmdid][AdminLevel] > PlayerInfo[playerid][AdminLevel]) return SendClientMessage(playerid,COLOR_ORED,"You cant use this command against a higher level admin!");
                new pname[MAX_PLAYER_NAME];
                GetPlayerName(playerid, pname, sizeof(pname));

                new oname[MAX_PLAYER_NAME];
                GetPlayerName(cmdid, oname, sizeof(oname));

                new string[256];

                if(cmdid >= 0 && cmdid <= 9)
                {
                        format(string, sizeof(string), "~ %s has been muted for '%s' ", oname, cmdtext[7]);
                }
                else if(cmdid >= 10 && cmdid <= 99)
                {
                        format(string, sizeof(string), "~ %s has been muted for '%s' ", oname, cmdtext[8]);

			   }
                else if(cmdid >= 100 && cmdid <= 150)
                {
                        format(string, sizeof(string), "~ %s has been muted for '%s' ", oname, cmdtext[9]);
			    }

                SendClientMessageToAll(COLOR_YELLOW, string);
				muted[cmdid] = 1;
                printf(string);
                return 1;
        }
Reply
#2

https://sampforum.blast.hk/showthread.php?tid=55261 - Read this.

---

Now to your problem.
Simply use SetTimerEx:

pawn Code:
SetTimerEx("muteTimer", 60*1000, false, "i", playerid); //60*1000 = 1 minute
Then make your timer callback:

pawn Code:
forward muteTimer(playerid);
public muteTimer(playerid)
{
    muted[playerid] = 0;
    return SendClientMessage(playerid, 0x00FF0000, "You are no longer muted.");
}
Reply
#3

What I want tho is /mute id reason time, So you can choose your own time
Reply
#4

pawn Code:
// command
// Usage: /mute id reason time
// on command's part
SetTimerEx("muteTimer", 60*1000*time, false, "i", playerid);
// Note; you need to give a value to minutes, so it's 1 minute * time;
Reply
#5

That does not add to me question tho?
Reply
#6

I recommend switching to ZCMD + SScanF2 for 100 times easier commands.

Here's how the code would look:

pawn Code:
CMD:mute(playerid, params[])
{
    new
        cmdid,
        reason[80],
        minutes,
        string[128];

    if(PlayerInfo[playerid][AdminLevel] < 1)
        return 0;
   
    if(sscanf(params, "uis[80]", cmdid, minutes, reason))
        return SendClientMessage(playerid,0xFFFF0000,"Usage: /mute [id/name] [time] [reason]");
    if(PlayerInfo[cmdid][AdminLevel] > PlayerInfo[playerid][AdminLevel])
        return SendClientMessage(playerid,COLOR_ORED,"You cant use this command against a higher level admin!");
    if(cmdid == playerid)
        return SendClientMessage(playerid,COLOR_ORED,"You cant mute yourself!");
    if(!IsPlayerConnected(cmdid) || cmdid == INVALID_PLAYER_ID)
        return SendClientMessage(playerid,COLOR_ORED,"Player not found!");

    new oname[MAX_PLAYER_NAME];
    GetPlayerName(cmdid, oname, sizeof(oname));

    if(time == 0) //permanent mute
    {
        format(string, sizeof(string), "~ %s has been muted. Reason: '%s' ", oname, minutes, reason);
        muted[cmdid] = 1;
    }
    else
    {
        format(string, sizeof(string), "~ %s has been muted for %i minutes. Reason: '%s' ", oname, minutes, reason);
        muted[cmdid] = 1;
        SetTimerEx("unmuteTimer", 60*1000*minutes, false, "i", cmdid);
    }
    SendClientMessageToAll(COLOR_YELLOW, string);
    print(string);
    return 1;
}
And here's the timer function:

pawn Code:
forward muteTimer(playerid);
public unmuteTimer(playerid)
{
    muted[playerid] = 0;
    return SendClientMessage(playerid,0x00FF0000,"You're no longer muted!");
}
Reply
#7

Yes but its not in ZCMD, So I need it in STRCMP. I will convert it when I found someone to do it for me because I simply can't be bothered.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)