Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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")
Ejemplo n.º 5
0
 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")
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
Archivo: rpg.py Proyecto: Mahi/RPG-SP
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()