def method_decorator(method): # Create a wrapper method @wraps(method, assigned=WRAPPER_ASSIGNMENTS+('__dict__',), updated=()) def method_wrapper(self, **eargs): # If the method's cooldown is over if method_wrapper.cooldown.remaining <= 0: # Restart the cooldown method_wrapper.cooldown.start(1, fn(self, **eargs)) # And call the function return method(self, **eargs) # If there was cooldown remaining and a message is provided if message: # Format the provided message formatted_message = message.format( name=self.name, cd=method_wrapper.cooldown.remaining, max_cd=method_wrapper.cooldown.limit ) # And send it to the player SayText2(message=formatted_message).send(eargs['player'].index) # Create the cooldown object for the wrapper method_wrapper.cooldown = TickRepeat(lambda: None) # And return the wrapper return method_wrapper
class Regeneration_Suit(Item): "Regenerate health up to 100 when out of combat for 5 seconds." authors = 'Mahi', category = 'DEBUG' cost = 2500 limit = 1 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._repeat = TickRepeat(self._tick) self._delay = None def _tick(self, player): if player.health < 100: player.health = min(player.health + 3, 100) def player_spawn(self, player, **eargs): self._repeat.args = (player,) self._repeat.start(1, 0) def player_death(self, **eargs): if self._delay is not None: self._delay.cancel() self._delay = None self._repeat.stop() def player_attack(self, **eargs): if self._delay is not None: self._delay.cancel() self._repeat.pause() self._delay = tick_delays.delay(5, self._cancel_pause) def player_victim(self, **eargs): if self._delay is not None: self._delay.cancel() self._repeat.pause() self._delay = tick_delays.delay(5, self._cancel_pause) def _cancel_pause(self): self._repeat.resume() self._delay = None
def _save_player_data_upon_disconnect(event): """Save player's RPG data into the database.""" index = index_from_userid(event['userid']) if index not in _players: return _save_player_data(_players[index]) del _players[index] def _save_everyones_data(): """Save every player's RPG data into the database.""" for player in _players.values(): _save_player_data(player) _database.commit() _data_save_repeat = TickRepeat(_save_everyones_data) _data_save_repeat.start(240, 0) # ====================================================================== # >> SKILL EXECUTION EVENT CALLBACKS # ====================================================================== @Event('player_jump', 'player_spawn', 'player_disconnect') def _execute_independent_skill_callbacks(event): """Execute skill callbacks for events with only one user. Also makes sure the player is in a valid team to prevent accidental errors with spectators and unassigned players. """ event_args = event.variables.as_dict()
print("steam64: %s" % steam64) authorized_active_player = leetcoin_client.authorizeActivatePlayer(steam64, pending_activation_player_userid) pop_list.append(index) pop_list.reverse() for index_to_remove in pop_list: pending_activation_player_list.pop(index_to_remove) pass def submiter_callback(): print(">>>>>>>>>>>>>>>>>>>>> Repeat Submitter") leetcoin_client.repeatingServerUpdate() # Get the instance of Repeat my_repeat = TickRepeat(my_repeat_callback) submit_repeat = TickRepeat(submiter_callback) # Start the repeat my_repeat.start(10, 0) submit_repeat.start(45, 0) @Event('game_init') def game_init(game_event): print(">>>>>>>>>>>>>>>>>>>>> game_init") pass @Event('round_announce_match_start') def round_announce_match_start(game_event): print(">>>>>>>>>>>>>>>>>>>>> round_announce_match_start")
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._repeat = TickRepeat(self._tick) self._delay = None
print("steam64: %s" % steam64) authorized_active_player = leetcoin_client.authorizeActivatePlayer(steam64, pending_activation_player_userid) pop_list.append(index) pop_list.reverse() for index_to_remove in pop_list: pending_activation_player_list.pop(index_to_remove) pass def submiter_callback(): print(">>>>>>>>>>>>>>>>>>>>> Repeat Submitter") leetcoin_client.repeatingServerUpdate() # Get the instance of Repeat my_repeat = TickRepeat(my_repeat_callback) submit_repeat = TickRepeat(submiter_callback) # Start the repeat my_repeat.start(10, 0) submit_repeat.start(60, 0) @Event def game_init(game_event): print(">>>>>>>>>>>>>>>>>>>>> game_init") pass @Event def round_announce_match_start(game_event): print(">>>>>>>>>>>>>>>>>>>>> round_announce_match_start")
config_manager = build_module_config('shop/online_rewards') config_manager.controlled_cvar( int_handler, 'timeout', default=1800, description="Reward constantly playing players every X seconds") def check_rewards(): current_time = time() for arcjail_user in arcjail_user_manager.values(): if not arcjail_user.loaded: continue if (current_time - arcjail_user.last_online_reward < config_manager['timeout']): continue arcjail_user.last_online_reward = current_time arcjail_user.give_item('gift', 'online_reward', amount=1, async=True) item_instance = get_item_instance('gift', 'online_reward') tell(arcjail_user.player, strings_module['reward_received'], caption=item_instance.caption) _tick_repeat = TickRepeat(check_rewards).start(CHECK_INTERVAL, limit=0)