I have an error on take damage.
Syntax: Select all
@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_damage_call_events(stack_data):
take_damage_info = make_object(TakeDamageInfo, stack_data[1])
if not take_damage_info.attacker:
return
entity = Entity(take_damage_info.attacker)
attacker = g_players[userid_from_index(entity.index)] if entity.is_player() else None
victim = g_players[userid_from_pointer(stack_data[0])]
event_args = {
'attacker': attacker,
'victim': victim,
'take_damage_info': take_damage_info,
}
if attacker:
if victim.team == attacker.team:
attacker.hero.call_events('player_pre_teammate_attack', player=attacker,
**event_args)
victim.hero.call_events('player_pre_teammate_victim', player=victim, **event_args)
return
attacker.hero.call_events('player_pre_attack', player=attacker, **event_args)
victim.hero.call_events('player_pre_victim', player=victim, **event_args)
Call :
Syntax: Select all
_poisoned = set()
@property
def _poison_damage(self):
return 1 + self.level
@property
def _poison_chance(self):
return 16 + (2 * self.level)
@events('player_attack')
def _on_player_attack(self, attacker, victim, **eargs):
if randint(1, 100) > self._poison_chance or victim.userid in self._poisoned:
return
self._poisoned.add(victim.userid)
for index in attacker.weapon_indexes():
break
else:
index = None
Delay(1, victim.take_damage, (self._poison_damage, attacker.index, index))
Delay(2, victim.take_damage, (self._poison_damage, attacker.index, index))
Delay(3, victim.take_damage, (self._poison_damage, attacker.index, index))
Delay(4, victim.take_damage, (self._poison_damage, attacker.index, index))
Delay(5, victim.take_damage, (self._poison_damage, attacker.index, index))
Delay(6, victim.take_damage, (self._poison_damage, attacker.index, index))
Delay(7, self._poisoned.discard, (victim.userid,))
Syntax: Select all
[SP] Caught an Exception:
Traceback (most recent call last):
File "../addons/source-python/packages/source-python/listeners/tick.py", line 76, in _tick
self.pop(0).execute()
File "../addons/source-python/packages/source-python/listeners/tick.py", line 170, in execute
return self.callback(*self.args, **self.kwargs)
File "../addons/source-python/packages/source-python/entities/_base.py", line 1019, in take_damage
take_damage_info.attacker = attacker_index
ValueError: Conversion from "Index" (166) to "BaseHandle" failed.