Page 1 of 1

Call AddLayeredSequence

Posted: Thu May 11, 2023 8:14 am
by rovizon
Hello! I am trying to blend animations on prop_dynamic_override entity. Trying to call CBaseAnimatingOverlay::AddLayeredSequence:

Syntax: Select all

import memory
from memory import Convention, DataType

server = memory.find_binary('server')

add_layered_sequence = server[b'\x55\x8B\xEC\x51\x53\xFF\x75\x0C'].make_function(
Convention.THISCALL,
[DataType.INT, DataType.INT, DataType.INT],
DataType.INT
)

add_layered_sequence(entity.index, 0, 0)


https://github.com/ValveSoftware/source ... y.cpp#L639

And got an error:

Code: Select all

RuntimeError: Access violation while reading address '112022711'.

Game CS Source
Please tell me what am i doing wrong?

Re: Call AddLayeredSequence

Posted: Thu May 11, 2023 3:45 pm
by Ayuto

Syntax: Select all

import memory
from memory import Convention, DataType

server = memory.find_binary('server')

add_layered_sequence = server[b'\x55\x8B\xEC\x51\x53\xFF\x75\x0C'].make_function(
Convention.THISCALL,
[DataType.POINTER, DataType.INT, DataType.INT],
DataType.INT
)

add_layered_sequence(entity.pointer, 0, 0)
The first argument has to be a pointer (probably the entity?).

Re: Call AddLayeredSequence

Posted: Thu May 11, 2023 6:05 pm
by rovizon
The same error:

Code: Select all

RuntimeError: Access violation while writing address '1775008724'.

Re: Call AddLayeredSequence

Posted: Fri May 12, 2023 8:30 am
by Articha
I sometimes don't understand hooking C++ functions, but in source there's 2 int arguments, while you waiting 3. Why?

Re: Call AddLayeredSequence

Posted: Fri May 12, 2023 9:08 am
by rovizon
Because I need to add a layer for some specific entity. Therefore, I pass the desired entity as the first argument (the this-pointer). Maybe I'm wrong and you need to do it somehow differently.

Re: Call AddLayeredSequence

Posted: Fri May 12, 2023 4:25 pm
by L'In20Cible
rovizon wrote:prop_dynamic_override

This entity does not inherit from CBaseAnimatingOverlay.