All pastes #93089 Raw Edit

Something

public text v1 · immutable
#93089 ·published 2006-07-20 05:11 UTC
rendered paste body
// ******************************
// Ven's Landmine Script V1.14 Beta
//      for Counter-Strike: Source
//
// * Description:
//      Players can plant landmines which explode when an enemy sets on it.
//
// * Install instructions:
//       http://forums.mattie.info/cs/forums/
//
//
// * Requirements:
//      EventScripts v1.1.0.005 or higher
//      Mani Admin Plugin v1.1.0w or higher
// * To Do:
//      Optimize performance.
//      Thank Mattie for helping me write this and bearing with me and my annoyances. <3
// ******************************

// ******************************
//   SETTINGS
// ******************************

block config
{
       es_setinfo lm_rad 50  //Change this number to control the size of your landmine field.
       es_setinfo lm_imag 90 //Change this number to control damage of your mines.
}

block load
{
  // create a variable (default to on)
  es_setinfo ven_landmine 1
  es_setinfo landmine_announce 1

  // enable eventscripts_noisy if not already enabled
  es_load corelib
  es_doblock corelib/noisy_on
  es_setinfo ven_landmine 1
  es_setinfo landmine_announce 1
  // make it public so we can see it via HLSW
  es_makepublic ven_landmine
  es_keygroupdelete landmine
  es_keygroupcreate landmine
  es_keygroupdelete landmine_progress
  es_keygroupcreate landmine_progress
  es_keygroupdelete landmine_howner
  es_keygroupcreate landmine_howner
  es_keygroupdelete mine_stats
  es_keygroupload mine_stats |landmine
  es_setinfo lm_svtstr 0
  es_exists lm_svtstr key mine_stats server_stat
  if (server_var(lm_svtstr) equalto 0) do
    {
      es_keycreate mine_stats server_stat
      es_keysetvalue mine_stats server_stat total_mines 0
      es_keysetvalue mine_stats server_stat total_det 0
    }

  // Announce it.
  es_setinfo lm_temp "Ven's Landmine script has been enabled."
  es_msg #multi #green[Landmine]#default server_var(lm_temp)
  es_setinfo mine_cnt 0
  es_setinfo mine_hudmsg 0
  es_setinfo lm_dead 0
  es_cexec event_var(userid) alias +mine "!+mine"
  es_cexec event_var(userid) alias -mine "!-mine"

  // Create Landmine Progress message keygroup.
  es_keygroupdelete landmine_msgs
  es_keygroupcreate landmine_msgs
  es_keycreate landmine_msgs 0
  es_keysetvalue landmine_msgs 0 lmmsg "message Planting mine   00% ["
  es_keycreate landmine_msgs 1
  es_keysetvalue landmine_msgs 1 lmmsg "message Planting mine   16% [="
  es_keycreate landmine_msgs 2
  es_keysetvalue landmine_msgs 2 lmmsg "message Planting mine   32% [=="
  es_keycreate landmine_msgs 3
  es_keysetvalue landmine_msgs 3 lmmsg "message Planting mine   48% [==="
  es_keycreate landmine_msgs 4
  es_keysetvalue landmine_msgs 4 lmmsg "message Planting mine   64% [===="
  es_keycreate landmine_msgs 5
  es_keysetvalue landmine_msgs 5 lmmsg "message Planting mine   80% [====="
  es_keycreate landmine_msgs 6
  es_keysetvalue landmine_msgs 6 lmmsg "message Planting mine   96% [======"
  es_keycreate landmine_msgs 7
  es_keysetvalue landmine_msgs 7 lmmsg "message Planting mine  100% [=======]"

  es_regcmd _landmine_progress "landmine/progress" "Internal landmine command for progress."

  es_xsetinfo landmine_lasttime 0
  es_xsetinfo landmine_checktime 0
  es_setinfo lm_tm 0
  es_setinfo lm_tmm 0
  es_setinfo lm_tmmm 0
  es_setinfo lm_x 0
  es_setinfo lm_y 0
  es_setinfo lm_z 0
  es_setinfo lm_xcc 0
  es_setinfo lm_ycc 0
  es_setinfo lm_zcc 0
  es_setinfo lm_agx 0
  es_setinfo lm_agy 0
  es_setinfo lm_agz 0
  es_setinfo lm_rgx 0
  es_setinfo lm_rgy 0
  es_setinfo lm_ugz 0
  es_setinfo lm_lgx 0
  es_setinfo lm_lgy 0
  es_setinfo lm_dgz 0
  es_setinfo lm_rgxx 0
  es_setinfo lm_lgxx 0
  es_setinfo lm_rgyy 0
  es_setinfo lm_lgyy 0
  es_setinfo lm_ugzz 0
  es_setinfo lm_dgzz 0
  es_setinfo lm_att 0
  es_setinfo lm_cgx 0
  es_setinfo lm_cgy 0
  es_setinfo lm_cgz 0
  es_setinfo lm_tstr 0
  es_setinfo lm_tmmm 0
  es_xdoblock landmine/config
}

block unload
{
  es_setinfo ven_landmine 0
  es_keygroupdelete landmine
  es_doblock corelib/noisy_off
  es_keygroupsave mine_stats |landmine
}

event player_activate
{
  es_give event_var(userid) weapon_smokegrenade
  es_xkeygroupdelete smokey
  es_xcreateentitylist smokey weapon_smokegrenade
  es_xforeachkey smokeindex in smokey "es_xdoblock landmine/findownerindex"

  es_exists lm_tstr key mine_stats event_var(es_steamid)
  if (server_var(lm_tstr) equalto 0) do
  {
    es_keycreate mine_stats event_var(es_steamid)
    es_keysetvalue mine_stats event_var(es_steamid) total_mines 0
    es_keysetvalue mine_stats event_var(es_steamid) total_det 0
  }
}

block findownerindex
{
  es_setinfo smokestate 0
  es_setinfo smoketeam 0
  es_setinfo smokeowner 0
  es_getindexprop smoketeam server_var(smokeindex) "CBaseEntity.m_iTeam"
  if (server_var(smoketeam) < 2) do
  {
    es_getindexprop smokeowner server_var(smokeindex) "CSmokeGrenade.baseclass.baseclass.baseclass.m_hOwner"
    es_xstring smokeowner replace 1 "!"
    es_xstring smokeowner replace 2 "@"
    es_xstring smokeowner replace 3 "#"
    es_xstring smokeowner replace 4 "$"
    es_xstring smokeowner replace 5 "r"
    es_xstring smokeowner replace 6 "^"
    es_xstring smokeowner replace 7 "&"
    es_xstring smokeowner replace 8 "*"
    es_xstring smokeowner replace 9 "("
    es_xstring smokeowner replace 0 ")"
    es_format smokeowner "%1 " server_var(smokeowner)
    es_keycreate landmine_howner event_var(es_steamid)
    es_keysetvalue landmine_howner event_var(es_steamid) howner server_var(smokeowner)
    es_give event_var(userid) player_weaponstrip
    es_fire event_var(userid) player_weaponstrip Strip
  }
}

event player_spawn
{
  es_fire event_var(userid) env_explosion kill
  es_setinfo lm_dead 0
  es_cexec event_var(userid) alias +mine "!+mine"
  es_cexec event_var(userid) alias -mine "!-mine"
  es_setplayerprop event_var(userid) "CBasePlayer.m_fFlags" 66177  //unfreeze player
  es_keysetvalue landmine_howner event_var(es_steamid) "isdead" 0
}

// This event is called whenever a new round begins.
event round_start
{
  if (server_var(ven_landmine) = 1) do
  {
    if (server_var(landmine_announce) = 1) do
    {
      es_msg #multi #green[Landmine] #defaultBind a key to +mine to lay mines. Use !minehelp for more info.
      es_keygroupdelete landmine
      es_keygroupcreate landmine
      es_cexec event_var(userid) alias +mine "!+mine"
      es_cexec event_var(userid) alias -mine "!-mine"
    }
  }
}

event player_death
{
 es_keydelete landmine_progress event_var(es_steamid)
 es_setplayerprop event_var(userid) "CBasePlayer.m_fFlags" 66177  //unfreeze player
 es_keysetvalue landmine_howner event_var(es_steamid) "isdead" 1
}

// This event is called whenever a player uses !+mine".
event es_client_command
{
  if (event_var(command) = "!+mine") do
  {
    es_xsetinfo splayer_isdead 0
    es_keygetvalue splayer_isdead landmine_howner event_var(es_steamid) "isdead"
    if (server_var(splayer_isdead) equalto 0) do
    {
      es_setinfo lm_lm 0
      es_exists lm_lm key landmine event_var(es_steamid)
      if (server_var(lm_lm) equalto 0) do
      {
        es_cexec event_var(userid) -duck
        es_sexec event_var(userid) -duck
        es_delayed 0.5 es_xsetplayerprop event_var(userid) "CBasePlayer.m_fFlags" 32.0  //freeze player
        es_keycreate landmine_progress event_var(es_steamid)
        es_keysetvalue landmine_progress event_var(es_steamid) progress 0
        es_setinfo landmine_user event_var(es_steamid)
        es_setinfo landmine_team event_var(es_userteam)
        es _landmine_progress event_var(es_steamid)
        //while "server_var(mine_cnt) < 8" "es_xdoblock landmine/progress"
      }
      else do
      {
        es_tell event_var(userid) #multi #green[Landmine] #defaultYou may only plant 1 mine at a time.
      }
    }
    else do
    {
      es_tell event_var(userid)  #multi #green[Landmine] #defaultYou may only plant mines while alive.
    }
  }

  if (event_var(command) = "!-mine") do
  {
    es_keydelete landmine_progress event_var(es_steamid)
    es_setplayerprop event_var(userid) "CBasePlayer.m_fFlags" 66177  //unfreeze player
    es_delayed 0.6 es_xsetplayerprop event_var(userid) "CBasePlayer.m_fFlags" 66177  //unfreeze player
    es_delayed 1 es_cexec event_var(userid) +duck
    es_delayed 1 es_cexec event_var(userid) -duck


  }

  if (event_var(command) equalto "!mineremove") do
  {
    es_setinfo lm_lmx 0
    es_exists lm_lmx key landmine event_var(es_steamid)
    if (server_var(lm_lmx) equalto 1) do
    {
      es_keydelete landmine event_var(es_steamid)
      es_tell event_var(userid) #multi #green[Landmine] #defaultYou have removed your landmine.
      es_setinfo lm_yrmne 0
      es_setinfo lm_svmne 0
      es_keygetvalue lm_yrmne mine_stats server_var(landmine_user) total_mines
      es_keygetvalue lm_svmne mine_stats server_stat total_mines
      es_math lm_yrmne - 1
      es_math lm_svmne - 1
      es_keysetvalue mine_stats server_var(landmine_user) total_mines server_var(lm_yrmne)
      es_keysetvalue mine_stats server_stat total_mines server_var(lm_svmne)
    }
    else do
    {
      es_tell event_var(userid) #multi #green[Landmine] #defaultYou have not planted a landmine.
    }
  }
}

event player_say
{
  if (event_var(text) equalto "!mineremove") do
  {
    es_setinfo lm_lmx 0
    es_exists lm_lmx key landmine event_var(es_steamid)
    if (server_var(lm_lmx) equalto 1) do
    {
      es_keydelete landmine event_var(es_steamid)
      es_tell event_var(userid) #multi #green[Landmine] #defaultYou have removed your landmine.
      es_setinfo lm_yrmne 0
      es_setinfo lm_svmne 0
      es_keygetvalue lm_yrmne mine_stats server_var(landmine_user) total_mines
      es_keygetvalue lm_svmne mine_stats server_stat total_mines
      es_math lm_yrmne - 1
      es_math lm_svmne - 1
      es_keysetvalue mine_stats server_var(landmine_user) total_mines server_var(lm_yrmne)
      es_keysetvalue mine_stats server_stat total_mines server_var(lm_svmne)
    }
    else do
    {
      es_tell event_var(userid) #multi #green[Landmine] #defaultYou have not planted a landmine.
    }
  }

  if (event_var(text) equalto "!minehelp") do
  {
   es_menu 10 event_var(userid) "[Landmine Help]\nBind a key to +mine in console.\nEx. Hit ~ key and type Bind T +mine\nOnly 1 mine at a time.\nWalk slowly with shift to avoid mines.\nSay !mineremove to relocate your mine.\n!mineremove is bindable also.\nSay !minestats for more info."
  }
  if (event_var(text) equalto "!minestats") do
  {
    es_setinfo lm_yrmne 0
    es_setinfo lm_svmne 0
    es_setinfo lm_yrmne2 0
    es_setinfo lm_svmne2 0
    es_setinfo lm_stats_msg 0
    es_keygetvalue lm_yrmne mine_stats event_var(es_steamid) total_mines
    es_keygetvalue lm_svmne mine_stats server_stat total_mines
    es_keygetvalue lm_yrmne2 mine_stats event_var(es_steamid) total_det
    es_keygetvalue lm_svmne2 mine_stats server_stat total_det
    es_format lm_stats_msg "[Landmine Stats]\n->You have planted %1 landmines\n%2 landmines have been detonated by others.\nTotal mines planted on server: %3\nTotal mines deonated on server: %4\n" server_var(lm_yrmne) server_var(lm_yrmne2) server_var(lm_svmne) server_var(lm_svmne2)
    es_menu 7 event_var(userid) server_var(lm_stats_msg)
  }
}

block progress
{
  es_xgetargv landmine_user 1
  es_keygetvalue mine_cnt landmine_progress server_var(landmine_user) progress

  es_xsetinfo dismsg 0
  es_keygetvalue dismsg landmine_msgs server_var(mine_cnt) lmmsg

  es_xsetinfo lm_chkr 0
  es_exists lm_chkr key landmine_progress server_var(landmine_user)
  if (server_var(lm_chkr) equalto 1) do
  {
    es_xsetinfo landmine_userid 0
    es_xsetinfo landmine_name 0
    es_getuserid landmine_userid server_var(landmine_user)
    es_getplayername landmine_name server_var(landmine_userid)
    es_give server_var(landmine_userid) env_hudhint
    es_fire server_var(landmine_userid) env_hudhint addoutput server_var(dismsg)
    es_fire server_var(landmine_userid) env_hudhint ShowHudHint
    es_xmath mine_cnt + 1
    es_keysetvalue landmine_progress server_var(landmine_user) progress server_var(mine_cnt)

    if (server_var(mine_cnt) >= 8) do
    {
      es_xdoblock landmine/plant
      es_keydelete landmine_progress server_var(landmine_user)
    }
    else do
    {
      es_delayed 0.3 _landmine_progress server_var(landmine_user)
    }
  }
}

block plant
{
      es_getplayerlocation lm_agx lm_agy lm_agz server_var(landmine_userid)
      es_setinfo lm_rgx server_var(lm_agx)
      es_setinfo lm_rgy server_var(lm_agy)
      es_setinfo lm_ugz server_var(lm_agz)
      es_setinfo lm_lgx server_var(lm_agx)
      es_setinfo lm_lgy server_var(lm_agy)
      es_setinfo lm_dgz server_var(lm_agz)
      es_setinfo lm_ugz server_var(lm_ugz)
      es_setinfo lm_dgz server_var(lm_dgz)

      //form 'cube' around mine plant spot.
      es_math lm_rgx + server_var(lm_rad)
      es_math lm_rgy + server_var(lm_rad)
      es_math lm_ugz + server_var(lm_rad)
      es_math lm_lgx - server_var(lm_rad)
      es_math lm_lgy - server_var(lm_rad)
      es_math lm_dgz - server_var(lm_rad)

      es_keycreate landmine server_var(landmine_user)
      es_keysetvalue landmine server_var(landmine_user) "x" server_var(lm_agx)
      es_keysetvalue landmine server_var(landmine_user) "y" server_var(lm_agy)
      es_keysetvalue landmine server_var(landmine_user) "z" server_var(lm_agz)
      es_keysetvalue landmine server_var(landmine_user) "lx" server_var(lm_lgx)
      es_keysetvalue landmine server_var(landmine_user) "rx" server_var(lm_rgx)
      es_keysetvalue landmine server_var(landmine_user) "ly" server_var(lm_lgy)
      es_keysetvalue landmine server_var(landmine_user) "ry" server_var(lm_rgy)
      es_keysetvalue landmine server_var(landmine_user) "uz" server_var(lm_ugz)
      es_keysetvalue landmine server_var(landmine_user) "dz" server_var(lm_dgz)
      es_keysetvalue landmine server_var(landmine_user) "nme" server_var(landmine_name)
      if (server_var(landmine_team) equalto 2) do
      {
        es_xsetinfo lm_tmm "T"
      }
      else do
      {
        es_xsetinfo lm_tmm "C"
      }
      es_keysetvalue landmine server_var(landmine_user) "team" server_var(lm_tmm)
      es_cexec server_var(landmine_userid) playgamesound weapons/deagle/de_clipout.wav
      es_tell server_var(landmine_userid) #multi #green[Landmine] #defaultWalk away slowly... landmine has been planted.
      es_cexec server_var(landmine_userid) say_team "I planted a mine here."
  es_setplayerprop server_var(landmine_userid) "CBasePlayer.m_fFlags" 66177  //unfreeze player
      es_delayed 1 es_cexec server_var(landmine_userid) +duck
      es_delayed 1 es_cexec server_var(landmine_userid) -duck
  es_setinfo lm_yrmne 0
  es_setinfo lm_svmne 0
  es_keygetvalue lm_yrmne mine_stats server_var(landmine_user) total_mines
  es_keygetvalue lm_svmne mine_stats server_stat total_mines
  es_math lm_yrmne + 1
  es_math lm_svmne + 1
  es_keysetvalue mine_stats server_var(landmine_user) total_mines server_var(lm_yrmne)
  es_keysetvalue mine_stats server_stat total_mines server_var(lm_svmne)
}

event player_footstep
{
  es_xgettime landmine_checktime
  es_xmath landmine_checktime - 1145000000
  if (server_var(landmine_checktime) > server_var(landmine_lasttime)) do
  {
  	es_xcopy landmine_lasttime landmine_checktime
  	es_xsetinfo landmine_dobeacon 1
  }

  es_xforeachkey lm_miners in landmine "es_xdoblock landmine/looper"
  es_xsetinfo landmine_dobeacon 0
}

// This block loops through the landmines to see if you are near any of them.
block looper
{
  es_keygetvalue lm_tmm "landmine" server_var(lm_miners) "team"
  if (server_var(landmine_dobeacon) > 0) do
  {
    es_keygetvalue lm_x "landmine" server_var(lm_miners) "x"
    es_keygetvalue lm_y "landmine" server_var(lm_miners) "y"
    es_keygetvalue lm_z "landmine" server_var(lm_miners) "z"
    es ma_effect 10 server_var(lm_tmm) 0 server_var(lm_x) server_var(lm_y) server_var(lm_z) 16 100 lightning NULL 0 10 0.3 15 10 0 0 0 255 255 0 0
  }
  es_getplayerlocation lm_cgx lm_cgy lm_cgz event_var(userid)
  es_keygetvalue lm_rgxx "landmine" server_var(lm_miners) "rx"
  if (server_var(lm_cgx) <= server_var(lm_rgxx)) do
  {
    es_keygetvalue lm_lgxx "landmine" server_var(lm_miners) "lx"
    if (server_var(lm_cgx) >= server_var(lm_lgxx)) do
    {
      es_keygetvalue lm_rgyy "landmine" server_var(lm_miners) "ry"
      if (server_var(lm_cgy) <= server_var(lm_rgyy)) do
      {
        es_keygetvalue lm_lgyy "landmine" server_var(lm_miners) "ly"
        if (server_var(lm_cgy) >= server_var(lm_lgyy)) do
        {
          es_keygetvalue lm_dgzz "landmine" server_var(lm_miners) "dz"
          if (server_var(lm_cgz) >= server_var(lm_dgzz)) do
          {
            es_keygetvalue lm_ugzz "landmine" server_var(lm_miners) "uz"
            if (server_var(lm_cgz) <= server_var(lm_ugzz)) do
            {
              es_setinfo landmine_owner 0
              es_keygetvalue landmine_owner landmine_howner server_var(lm_miners) howner
              es_give event_var(userid) env_explosion
              es_keygroupdelete landmine_explosions
              es_createentitylist landmine_explosions env_explosion
              es_xstring landmine_owner replace "!" 1
              es_xstring landmine_owner replace "@" 2
              es_xstring landmine_owner replace "#" 3
              es_xstring landmine_owner replace "$" 4
              es_xstring landmine_owner replace "r" 5
              es_xstring landmine_owner replace "^" 6
              es_xstring landmine_owner replace "&" 7
              es_xstring landmine_owner replace "*" 8
              es_xstring landmine_owner replace "(" 9
              es_xstring landmine_owner replace ")" 0
              es_foreachkey landmine_exp in landmine_explosions "esnq es_xsetindexprop server_var(landmine_exp) CBaseEntity.m_hOwnerEntity server_var(landmine_owner)"
              es_fire event_var(userid) env_explosion addoutput "imagnitude 100"
              es_fire event_var(userid) env_explosion explode
              es_soon es_keydelete landmine server_var(lm_miners)
              es_keygetvalue lm_att "landmine" server_var(lm_miners) "nme"
              es_msg #multi #green[Landmine] #default server_var(lm_att) has just blown up event_var(es_username) with a mine!
              if (event_var(es_username) notequalto server_var(lm_att)) do
              {
                es_xsetinfo lm_yrmne 0
                es_xsetinfo lm_svmne 0
                es_keygetvalue lm_yrmne mine_stats event_var(lm_miners) total_det
                es_keygetvalue lm_svmne mine_stats server_stat total_det
                es_xmath lm_yrmne + 1
                es_xmath lm_svmne + 1
                es_keysetvalue mine_stats server_var(lm_miners) total_det server_var(lm_yrmne)
                es_keysetvalue mine_stats server_stat total_det server_var(lm_svmne)
              }
            }
          }
        }
      }
    }
  }
}