Code:
// Wall Maker! - Making Walls ppl cant get through unless using noclip heroes
/* CVARS - copy and paste to shconfig.cfg
//Wall Maker
wallmaker_level 5
wallmaker_cooldown 0 //Cooldown time from wall setting to do it again
wallmaker_walls 3 //How Many walls does he start with
*/
#include <amxmod>
#include <Vexd_Utilities>
#include <superheromod>
// GLOBAL VARIABLES
new gHeroName[]="Wall Maker"
new bool:gHasWallmakerPower[SH_MAXSLOTS+1]
new wallmakerentity[SH_MAXSLOTS + 1], wallammo[SH_MAXSLOTS + 1]
new gPlayerLevels[SH_MAXSLOTS+1]
new wallmodel[32]
//----------------------------------------------------------------------------------------------
public plugin_init()
{
// Plugin Info
register_plugin("SUPERHERO Wall Maker","1.0","-[SHT]-b!nk")
// DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
register_cvar("wallmaker_level", "0" )
register_cvar("wallmaker_cooldown", "0" )
register_cvar("wallmaker_walls", "3" )
// FIRE THE EVENT TO CREATE THIS SUPERHERO!
shCreateHero(gHeroName, "WallMaker", "Press +power button to place a Wall", true, "wallmaker_level" )
// REGISTER EVENTS THIS HERO WILL RESPOND TO! (AND SERVER COMMANDS)
register_event("ResetHUD","newRound","b")
// KEY DOWN
register_srvcmd("wallmaker_kd", "wallmaker_kd")
shRegKeyDown(gHeroName, "wallmaker_kd")
// INIT
register_srvcmd("wallmaker_init", "wallmaker_init")
shRegHeroInit(gHeroName, "wallmaker_init")
// LEVELS
register_srvcmd("wallmaker_levels", "wallmaker_levels")
shRegLevels(gHeroName,"wallmaker_levels")
}
//----------------------------------------------------------------------------------------------
public plugin_precache()
{
precache_model("models/wall.mdl")
}
//----------------------------------------------------------------------------------------------
public wallmaker_init()
{
// First Argument is an id
new temp[6]
read_argv(1,temp,5)
new id=str_to_num(temp)
// 2nd Argument is 0 or 1 depending on whether the id has Wall Maker's powers
read_argv(2,temp,5)
new hasPowers=str_to_num(temp)
gHasWallmakerPower[id] = (hasPowers!=0)
if (gHasWallmakerPower[id]) newRound(id)
}
//----------------------------------------------------------------------------------------------
public newRound(id)
{
gPlayerUltimateUsed[id] = false
if (!gHasWallmakerPower[id]) return PLUGIN_CONTINUE
if (wallmakerentity[id]) {
RemoveEntity(wallmakerentity[id])
wallmakerentity[id] = 0
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
// RESPOND TO KEYDOWN
public wallmaker_kd()
{
if ( !hasRoundStarted() ) return
// First Argument is an id with Wall Maker Powers!
new temp[6]
read_argv(1,temp,5)
new id = str_to_num(temp)
if ( !is_user_alive(id) ) return
if (wallmakerentity[id] > 0) {
plant_wall(id)
}
}
//----------------------------------------------------------------------------------------------
public plant_wall(id)
{
if (!is_user_alive(id)) return
if (wallmakerentity[id] > 0) return
new walls = (get_cvar_num("wallmaker_walls"))
wallammo[id] = walls
if (wallammo[id] = 0) {
playSoundDenySelect(id)
client_print(id,print_center,"You have 0 walls left")
return
}
if ( gPlayerUltimateUsed[id]) {
playSoundDenySelect(id)
return
}
wallmakerentity[id] = CreateEntity("info_target")
if (wallmakerentity[id] == 0) return
Entvars_Set_String(wallmakerentity[id], EV_SZ_classname, "remote_wall")
ENT_SetModel(wallmakerentity[id], wallmodel)
new Float:PlayerOrigin[3]
Entvars_Get_Vector(id, EV_VEC_origin, PlayerOrigin)
ENT_SetOrigin(wallmakerentity[id], PlayerOrigin)
Entvars_Set_Int(wallmakerentity[id], EV_INT_solid, 0)
Entvars_Set_Int(wallmakerentity[id], EV_INT_movetype, 6)
Entvars_Set_Edict(wallmakerentity[id], EV_ENT_owner, id)
wallammo[id]--
client_print(id,print_center,"Wall Planted: You have %d walls left",wallammo[id])
}
//----------------------------------------------------------------------------------------------
public client_connect(id)
{
if (wallmakerentity[id]) {
RemoveEntity(wallmakerentity[id])
}
wallmakerentity[id] = 0
gPlayerUltimateUsed[id] = false
gHasWallmakerPower[id] = false
}
//----------------------------------------------------------------------------------------------
public client_disconnect(id)
{
if (wallmakerentity[id]) {
RemoveEntity(wallmakerentity[id])
}
wallmakerentity[id] = 0
gPlayerUltimateUsed[id] = false
gHasWallmakerPower[id] = false
}
//----------------------------------------------------------------------------------------------
public wallmaker_levels()
{
new id[5]
new lev[5]
read_argv(1,id,4)
read_argv(2,lev,4)
gPlayerLevels[str_to_num(id)]=str_to_num(lev)
}
//------------------------------------------------------------------------------------------------