Page 1 of 1
[HL2DM] set_model plays animation
Posted: Mon Jan 25, 2021 8:15 pm
by Kami
Hey guys, I'm trying to use this code to change the player model in hl2dm.
Syntax: Select all
from events import Event
from players.entity import Player
import random
from engines.precache import Model
@Event('player_spawn')
def _spawn(ev):
player = Player.from_userid(ev['userid'])
player.delay(1.0,player.set_model,(Model("models/eli.mdl"),))
The problem is that the model seems to go through it's animations (I guess from HL2) instead of sticking to the actual player stance.
Example:

Re: [HL2DM] set_model plays animation
Posted: Tue Jan 26, 2021 1:06 am
by VinciT
Hi Kami, I believe this should give you the desired result:
Syntax: Select all
# ../set_model/set_model.py
# Source.Python
from core import PLATFORM
from core.cache import cached_property
from engines.server import engine_server
from events import Event
from memory import Convention, DataType
from memory.helpers import MemberFunction
from memory.manager import manager
from players.entity import Player
# void CBaseEntity::SetModel( const char *szModelName )
# More info: https://git.io/Jtn9u
SET_MODEL_OFFSET = 24 if PLATFORM == 'windows' else 25
@Event('player_spawn')
def player_spawn(event):
PlayerSM.from_userid(event['userid']).set_model('models/eli.mdl')
class PlayerSM(Player):
"""Extended Player class."""
caching = True
def set_model(self, model_path):
"""Sets the player's model."""
# Make sure the model is precached before trying to set it.
engine_server.precache_model(model_path)
# Set the model.
self._set_model(model_path)
@cached_property
def _set_model(self):
return MemberFunction(
manager,
DataType.VOID,
self.make_virtual_function(
SET_MODEL_OFFSET,
Convention.THISCALL,
(DataType.POINTER, DataType.STRING),
DataType.VOID
),
self
)
Re: [HL2DM] set_model plays animation
Posted: Tue Jan 26, 2021 5:18 am
by Kami
Awesome, thank you!
Re: [HL2DM] set_model plays animation
Posted: Tue Jan 26, 2021 6:56 pm
by PEACE
Smiles ,
Both you guys are in my book :)