… | |
… | |
396 | last; |
396 | last; |
397 | } |
397 | } |
398 | Coro::Timer::sleep 0.2; |
398 | Coro::Timer::sleep 0.2; |
399 | } |
399 | } |
400 | |
400 | |
401 | $ob->reply (undef, "Welcome to Crossfire!"); |
401 | $ob->reply (undef, "Welcome to Deliantra!"); |
402 | |
402 | |
403 | delete $pl->{deny_save}; |
403 | delete $pl->{deny_save}; |
404 | |
404 | |
405 | last; |
405 | last; |
406 | } |
406 | } |
… | |
… | |
492 | our $SAVE_TIMEOUT = $cf::CFG{player_save_interval} || 20; # save players every n seconds |
492 | our $SAVE_TIMEOUT = $cf::CFG{player_save_interval} || 20; # save players every n seconds |
493 | |
493 | |
494 | our $SCHEDULER = cf::async_ext { |
494 | our $SCHEDULER = cf::async_ext { |
495 | $Coro::current->{desc} = "player scheduler"; |
495 | $Coro::current->{desc} = "player scheduler"; |
496 | |
496 | |
497 | my $schedule_interval = Coro::Event->timer (after => 1); |
|
|
498 | while () { |
497 | while () { |
499 | $schedule_interval->interval ($SCHEDULE_INTERVAL); |
498 | Coro::EV::timer_once $SCHEDULE_INTERVAL; |
500 | $schedule_interval->next; |
|
|
501 | |
499 | |
502 | # this weird form of iteration over values is used because |
500 | # this weird form of iteration over values is used because |
503 | # the hash changes underneath us frequently, and for |
501 | # the hash changes underneath us frequently, and for |
504 | # keeps a direct reference to the value without (in 5.8 perls) |
502 | # keeps a direct reference to the value without (in 5.8 perls) |
505 | # keeping a reference, so this is prone to crashes or worse. |
503 | # keeping a reference, so this is prone to crashes or worse. |