Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # CCSPlayer.ini
- '''
- [functions]
- [[PlayerRunCommand]]
- binary = cstrike/bin/server
- identifier_nt = 55 8B EC 83 EC 58 56 89 4D A8
- identifier = _ZN9CCSPlayer16PlayerRunCommandEP8CUserCmdP11IMoveHelper
- parameters = ppp)v
- '''
- # CUserCmd.ini
- '''
- type_size = 68
- [attributes]
- [[vtable]]
- identifier = 0
- converter = ptr
- [[command_number]]
- identifier = 4
- converter = int
- [[tick_count]]
- identifier = 8
- converter = int
- [[viewangles]]
- identifier = 12
- converter = QAngle
- aligned = True
- [[forwardmove]]
- identifier = 24
- converter = float
- [[sidemove]]
- identifier = 28
- converter = float
- [[upmove]]
- identifier = 32
- converter = float
- [[buttons]]
- identifier = 36
- converter = int
- [[impulse]]
- identifier = 40
- converter = uchar
- [[weaponselect]]
- identifier = 44
- converter = int
- [[weaponsubtype]]
- identifier = 48
- converter = int
- [[random_seed]]
- identifier = 52
- converter = int
- [[mousedx]]
- identifier = 56
- converter = short
- [[mousedy]]
- identifier = 60
- converter = short
- [[hasbeenpredicted]]
- identifier = 64
- converter = bool
- '''
- # =============================================================================
- # >> IMPORTS
- # =============================================================================
- # Python
- from path import path
- # EventScripts
- import es
- # binutils
- import binutils
- # =============================================================================
- # >> CONSTANTS
- # =============================================================================
- ADDON_PATH = path(__file__).parent
- # =============================================================================
- # >> GLOBAL VARIABLES
- # =============================================================================
- # Create a new TypeManager object
- manager = binutils.TypeManager()
- # Create type CCSPlayer from a file
- CCSPlayer = manager.create_type_from_file(
- 'CCSPlayer', ADDON_PATH.joinpath('CCSPlayer.ini')
- )
- # Create type CUserCmd from a file
- CUserCmd = manager.create_type_from_file(
- 'CUserCmd', ADDON_PATH.joinpath('CUserCmd.ini')
- )
- # Create type QAngle
- QAngle = manager.create_type(
- 'QAngle',
- {
- 'x': manager.attribute('float', 0),
- 'y': manager.attribute('float', 4),
- 'z': manager.attribute('float', 8)
- },
- 12
- )
- # =============================================================================
- # >> LOAD & UNLOAD
- # =============================================================================
- def load():
- CCSPlayer.PlayerRunCommand.add_pre_hook(PrePlayerRunCommand)
- def unload():
- CCSPlayer.PlayerRunCommand.remove_pre_hook(PrePlayerRunCommand)
- # =============================================================================
- # >> CALLBACKS
- # =============================================================================
- def PrePlayerRunCommand(args):
- # Wrap the CUserCmd pointer
- ucmd = CUserCmd(args[1])
- # Print selected weapon
- if ucmd.weaponselect:
- classname = es.entitygetvalue(ucmd.weaponselect, 'classname')
- es.msg('Weapon selected: %s'% classname)
- # Print fired impulse
- if ucmd.impulse:
- es.msg('Impulse fired: %s'% ucmd.impulse)
- # Block back move
- if ucmd.forwardmove < 0:
- ucmd.forwardmove = 0
Advertisement
Add Comment
Please, Sign In to add comment