… | |
… | |
44 | $pl->{rent}{balance} += $offline + $online; |
44 | $pl->{rent}{balance} += $offline + $online; |
45 | } |
45 | } |
46 | |
46 | |
47 | sub pay_balance { |
47 | sub pay_balance { |
48 | my ($pl) = @_; |
48 | my ($pl) = @_; |
|
|
49 | |
|
|
50 | cf::cede_to_tick; |
49 | |
51 | |
50 | update_balance $pl; |
52 | update_balance $pl; |
51 | |
53 | |
52 | return unless $pl->{rent}{balance} > 0; |
54 | return unless $pl->{rent}{balance} > 0; |
53 | |
55 | |
… | |
… | |
143 | $pl->{rent}{last_offline_check} ||= time; |
145 | $pl->{rent}{last_offline_check} ||= time; |
144 | |
146 | |
145 | if ($pl->{rent}{last_online_check}) { |
147 | if ($pl->{rent}{last_online_check}) { |
146 | $pl->{rent}{last_online_check} = time |
148 | $pl->{rent}{last_online_check} = time |
147 | - List::Util::min 3600, |
149 | - List::Util::min 3600, |
148 | $pl->ob->get_ob_key_value ("schmorplog_last_save") - $pl->{rent}{last_online_check}; |
150 | $pl->ob->kv_get ("schmorplog_last_save") - $pl->{rent}{last_online_check}; |
149 | } else { |
151 | } else { |
150 | $pl->{rent}{last_online_check} = time; |
152 | $pl->{rent}{last_online_check} = time; |
151 | } |
153 | } |
152 | |
154 | |
153 | update_balance $pl; |
155 | update_balance $pl; |
… | |
… | |
181 | reject_entry $pl; |
183 | reject_entry $pl; |
182 | } |
184 | } |
183 | }, |
185 | }, |
184 | ; |
186 | ; |
185 | |
187 | |
186 | our $RENT_TIMER = Event->timer ( |
188 | our $RENT_TIMER = cf::periodic 3600, Coro::unblock_sub { |
187 | reentrant => 0, |
|
|
188 | after => 60, |
|
|
189 | interval => 3600, |
|
|
190 | data => cf::WF_AUTOCANCEL, |
|
|
191 | cb => sub { |
|
|
192 | pay_balance $_ for cf::player::list; |
189 | pay_balance $_ for cf::player::list; |
193 | }, |
190 | }; |
194 | ); |
|
|
195 | |
191 | |