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.358 by root, Fri Sep 7 18:10:52 2007 UTC vs.
Revision 1.361 by root, Sun Sep 9 12:52:48 2007 UTC

1276use Coro::AIO; 1276use Coro::AIO;
1277 1277
1278=head3 cf::player 1278=head3 cf::player
1279 1279
1280=over 4 1280=over 4
1281
1282=item cf::player::num_playing
1283
1284Returns the official number of playing players, as per the Crossfire metaserver rules.
1285
1286=cut
1287
1288sub num_playing {
1289 scalar grep
1290 $_->ob->map
1291 && !$_->hidden
1292 && !$_->ob->flag (cf::FLAG_WIZ),
1293 cf::player::list
1294}
1281 1295
1282=item cf::player::find $login 1296=item cf::player::find $login
1283 1297
1284Returns the given player object, loading it if necessary (might block). 1298Returns the given player object, loading it if necessary (might block).
1285 1299
1891 1905
1892 { 1906 {
1893 my $guard = cf::lock_acquire "map_data:$path"; 1907 my $guard = cf::lock_acquire "map_data:$path";
1894 1908
1895 return unless $self->valid; 1909 return unless $self->valid;
1896 return if $self->in_memory != cf::MAP_SWAPPED; 1910 return unless $self->in_memory == cf::MAP_SWAPPED;
1897 1911
1898 $self->in_memory (cf::MAP_LOADING); 1912 $self->in_memory (cf::MAP_LOADING);
1899 1913
1900 $self->alloc; 1914 $self->alloc;
1901 1915
2073 2087
2074 return if $self->players; 2088 return if $self->players;
2075 return if $self->in_memory != cf::MAP_IN_MEMORY; 2089 return if $self->in_memory != cf::MAP_IN_MEMORY;
2076 return if $self->{deny_save}; 2090 return if $self->{deny_save};
2077 2091
2092 $self->in_memory (cf::MAP_SWAPPED);
2093
2078 $self->deactivate; 2094 $self->deactivate;
2095 $_->clear_links_to ($self) for values %cf::MAP;
2079 $self->clear; 2096 $self->clear;
2080 $self->in_memory (cf::MAP_SWAPPED);
2081} 2097}
2082 2098
2083sub reset_at { 2099sub reset_at {
2084 my ($self) = @_; 2100 my ($self) = @_;
2085 2101
2118 } 2134 }
2119 2135
2120 delete $cf::MAP{$self->path}; 2136 delete $cf::MAP{$self->path};
2121 2137
2122 $self->deactivate; 2138 $self->deactivate;
2139 $_->clear_links_to ($self) for values %cf::MAP;
2123 $self->clear; 2140 $self->clear;
2124
2125 $_->clear_links_to ($self) for values %cf::MAP;
2126 2141
2127 $self->unlink_save; 2142 $self->unlink_save;
2128 $self->destroy; 2143 $self->destroy;
2129} 2144}
2130 2145

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines