Page 1 of 1

WeaponEntity.set_color

Posted: Tue Jul 07, 2015 6:45 am
by arawra
Is WeaponEntity not a proper entity to call set_color from? I'm getting a KeyValue error for rendermode.

Posted: Tue Jul 07, 2015 7:22 am
by Ayuto
Are you using the latest release? It has been fixed a few weeks ago.

Posted: Tue Jul 07, 2015 7:43 am
by arawra
Yeap. Had to in order to get PlayerEntity to change color.

Syntax: Select all

for weapon_index in PlayerEntity(player).weapon_indexes():
weapon = WeaponEntity(weapon_index)
weapon.set_color(Color(255, 255, 255, amount))

Posted: Tue Jul 07, 2015 5:39 pm
by satoon101
Having tested, I can verify that the error is certainly happening for weapons but not for players:

Syntax: Select all

from colors import Color
from events import Event
from players.entity import PlayerEntity
from players.helpers import index_from_userid
from weapons.entity import WeaponEntity


@Event
def player_say(game_event):
player = PlayerEntity(index_from_userid(game_event.get_int('userid')))
player.color = Color(255,0,0,255)
for index in player.weapon_indexes():
weapon = WeaponEntity(index)
print(weapon.classname)
print(weapon.render_mode)
weapon.color = Color(255,0,0,255)

And the output/error:

Syntax: Select all

weapon_knife
0

[SP] Caught an Exception:
Traceback (most recent call last):
File '..\addons\source-python\packages\source-python\events\listener.py', line
93, in fire_game_event
callback(game_event)
File '..\addons\source-python\plugins\test\test.py', line 16, in player_say
weapon.color = Color(255,0,0,255)
File '..\addons\source-python\packages\source-python\entities\entity.py', line
120, in __setattr__
super(Entity, self).__setattr__(attr, value)
File '..\addons\source-python\packages\source-python\entities\entity.py', line
287, in set_color
self.render_mode |= RenderMode.TRANS_COLOR
File '..\addons\source-python\packages\source-python\entities\entity.py', line
132, in __setattr__
setattr(server_class(self.pointer, wrap=True), attr, value)
File '..\addons\source-python\packages\source-python\entities\classes.py', lin
e 504, in fset
pointer), 'set_key_value_' + type_name)(name, value)

NameError: 'rendermode' is not a valid KeyValue for entity class 'CKnife'.


Entity 93 (class 'weapon_knife') reported ENTITY_CHANGE_NONE but 'm_nRenderMode'
changed.


The interesting thing is that getting the render_mode works fine, as in my last print statement. However, setting the render_mode causes the error to occur.