summaryrefslogtreecommitdiff
path: root/world/map/npc/commands/mute.txt
blob: 6b6ea4d9b05294d6e0eea156e8c30ca2c87a8158 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
-|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;
}