Source code for players.engines.orangebox.cstrike

# ../players/engines/orangebox/cstrike.py

"""Provides CS:S specific Player based functionality."""

# =============================================================================
# >> IMPORTS
# =============================================================================
# Source.Python Imports
#   Engines
from engines.server import engine_server
#   Entities
from entities.entity import BaseEntity
#   Filters
from filters.entities import EntityIter
#   Memory
from memory import get_virtual_function
from memory.hooks import PreHook
#   Players
from . import Player as _Player
from players.constants import LifeState


# =============================================================================
# >> CLASSES
# =============================================================================
[docs]class Player(_Player): """Class used to interact directly with players.""" # Instances of this class will be cached by default caching = True
[docs] def has_c4(self): """Return whether or not the player is carrying C4.""" # Loop through all c4 entities on the server for weapon in EntityIter('weapon_c4'): # Is the entity's "owner" the player? if weapon.owner_handle == self.inthandle: # Return True return True # If no c4 is owned by the player, return False return False
[docs] def spawn(self, force=False): """Spawn the player. :param bool force: Whether or not the spawn should be forced. """ # Is the player spawnable? if not force and (self.team <= 1 or not self.dead): return # Spawn the player... self.player_state = 0 self.life_state = LifeState.ALIVE BaseEntity.spawn(self)
# ============================================================================= # >> CALLBACKS # ============================================================================= @PreHook(get_virtual_function(engine_server, 'ClientCommand')) def _pre_client_command(args): """Block name changes started by the server. Pre-hook on IVEngineServer::ClientCommand to block the name changes. """ if args[2] == 'name "%s"': return 0