Page 1 of 1
PlayerEntity.freeze issue
Posted: Fri Oct 31, 2014 2:58 am
by 8guawong
satoon101 wrote:def setfreeze(index, value):
PlayerEntity(index).freeze = value
this does not work
Syntax: Select all
@Event
def player_jump(game_event):
index = index_from_userid(game_event.get_int('userid'))
player = PlayerEntity(index)
player.freeze = 1
Code: Select all
File '../addons/source-python/plugins/test/test.py', line 16, in player_jump
player.freeze = 1
File '../addons/source-python/packages/source-python/entities/entity.py', line 208, in __setattr__
self._set_property(attr, value)
File '../addons/source-python/packages/source-python/entities/entity.py', line 253, in _set_property
value = prop[str(value)]
KeyError: '1'
Posted: Fri Oct 31, 2014 4:33 am
by L'In20Cible
Posted: Sat Nov 01, 2014 10:09 pm
by satoon101
As L'In20Cible's example shows, getting/setting values like freeze are boolean in nature. They require a boolean when setting, and are returned as a boolean when getting. Using an integer instead of a boolean when setting will result in the error you received.
PlayerEntity.freeze issue
Posted: Mon Nov 24, 2014 1:57 pm
by 8guawong
Syntax: Select all
from players.helpers import index_from_userid
from events import Event
from players.entity import PlayerEntity
@Event
def player_spawn(game_event):
userid = game_event.get_int('userid')
index = index_from_userid(userid)
player = PlayerEntity(index)
player.freeze = True
doesn't work
csgo
chaging event to player_jump works...
wonder why?
Posted: Mon Nov 24, 2014 2:30 pm
by satoon101
Are you using that in a round-based gamemode? If so, then you should know that players are already frozen on spawn and on round_freeze_end are unfrozen. This is likely your issue. Using the following works for me:
Syntax: Select all
from events import Event
from filters.players import PlayerIter
@Event
def round_freeze_end(game_event):
for player in PlayerIter('bot', return_types='player'):
player.freeze = True
We are starting to get very off-topic for this thread, though...
Posted: Mon Nov 24, 2014 2:39 pm
by L'In20Cible
Well, you cannot freeze a player on player_spawn. As soon as round_freeze_end fires, players are unfrozen.
EDIT: I took a shower and didn't refresh the thread, heh.
Posted: Mon Nov 24, 2014 2:47 pm
by 8guawong
but i have mp_freezetime set to 0
hmm so there is no way to freeze some1 when he/she spawns
cuz then if person joins late and spawns he won't get freezed
maybe do a round_start freeze
then leave player_spawn freeze code in as well hmmmm?
sorry for making this thread off topic :X
Posted: Mon Nov 24, 2014 2:50 pm
by L'In20Cible
Like Satoon mentionned, this is getting off-topic. Please,
create a new topic if you want further help.
Posted: Mon Nov 24, 2014 2:59 pm
by satoon101
Yes, I would probably use player_spawn for late joiners. I went ahead and moved the last several posts to their own thread (obviously).
Posted: Mon Nov 24, 2014 3:01 pm
by L'In20Cible
Something like this should works just fine:
Syntax: Select all
from events import Event
from filters.players import PlayerIter
from players.entity import PlayerEntity
from players.helpers import index_from_userid
frozen_players = set()
@Event
def player_spawn(game_event):
userid = game_event.get_int('userid')
index = index_from_userid(userid)
player = PlayerEntity(index)
player.freeze = True
frozen_players.add(index)
@Event
def round_freeze_end(game_event):
for player in PlayerIter('alive', return_types='player'):
if player.index not in frozen_players:
continue
player.freeze = True
frozen_players.clear()
Posted: Tue Nov 25, 2014 1:27 am
by 8guawong
ok thanks