Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from engines.server import server
- from players import PlayerGenerator
- from entities.helpers import index_from_edict
- from core import AutoUnload
- from listeners import on_client_active_listener_manager
- from listeners import on_client_disconnect_listener_manager
- from .entity import Player
- class PlayerDictionary(AutoUnload, dict):
- def __init__(self):
- # Plugin was loaded.
- on_client_active_listener_manager.register_listener(
- self._on_client_active
- )
- on_client_disconnect_listener_manager.register_listener(
- self._on_client_disconnect
- )
- # Init the dictionary.
- super().__init__()
- # If plugin was loaded during the game.
- if server.is_active():
- # Init players.
- for edict in PlayerGenerator():
- index = index_from_edict(edict)
- self[index] = Player(index)
- # Player fully loaded.
- def _on_client_active(self, index):
- self[index] = Player(index)
- # Player disconnected.
- def _on_client_disconnect(self, index):
- # Was player fully loaded?
- if index in self:
- # Remove the player from the dictionary.
- del self[index]
- # Get spectators for specific player.
- def get_spectators(self, target):
- return [player for player in self.values() if player is not target and player.dead and player.observer_target == target.inthandle and player.observer_mode != 7]
- # Plugin was unloaded.
- def _unload_instance(self):
- on_client_active_listener_manager.unregister_listener(
- self._on_client_active
- )
- on_client_disconnect_listener_manager.unregister_listener(
- self._on_client_disconnect
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement