Page 2 of 3

Re: [HL2:DM] es_blood to sp blood

Posted: Sun Feb 19, 2017 2:25 pm
by Painkiller
I can not help it just works only with the grenade.

I have tried different index names:

Syntax: Select all

DAMAGE_TRIGGERS = [
'weapon_frag',
'smg1_grenade',
'rpg_missile',
'weapon_slam',


Syntax: Select all

DAMAGE_TRIGGERS = [
'weapon_frag',
'weapon_smg1_grenade',
'weapon_rpg_missile',
'weapon_slam',


Please, where is the error?

Re: [HL2:DM] es_blood to sp blood

Posted: Sun Feb 19, 2017 3:22 pm
by satoon101
The first error doesn't make much sense to me. To debug the 2nd error, please use the following:

Syntax: Select all

from stringtables.downloads import Downloadables

dl = Downloadables()
dl.add('materials/smoke/smokeball-11-4.vmt')


from entities import TakeDamageInfo
from entities.entity import Entity
from entities.hooks import EntityCondition, EntityPreHook
from memory import make_object
from players.entity import Player
from weapons.manager import weapon_manager


DAMAGE_TRIGGERS = [
'weapon_frag',
'smg1_grenade',
'weapon_rpg',
'weapon_slam',
]

@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_take_damage(stack_data):
victim = make_object(Entity, stack_data[0])
if not victim.is_player():
return

info = make_object(TakeDamageInfo, stack_data[1])

# World damage?
if info.attacker == 0:
return

# Was a projectile used?
if info.attacker != info.inflictor:
weapon = Entity(info.inflictor).classname

# Not sure if this line is necessary, but just in case
try:
weapon = weapon_manager[weapon].name
except AttributeError:
raise ValueError(
'{weapon} not found in weapon_manager'.format(
weapon=weapon,
)
)

# Not a projectile
else:
weapon = Player(info.attacker).active_weapon.classname

if weapon in DAMAGE_TRIGGERS:
fragcloud(Player(victim.index))


def fragcloud(victim):
entity = make_object(Entity, victim.give_named_item('env_ar2explosion'))
entity.set_key_value_string('material', 'smoke/smokeball-11-4.vmt')
entity.call_input('Explode')
entity.delay(8, entity.remove)

Re: [HL2:DM] es_blood to sp blood

Posted: Mon Feb 20, 2017 5:24 pm
by Painkiller
hi, i have test it but works only with grenade_frag and weapon_rpg.

smg1_grenade and weapon_slam work not.

Re: [HL2:DM] es_blood to sp blood

Posted: Mon Feb 20, 2017 5:46 pm
by satoon101
Ok, but my last post improved the error message to let us know what they "should" be. Could you post all errors so we can have a look? The other error (AttributeError on active_weapon) I am really not sure how that happens, unfortunately.

Re: [HL2:DM] es_blood to sp blood

Posted: Mon Feb 20, 2017 8:47 pm
by Painkiller
I have find this.

Code: Select all

2017-02-20 19:01:31 - sp   -   EXCEPTION   
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/headshot/headshot.py", line 98, in _pre_take_damage
    _damage_weapons[victim.userid] = Player(info.attacker).active_weapon.classname
  File "../addons/source-python/packages/source-python/entities/_base.py", line 116, in __getattr__
    raise AttributeError('Attribute "{0}" not found'.format(attr))

AttributeError: Attribute "active_weapon" not found


2017-02-20 19:01:31 - sp   -   EXCEPTION   
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/explosive/explosive.py", line 50, in _pre_take_damage
    weapon = Player(info.attacker).active_weapon.classname
  File "../addons/source-python/packages/source-python/entities/_base.py", line 116, in __getattr__
    raise AttributeError('Attribute "{0}" not found'.format(attr))

AttributeError: Attribute "active_weapon" not found


2017-02-20 19:31:45 - sp   -   EXCEPTION   
[SP] Caught an Exception:
Traceback (most recent call last):
  File "../addons/source-python/plugins/savescore/savescore.py", line 15, in save_player_score
    player = Player(index)
  File "../addons/source-python/packages/source-python/players/_base.py", line 86, in __init__
    super().__init__(index)
  File "../addons/source-python/packages/source-python/entities/_base.py", line 94, in __init__
    super().__init__(index)

ValueError: Conversion from "Index" (1) to "BaseEntity" failed.

Re: [HL2:DM] es_blood to sp blood

Posted: Tue Feb 21, 2017 11:12 pm
by satoon101
The first and third errors have nothing to do with this plugin. Make sure when posting tracebacks that you verify the plugin it is coming from.

The first one is coming from headshot. Notice the first line after Traceback references the file ../addons/source-python/plugins/headshot/headshot.py:

Syntax: Select all

2017-02-20 19:01:31 - sp   -   EXCEPTION   
[SP] Caught an Exception:
Traceback (most recent call last):
File "../addons/source-python/plugins/headshot/headshot.py", line 98, in _pre_take_damage
_damage_weapons[victim.userid] = Player(info.attacker).active_weapon.classname
File "../addons/source-python/packages/source-python/entities/_base.py", line 116, in __getattr__
raise AttributeError('Attribute "{0}" not found'.format(attr))

AttributeError: Attribute "active_weapon" not found


The third one is coming from savescore. Notice the first line after Traceback references the file ../addons/source-python/plugins/savescore/savescore.py:

Syntax: Select all

2017-02-20 19:31:45 - sp   -   EXCEPTION   
[SP] Caught an Exception:
Traceback (most recent call last):
File "../addons/source-python/plugins/savescore/savescore.py", line 15, in save_player_score
player = Player(index)
File "../addons/source-python/packages/source-python/players/_base.py", line 86, in __init__
super().__init__(index)
File "../addons/source-python/packages/source-python/entities/_base.py", line 94, in __init__
super().__init__(index)

ValueError: Conversion from "Index" (1) to "BaseEntity" failed.


The second one is relevant to this thread, as it references the file ../addons/source-python/plugins/explosive/explosive.py. But, as I stated above, I'm not sure what causes this issue, and we will have to look into it further.

I cannot test locally with multiple players, because my server is being a pain when trying to connect over LAN, so I am unable to verify that slam's work properly. However, I was able to test with frag grenades, smg grenades, and rpg by hurting myself, and all 3 should work fine with the following:

Syntax: Select all

from entities import TakeDamageInfo
from entities.entity import Entity
from entities.hooks import EntityCondition, EntityPreHook
from memory import make_object
from players.entity import Player
from weapons.manager import weapon_manager


DAMAGE_TRIGGERS = [
'weapon_frag',
'weapon_smg1',
'weapon_rpg',
'weapon_slam',
]


@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_take_damage(stack_data):
victim = make_object(Entity, stack_data[0])
if not victim.is_player():
return

info = make_object(TakeDamageInfo, stack_data[1])
weapon_index = info.weapon
try:
weapon = weapon_manager[Entity(weapon_index).classname].name
except AttributeError:
return

if weapon in DAMAGE_TRIGGERS:
fragcloud(Player(victim.index))


def fragcloud(victim):
entity = make_object(Entity, victim.give_named_item('env_ar2explosion'))
entity.set_key_value_string('material', 'smoke/smokeball-11-4.vmt')
entity.call_input('Explode')
entity.delay(8, entity.remove)

Re: [HL2:DM] es_blood to sp blood

Posted: Wed Feb 22, 2017 6:01 am
by Ayuto
The error might occur, because he didn't follow the update guide.

Re: [HL2:DM] es_blood to sp blood

Posted: Wed Feb 22, 2017 7:03 am
by Painkiller
Ok i have test it.
Work for smg1,grenade,rpg but not for slam.

Re: [HL2:DM] es_blood to sp blood

Posted: Wed Feb 22, 2017 1:29 pm
by satoon101
Ayuto wrote:The error might occur, because he didn't follow the update guide.

Oh, good point. Painkiller, make sure you follow the update procedure when updating Source.Python on your server:
http://wiki.sourcepython.com/general/updating.html


Painkiller wrote:Ok i have test it.
Work for smg1,grenade,rpg but not for slam.

Ok, could you please load the following on your server and have another person help you test:

Syntax: Select all

from entities import TakeDamageInfo
from entities.entity import Entity
from entities.hooks import EntityCondition, EntityPreHook
from memory import make_object
from messages import SayText2


@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_take_damage(stack_data):
victim = make_object(Entity, stack_data[0])
if not victim.is_player():
return

info = make_object(TakeDamageInfo, stack_data[1])
message = 'Damage caused by: {weapon}'.format(
weapon=Entity(info.weapon).classname
)
print(message)
SayText2(message).send()

Just have one of you kill the other with a slam and a message should be sent in chat and in the server's console. Post that output here so that I can update the plugin to work for slams.

Re: [HL2:DM] es_blood to sp blood

Posted: Wed Feb 22, 2017 4:13 pm
by Painkiller
satoon101 wrote:
Ayuto wrote:The error might occur, because he didn't follow the update guide.

Oh, good point. Painkiller, make sure you follow the update procedure when updating Source.Python on your server:
http://wiki.sourcepython.com/general/updating.html


Painkiller wrote:Ok i have test it.
Work for smg1,grenade,rpg but not for slam.

Ok, could you please load the following on your server and have another person help you test:

Syntax: Select all

from entities import TakeDamageInfo
from entities.entity import Entity
from entities.hooks import EntityCondition, EntityPreHook
from memory import make_object
from messages import SayText2


@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_take_damage(stack_data):
victim = make_object(Entity, stack_data[0])
if not victim.is_player():
return

info = make_object(TakeDamageInfo, stack_data[1])
message = 'Damage caused by: {weapon}'.format(
weapon=Entity(info.weapon).classname
)
print(message)
SayText2(message).send()

Just have one of you kill the other with a slam and a message should be sent in chat and in the server's console. Post that output here so that I can update the plugin to work for slams.



the first is suisite:

Code: Select all

L 02/22/2017 - 17:06:54: "[RocKs³]|Painkiller_Overdose<3><[U:1:43907303]><Unass
i                                                                              igned>" committed suicide with "slam"
TESTTESTTESTSpawn/Chat Protection;  player 3 died, state = dead


the second is killing:

Code: Select all

L 02/22/2017 - 17:10:20: "[RocKs³]|Painkiller_Overdose<3><[U:1:43907303]><Unass
i                                                                              igned>" killed "g0nZ0 |eFa|<5><BOT><Unassigned>" with "slam"
TESTTESTTESTSpawn/Chat Protection;  player 5 died, state = dead




PS.:Yes i Have correct update SP

Edit: after updating SP correctly, the active_weapon error doesn't occur anymore

Re: [HL2:DM] es_blood to sp blood

Posted: Wed Feb 22, 2017 11:07 pm
by satoon101
That's not really the output I am looking for. The debugging plugin I provided should post the following message to both chat and server console:
Damage caused by: <weapon>

<weapon> will be the weapon that caused the damage. What you posted is from your logs, which is not what I need.

Re: [HL2:DM] es_blood to sp blood

Posted: Thu Feb 23, 2017 7:36 am
by Painkiller
I'll check it again.

But what I sent was out of the serverconsole and more was not there.

Re: [HL2:DM] es_blood to sp blood

Posted: Thu Feb 23, 2017 8:04 am
by Painkiller
Ok now i find only this in server log console:

Code: Select all

Damage caused by: npc_tripmine
Spawn/Chat Protection;  FireGameEvent handle PlayerHurt, name = 'player_hurt'
L 02/23/2017 - 09:00:52: "[RocKs³]|Painkiller_Overdose<2><[U:1:43907303]><Unassiigned>" killed "[ >NÄ¿Å< ] ï®veиï®oи [GER]<3><[U:1:38176121]><Unassigned>" with
 "slam"

Re: [HL2:DM] es_blood to sp blood

Posted: Thu Feb 23, 2017 12:49 pm
by satoon101
Perfect! Thank you. I will add npc_tripmine to our weapon data, so the next SP build should fix the issue.

Re: [HL2:DM] es_blood to sp blood

Posted: Thu Feb 23, 2017 4:59 pm
by Painkiller
Works with Slam.

Thanks Satoon.

Re: [HL2:DM] es_blood to sp blood

Posted: Fri Mar 10, 2017 3:42 pm
by Painkiller
Hello i have a new problem.

If one shoot with the smg1 on an enemy, comes with every hit the effect.

Re: [HL2:DM] es_blood to sp blood

Posted: Sat Mar 11, 2017 12:03 am
by satoon101
Oh, good point. I'll work on this tomorrow morning.

Re: [HL2:DM] es_blood to sp blood

Posted: Sat Mar 11, 2017 4:21 pm
by satoon101
Try this:

Syntax: Select all

from entities import TakeDamageInfo
from entities.entity import Entity
from entities.hooks import EntityCondition, EntityPreHook
from memory import make_object
from players.entity import Player
from weapons.manager import weapon_manager


DAMAGE_TRIGGERS = [
'npc_grenade_frag',
'grenade_ar2',
'rpg_missile',
'npc_tripmine',
]

@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_take_damage(stack_data):
victim = make_object(Entity, stack_data[0])
if not victim.is_player():
return

info = make_object(TakeDamageInfo, stack_data[1])

weapon_index = info.weapon
try:
weapon = Entity(weapon_index).classname
except AttributeError:
return

if weapon in DAMAGE_TRIGGERS:
fragcloud(Player(victim.index))


def fragcloud(victim):
entity = make_object(Entity, victim.give_named_item('env_ar2explosion'))
entity.set_key_value_string('material', 'smoke/smokeball-11-4.vmt')
entity.call_input('Explode')
entity.delay(8, entity.remove)

Re: [HL2:DM] es_blood to sp blood

Posted: Sat Mar 11, 2017 5:35 pm
by Painkiller
Ok i have test it the bug is fixed. Thank You

In the slams I noticed the effect only works when attaching.

However, not when you throw them.

A please tell me the index name for explosive physics (barrels, gas canisters, etc.)?

Re: [HL2:DM] es_blood to sp blood

Posted: Fri Mar 17, 2017 3:22 pm
by Painkiller
Please, someone could find again?