Archived copy of warcraft-source.com, the Warcraft: Source (WCS) forum (2007–2011), rebuilt from the Internet Archive by wc3mods.net. This page was captured on 2014-08-15 (original capture). Home · Forum · All archived topics · Downloads
August 14, 2014, 09:41:56 PM

Author Topic: player_death  (Read 974 times)

Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
player_death
« on: May 05, 2012, 05:25:05 AM »
player_death not trigger when player suicide (fall or killed by own grenade)
How can i fix it? need for deathrun
« Last Edit: May 05, 2012, 11:39:13 PM by zloykif »

Offline HOLLIDAY

  • <Race Maker>
  • Moderator
  • Level 7 Expert
  • *****
  • Posts: 2778
  • of all the things ive lost i miss my mind the most
    • HOLLIDAYWCS.COM
Re: player_death
« Reply #1 on: May 05, 2012, 07:48:49 PM »
if a player is killed by suicide or their own grenade then how is player_death not triggered if they are killed?

Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #2 on: May 05, 2012, 11:22:43 PM »
okay, video example http://www.twitch.tv/zloykif/b/317270578
explanation:
1-04 killed by bot - successful
1-30 killed by bot with wcs damage - failed
2-14 suicide with wcs damage - failed
2-31 suicide with HE - failed
2-59 fall down suicide  - failed

Quote
[test player_kill]
    required       = 0
    maximum        = 0
    restrictmap    = ""
    restrictteam   = 0
    restrictitem   = ""
    teamlimit      = 0
   racecategory   = ""
    author         = ""
    desc           = "test player_death"
    spawncmd       = ""
    deathcmd       = ""
    roundstartcmd  = ""
    roundendcmd    = ""
    preloadcmd     = ""
    allowonly      = ""
    onchange       = ""
    numberofskills = 1
    numberoflevels = 1
    skillnames     = "test player_death"
    skilldescr     = "test player_death"
    skillcfg       = "player_death"
    skillneeded    = "0"
   
   [[skill1]]
      setting        = "es_xset wcs_death 123"
      cmd            = "es_msg _____PLAYER_DEATH_____;es_msg _____PLAYER_DEATH_____;es_msg _____PLAYER_DEATH_____;es_msg _____PLAYER_DEATH_____"
      sfx            = "es_xdoblock wcs/addons/effect/sccknifedmg"

Offline HOLLIDAY

  • <Race Maker>
  • Moderator
  • Level 7 Expert
  • *****
  • Posts: 2778
  • of all the things ive lost i miss my mind the most
    • HOLLIDAYWCS.COM
Re: player_death
« Reply #3 on: May 06, 2012, 12:18:19 AM »
ahh ok, you mean your player_death skill does not activate when the player suicides?

i think you want the skill to trigger when a player gets killed on deathrun?

well in event player_death WCS does a check to make sure that the userid did not suicide or killed by world (ie falling) before activating a skill configured for skill_cfg player_death


so a userid can not activate their own player_death skill in event player_death


if you want a suicide to activate your skill you will have to do it another way

you can use the player_death_cmd and it will activate every time the userid is in event player_death
if you dont want to use the player_death_cmd and want to have a skill you can level up you need to do a few things

i would make a side script and create a new event player_death that checks for keyvalues set in
event player_spawn



Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #4 on: May 06, 2012, 12:46:02 AM »
Quote
ahh ok, you mean your player_death skill does not activate when the player suicides?
i think you want the skill to trigger when a player gets killed on deathrun?
exactly

Quote
you can use the player_death_cmd
no idea what is that, can you make example?


Quote
make a side script and create a new event player_death that checks for keyvalues set in
event player_spawn
like this?

Quote
[[skill1]]
      setting        = "es_xset wcs_death 123"
      cmd            = "es_keysetvalue WCSuserdata event_var(userid) msgtest"
      sfx            = ""

event player_death
{
  es_keygetvalue wcs_tmp WCSuserdata event_var(attacker) msgtest
  if (server_var(wcs_tmp) = 1) do
  {
    es_msg test
  }
}

tedious do this for every race =( maybe possible make 2 different player_death check inside wcs and make cfg switcher? but i dont know python and where located part with player_death
« Last Edit: May 06, 2012, 12:50:32 AM by zloykif »

Offline HOLLIDAY

  • <Race Maker>
  • Moderator
  • Level 7 Expert
  • *****
  • Posts: 2778
  • of all the things ive lost i miss my mind the most
    • HOLLIDAYWCS.COM
Re: player_death
« Reply #5 on: May 06, 2012, 03:32:08 AM »
sorry, im speaking es_WCSraces_db.txt
its now called deathcmd  in the .ini format


Quote
[Name]
   required           = 0
   maximum            = 0
   restrictmap        = ""
   restrictteam       = 0
   restrictitem       = ""
   teamlimit          = 0
   author             = ""
   desc               = ""
   spawncmd           = ""
   deathcmd           = ""
   roundstartcmd      = ""
   roundendcmd        = ""
   preloadcmd         = ""
   allowonly          = ""
   onchange           = ""
   numberofskills     =
   numberoflevels     =
   skillnames         = ""
   skilldescr         = ""
   skillcfg           = ""
   skillneeded        = ""

and yes, exactly like that

Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #6 on: May 06, 2012, 04:56:43 AM »
okay deathcmd, Orcish Horde what should we modified to work Reincarnation correctly, can u explain?

Quote
[Orcish Horde]
   #Requirement section
   required           = 0
   maximum            = 0

   #Restrict section
   restrictmap        = ""
   restrictteam       = 0
   restrictitem       = "gloves|respawn"
   teamlimit          = 0

   #Other info
   author             = "Kryptonite [WCS team]"
   desc               = "crit strike,crit HE,reinc,chain light"
   spawncmd           = "es_xdoblock wcs/addons/effect/orcspawn"
   deathcmd           = ""
   roundstartcmd      = ""
   roundendcmd        = ""
   preloadcmd         = ""
   allowonly          = ""
   onchange           = ""

   #Skill information
   numberofskills     = 4
   numberoflevels     = 8
   skillnames         = "Critical Strike|Critical Grenade|Reincarnation|Chain Lightning"
   skilldescr         = "Gives you a 15% chance of doing \n40-240% more damage|Grenades will always do a 40-240% \nmore damage|Gives you a 15-80% chance of respawning \nonce, with old equipment and where you died|Discharges a bolt of lightning that jumps \non up to 4 nearby enemies 40-75 feet range, \ndealing each 32 damage"
   skillcfg           = "player_attacker|player_attacker|player_death|player_ultimate"
   skillneeded        = "0|0|0|8"

   #Skill specific information
   [[skill1]]
      setting        = "es_xset wcs_multiplier 0.4|es_xset wcs_multiplier 0.7|es_xset wcs_multiplier 1.0|es_xset wcs_multiplier 1.3|es_xset wcs_multiplier 1.6|es_xset wcs_multiplier 1.9|es_xset wcs_multiplier 2.1|es_xset wcs_multiplier 2.4"
      racealias_oh1  = "es_set wcs_dmg event_var(dmg_health);if (server_var(wcs_game) == dod) then es_xset wcs_dmg event_var(damage);es_xmath wcs_dmg float;es_math wcs_dmg * server_var(wcs_multiplier);es wcs_decimal wcs_dmg server_var(wcs_dmg);es wcs damage event_var(userid) event_var(attacker) server_var(wcs_dmg);es wcs_xcentertell event_var(attacker) c_damage dmg server_var(wcs_dmg);es wcs_xcentertell event_var(userid) c_damage dmg server_var(wcs_dmg)"
      #cmd            = "if (server_var(wcs_dice) <= 15) then wcsx get isdead wcs_dead event_var(userid);if (server_var(wcs_dice) <= 15) then es_xif (server_var(wcs_dead) = 0) then wcs_xalias racealias_oh1"
      cmd            = "if (server_var(wcs_dice) <= 15) then es_xif (event_var(es_userdead) = 0) then wcs_xalias racealias_oh1"
      sfx            = "es_xdoblock wcs/addons/effect/orc"

   [[skill2]]
      setting        = "es_xset wcs_multiplier 0.4|es_xset wcs_multiplier 0.7|es_xset wcs_multiplier 1.0|es_xset wcs_multiplier 1.3|es_xset wcs_multiplier 1.6|es_xset wcs_multiplier 1.9|es_xset wcs_multiplier 2.1|es_xset wcs_multiplier 2.4"
      racealias_oh2  = "es_set wcs_magnitude event_var(dmg_health);if (server_var(wcs_game) == dod) then es_xset wcs_magnitude event_var(damage);es_xmath wcs_magnitude float;es_xmath wcs_magnitude * 3.0;es_math wcs_magnitude * server_var(wcs_multiplier);es wcs_decimal wcs_magnitude server_var(wcs_magnitude);es wcs explode event_var(attacker) event_var(userid) server_var(wcs_magnitude) 50;es wcs_xtell event_var(userid) r_crigrenade;es wcs_xtell event_var(attacker) r_crigrenade"
      #cmd            = "if (event_var(weapon) in server_var(wcs_wpn_grenades)) then wcsx get isdead wcs_dead event_var(userid);if (event_var(weapon) in server_var(wcs_wpn_grenades)) then es_xif (server_var(wcs_dead) = 0) then wcs_xalias racealias_oh2"
      cmd            = "if (event_var(weapon) in server_var(wcs_wpn_grenades)) then es_xif (event_var(es_userdead) = 0) then wcs_xalias racealias_oh2"
      sfx            = ""

   [[skill3]]
      setting        = "es_xset wcs_chance 15|es_xset wcs_chance 25|es_xset wcs_chance 35|es_xset wcs_chance 45|es_xset wcs_chance 55|es_xset wcs_chance 65|es_xset wcs_chance 75|es_xset wcs_chance 80"
      racealias_oh3  = "es wcsgroup set reincarnation event_var(userid) 1;es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid);es wcsgroup get vengeance wcs_tmp event_var(userid);if (server_var(wcs_tmp) = 1) then wcs_xalias racealias_oh3a"
      racealias_oh3a = "es wcsgroup set vengeance event_var(userid) 0;es_delayed 4 wcs spawn event_var(userid);es_delayed 4.1 wcs_setfx god event_var(userid) = 1 2.4;es_delayed 5.5 es_xsetpos event_var(userid) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1);es_delayed 4 wcs_xtell event_var(userid) r_reincarnation"
      cmd            = "if (server_var(wcs_dice) <= server_var(wcs_chance)) then wcs_xalias racealias_oh3"
      sfx            = ""

   [[skill4]]
      setting        = "es_xset wcs_maxtargets 2;es_xset wcs_radius 400|es_xset wcs_maxtargets 2;es_xset wcs_radius 450|es_xset wcs_maxtargets 2;es_xset wcs_radius 500|es_xset wcs_maxtargets 3;es_xset wcs_radius 550|es_xset wcs_maxtargets 3;es_xset wcs_radius 600|es_xset wcs_maxtargets 3;es_xset wcs_radius 650|es_xset wcs_maxtargets 4;es_xset wcs_radius 700|es_xset wcs_maxtargets 4;es_xset wcs_radius 750"
      cmd            = "es_xdoblock wcs/tools/ultimates/default/wcs_ulti_chain"
      sfx            = ""
      cooldown       = "30"

Offline HOLLIDAY

  • <Race Maker>
  • Moderator
  • Level 7 Expert
  • *****
  • Posts: 2778
  • of all the things ive lost i miss my mind the most
    • HOLLIDAYWCS.COM
Re: player_death
« Reply #7 on: May 06, 2012, 05:08:50 AM »
sorry, i dont understand again.  doesnt Reincarnation work correctly?

do you mean you want to modify it so that Reincarnation will work if the player suicides?

if so you can use wcs_xalias racealias_oh3 in deathcmd

Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #8 on: May 06, 2012, 05:26:44 AM »
Quote
doesnt Reincarnation work correctly?
of course, any skill doesn't work, because player_death not read skill block (as I understand) if player suicide.

Quote
do you mean you want to modify it so that Reincarnation will work if the player suicides?
yes
Quote
if so you can use wcs_xalias racealias_oh3 in deathcmd
if player have 0 points in skill reincarnation he still will work?  ??? if yes, this is bad
« Last Edit: May 06, 2012, 05:32:45 AM by zloykif »

Offline HOLLIDAY

  • <Race Maker>
  • Moderator
  • Level 7 Expert
  • *****
  • Posts: 2778
  • of all the things ive lost i miss my mind the most
    • HOLLIDAYWCS.COM
Re: player_death
« Reply #9 on: May 06, 2012, 06:00:37 AM »
i think the best way to go about it would be to remove the suicide check in event player_death
but like you said that requires some python skill and know around the WCS core

sorry i dont know where this code is located either




Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #10 on: May 06, 2012, 06:04:54 AM »
Thank you anyway, and maybe one of wcs python coders will see this topic =)

Offline HOLLIDAY

  • <Race Maker>
  • Moderator
  • Level 7 Expert
  • *****
  • Posts: 2778
  • of all the things ive lost i miss my mind the most
    • HOLLIDAYWCS.COM
Re: player_death
« Reply #11 on: May 06, 2012, 06:17:30 AM »

i think it is here on line 1879 of wcs.py

if not victim == attacker:


maybe if you make a new topic asking how to remove that check

this would be helpful for all WCS deathrun servers





Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #12 on: May 06, 2012, 06:49:54 AM »
Quote
i think it is here on line 1879 of wcs.py
my wcs.py contains 1558 stings ^^ but i found it, 1029
Quote
this would be helpful for all WCS deathrun servers
guess this mod combination not so popular  ;D no prblem when we solve it

Offline zloykif

  • Level 7 Expert
  • *****
  • Posts: 726
Re: player_death
« Reply #13 on: May 06, 2012, 10:12:15 AM »
So, problem solved :)
Big thanks to hollyday and also demonell
My english terrible, so better if someone else make "how to" if there is a need

1) open wcs.py
2) ctrl+f "def player_death"
3) and replace this block

Quote
def player_death(ev):
        victim = int(ev['userid'])
        attacker = int(ev['attacker'])

        if attacker and victim and es.exists('userid', victim) and es.exists('userid', attacker):
                player = getPlayer(victim)

                if (not (ev['es_steamid'] == 'BOT' and not allowbotsreward)) and (not (ev['es_attackersteamid'] == 'BOT' and not allowbotsgetxp)):
                        player1 = getPlayer(attacker)
                        bonus = 0
                        if player1.race.level < player.race.level:
                                diffience = player.race.level - player1.race.level
                                bonus = diffience * int(cfgdata['bonusxp'])

                        if bonus:
                                gamethread.delayed(1, player1.giveXp, (int(cfgdata['killxp'])+bonus, strings('main: reason: higher level', {'diffience':diffience}, playerlib.getPlayer(attacker).get('lang'))))
                        else:
                                gamethread.delayed(1, player1.giveXp, (int(cfgdata['killxp']), strings('main: reason: make kill', {}, playerlib.getPlayer(attacker).get('lang'))))

                        if ev['headshot'] == '1':
                                gamethread.delayed(1, player1.giveXp, (int(cfgdata['headshotxp']), strings('main: reason: make headshot', {}, playerlib.getPlayer(attacker).get('lang'))))
                        elif ev['weapon'] == 'knife':
                                gamethread.delayed(1, player1.giveXp, (int(cfgdata['knifexp']), strings('main: reason: make knife', {}, playerlib.getPlayer(attacker).get('lang'))))

                if int(cfgdata['allow_player_death']):
                        checkEvent(victim, 'player_death')
                if int(cfgdata['allow_player_kill']):
                        checkEvent(attacker, 'player_kill')

                if player.race.racedb['deathcmd']:
                        es.server.insertcmd(player.race.racedb['deathcmd'])

        if victim and es.exists('userid', victim):
                for i, v in {'gravity':1.0,'speed':1.0,'longjump':0}.iteritems():
                        wcsgroup.setUser(victim, i, v)

                expand.gravity(victim, 1)

                playerlib.getPlayer(victim).setColor(255, 255, 255, 255)

        if removeragdolls:
                if ragdoll:
                        es.fire(es.getuserid(), ragdoll, 'kill')

fixed wcs.py - http://www.mediafire.com/?gikjyyh7m8j9a5y
« Last Edit: May 06, 2012, 10:09:20 PM by zloykif »