|
|
1 | #! perl |
|
|
2 | |
1 | cf::register_command ignore => 0, sub |
3 | cf::register_command ignore => 0, sub { |
2 | { |
|
|
3 | my ($who, $args) = @_; |
4 | my ($who, $args) = @_; |
4 | my ($target, $type, $timeout) = split /\s+/, $args, 4; |
5 | my ($target, $type, $timeout) = split /\s+/, $args; |
5 | my @ignored_players = split /\s+/, $who->{ignore}; |
|
|
6 | |
6 | |
7 | if ($args eq "list") { |
7 | if ($args eq "list") { |
8 | if ((my @ignored_tell = sort keys %{$who->{ext_ignore_tell}}) + (my @ignored_shout = sort keys %{$who->{ext_ignore_shout}})) { |
8 | if ((my @ignored_tell = sort keys %{$who->{ext_ignore_tell}}) |
|
|
9 | + (my @ignored_shout = sort keys %{$who->{ext_ignore_shout}})) { |
9 | $who->message ("Currently ignoring private messages from: ", cf::NDI_UNIQUE); |
10 | $who->message ("Currently ignoring private messages from: ", cf::NDI_UNIQUE); |
10 | $who->message (join (", ", @ignored_tell ), cf::NDI_UNIQUE); |
11 | $who->message ((join ", ", @ignored_tell), cf::NDI_UNIQUE); |
11 | $who->message ("Currently ignoring shouts from: ", cf::NDI_UNIQUE); |
12 | $who->message ("Currently ignoring shouts from: ", cf::NDI_UNIQUE); |
12 | $who->message (join (", ", @ignored_shout ), cf::NDI_UNIQUE); |
13 | $who->message ((join ", ", @ignored_shout), cf::NDI_UNIQUE); |
13 | $who->message ("To stop ignoring one, use unignore.", cf::NDI_UNIQUE); |
14 | $who->message ("To stop ignoring one, use unignore.", cf::NDI_UNIQUE); |
14 | } else { |
15 | } else { |
15 | $who->message ("Not ignoring anyone", cf::NDI_UNIQUE); |
16 | $who->message ("Not ignoring anyone", cf::NDI_UNIQUE); |
16 | } |
17 | } |
|
|
18 | |
17 | } elsif ($target ne "" && $type ne "") { |
19 | } elsif ($target && $type) { |
18 | if ($timeout eq "") { |
20 | |
19 | $timeout = 24; |
21 | $timeout ne "" or $timeout = 24; |
20 | } |
22 | |
21 | my $absolute_timeout = time + ( $timeout * 3600 ); |
23 | my $absolute_timeout = time + $timeout * 3600; |
|
|
24 | |
22 | if (my $other = cf::player::find $target) { |
25 | if (my $other = cf::player::find $target) { |
23 | if ($type eq "tell") { |
26 | if ($type eq "tell") { |
24 | $who->message ("Now ignoring private messages from ".$other->ob->name." for $timeout hours.", cf::NDI_UNIQUE); |
27 | $who->message ("Now ignoring private messages from " . $other->ob->name . " for $timeout hours.", cf::NDI_UNIQUE); |
25 | $who->{ext_ignore_tell}{$other->ob->name} = $absolute_timeout; |
28 | $who->{ext_ignore_tell}{$other->ob->name} = $absolute_timeout; |
26 | } elsif ($type eq "shout") { |
29 | } elsif ($type eq "shout") { |
27 | $who->message ("Now ignoring shouts from ".$other->ob->name." for $timeout hours.", cf::NDI_UNIQUE); |
30 | $who->message ("Now ignoring shouts from " . $other->ob->name . " for $timeout hours.", cf::NDI_UNIQUE); |
28 | $who->{ext_ignore_shout}{$other->ob->name} = $absolute_timeout; |
31 | $who->{ext_ignore_shout}{$other->ob->name} = $absolute_timeout; |
29 | } elsif ($type eq "all") { |
32 | } elsif ($type eq "all") { |
30 | $who->message ("Now ignoring everything from ".$other->ob->name." for $timeout hours.", cf::NDI_UNIQUE); |
33 | $who->message ("Now ignoring everything from " . $other->ob->name . " for $timeout hours.", cf::NDI_UNIQUE); |
31 | $who->{ext_ignore_tell}{$other->ob->name} = $absolute_timeout; |
34 | $who->{ext_ignore_tell}{$other->ob->name} = $absolute_timeout; |
32 | $who->{ext_ignore_shout}{$other->ob->name} = $absolute_timeout; |
35 | $who->{ext_ignore_shout}{$other->ob->name} = $absolute_timeout; |
33 | } else { |
36 | } else { |
34 | $who->message ("You need to specify tell, shout or all.", cf::NDI_UNIQUE); |
37 | $who->message ("You need to specify tell, shout or all.", cf::NDI_UNIQUE); |
35 | } |
38 | } |
36 | } else { |
39 | } else { |
37 | $who->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE); |
40 | $who->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE); |
38 | } |
41 | } |
|
|
42 | |
39 | } else { |
43 | } else { |
40 | $who->message ("Usage:", cf::NDI_UNIQUE); |
44 | $who->message ("Usage:", cf::NDI_UNIQUE); |
41 | $who->message ("ignore <player> <tell | shout | all> <timeout>", cf::NDI_UNIQUE); |
45 | $who->message ("ignore <player> <tell | shout | all> <timeout>", cf::NDI_UNIQUE); |
42 | $who->message ("will ignore a player for <timeout> hours.", cf::NDI_UNIQUE); |
46 | $who->message ("will ignore a player for <timeout> hours.", cf::NDI_UNIQUE); |
43 | $who->message ("ignore list", cf::NDI_UNIQUE); |
47 | $who->message ("ignore list", cf::NDI_UNIQUE); |
44 | $who->message ("will show you a list of players currently ignored.", cf::NDI_UNIQUE); |
48 | $who->message ("will show you a list of players currently ignored.", cf::NDI_UNIQUE); |
45 | } |
49 | } |
46 | } |
50 | }; |
|
|
51 | |
|
|
52 | cf::register_command unignore => 0, sub { |
|
|
53 | my ($who, $args) = @_; |
|
|
54 | my ($target, $type) = split /\s+/, $args; |
|
|
55 | |
|
|
56 | if ($args eq "") { |
|
|
57 | if ($who->{ ext_ignore_tell }) { |
|
|
58 | $who->message ("Currently ignoring private messages from: ", cf::NDI_UNIQUE); |
|
|
59 | $who->message ((join ", ", sort keys %{ $who->{ext_ignore_tell} }), cf::NDI_UNIQUE); |
|
|
60 | $who->message ("Currently ignoring shouts from: ", cf::NDI_UNIQUE); |
|
|
61 | $who->message ((join ", ", sort keys %{ $who->{ext_ignore_shout} }), cf::NDI_UNIQUE); |
|
|
62 | } else { |
|
|
63 | $who->message ("Not ignoring anyone", cf::NDI_UNIQUE); |
|
|
64 | } |
|
|
65 | } else { |
|
|
66 | |
|
|
67 | if (my $other = cf::player::find $target) { |
|
|
68 | if ($type eq "tell") { |
|
|
69 | $who->message ("Not ignoring private messages from " . $other->ob->name . " anymore.", cf::NDI_UNIQUE); |
|
|
70 | delete $who->{ext_ignore_tell}{$other->ob->name}; |
|
|
71 | } elsif ($type eq "shout") { |
|
|
72 | $who->message ("Not ignoring shouts from " . $other->ob->name." anymore . ", cf::NDI_UNIQUE); |
|
|
73 | delete $who->{ext_ignore_shout}{$other->ob->name}; |
|
|
74 | } elsif ($type eq "all") { |
|
|
75 | $who->message ("Not ignoring anything from " . $other->ob->name." anymore . ", cf::NDI_UNIQUE); |
|
|
76 | delete $who->{ext_ignore_tell} {$other->ob->name}; |
|
|
77 | delete $who->{ext_ignore_shout}{$other->ob->name}; |
|
|
78 | } else { |
|
|
79 | $who->message ("You need to specify tell, shout or all.", cf::NDI_UNIQUE); |
|
|
80 | } |
|
|
81 | } else { |
|
|
82 | $who->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE); |
|
|
83 | } |
|
|
84 | |
|
|
85 | } |
|
|
86 | }; |