[L4D2] EmitSound pitch randomization

Post Python examples to help other users.
RenardDev
Junior Member
Posts: 5
Joined: Mon Jan 27, 2025 12:04 pm

[L4D2] EmitSound pitch randomization

Postby RenardDev » Mon Jan 27, 2025 12:29 pm

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)

Return to “Code examples / Cookbook”

Who is online

Users browsing this forum: No registered users and 36 guests