ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/maps/perl/ignore.ext
Revision: 1.1
Committed: Sat May 6 19:53:22 2006 UTC (18 years ago) by pippijn
Branch: MAIN
Log Message:
Implemented tell in perl and added ignore/unignore.

File Contents

# User Rev Content
1 pippijn 1.1 cf::register_command ignore => 0, sub
2     {
3     my ($who, $args) = @_;
4     my ($target, $type, $timeout) = split /\s+/, $args, 4;
5     my @ignored_players = split /\s+/, $who->{ignore};
6    
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}})) {
9     $who->message ("Currently ignoring private messages from: ", cf::NDI_UNIQUE);
10     $who->message (join (", ", @ignored_tell ), cf::NDI_UNIQUE);
11     $who->message ("Currently ignoring shouts from: ", cf::NDI_UNIQUE);
12     $who->message (join (", ", @ignored_shout ), cf::NDI_UNIQUE);
13     $who->message ("To stop ignoring one, use unignore.", cf::NDI_UNIQUE);
14     } else {
15     $who->message ("Not ignoring anyone", cf::NDI_UNIQUE);
16     }
17     } elsif ($target ne "" && $type ne "") {
18     if ($timeout eq "") {
19     $timeout = 24;
20     }
21     my $absolute_timeout = time + ( $timeout * 3600 );
22     if (my $other = cf::player::find $target) {
23     if ($type eq "tell") {
24     $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;
26     } elsif ($type eq "shout") {
27     $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;
29     } elsif ($type eq "all") {
30     $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;
32     $who->{ext_ignore_shout}{$other->ob->name} = $absolute_timeout;
33     } else {
34     $who->message ("You need to specify tell, shout or all.", cf::NDI_UNIQUE);
35     }
36     } else {
37     $who->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE);
38     }
39     } else {
40     $who->message ("Usage:", cf::NDI_UNIQUE);
41     $who->message ("ignore <player> <tell | shout | all> <timeout>", cf::NDI_UNIQUE);
42     $who->message ("will ignore a player for <timeout> hours.", cf::NDI_UNIQUE);
43     $who->message ("ignore list", cf::NDI_UNIQUE);
44     $who->message ("will show you a list of players currently ignored.", cf::NDI_UNIQUE);
45     }
46     }