Skip to content

Commit be2de16

Browse files
committed
Added <BaseClient/Player>.fire_game_event.
1 parent 46bf8f5 commit be2de16

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

addons/source-python/packages/source-python/__init__.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,27 @@ def setup_data():
153153
'BaseClient',
154154
GameConfigObj(SP_DATA_PATH / 'client' / 'CBaseClient.ini'))
155155

156+
from core.cache import CachedProperty
157+
from memory import get_function_info
158+
from memory.helpers import MemberFunction
159+
players.BaseClient.fire_game_event = CachedProperty(
160+
lambda self, info: MemberFunction(
161+
manager,
162+
info.return_type,
163+
self.make_virtual_function(info),
164+
self
165+
),
166+
doc="""Fires the given game event to this client.
167+
168+
:param GameEvent game_event:
169+
The game event instance to fire.
170+
""",
171+
args=(get_function_info('IGameEventListener2', 'FireGameEvent'),)
172+
)
173+
players.BaseClient.fire_game_event.__set_name__(
174+
players.BaseClient, 'fire_game_event'
175+
)
176+
156177
import entities
157178
entities._BaseEntityOutput = manager.create_type_from_dict(
158179
'BaseEntityOutput',

addons/source-python/packages/source-python/players/_base.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,12 @@
4747
from entities.helpers import index_from_inthandle
4848
from entities.helpers import wrap_entity_mem_func
4949
from entities.props import SendPropType
50+
# Events
51+
from events.manager import game_event_manager
5052
# Filters
5153
from filters.entities import EntityIter
54+
# KeyValues
55+
from keyvalues import KeyValues
5256
# Mathlib
5357
from mathlib import NULL_VECTOR
5458
from mathlib import Vector
@@ -777,6 +781,25 @@ def spawn(self, force=False):
777781
# Spawn the player...
778782
super().spawn()
779783

784+
def fire_game_event(self, event_name, **kwargs):
785+
"""Creates and fires an event to this player.
786+
787+
:param str event_name:
788+
The name of the event to create and fire.
789+
:param dict kwargs:
790+
The variables to set to the event.
791+
"""
792+
# Create the event
793+
game_event = game_event_manager.create_event(event_name, True)
794+
795+
# Set the variables
796+
game_event.variables.recursive_copy(
797+
KeyValues.from_dict(event_name, kwargs)
798+
)
799+
800+
# Fire the event
801+
self.base_client.fire_game_event(game_event)
802+
780803
# =========================================================================
781804
# >> PLAYER WEAPON FUNCTIONALITY
782805
# =========================================================================

0 commit comments

Comments
 (0)