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.38 by root, Sun Mar 18 03:05:40 2007 UTC vs.
Revision 1.42 by root, Thu May 3 04:50:27 2007 UTC

38 1 38 1
39} 39}
40 40
41sub ext::schmorp_irc::users; # HACK: TODO: replace by signal 41sub ext::schmorp_irc::users; # HACK: TODO: replace by signal
42 42
43sub who_listing(;$) { 43sub who_listing(;$$) {
44 my ($privileged) = @_; 44 my ($privileged, $select) = @_;
45 45
46 my ($numwiz, $numafk) = (0, 0); 46 my ($numwiz, $numafk) = (0, 0);
47 my @pl; 47 my @pl;
48 48
49 foreach my $pl (cf::player::list) { 49 foreach my $pl (cf::player::list) {
59 push @pl, $pl; 59 push @pl, $pl;
60 } 60 }
61 61
62 ( 62 (
63 "Total Players in The World. (" . (scalar @pl) . ") -- WIZ($numwiz) AFK($numafk) BOT(0)", 63 "Total Players in The World. (" . (scalar @pl) . ") -- WIZ($numwiz) AFK($numafk) BOT(0)",
64 ( 64 (grep /$select/,
65 map { 65 map {
66 my ($pl, $ob, $ns) = ($_, $_->ob, $_->ns); 66 my ($pl, $ob, $ns) = ($_, $_->ob, $_->ns);
67 67
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->visible_name : $ob->region->name) . "]" 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 },
79 ) 79 )
80} 80}
81 81
82cf::register_command who => sub { 82cf::register_command who => sub {
83 my ($ob, $arg) = @_; 83 my ($ob, $arg) = @_;
84 84
85 $ob->speed_left ($ob->speed_left - 0.25); 85 $ob->speed_left ($ob->speed_left - 4);
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"), $arg), cf::NDI_UNIQUE | cf::NDI_DK_ORANGE);
88 88
89 1
90};
91
92cf::register_command seen => sub {
93 my ($pl, $args) = @_;
94
95 if (my ($login) = $args =~ /(\S+)/) {
96 if ($login eq $pl->name) {
97 $pl->message ("Very funny, $login. Ha. Ha.", cf::NDI_UNIQUE);
98 } elsif (cf::player::find_active $login) {
99 $pl->message ("$login is right here on this server!", cf::NDI_UNIQUE);
100 } elsif (cf::player::exists $login
101 and stat cf::player::path $login) {
102 my $time = (stat _)[9];
103
104 $pl->message ("$login was last seen here "
105 . (POSIX::strftime "%Y-%m-%d %H:%M:%S +0000", gmtime $time)
106 . " which was " . (int +(time - $time) / 3600) . " hours ago.", cf::NDI_UNIQUE);
107 } else {
108 $pl->message ("No player named $login is known to me.", cf::NDI_UNIQUE);
109 }
110 } else {
111 $pl->message ("Usage: seen <player>", cf::NDI_UNIQUE);
89 1 112 }
90}; 113};
91 114
92cf::register_command body => sub { 115cf::register_command body => sub {
93 my ($ob) = @_; 116 my ($ob) = @_;
94 117
253 my ($ob, $arg) = @_; 276 my ($ob, $arg) = @_;
254 277
255 return $ob->reply (undef, sprintf "Output rate is presently %dbps.", $ob->contr->ns->max_rate / $cf::TICK) 278 return $ob->reply (undef, sprintf "Output rate is presently %dbps.", $ob->contr->ns->max_rate / $cf::TICK)
256 unless $arg > 0; 279 unless $arg > 0;
257 280
281 # minimum is 2k/s
258 $ob->contr->ns->max_rate ($arg * $cf::TICK); 282 $ob->contr->ns->max_rate ((List::Util::max 2048, $arg) * $cf::TICK);
259 $ob->reply (undef, sprintf "Output rate now set to %dbps.", $ob->contr->ns->max_rate / $cf::TICK); 283 $ob->reply (undef, sprintf "Output rate now set to %dbps.", $ob->contr->ns->max_rate / $cf::TICK);
260 284
261 1 285 1
262}; 286};
263 287
265 my ($ob, $arg) = @_; 289 my ($ob, $arg) = @_;
266 290
267 return $ob->reply (undef, "Output count is presently " . $ob->contr->outputs_count) 291 return $ob->reply (undef, "Output count is presently " . $ob->contr->outputs_count)
268 unless $arg > 0; 292 unless $arg > 0;
269 293
294 $arg = 4 if $arg < 4;
295
270 $ob->contr->outputs_count ($arg); 296 $ob->contr->outputs_count ($arg);
271 $ob->reply (undef, "Output count now set to " . $ob->contr->outputs_count); 297 $ob->reply (undef, "Output count now set to " . $ob->contr->outputs_count);
272 298
273 1 299 1
274}; 300};
276cf::register_command 'output-sync' => sub { 302cf::register_command 'output-sync' => sub {
277 my ($ob, $arg) = @_; 303 my ($ob, $arg) = @_;
278 304
279 return $ob->reply (undef, sprintf "Output sync time is presently %.1fs", $ob->contr->outputs_sync * $cf::TICK) 305 return $ob->reply (undef, sprintf "Output sync time is presently %.1fs", $ob->contr->outputs_sync * $cf::TICK)
280 unless length $arg; 306 unless length $arg;
307
308 $arg = 0.5 if $arg < 0.5;
281 309
282 $ob->contr->outputs_sync ($arg / $cf::TICK); 310 $ob->contr->outputs_sync ($arg / $cf::TICK);
283 $ob->reply (undef, sprintf "Output sync time now set to %.1fs", $ob->contr->outputs_sync * $cf::TICK); 311 $ob->reply (undef, sprintf "Output sync time now set to %.1fs", $ob->contr->outputs_sync * $cf::TICK);
284 312
285 1 313 1

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines