voron00
15th November 2020, 04:19
BratokHR found an interesting way to change an animation of a player clone:
clone_addModel( origin, angles, indexModel )
{
level.g_cloneplayer endon( "disconnect" );
level.g_cloneplayer clone_setModel( indexModel );
clone = level.g_cloneplayer cloneplayer(0);
clone.origin = origin;
clone.angles = angles;
clone clone_setAnim();
return clone;
}
clone_setAnim( indexAnim )
{
start_addr = 140924032;
if ( getCvar("shortversion") == "1.2" )
start_addr = 141005696;
else if ( getCvar("shortversion") == "1.3" )
start_addr = 141648896;
id = self getEntityNumber();
addr = start_addr + (560 * id) + 204; // 0x08665480 + sizeof(gentity_t) * id + 0xCC(ent->s.legsAnim)
memory_int_set( addr, RandomIntRange(1, 300) ); // indexAnim 150
}
It works, but i did not test this much. Maybe there is a better way to do that though.
clone_addModel( origin, angles, indexModel )
{
level.g_cloneplayer endon( "disconnect" );
level.g_cloneplayer clone_setModel( indexModel );
clone = level.g_cloneplayer cloneplayer(0);
clone.origin = origin;
clone.angles = angles;
clone clone_setAnim();
return clone;
}
clone_setAnim( indexAnim )
{
start_addr = 140924032;
if ( getCvar("shortversion") == "1.2" )
start_addr = 141005696;
else if ( getCvar("shortversion") == "1.3" )
start_addr = 141648896;
id = self getEntityNumber();
addr = start_addr + (560 * id) + 204; // 0x08665480 + sizeof(gentity_t) * id + 0xCC(ent->s.legsAnim)
memory_int_set( addr, RandomIntRange(1, 300) ); // indexAnim 150
}
It works, but i did not test this much. Maybe there is a better way to do that though.