ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/commands.ext
(Generate patch)

Comparing deliantra/server/ext/commands.ext (file contents):
Revision 1.6 by root, Sun Dec 31 17:17:22 2006 UTC vs.
Revision 1.22 by pippijn, Fri Mar 2 10:44:56 2007 UTC

5# miscellaneous commands 5# miscellaneous commands
6 6
7sub rename_to($$$) { 7sub rename_to($$$) {
8 my ($ob, $from, $to) = @_; 8 my ($ob, $from, $to) = @_;
9 9
10 $to =~ /^[a-zA-Z0-9.,=#\/%$!^]*$/ 10 $to =~ /^[a-zA-Z0-9.,=#\/%$!^ ]*$/
11 or return $ob->message ("rename: name must consist only of letters, digits, spaces and a few other things."); 11 or return $ob->message ("rename: name must consist only of letters, digits, spaces and a few other things.");
12 12
13 127 >= length $to 13 127 >= length $to
14 or return $ob->message ("rename: new name must be <= 127 characters."); 14 or return $ob->message ("rename: new name must be <= 127 characters.");
15 15
68 "* " . $ob->name . "/" . $ob->level . " " . (length $pl->own_title ? $pl->own_title : "the " . $pl->title) 68 "* " . $ob->name . "/" . $ob->level . " " . (length $pl->own_title ? $pl->own_title : "the " . $pl->title)
69 . ($pl->peaceful ? " [peaceful]" : " [HOSTILE]") 69 . ($pl->peaceful ? " [peaceful]" : " [HOSTILE]")
70 . ($ns->afk ? " [AFK]" : "") 70 . ($ns->afk ? " [AFK]" : "")
71 . ($ob->flag (cf::FLAG_WIZ) ? " [WIZ]" : "") 71 . ($ob->flag (cf::FLAG_WIZ) ? " [WIZ]" : "")
72 . " [" . $pl->ns->version . "]" 72 . " [" . $pl->ns->version . "]"
73 . " [" . ($pl->peaceful || $privileged ? $ob->map->{path}->visible_name : $ob->map->region ? $ob->map->region->name : "the unknown") . "]" 73 . " [" . ($pl->peaceful || $privileged ? $ob->map->visible_name : $ob->region->name) . "]"
74 . (sprintf " [rtt %.3fs]", $pl->ns->rtt * 1e-6) 74 . (sprintf " [rtt %.3fs]", $pl->ns->rtt * 1e-6)
75 . ($privileged ? " " . $pl->ns->host : "") 75 . ($privileged ? " " . $pl->ns->host : "")
76 } sort { (lc $a->ob->name) cmp (lc $b->ob->name) } @pl 76 } sort { (lc $a->ob->name) cmp (lc $b->ob->name) } @pl
77 ), 77 ),
78 eval { "* IRC: " . join ", ", ext::schmorp_irc::users }, 78 eval { "* IRC: " . join ", ", ext::schmorp_irc::users },
86 86
87 $ob->reply (undef, (join "\n", who_listing $ob->may ("extended_who")), cf::NDI_UNIQUE | cf::NDI_DK_ORANGE); 87 $ob->reply (undef, (join "\n", who_listing $ob->may ("extended_who")), cf::NDI_UNIQUE | cf::NDI_DK_ORANGE);
88 88
89 1 89 1
90}; 90};
91
92cf::register_command usekeys => sub {
93 my ($ob, $arg) = @_;
94 my @types = ("inventory", "keyrings", "containers");
95 my $mapping = {
96 inventory => 1,
97 keyrings => 2,
98 containers => 3,
99 };
100
101 my $oldtype = $ob->contr->usekeys;
102 my $oldtype_name = $types[$oldtype];
103
104 return $ob->reply (undef, "usekeys is set to $oldtype_name")
105 unless $arg;
106
107 return $ob->reply (undef, "usekeys: Unknown options '$arg', valid options are inventory, keyrings, containers")
108 unless $mapping->{$arg};
109
110 $ob->contr->usekeys ($mapping->{$arg} - 1); # HACK: because of the $mapping->{$arg} check before, where $arg should not be 0
111 # but $arg would be 0 if a user enters an incorrect value
112 $ob->reply (undef, "usekeys" . ($oldtype == $ob->contr->usekeys ? "" : " now") . " set to " . $types[$ob->contr->usekeys]);
113
114 1
115};
116
117cf::register_command afk => sub {
118 my ($ob, $arg) = @_;
119
120 $ob->contr->ns->afk ($ob->contr->ns->afk ? 0 : 1);
121 $ob->reply (undef, $ob->contr->ns->afk ? "You are now AFK" : "You are no longer AFK");
122
123 1
124};
125
126cf::register_command sound => sub {
127 my ($ob, $arg) = @_;
128
129 $ob->contr->ns->sound ($ob->contr->ns->sound ? 0 : 1);
130 $ob->reply (undef, $ob->contr->ns->sound ? "The sounds are enabled." : "Silence is golden...");
131
132 1
133};
134
135cf::register_command brace => sub {
136 my ($ob, $arg) = @_;
137
138 $ob->contr->braced ($ob->contr->braced ? 0 : 1);
139 $ob->reply (undef, $ob->contr->braced ? "You are braced." : "Not braced.");
140
141 1
142};
143
144# XXX: This has a bug. After one sets his wimpy level to 0 and resets it to
145# some other level (which may also be 0), this does not get echoed,
146# but it does get set.
147cf::register_command wimpy => sub {
148 my ($ob, $arg) = @_;
149
150 my $wimpy = $ob->run_away;
151 return $ob->reply (undef, "Your current wimpy level is $wimpy.")
152 if $arg eq "";
153
154 return $ob->run_away ($arg) && $ob->reply (undef, "Your new wimpy level is $arg.")
155 if $arg =~ /^\d+$/ and $arg <= 100;
156
157 $ob->reply (undef, "Incorrect parameters for wimpy: $arg");
158
159 1
160};
161
162cf::register_command peaceful => sub {
163 my ($ob, $arg) = @_;
164
165 $ob->reply (undef, "You cannot change your peaceful setting with this command."
166 ." Please speak to the priest in the temple of Gorokh"
167 ." if you want to become hostile or in temple of Valriel"
168 ." if you want to become peaceful again.");
169
170 #$ob->contr->peaceful ($ob->contr->peaceful ? 0 : 1);
171 #$ob->reply (undef, $ob->contr->peaceful ? "You will attack other players." : "You will not attack other players.");
172
173 1
174};
175
91 176
92cf::register_command rename => sub { 177cf::register_command rename => sub {
93 my ($ob, $arg) = @_; 178 my ($ob, $arg) = @_;
94 179
95 $ob->speed_left ($ob->speed_left - 0.25); 180 $ob->speed_left ($ob->speed_left - 0.25);
123 $ob->reply (undef, "server started $startup, uptime ${runtime}\d"); 208 $ob->reply (undef, "server started $startup, uptime ${runtime}\d");
124 209
125 1 210 1
126}; 211};
127 212
213my %IN_MEMORY = (
214 cf::MAP_IN_MEMORY => "I",
215 cf::MAP_SWAPPED => "S",
216 cf::MAP_LOADING => "L",
217);
218
219cf::register_command maps => sub {
220 my ($ob, $arg) = @_;
221
222 no re 'eval'; $arg = qr<$arg>;
223
224 my $format = "%2s %1s %3s %5s %.60s\n";
225
226 $ob->reply (undef, (sprintf $format, "Pl", "I", "Svd", "Reset", "Name"), cf::NDI_BLACK | cf::NDI_UNIQUE);
227
228 for (sort keys %cf::MAP) {
229 my $map = $cf::MAP{$_}
230 or next;
231
232 next unless $map->path =~ $arg;
233 next if $map->{deny_list};
234
235 my $svd = int $cf::RUNTIME - $map->{last_save};
236 $svd = "++" if $svd > 99;
237
238 $ob->reply (undef,
239 (sprintf $format,
240 (scalar $map->players),
241 $IN_MEMORY{$map->in_memory} || "?",
242 $svd,
243 (int $map->reset_at - $cf::RUNTIME),
244 $map->visible_name),
245 cf::NDI_BLACK | cf::NDI_UNIQUE);
246 }
247
248 1
249};
250

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines