All pastes #89148 Raw Edit

Something

public text v1 · immutable
#89148 ·published 2006-07-15 21:13 UTC
rendered paste body
// ******************************
// Ven's Landmine Script V0.03
//      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:
//      Find way to make mines visable to planter and/or teammates
//      Change !plantmine to +plant and add progress/delay bar for planting.
//      Fix so that you can plant more than 1 mine each.
//      Optimize performance.
//      Thank Mattie for helping me write this and bearing with me and my annoyances. <3
// ******************************

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

  // 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

  // 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
}

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

event player_spawn
{
  es_fire event_var(userid) env_explosion kill
}

// 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] #defaultUse !plantmine to plant landmines.
      es_keygroupdelete landmine
      es_keygroupcreate landmine
    }
  }
}

// This event is called whenever a player uses !plantmine".

event player_say
{
  if (event_var(text) equalto "!plantmine") do
  {
    es_msg server_var(mine_cnt)  Starts here
    es_setinfo lm_lm 0
    es_exists lm_lm key landmine event_var(es_steamid)
    if (server_var(lm_lm) equalto 0) do
    {
      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_xdoblock landmine/progress
      //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.
    }
   }

 if (event_var(text) equalto "!removemine") 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_delayed 3.0 es_tell event_var(userid) #multi #green[LandMine] #defaultYou have removed your landmine.
    }
    else do
    {
      es_tell event_var(userid) #multi #green[LandMine] #defaultYou have not planted a landmine.
    }
  }

}

block progress
{
  es_keygetvalue mine_cnt landmine_progress server_var(landmine_user) progress
  if (server_var(mine_cnt) = 0) do
  {
   es_format mine_hudmsg "message Planting mine"
  }
  if (server_var(mine_cnt) = 1) do
  {
  es_format mine_hudmsg "message Planting mine o"
  }
  if (server_var(mine_cnt) = 2) do
  {
  es_format mine_hudmsg "message Planting mine oo"
  }
  if (server_var(mine_cnt) = 3) do
  {
    es_format mine_hudmsg "message Planting mine ooo"
  }
  if (server_var(mine_cnt) = 4) do
  {
    es_format mine_hudmsg "message Planting mine oooo"
  }
  if (server_var(mine_cnt) = 5) do
  {
    es_format mine_hudmsg "message Planting mine ooooo"
  }
  if (server_var(mine_cnt) = 6) do
  {
    es_format mine_hudmsg "message Planting mine oooooo"
  }
  if (server_var(mine_cnt) = 7) do
  {
    es_format mine_hudmsg "message Planting mine ooooooo"
  }
  if (server_var(mine_cnt) >= 8) do
  {
    es_format mine_hudmsg "message Mine Planted"
  }
  es_setinfo lastmine_userid 0
  es_setinfo lastmine_name 0
  es_getuserid lastmine_userid server_var(lastmine_user)
  es_getplayername lastmine_name server_var(lastmine_userid)
  es_give server_var(lastmine_userid) env_hudhint
  es_fire server_var(lastmine_userid) env_hudhint addoutput server_var(mine_hudmsg)
  es_fire server_var(lastmine_userid) env_hudhint ShowHudHint
  es_math 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 1 es_xsetinfo landmine_user server_var(landmine_user)
    es_delayed 1 es_xdoblock landmine/progress
  }

}

block plant
{

      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_getplayerlocation lm_agx lm_agy lm_agz server_var(lastmine_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 + 30
      es_math lm_rgy + 30
      es_math lm_ugz + 30
      es_math lm_lgx - 30
      es_math lm_lgy - 30
      es_math lm_dgz - 30

      es_keycreate landmine server_var(landmine_user)
      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(lastmine_name)

}

event player_footstep
{
  es_foreachkey lm_miners in landmine "es_xdoblock landmine/looper"
}

// This block loops through the landmines to see if you are near any of them.
block looper
{
  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_keygetvalue lm_lgxx "landmine" server_var(lm_miners) "lx"
  es_keygetvalue lm_rgxx "landmine" server_var(lm_miners) "rx"
  es_keygetvalue lm_lgyy "landmine" server_var(lm_miners) "ly"
  es_keygetvalue lm_rgyy "landmine" server_var(lm_miners) "ry"
  es_keygetvalue lm_dgzz "landmine" server_var(lm_miners) "dz"
  es_keygetvalue lm_ugzz "landmine" server_var(lm_miners) "uz"
  es_keygetvalue lm_att "landmine" server_var(lm_miners) "nme"

  es_setinfo lm_cgx 0
  es_setinfo lm_cgy 0
  es_setinfo lm_cgz 0
  es_getplayerlocation lm_cgx lm_cgy lm_cgz event_var(userid)

  //This is probably the worst part of my script. But atleast it halfway works.

  if (server_var(lm_cgx) <= server_var(lm_rgxx)) do
  {
    if (server_var(lm_cgx) >= server_var(lm_lgxx)) do
    {
      if (server_var(lm_cgy) <= server_var(lm_rgyy)) do
      {
        if (server_var(lm_cgy) >= server_var(lm_lgyy)) do
        {
          if (server_var(lm_cgz) >= server_var(lm_dgzz)) do
          {
            if (server_var(lm_cgz) <= server_var(lm_ugzz)) do
            {
              es_give event_var(userid) env_explosion
              es_fire event_var(userid) env_explosion addoutput "imagnitude 80"
              es_fire event_var(userid) env_explosion explode
              es_soon es_keydelete landmine server_var(lm_miners)
              es_msg #multi #green[landMine] #default server_var(lm_att) has just blown up event_var(es_username) with a mine!
            }
          }
        }
      }
    }
  }
}

event round_end
{
}