PlayerEntity.freeze issue

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

PlayerEntity.freeze issue

Postby 8guawong » Fri Oct 31, 2014 2:58 am

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'
User avatar
L'In20Cible
Project Leader
Posts: 1533
Joined: Sat Jul 14, 2012 9:29 pm
Location: Québec

Postby L'In20Cible » Fri Oct 31, 2014 4:33 am

Syntax: Select all

player.freeze = True
User avatar
satoon101
Project Leader
Posts: 2697
Joined: Sat Jul 07, 2012 1:59 am

Postby satoon101 » Sat Nov 01, 2014 10:09 pm

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.
Image
8guawong
Senior Member
Posts: 148
Joined: Sat Sep 20, 2014 3:06 am

PlayerEntity.freeze issue

Postby 8guawong » Mon Nov 24, 2014 1:57 pm

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?
User avatar
satoon101
Project Leader
Posts: 2697
Joined: Sat Jul 07, 2012 1:59 am

Postby satoon101 » Mon Nov 24, 2014 2:30 pm

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...
Image
User avatar
L'In20Cible
Project Leader
Posts: 1533
Joined: Sat Jul 14, 2012 9:29 pm
Location: Québec

Postby L'In20Cible » Mon Nov 24, 2014 2:39 pm

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.
8guawong
Senior Member
Posts: 148
Joined: Sat Sep 20, 2014 3:06 am

Postby 8guawong » Mon Nov 24, 2014 2:47 pm

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
User avatar
L'In20Cible
Project Leader
Posts: 1533
Joined: Sat Jul 14, 2012 9:29 pm
Location: Québec

Postby L'In20Cible » Mon Nov 24, 2014 2:50 pm

Like Satoon mentionned, this is getting off-topic. Please, create a new topic if you want further help.
User avatar
satoon101
Project Leader
Posts: 2697
Joined: Sat Jul 07, 2012 1:59 am

Postby satoon101 » Mon Nov 24, 2014 2:59 pm

Yes, I would probably use player_spawn for late joiners. I went ahead and moved the last several posts to their own thread (obviously).
Image
User avatar
L'In20Cible
Project Leader
Posts: 1533
Joined: Sat Jul 14, 2012 9:29 pm
Location: Québec

Postby L'In20Cible » Mon Nov 24, 2014 3:01 pm

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()
8guawong
Senior Member
Posts: 148
Joined: Sat Sep 20, 2014 3:06 am

Postby 8guawong » Tue Nov 25, 2014 1:27 am

ok thanks

Return to “Plugin Development Support”

Who is online

Users browsing this forum: No registered users and 144 guests