need help setting models

Please post any questions about developing your plugin here. Please use the search function before posting!
8guawong
Senior Member
Posts: 148
Joined: Sat Sep 20, 2014 3:06 am

need help setting models

Postby 8guawong » Fri Sep 26, 2014 5:47 pm

Syntax: Select all

from events import Event
from engines.server import engine_server
from players.entity import PlayerEntity
from players.helpers import index_from_userid
from stringtables.downloads import Downloadables

dl = Downloadables()
dl.add("materials/models/player/kuristaja/duke/duke_arms.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_body.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_body.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_body_normal.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_fingers.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_fingers2.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_hand.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_hand.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_hand_normal.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_hand2.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_head.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_head.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_head_normal.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_jeans.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_lightwarp.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_shades.vmt")
dl.add("materials/models/player/kuristaja/duke/duke_shades.vtf")
dl.add("materials/models/player/kuristaja/duke/duke_shades_normal.vtf")
dl.add("models/player/kuristaja/duke/duke.phy")
dl.add("models/player/kuristaja/duke/duke.mdl")
dl.add("models/player/kuristaja/duke/duke.vvd")
dl.add("models/player/kuristaja/duke/duke.dx90.vtx")
dl.add("models/player/kuristaja/duke/duke_arms.mdl")
dl.add("models/player/kuristaja/duke/duke_arms.dx90.vtx")
dl.add("models/player/kuristaja/duke/duke_arms.vvd")

@Event
def player_jump(event):
global old_model
userid = event.get_int('userid')
index = index_from_userid(userid)
player = PlayerEntity(index)
old_model = player.model
model_index = engine_server.precache_model("models/player/kuristaja/duke/duke.mdl")
player.set_prop_int('m_nModelIndex', model_index)
color = (255*65792+255)
player.set_prop_int("m_nRenderMode", player.get_prop_int("m_nRenderMode") | 1)
player.set_prop_int("m_nRenderFX", player.get_prop_int("m_nRenderFX") | 256)
player.set_prop_int("m_clrRender", color)

@Event
def player_say(event):
userid = event.get_int('userid')
index = index_from_userid(userid)
player = PlayerEntity(index)
player.set_prop_int('m_nModelIndex', old_model)
color = (255*65792+255)
player.set_prop_int("m_nRenderMode", player.get_prop_int("m_nRenderMode") | 1)
player.set_prop_int("m_nRenderFX", player.get_prop_int("m_nRenderFX") | 256)
player.set_prop_int("m_clrRender", color)


can't set it back to original model @@

Code: Select all

 player.set_prop_int('m_nModelIndex', old_model)

Boost.Python.ArgumentError: Python argument types in
    Edict.set_prop_int(Edict, str, str)
did not match C++ signature:
    set_prop_int(edict_t*, char const* prop_name, int value
User avatar
Ayuto
Project Leader
Posts: 2209
Joined: Sat Jul 07, 2012 8:17 am
Location: Germany

Postby Ayuto » Fri Sep 26, 2014 6:55 pm

Print "old_model" and "model_index" ind player_jump and you will see the reason for your error. But please post the full error next time. :)
User avatar
L'In20Cible
Project Leader
Posts: 1536
Joined: Sat Jul 14, 2012 9:29 pm
Location: Québec

Postby L'In20Cible » Fri Sep 26, 2014 10:50 pm

Yeah, PlayerEntity.model is a string while m_nModelIndex requires an integer. In any case, your code won't work with multiple players as you are overriding the "old_model" global variable every times a player jumps. What you want to use is a dictionary.

Syntax: Select all

# Get a global dictionary to store the models...
player_models = dict()

@Event
def player_jump(game_event):
# Get the player's index...
player_index = index_from_userid(game_event.get_int('userid'))

# Get a PlayerEntity instance of the player...
player = PlayerEntity(index)

# Store the player's current model index...
player_models[player_index] = player.get_prop_int('m_nModelIndex')


@Event
def player_say(game_event):
# Get the player's index...
player_index = index_from_userid(game_event.get_int('userid'))

# Is the player not in the dictionary?
if player_index not in player_models:

# No need to go further...
return

# Get a PlayerEntity instance of the player...
player = PlayerEntity(index)

# Restore back the player's model...
player.set_prop_int('m_nModelIndex', player_models[player_index])

# Delete the player from the dictionary...
del player_models[player_index]
8guawong
Senior Member
Posts: 148
Joined: Sat Sep 20, 2014 3:06 am

Postby 8guawong » Sat Sep 27, 2014 4:00 am

thanks to both replies!
works now :cool:

Return to “Plugin Development Support”

Who is online

Users browsing this forum: Bing [Bot] and 142 guests