Syntax: Select all
from memory import find_binary, make_object, Convention, DataType, Pointer, alloc
from memory.hooks import PreHook, PostHook, use_pre_registers
from random import randint
from memory.manager import CustomType, Type, manager
enginelib = find_binary('engine')
class IEngineSound(CustomType, metaclass=manager):
EmitSound = manager.virtual_function(5, [DataType.POINTER, DataType.INT, DataType.INT, DataType.STRING, DataType.FLOAT, DataType.INT, DataType.INT, DataType.INT, DataType.POINTER, DataType.POINTER, DataType.POINTER, DataType.BOOL, DataType.FLOAT, DataType.INT], DataType.INT, Convention.THISCALL)
EmitSound2 = manager.virtual_function(6, [DataType.POINTER, DataType.INT, DataType.INT, DataType.STRING, DataType.FLOAT, DataType.FLOAT, DataType.INT, DataType.INT, DataType.POINTER, DataType.POINTER, DataType.POINTER, DataType.BOOL, DataType.FLOAT, DataType.INT], DataType.INT, Convention.THISCALL)
EmitSentenceByIndex = manager.virtual_function(7, [DataType.POINTER, DataType.INT, DataType.INT, DataType.INT, DataType.FLOAT, DataType.INT, DataType.INT, DataType.INT, DataType.POINTER, DataType.POINTER, DataType.POINTER, DataType.BOOL, DataType.FLOAT, DataType.INT], DataType.INT, Convention.THISCALL)
EngineCreateInterface = enginelib['CreateInterface'].make_function(
Convention.CDECL,
[
DataType.STRING,
DataType.POINTER
],
DataType.POINTER
)
sound_server = make_object(IEngineSound, EngineCreateInterface('IEngineSoundServer003', None))
@PreHook(sound_server.EmitSound)
def PreEmitSound(args):
args[8] = randint(50, 175)