-|script|@mute|32767 { callfunc "argv_splitter"; if (GM < CMD_MUTE && GM < G_SYSOP) goto L_GM; if (@argv$[1] == "") goto L_Failed; set .@target_id, getcharid(3, @argv$[1]); if (.@target_id < 1 || !(isloggedin(.@target_id))) goto L_Failed; if (@argv[0] > 120) set @argv[0], 120; // max 2 hours gmlog "@mute " + @args$; if (@argv[0] == 0) goto L_UnMute; message strcharinfo(0, .@target_id), "Server : ##BYou have been muted by a GM for "+@argv[0]+" minutes."; set MUTE_GLOBAL, 1, .@target_id; set #MUTE_UNTIL, (gettimetick(2) + (@argv[0] * 60)), .@target_id; addtimer (@argv[0] * 60000) + 100, strnpcinfo(0) + "::OnCheckMute", .@target_id; message strcharinfo(0), "mute : Player `"+strcharinfo(0, .@target_id)+"` has been muted for "+@argv[0]+" minutes."; end; OnPCLoginEvent: if (#MUTE_UNTIL < 1) end; set .@s, (#MUTE_UNTIL - gettimetick(2)); set .@m, .@s / 60; message strcharinfo(0), "Server : ##BYou have been muted for "+ max(1, .@m) +" minutes."; set MUTE_GLOBAL, 1; addtimer (.@s * 1000) + 100, strnpcinfo(0) + "::OnCheckMute"; end; OnCheckMute: if (#MUTE_UNTIL < 1) end; if (gettimetick(2) - #MUTE_UNTIL < 0) end; message strcharinfo(0), "Server : ##BYou have been automatically unmuted."; wgm "=> Player `"+ strcharinfo(0) +"` has been automatically unmuted."; set MUTE_GLOBAL, 0; set #MUTE_UNTIL, 0; end; L_UnMute: if (get(MUTE_GLOBAL, .@target_id)) message strcharinfo(0, .@target_id), "Server : ##BYou have been unmuted by a GM."; set MUTE_GLOBAL, 0, .@target_id; set #MUTE_UNTIL, 0, .@target_id; message strcharinfo(0), "mute : Player `"+strcharinfo(0, .@target_id)+"` has been unmuted."; end; L_Failed: message strcharinfo(0), "mute : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?"; end; L_GM: message strcharinfo(0), "mute : GM command is level "+ CMD_MUTE +", but you are level " + GM; end; OnInit: registercmd chr(ATCMD_SYMBOL) + "mute", strnpcinfo(0); end; }