--- deliantra/server/lib/cf.pm 2008/04/13 01:34:09 1.419 +++ deliantra/server/lib/cf.pm 2008/04/15 14:21:04 1.420 @@ -429,6 +429,8 @@ }; sub get_slot($;$$) { + return if tick_inhibit; + my ($time, $pri, $name) = @_; $time = $TICK * .6 if $time > $TICK * .6; @@ -1476,6 +1478,8 @@ aio_mkdir playerdir $pl, 0770; $pl->{last_save} = $cf::RUNTIME; + cf::get_slot 0.01; + $pl->save_pl ($path); cf::cede_to_tick; } @@ -2115,7 +2119,7 @@ $self->{last_save} = $cf::RUNTIME; $self->last_access ($cf::RUNTIME); - $self->in_memory (cf::MAP_IN_MEMORY); + $self->in_memory (cf::MAP_ACTIVE); } $self->post_load; @@ -2183,7 +2187,7 @@ $path = normalise $path, $origin && $origin->{path}; if (my $map = $cf::MAP{$path}) { - return $map if !$load || $map->in_memory == cf::MAP_IN_MEMORY; + return $map if !$load || $map->in_memory == cf::MAP_ACTIVE; } $MAP_PREFETCH{$path} |= $load; @@ -2230,6 +2234,8 @@ $_->contr->save for $self->players; }; + cf::get_slot 0.02; + if ($uniq) { $self->_save_objects ($save, cf::IO_HEADER | cf::IO_OBJECTS); $self->_save_objects ($uniq, cf::IO_UNIQUES); @@ -2247,7 +2253,7 @@ my $lock = cf::lock_acquire "map_data:$self->{path}"; return if $self->players; - return if $self->in_memory != cf::MAP_IN_MEMORY; + return if $self->in_memory != cf::MAP_ACTIVE; return if $self->{deny_save}; $self->in_memory (cf::MAP_SWAPPED);