Raised This Month: $12 Target: $400
 3% 

[REQ] Port of eventscript "Heartbeat" script + Enhancements


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Rothgar
Veteran Member
Join Date: Nov 2007
Old 03-30-2008 , 05:00   [REQ] Port of eventscript "Heartbeat" script + Enhancements
Reply With Quote #1

Hi All, hoping someone who knows a bit about entities might be able to port this script and enhance it some after we get it ported over to SourceMod.

I have been trying to make some changes because at the moment I am running this script and as you join the server and get put on a "Unassigned" team you start bleeding.

Another problem is that after a while you get too many entities on the map I think? And weird things start happening like all weapons on the maps vanish and a few times I got an entity error.

I don't know if this can be fixed by increasing the max entities or whether this script just needs optimizing.

I would like to get a blood trail effect for a player who is low on health, it has been suggested to maybe remove them after some time to decrease entities, if we don't have to then great, otherwise if we need to I guess we have to.

Anyway here's the initial script:

Code:
// ******************************
// Heartbeat  V4.0 Beta
//      for Valve Source Games.
// * Description:
//      Can hear wounded players heartbeats.
// * Install instructions:
//       http://forums.mattie.info/cs/forums/viewtopic.php?p=58954
// * Credits:
//       Concept By: Murpher Written By: Venjax
//       Edited Sounds by: Ace Rimmer - Thanks Bud!
//       ENV_Blood code stolen from Einlazers - Thanks man!
//       Special Thanks: MBchrono, Mattie!, Whore, & ljfsp
// * Requirements:
//      EventScripts v1.2.1 or higher
// ******************************

block config
{
  es_xsetinfo hbemit 0            // Set to 1 to hear others heartbeats. 0 to hear only your own.
  es_xsetinfo slowhealth 60       // Set this variable for first beat
  es_xsetinfo fasthealth 20       // Set this variable for second beat
  es_xsetinfo hb_bleed 1          // Set to 1 to bleed during the fast heartbeat.
  es_xsetinfo hb_bleedout 1    // Set this to amount of damage to lose after player starts to bleed.
}

// DO NOT EDIT BELOW THIS LINE DOING SO WILL VOID WARRANTY AND TECHNICAL SUPPORT. Smile

block load
{
  es_xsetinfo mygame 0
  es_getgame mygame
  es_xsetinfo gmeinfo "CHL2MP_Player.baseclass.baseclass.m_iHealth"
  es_xsetinfo myhealth 0
  es_xsetinfo newhealth 0
  es_xsetinfo playerteam 0
  es_xsetinfo togvar 0
  es_xsetinfo togvar2 0
  es_xsetinfo stmid 0
  es_xsetinfo ven_hb_ver "v4.0"
  es_xmakepublic ven_hb_ver
  es_xsetinfo hbexists 0
  es_xsetinfo hb_shadox 0
  es_xexists hbexists keygroup hbtoggle
  if (server_var(hbexists) equalto 1) then es_xkeygroupdelete hbtoggle
  es_xkeygroupload hbtoggle |heartbeat
  es_xexists hbexists keygroup hbeaters
  if (server_var(hbexists) equalto 1) then es_xkeygroupdelete hbeaters
  es_xkeygroupcreate hbeaters
  es_xloadevents addons/mattie_eventscripts.res
  es_xdoblock heartbeat/config
  if (server_var(hb_bleed) equalto 1) do
  {
    es_regcmd _hb_dobleed heartbeat/dobleed "internal command to add blood to heartbeat"
  }
  else do
  {
    es_regcmd _hb_dobleed heartbeat/nobleed "internal command for no blood"
  }
}

event es_map_start
{
  downloadable sound/hb/fastbeat.mp3
  downloadable sound/hb/slowbeat.mp3
  es_xdelayed 10 es_xdoblock heartbeat/beatstart
  es_xkeygroupdelete hbtoggle
  es_xkeygroupload hbtoggle |heartbeat
}

event round_start
{
  es_xforeachkey hb_users in hbeaters "es_xdoblock heartbeat/shadox"
}

event player_spawn
{
  es_getplayerteam playerteam event_var(userid)
if (server_var(playerteam) == "0") then es_xmsg event_var(es_username) is Spectator
if (server_var(playerteam) == "1") then es_xmsg event_var(es_username) is on the Survivor
if (server_var(playerteam) == "2") then es_xmsg event_var(es_username) is on the Undead
if (server_var(playerteam) == "3") then es_xmsg event_var(es_username) is on the Unassigned

  if (server_var(playerteam) < 3) do
  {
    es es_xexists hbexists key hbeaters event_var(userid)
    if (server_var(hbexists) equalto 0) do
    {
      es es_xexists togvar2 key hbtoggle event_var(es_steamid)
      if (server_var(togvar2) equalto 0) do
      {
        es es_xkeycreate hbeaters event_var(userid)
        es es_xkeysetvalue hbeaters event_var(userid) hb 1
      }
    }
  }
}

event player_death
{
  es es_xexists hbexists key hbeaters event_var(userid)
  if (server_var(hbexists) equalto 1) then es_xkeydelete hbeaters event_var(userid)
}

event player_disconnect
{
  es es_xexists hbexists key hbeaters event_var(userid)
  if (server_var(hbexists) equalto 1) then es_xkeydelete hbeaters event_var(userid)
}

block beatstart
{
  es_xforeachkey hb_users in hbeaters "es_xdoblock heartbeat/beat"
  es_xdelayed 1.1 es_xdoblock heartbeat/beatstart
}

block beat
{
  es es_xgetplayerprop myhealth server_var(hb_users) server_var(gmeinfo)
  if (server_var(myhealth) <= server_var(slowhealth)) do
  {
    if (server_var(myhealth) > server_var(fasthealth)) do
    {
      if (server_var(hbemit) equalto 1) do
      {
        es_emitsound player server_var(hb_users) hb/slowbeat.mp3 1.0 1.0
      }
      else do
      {
        es es_xcexec server_var(hb_users) playgamesound hb/slowbeat.mp3
      }
    }
    else do
    {
      if (server_var(myhealth) >= 1) do
      {
        if (server_var(hbemit) equalto 1) do
        {
          es_emitsound player server_var(hb_users) hb/fastbeat.mp3 1.0 1.0
          _hb_dobleed
        }
        else do
        {
          es es_xcexec server_var(hb_users) playgamesound hb/fastbeat.mp3
          _hb_dobleed
        }
      }
    }
  }
}

event player_say
{
  if (event_var(text) equalto "!heartbeat") do
  {
    es es_xexists togvar key hbtoggle event_var(es_steamid)
    if (server_var(togvar) equalto 0) do
    {
      es es_xtell event_var(userid) [Heartbeat] You will not hear your own heartbeat.
      if (server_var(hbemit) notequalto 0) do
      {
        es es_xtell event_var(userid) [Heartbeat] You WILL still hear other's heartbeat.
      }
      es es_xkeycreate hbtoggle event_var(es_steamid)
      es es_xkeysetvalue hbtoggle event_var(es_steamid) nobeat 1
      es es_xexists hbexists key hbeaters event_var(userid)
      if (server_var(hbexists) equalto 1) then es_xkeydelete hbeaters event_var(userid)
    }
    else do
    {
      es es_xtell event_var(userid) [Heartbeat] You will now hear your own heartbeat again.
      es es_xkeydelete hbtoggle event_var(es_steamid)
      es es_xkeycreate hbeaters event_var(userid)
      es es_xkeysetvalue hbeaters event_var(userid) hb 1     
    }
    es_xkeygroupsave hbtoggle |heartbeat
  }
}

event unload
{
  es_xkeygroupsave hbtoggle |heartbeat
  es_xkeygroupdelete hbtoggle
  es_xkeygroupdelete hbeaters
}

block dobleed
{
  //es es_xfire server_var(hb_users) env_blood kill
  es es_xgive server_var(hb_users) env_blood
  es es_xfire server_var(hb_users) env_blood addoutput "spawnflags 444"
  es es_xfire server_var(hb_users) env_blood addoutput "amount 10000"
  es es_xfire server_var(hb_users) env_blood addoutput "color 0"
  es es_xfire server_var(hb_users) env_blood EmitBlood
  if (server_var(hb_bleedout) greaterthan 0) do
  {
    es es_copy newhealth myhealth
    es es_xmath newhealth - server_var(hb_bleedout)
    if (server_var(newhealth) < 1) do
    {
      es_xsetinfo myhealth 1
    }
    else do
    {
      es es_copy myhealth newhealth
    }
    es es_xsetplayerprop server_var(hb_users) server_var(gmeinfo) server_var(myhealth)
  }
}

block nobleed
{
  //Nothing here!
}

block shadox
{
  es es_xgetuserid hb_shadox server_var(hb_users)
  if (server_var(hb_shadox) equalto 0) then es_xkeydelete hbeaters server_var(hb_users)
}
Rothgar is offline
Send a message via ICQ to Rothgar Send a message via AIM to Rothgar Send a message via MSN to Rothgar
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 11:44.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode