ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/maps/perl/ignore.ext
Revision: 1.2
Committed: Sat May 6 20:04:48 2006 UTC (18 years ago) by pippijn
Branch: MAIN
Changes since 1.1: +36 -1 lines
Log Message:
Conatenated ignore and unignore in ignore.ext

File Contents

# Content
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 };
47
48 cf::register_command unignore => 0, sub {
49 my ($who, $args) = @_;
50 my ($target, $type) = split /\s+/, $args, 3;
51 my @ignored_players = split /\s+/, $who->{ignore};
52
53 if ($args eq "") {
54 if ($who->{ ext_ignore_tell }) {
55 $who->message ("Currently ignoring private messages from: ", cf::NDI_UNIQUE);
56 $who->message (join (", ", sort keys %{ $who->{ ext_ignore_tell } } ), cf::NDI_UNIQUE);
57 $who->message ("Currently ignoring shouts from: ", cf::NDI_UNIQUE);
58 $who->message (join (", ", sort keys %{ $who->{ ext_ignore_shout } } ), cf::NDI_UNIQUE);
59 } else {
60 $who->message ("Not ignoring anyone", cf::NDI_UNIQUE);
61 }
62 } else {
63 if (my $other = cf::player::find $target) {
64 if ($type eq "tell") {
65 $who->message ("Not ignoring private messages from ".$other->ob->name." anymore.", cf::NDI_UNIQUE);
66 delete $who->{ext_ignore_tell}{$other->ob->name};
67 } elsif ($type eq "shout") {
68 $who->message ("Not ignoring shouts from ".$other->ob->name." anymore.", cf::NDI_UNIQUE);
69 delete $who->{ext_ignore_shout}{$other->ob->name};
70 } elsif ($type eq "all") {
71 $who->message ("Not ignoring anything from ".$other->ob->name." anymore.", cf::NDI_UNIQUE);
72 delete $who->{ext_ignore_tell}{$other->ob->name};
73 delete $who->{ext_ignore_shout}{$other->ob->name};
74 } else {
75 $who->message ("You need to specify tell, shout or all.", cf::NDI_UNIQUE);
76 }
77 } else {
78 $who->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE);
79 }
80 }
81 };