ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.360 by root, Sun Sep 9 06:25:46 2007 UTC vs.
Revision 1.362 by root, Mon Sep 10 12:44:06 2007 UTC

187 $msg .= "\n" 187 $msg .= "\n"
188 unless $msg =~ /\n$/; 188 unless $msg =~ /\n$/;
189 189
190 $msg =~ s/([\x00-\x08\x0b-\x1f])/sprintf "\\x%02x", ord $1/ge; 190 $msg =~ s/([\x00-\x08\x0b-\x1f])/sprintf "\\x%02x", ord $1/ge;
191 191
192 utf8::encode $msg;
193 LOG llevError, $msg; 192 LOG llevError, $msg;
194 }; 193 };
195} 194}
196 195
197@safe::cf::global::ISA = @cf::global::ISA = 'cf::attachable'; 196@safe::cf::global::ISA = @cf::global::ISA = 'cf::attachable';
1017 1016
1018 my $guard = cf::lock_acquire "io"; 1017 my $guard = cf::lock_acquire "io";
1019 1018
1020 sync_job { 1019 sync_job {
1021 if (length $$rdata) { 1020 if (length $$rdata) {
1021 utf8::decode (my $decname = $filename);
1022 warn sprintf "saving %s (%d,%d)\n", 1022 warn sprintf "saving %s (%d,%d)\n",
1023 $filename, length $$rdata, scalar @$objs; 1023 $decname, length $$rdata, scalar @$objs;
1024 1024
1025 if (my $fh = aio_open "$filename~", O_WRONLY | O_CREAT, 0600) { 1025 if (my $fh = aio_open "$filename~", O_WRONLY | O_CREAT, 0600) {
1026 chmod SAVE_MODE, $fh; 1026 chmod SAVE_MODE, $fh;
1027 aio_write $fh, 0, (length $$rdata), $$rdata, 0; 1027 aio_write $fh, 0, (length $$rdata), $$rdata, 0;
1028 aio_fsync $fh if $cf::USE_FSYNC; 1028 aio_fsync $fh if $cf::USE_FSYNC;
1078 1078
1079 undef $guard; 1079 undef $guard;
1080 $av = eval { (Storable::thaw $av)->{objs} }; 1080 $av = eval { (Storable::thaw $av)->{objs} };
1081 } 1081 }
1082 1082
1083 utf8::decode (my $decname = $filename);
1083 warn sprintf "loading %s (%d)\n", 1084 warn sprintf "loading %s (%d,%d)\n",
1084 $filename, length $data, scalar @{$av || []}; 1085 $decname, length $data, scalar @{$av || []};
1085 1086
1086 ($data, $av) 1087 ($data, $av)
1087} 1088}
1088 1089
1089=head2 COMMAND CALLBACKS 1090=head2 COMMAND CALLBACKS
1276use Coro::AIO; 1277use Coro::AIO;
1277 1278
1278=head3 cf::player 1279=head3 cf::player
1279 1280
1280=over 4 1281=over 4
1282
1283=item cf::player::num_playing
1284
1285Returns the official number of playing players, as per the Crossfire metaserver rules.
1286
1287=cut
1288
1289sub num_playing {
1290 scalar grep
1291 $_->ob->map
1292 && !$_->hidden
1293 && !$_->ob->flag (cf::FLAG_WIZ),
1294 cf::player::list
1295}
1281 1296
1282=item cf::player::find $login 1297=item cf::player::find $login
1283 1298
1284Returns the given player object, loading it if necessary (might block). 1299Returns the given player object, loading it if necessary (might block).
1285 1300

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines