but everytime someone turns into a predator the console spams "Cbuf AddText: Overflow" and it gets really laggy. Does anyone know how to solve this problem? Thanks!
PHP Code:
//---------------[INCLUDES]---------------
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <engine>
//---------------[PLASMA STUFF]---------------
new gExplosionModel
new gTrailModel
new msgtext
//---------------[BLOOD STUFF]---------------
new blood_drop
new blood_spray
//---------------[BODYPARTS STUFF]---------------
new mdl_gib_flesh
new mdl_gib_head
new mdl_gib_legbone
new mdl_gib_lung
new mdl_gib_meat
new mdl_gib_spine
//---------------[MSG STUFF]---------------
new MsgSayText
//---------------[PRECATCH SOUNDS]---------------
public plugin_precache()
{
precache_model("models/player/predator1/predator1.mdl")
precache_model("models/claws.mdl")
precache_model("models/rpgrocket.mdl")
precache_model("models/v_knife.mdl")
precache_sound("predator/crpredator.wav")
precache_sound("predator/scpredator.wav")
precache_sound("predator/depredator.wav")
precache_sound("predator/plasma_shoot.wav")
precache_sound("predator/explosion.wav")
precache_sound("predator/bc_spithit2.wav")
precache_sound("predator/suitchargeno1.wav")
precache_sound("predator/smallmedkit2.wav")
precache_sound("predator/button3.wav")
precache_model("sprites/plasma.spr")
gTrailModel = precache_model("sprites/laserbeam.spr")
gExplosionModel = precache_model("sprites/plasma_explode.spr")
blood_drop = precache_model("sprites/blood.spr")
blood_spray = precache_model("sprites/bloodspray.spr")
mdl_gib_flesh = precache_model("models/Fleshgibs.mdl")
mdl_gib_head = precache_model("models/GIB_Skull.mdl")
mdl_gib_legbone = precache_model("models/GIB_Legbone.mdl")
mdl_gib_lung = precache_model("models/GIB_Lung.mdl")
mdl_gib_meat = precache_model("models/GIB_B_Gib.mdl")
mdl_gib_spine = precache_model("models/GIB_B_Bone.mdl")
}
//---------------[PLUGIN INIT]---------------
public plugin_init()
{
register_plugin("Predator_Mode_LITE","1.3","Haim")
new keys = MENU_KEY_1|MENU_KEY_2
register_menucmd(register_menuid("Do you want to be a Predator?"),keys,"func_menu")
register_event("ResetHUD","func_menuspawndelay","be")
register_event("ResetHUD","startround","be")
register_event("DeathMsg","unpredator","a")
register_event("DeathMsg","death_blood","a")
register_event("CurWeapon", "toggleclaws", "be", "1=1")
register_event("Damage", "func_predatorpower", "b", "2!0")
register_event("Damage","dmg_blood","b","2!0","3=0","4!0")
register_cvar("admin_enable_predator","1")
register_cvar("admin_frags_predator","20")
register_cvar("admin_money_predator","16000")
register_cvar("admin_plasma_predator","3")
register_cvar("admin_frags_plasma","1")
register_cvar("admin_frags_knife","2")
register_cvar("admin_kill_money","300")
register_cvar("admin_view_predator","0.4")
register_cvar("admin_hp_predator","200")
register_concmd("admin_predator","func_adminpredator",ADMIN_LEVEL_A,"[target] [plasma]")
register_concmd("admin_addplasma","func_addplasma",ADMIN_LEVEL_A,"[target] [plasma]")
register_concmd("admin_unpredator","func_adminunpredator",ADMIN_LEVEL_A,"[target]")
register_concmd("admin_predator_custom","custom",ADMIN_LEVEL_A,"[target]")
register_clcmd("dbinds","func_autobind")
register_clcmd("ppfire","cmdShoot")
register_clcmd("pcview","func_view")
register_clcmd("say /predhelp","func_predhelp")
register_clcmd("say /predcost","func_predcost")
register_clcmd("say /predon","func_predon")
register_touch("PlasmaBall","*","plasma_hit")
msgtext = get_user_msgid("StatusText")
MsgSayText = get_user_msgid("SayText")
set_task(0.85,"lowhp_blood",0,"",0,"b")
set_task(get_cvar_float("admin_view_predator"), "func_bodyheat", 0, "", 0, "b")
}
//---------------[THE PREDATOR GLOBAL VALUE]---------------
new ispredator[33]
new delay[33]
new plasma[33]
new view[33]
new onoroff[33]
//---------------[SPAWN DELAY FOR MENU]---------------
public func_menuspawndelay(id)
{
if(ispredator[id]!=0)
{
set_task(1.0,"func_screen",id)
}
if(get_cvar_num("admin_enable_predator")!=1)
{
set_hudmessage(0,30,200,-1.0,0.4,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(id,"Predator Mode Is Off")
return PLUGIN_HANDLED
}
new msg[51]
format(msg,50,"^x01Say ^x04 /predhelp ^x01 for more info.")
message_begin(MSG_ONE,MsgSayText,{0,0,0},id)
write_byte(id)
write_string(msg)
message_end()
if((ispredator[id]==0 || ispredator[id]==5) && delay[id]<1 && get_user_frags(id)>=get_cvar_num("admin_frags_predator") && cs_get_user_money(id)>=get_cvar_num("admin_money_predator") && cs_get_user_team(id)!=CS_TEAM_SPECTATOR)
{
set_task(1.5,"showMenu",id)
server_cmd("sv_maxspeed 100000")
server_cmd("sv_airaccelerate 500")
}
return PLUGIN_HANDLED
}
//---------------[PRADATOR GOT KILLED]---------------
public unpredator()
{
new id=read_data(2)
if(ispredator[id]!=0)
{
ispredator[id]=5
plasma[id]=0
onoroff[id]=0
if(get_user_health(id)>100)
{
set_user_health(id,get_user_health(id)-(get_cvar_num("admin_hp_predetor")-100))
}
cs_set_user_armor(id,0,CS_ARMOR_NONE)
set_user_gravity(id,1.0)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
set_user_footsteps(id,0)
set_user_maxspeed(id,350.0)
client_cmd(id,"cl_forwardspeed 400")
client_cmd(id,"cl_backspeed 400")
client_cmd(id,"cl_sidespeed 400")
client_cmd(id,"spk predator/depredator")
message_begin(MSG_ONE, 98, {0,0,0}, id)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(100) // fade red
write_byte(0) // fade green
write_byte(0) // fade blue
write_byte(0) // fade alpha
message_end()
set_hudmessage(0,30,200,-1.0,0.75,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(id,"You are no longer a predator")
if(view[id]!=0)
{
func_view(id)
}
new HUD[51]
format(HUD,50,"")
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
}
}
//---------------[SHOW PREDATOR MENU]---------------
public showMenu(id)
{
new menu[192]
new keys = MENU_KEY_1|MENU_KEY_2
format(menu,191,"\yDo you want to be a Predator?:^n^n\w1. Yes!^n2. No.")
show_menu(id,keys,menu)
return PLUGIN_HANDLED
}
//---------------[PREDATOR CHOOSE]---------------
public func_menu(id,key)
{
if(key==0)
{
set_user_frags(id,get_user_frags(id)-get_cvar_num("admin_frags_predator"))
cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("admin_money_predator"))
ispredator[id]=1
plasma[id]=get_cvar_num("admin_plasma_predator")
set_user_health(id,get_cvar_num("admin_hp_predator"))
cs_set_user_armor(id,500,CS_ARMOR_VESTHELM)
set_user_gravity(id,0.5)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
set_user_footsteps(id,1)
cs_set_user_model(id,"predator1")
client_cmd(id,"spk predator/crpredator")
client_cmd(id,"dbinds")
set_hudmessage(0,30,200,-1.0,0.75,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(id,"You are now a predator")
cs_set_user_nvg(id,1)
new HUD[51]
format(HUD,50,"You got %i Plasma shots left.",plasma[id])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
}
if(key==1)
{
delay[id]=3
set_hudmessage(0,30,200,-1.0,0.75,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(id,"You are NOT a predator. U will have to wait 3 rounds to be predator.")
}
}
//---------------[ADMIN SET PREDATOR]---------------
public func_adminpredator(id,level,cid)
{
if (!cmd_access(id,level,cid,3))
{
console_print(id, "sorry, ur admin level is too low to use that command")
return PLUGIN_HANDLED
}
new arg[32]
new pla[10]
read_argv(1,arg,31)
read_argv(2,pla,9)
new plaf=str_to_num(pla)
new player=cmd_target(id,arg,2)
if(ispredator[player]==0)
{
ispredator[player]=1
plasma[player]=plaf
set_user_health(player,get_cvar_num("admin_hp_predator"))
cs_set_user_armor(player,500,CS_ARMOR_VESTHELM)
set_user_gravity(player,0.5)
set_user_rendering(player,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
set_user_footsteps(player,1)
client_cmd(player,"spk predator/crpredator")
client_cmd(player,"dbinds")
cs_set_user_model(player,"predator1")
set_hudmessage(0,30,200,-1.0,0.75,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(player,"You are now a predator")
cs_set_user_nvg(player,1)
console_print(id,"Success")
new HUD[51]
format(HUD,50,"You got %i Plasma shots left.",plasma[player])
message_begin(MSG_ONE, msgtext, {0,0,0}, player)
write_byte(0)
write_string(HUD)
message_end()
return PLUGIN_HANDLED
}
if(ispredator[player]!=0)
{
console_print(id,"That player is already a predator")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
//---------------[ADMIN REMOVE PREDATOR]---------------
public func_adminunpredator(id,level,cid)
{
if (!cmd_access(id,level,cid,2))
{
console_print(id, "sorry, ur admin level is too low to use that command")
return PLUGIN_HANDLED
}
new arg[32]
read_argv(1,arg,31)
new player=cmd_target(id,arg,2)
if(ispredator[player]!=0)
{
ispredator[player]=0
plasma[player]=0
if(get_user_health(player)>100)
{
set_user_health(player,get_user_health(player)-100)
}
cs_set_user_armor(id,0,CS_ARMOR_NONE)
set_user_gravity(player,1.0)
set_user_rendering(player,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
set_user_footsteps(player,0)
set_user_maxspeed(player,250.0)
client_cmd(player,"cl_forwardspeed 400")
client_cmd(player,"cl_backspeed 400")
client_cmd(player,"cl_sidespeed 400")
client_cmd(player,"spk predator/depredator")
cs_reset_user_model(player)
set_hudmessage(0,30,200,-1.0,0.75,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(player,"You are no longer a predator")
message_begin(MSG_ONE, 98, {0,0,0}, player)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(100) // fade red
write_byte(0) // fade green
write_byte(0) // fade blue
write_byte(0) // fade alpha
message_end()
console_print(id,"Success")
if(view[player]!=0)
{
func_view(player)
}
onoroff[player]=0
cs_set_user_nvg(player,0)
client_cmd(player,"spk predator/smallmedkit2")
new HUD[51]
format(HUD,50,"")
message_begin(MSG_ONE, msgtext, {0,0,0}, player)
write_byte(0)
write_string(HUD)
message_end()
} else {
console_print(id,"That player is not a predator")
}
return PLUGIN_HANDLED
}
//---------------[START ROUND]---------------
public startround(id)
{
if(ispredator[id]==0)
{
set_user_health(id,100)
set_user_gravity(id,1.0)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
set_user_footsteps(id,0)
onoroff[id]=0
}
if(ispredator[id]==1)
{
plasma[id]=get_cvar_num("admin_plasma_predator")
set_user_health(id,get_cvar_num("admin_hp_predator"))
cs_set_user_armor(id,500,CS_ARMOR_VESTHELM)
set_user_gravity(id,0.5)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
set_user_footsteps(id,1)
cs_set_user_model(id,"predator1")
cs_set_user_nvg(id,1)
new HUD[51]
format(HUD,50,"You got %i Plasma shots left.",plasma[id])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
onoroff[id]=0
}
if(ispredator[id]==5)
{
ispredator[id]=0
onoroff[id]=0
set_user_health(id,100)
cs_set_user_armor(id,0,CS_ARMOR_VESTHELM)
set_user_gravity(id,1.0)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
set_user_footsteps(id,0)
cs_reset_user_model(id)
func_view(id)
}
if(delay[id]>0)
{
delay[id]= delay[id]-1
}
}
//---------------[PREDATOR SPEED & KNIFE & PLASMACOUNT]---------------
public client_PreThink(id)
{
new clip,ammo
if(ispredator[id]!=0)
{
entity_set_float(id,EV_FL_fuser2,0.0)
set_user_maxspeed(id,475.0)
client_cmd(id,"cl_forwardspeed 475;cl_backspeed 475;cl_sidespeed 475")
if(get_user_weapon(id,clip,ammo)!=CSW_KNIFE && get_user_weapon(id,clip,ammo)!=CSW_C4)
{
client_cmd(id,"weapon_knife")
}
if(get_user_health(id)<101)
{
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,225-(get_user_health(id)*2))
}
}
}
//---------------[PREDATOR POWER]---------------
public func_predatorpower(id)
{
func_screen(id)
new weapon, bodypart, attacker = get_user_attacker(id,weapon,bodypart)
if(ispredator[attacker]!=0 && attacker!=id)
{
new iOrigin[3]
new wpn[32]
get_weaponname(attacker,wpn,31)
new damage
new victimhealth = get_user_health(id)
damage = read_data(2)
if(weapon==CSW_KNIFE)
{
damage = damage*2
}
if (victimhealth - damage<1)
{
user_silentkill(id)
if(ispredator[id]==0)
{
get_user_origin(id,iOrigin)
// Effects
fx_blood_red(iOrigin)
fx_blood_red(iOrigin)
fx_blood_red(iOrigin)
fx_bleed_red(iOrigin)
fx_bleed_red(iOrigin)
fx_headshot_red(iOrigin)
fx_blood_large_red(iOrigin,5)
fx_blood_small_red(iOrigin,15)
fx_trans(id,0)
fx_gib_explode(iOrigin)
// Hide body
iOrigin[2] = iOrigin[2]-20
set_user_origin(id,iOrigin)
}
if(ispredator[id]!=0)
{
get_user_origin(id,iOrigin)
// Effects
fx_blood_green(iOrigin)
fx_blood_green(iOrigin)
fx_blood_green(iOrigin)
fx_bleed_green(iOrigin)
fx_bleed_green(iOrigin)
fx_headshot_green(iOrigin)
fx_blood_large_green(iOrigin,5)
fx_blood_small_green(iOrigin,15)
fx_trans(id,0)
fx_gib_explode(iOrigin)
// Hide body
iOrigin[2] = iOrigin[2]-20
set_user_origin(id,iOrigin)
}
make_deathmsg(attacker,id,bodypart,wpn)
set_user_frags(attacker,get_user_frags(attacker)+get_cvar_num("admin_frags_knife"))
cs_set_user_money(attacker,cs_get_user_money(attacker)+get_cvar_num("admin_kill_money"))
client_cmd(attacker,"spk predator/bc_spithit2")
client_cmd(id,"spk predator/bc_spithit2")
client_cmd(attacker,"spk predator/scpredator")
client_cmd(id,"spk predator/scpredator")
} else {
set_user_health(id, victimhealth-damage)
}
}
return PLUGIN_CONTINUE
}
//---------------[PREDATOR MODEL]---------------
public custom(id,level,cid)
{
new arg[32]
new swi[2]
read_argv(1,arg,31)
read_argv(2,swi,1)
new swit=str_to_num(swi)
new player = cmd_target(id,arg,2)
if(swit==1)
{
cs_set_user_model(player,"predator1")
}
if(swit==0)
{
cs_reset_user_model(player)
}
return PLUGIN_HANDLED
}
//---------------[PLASMA SHOOT]---------------
public cmdShoot(id)
{
if(plasma[id]>0 && ispredator[id]!=0 && ispredator[id]!=5)
{
plasma[id]=plasma[id]-1
new HUD[51]
format(HUD,50,"You got %i Plasma shots left.",plasma[id])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
new origin[3], Float:fOrigin[3]//player origin... and float origin
new Float:velocity[3] // speed of the entity to move
get_user_origin(id,origin,1)//get user origin - int
IVecFVec(origin, fOrigin)// convert the int into float
new ePlasmaBall = create_entity("info_target") // create the plasma ball
entity_set_string(ePlasmaBall, EV_SZ_classname, "PlasmaBall") //set name of the entity "PlasmaBall"
new Float:posAdjust[3] //Used for adjusting the starting position
velocity_by_aim(id, 70, posAdjust) //You can replace 50 with whatever , get origin of the AIM
fOrigin[0] += posAdjust[0]
fOrigin[1] += posAdjust[1]
fOrigin[2] += posAdjust[2]
entity_set_vector(ePlasmaBall, EV_VEC_origin,fOrigin)//set the shot's direction
new Float:maxs[3] = {0.2,0.2,0.5}
new Float:mins[3] = {-0.2,-0.2,-0.5}
entity_set_size(ePlasmaBall,mins,maxs)//set size
entity_set_int(ePlasmaBall,EV_INT_solid, SOLID_BBOX)//make solid
entity_set_int(ePlasmaBall,EV_INT_movetype,MOVETYPE_FLYMISSILE)//set movetype
entity_set_float(ePlasmaBall,EV_FL_framerate,1.0)//framerate
entity_set_int(ePlasmaBall, EV_INT_rendermode, 5)//randermode
entity_set_float(ePlasmaBall, EV_FL_renderamt, 255.0)//visable
entity_set_float(ePlasmaBall, EV_FL_scale, 1.20)//dunno
entity_set_model(ePlasmaBall, "sprites/plasma.spr")//model
emit_sound(ePlasmaBall, CHAN_AUTO, "predator/plasma_shoot.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)//sound
VelocityByAim(id,1150,velocity)//speed
entity_set_vector(ePlasmaBall,EV_VEC_velocity,velocity)//set the shot's speed
entity_set_edict(ePlasmaBall, EV_ENT_owner, id)
// Create a trail...
/* Broadcast to all players*/
message_begin(MSG_BROADCAST, SVC_TEMPENTITY) // TE_BEAMFOLLOW ( msg #22) create a line of decaying beam segments until entity stops moving
write_byte(22) // msg id
write_short(ePlasmaBall) // short (entity:attachment to follow)
write_short(gTrailModel) // short (sprite index)
write_byte(25) // byte (life in 0.1's)
write_byte(7) // byte (line width in 0.1's)
write_byte(42) // byte (color)
write_byte(170) // byte (color)
write_byte(255) // byte (color)
write_byte(255) // byte (brightness)
message_end()
return PLUGIN_HANDLED
} else {
set_hudmessage(0,30,200,-1.0,0.75,0,3.0,10.0,0.15,0.5,1)
show_hudmessage(id,"You are out of ammo")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
//---------------[PLASMA HIT]---------------
public plasma_hit(ePlasmaBall,other) {
if(other == 0) {
new Float:fOrigin[3]
new iOrigin[3]
// get origin....
entity_get_vector(ePlasmaBall, EV_VEC_origin, fOrigin)
// changes a Float vector to an interger
FVecIVec(fOrigin, iOrigin)
// this sends out a server message ( from const.h )
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(23) //TE_GLOWSPRITE
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(gExplosionModel) // model
write_byte(3) // life 0.x sec
write_byte(12) // size
write_byte(210) // brightness
message_end()
// our explosion sound...
emit_sound(ePlasmaBall, CHAN_AUTO, "predator/explosion.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
remove_entity(ePlasmaBall) // remove the entity
}
else if(is_user_connected(other)) {
new attacker = entity_get_edict(ePlasmaBall,EV_ENT_owner)
if(get_user_team(other)!=get_user_team(attacker))
{
new bodypart,weapon[32]
new iOriginp[3]
user_silentkill(other)
if(ispredator[other]==0)
{
get_user_origin(other,iOriginp)
// Effects
fx_blood_red(iOriginp)
fx_blood_red(iOriginp)
fx_blood_red(iOriginp)
fx_bleed_red(iOriginp)
fx_bleed_red(iOriginp)
fx_headshot_red(iOriginp)
fx_blood_large_red(iOriginp,10)
fx_blood_small_red(iOriginp,20)
fx_trans(other,0)
fx_gib_explode(iOriginp)
// Hide body
iOriginp[2] = iOriginp[2]-20
set_user_origin(other,iOriginp)
}
if(ispredator[other]!=0)
{
get_user_origin(other,iOriginp)
// Effects
fx_blood_green(iOriginp)
fx_blood_green(iOriginp)
fx_blood_green(iOriginp)
fx_bleed_green(iOriginp)
fx_bleed_green(iOriginp)
fx_headshot_green(iOriginp)
fx_blood_large_green(iOriginp,10)
fx_blood_small_green(iOriginp,20)
fx_trans(other,0)
fx_gib_explode(iOriginp)
// Hide body
iOriginp[2] = iOriginp[2]-20
set_user_origin(other,iOriginp)
}
make_deathmsg(attacker,other,bodypart,weapon)
set_user_frags (attacker,get_user_frags(attacker)+get_cvar_num("admin_frags_plasma"))
cs_set_user_money(attacker,cs_get_user_money(attacker)+get_cvar_num("admin_kill_money"))
new Float:fOrigin[3]
new iOrigin[3]
// get origin....
entity_get_vector(ePlasmaBall, EV_VEC_origin, fOrigin)
// changes a Float vector to an interger
FVecIVec(fOrigin, iOrigin)
// this sends out a server message ( from const.h )
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(23) //TE_GLOWSPRITE
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(gExplosionModel) // model
write_byte(3) // life 0.x sec
write_byte(12) // size
write_byte(210) // brightness
message_end()
// our explosion sound...
emit_sound(ePlasmaBall, CHAN_AUTO, "predator/explosion.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
client_cmd(other,"spk predator/bc_spithit2")
client_cmd(attacker,"spk predator/bc_spithit2")
remove_entity(ePlasmaBall)
} else {
new Float:fOrigin[3]
new iOrigin[3]
// get origin....
entity_get_vector(ePlasmaBall, EV_VEC_origin, fOrigin)
// changes a Float vector to an interger
FVecIVec(fOrigin, iOrigin)
// this sends out a server message ( from const.h )
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(23) //TE_GLOWSPRITE
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(gExplosionModel) // model
write_byte(3) // life 0.x sec
write_byte(12) // size
write_byte(210) // brightness
message_end()
// our explosion sound...
emit_sound(ePlasmaBall, CHAN_AUTO, "predator/explosion.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
remove_entity(ePlasmaBall)
}
} else {
new Float:fOrigin[3]
new iOrigin[3]
// get origin....
entity_get_vector(ePlasmaBall, EV_VEC_origin, fOrigin)
// changes a Float vector to an interger
FVecIVec(fOrigin, iOrigin)
// this sends out a server message ( from const.h )
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(23) //TE_GLOWSPRITE
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(gExplosionModel) // model
write_byte(3) // life 0.x sec
write_byte(12) // size
write_byte(210) // brightness
message_end()
// our explosion sound...
emit_sound(ePlasmaBall, CHAN_AUTO, "predator/explosion.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
remove_entity(ePlasmaBall) // remove the entity
}
}
public func_addplasma(id,level,cid)
{
if (!cmd_access(id,level,cid,3))
{
console_print(id, "sorry, ur admin level is too low to use that command")
return PLUGIN_HANDLED
}
new arg[32]
new am[10]
read_argv(1,arg,31)
read_argv(2,am,9)
new amf=str_to_num(am)
new player = cmd_target(id,arg,2)
if(ispredator[player]!=0 && ispredator[player]!=5)
{
plasma[player]=plasma[player]+amf
new HUD[51]
format(HUD,50,"You got %i Plasma shots left.",plasma[player])
message_begin(MSG_ONE, msgtext, {0,0,0}, player)
write_byte(0)
write_string(HUD)
message_end()
}
return PLUGIN_HANDLED
}
//---------------[PUBLIC ON CONNECT FUNCTION]---------------
public client_disconnect(id)
{
ispredator[id]=0
plasma[id]=0
onoroff[id]=0
}
//---------------[PREDATOR BLUE SCREEN EVERY NEW ROUND]---------------
public func_screen(id)
{
if(is_user_alive(id))
{
if(view[id]==1 && ispredator[id]!=0)
{
onoroff[id]=1
client_cmd(id,"spk predator/suitchargeno1")
message_begin(MSG_ONE, 98, {0,0,0}, id)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(0) // fade red
write_byte(0) // fade green
write_byte(255) // fade blue
write_byte(130) // fade alpha
message_end()
}
if(view[id]==2 && ispredator[id]!=0)
{
onoroff[id]=2
client_cmd(id,"spk predator/suitchargeno1")
message_begin(MSG_ONE, 98, {0,0,0}, id)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(25) // fade red
write_byte(25) // fade green
write_byte(25) // fade blue
write_byte(210) // fade alpha
message_end()
}
}
}
//---------------[PREDATOR CLAWS]---------------
public toggleclaws(id)
{
new clip, ammo, wpnid = get_user_weapon(id,clip,ammo)
new model[32]
entity_get_string(id,EV_SZ_viewmodel,model,31)
if(ispredator[id]!=0 && !equali(model,"models/claws.mdl") && !equali(model,"models/v_c4.mdl"))
{
entity_set_string(id, EV_SZ_viewmodel,"models/claws.mdl")
}
if(ispredator[id]==0 && wpnid == CSW_KNIFE && !equali(model,"models/v_knife.mdl"))
{
entity_set_string(id, EV_SZ_viewmodel,"models/v_knife.mdl")
}
}
//---------------[PREDATOR VIEW]---------------
public func_view(id)
{
if(ispredator[id]!=0 && ispredator[id]!=5)
{
if(view[id]==0)
{
view[id]=1
onoroff[id]=1
client_cmd(id,"spk predator/suitchargeno1")
console_print(id,"view is normal with mask")
message_begin(MSG_ONE, 98, {0,0,0},id)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(0) // fade red
write_byte(0) // fade green
write_byte(255) // fade blue
write_byte(120) // fade alpha
message_end()
return PLUGIN_HANDLED
}
if(view[id]==1)
{
view[id]=2
onoroff[id]=2
client_cmd(id,"spk predator/suitchargeno1")
console_print(id,"predator view mode")
message_begin(MSG_ONE, 98, {0,0,0},id)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(25) // fade red
write_byte(25) // fade green
write_byte(25) // fade blue
write_byte(210) // fade alpha
message_end()
return PLUGIN_HANDLED
}
if(view[id]==2)
{
view[id]=3
client_cmd(id,"spk predator/smallmedkit2")
console_print(id,"view is 3d person mode")
set_view(id,CAMERA_3RDPERSON)
onoroff[id]=0
message_begin(MSG_ONE, 98, {0,0,0},id)
write_short(1<<0) // fade lasts this long duration
write_short(1<<0) // fade lasts this long hold time
write_short(1<<2) // fade type HOLD
write_byte(0) // fade red
write_byte(0) // fade green
write_byte(0) // fade blue
write_byte(0) // fade alpha
message_end()
return PLUGIN_HANDLED
}
if(view[id]==3)
{
view[id]=0
client_cmd(id,"spk predator/button3")
console_print(id,"view is normal")
set_view(id,CAMERA_NONE)
return PLUGIN_HANDLED
}
}
if(ispredator[id]==0 && view[id]!=0)
{
set_view(id,CAMERA_NONE)
view[id]=0
onoroff[id]=0
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
//=======================================================================================
//=====================================[BLOOD STUFF]=====================================
//=======================================================================================
//---------------[MAKE MODEL INVISABLE IN EXPLOTION]---------------
static fx_trans(player,amount)
{
set_user_rendering(player,kRenderFxNone,0,0,0,kRenderTransAlpha,amount)
return PLUGIN_CONTINUE
}
//---------------[BLOOD EVERY HIT (HUAMN)]---------------
public fx_blood_red(origin[3]) //hit blood human
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(115) //TE_BLOODSPRITE in const.h
write_coord(origin[0]+random_num(-20,20))
write_coord(origin[1]+random_num(-20,20))
write_coord(origin[2]+random_num(-20,20))
write_short(blood_spray)
write_short(blood_drop)
write_byte(248) // color index
write_byte(15) // size
message_end()
}
//---------------[BLOOD EVERY HIT (PREDATOR)]---------------
public fx_blood_green(origin[3]) //hit blood predator
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(115) //TE_BLOODSPRITE in const.h
write_coord(origin[0]+random_num(-20,20))
write_coord(origin[1]+random_num(-20,20))
write_coord(origin[2]+random_num(-20,20))
write_short(blood_spray)
write_short(blood_drop)
write_byte(192) // color index
write_byte(15) // size
message_end()
}
//---------------[DIEING BLEEDING HUMAN]---------------
public fx_bleed_red(origin[3]) //blood sprays on low hp
{
// Blood spray
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(101)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+10)
write_coord(random_num(-100,100)) // x
write_coord(random_num(-100,100)) // y
write_coord(random_num(-10,10)) // z
write_byte(70) // color
write_byte(random_num(50,100)) // speed
message_end()
}
//---------------[DIEING BLEEDING PREDATOR]---------------
public fx_bleed_green(origin[3]) //blood sprays on low hp green
{
// Blood spray
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(101)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+10)
write_coord(random_num(-100,100)) // x
write_coord(random_num(-100,100)) // y
write_coord(random_num(-10,10)) // z
write_byte(192) // color
write_byte(random_num(50,100)) // speed
message_end()
}
//---------------[HEADSHOT BLOOD HUMAN]---------------
public fx_headshot_red(origin[3])
{
// Blood spray, 5 times
for (new i = 0; i < 5; i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(101)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+30)
write_coord(random_num(-20,20)) // x
write_coord(random_num(-20,20)) // y
write_coord(random_num(50,300)) // z
write_byte(70) // color
write_byte(random_num(100,200)) // speed
message_end()
}
}
//---------------[HEADSHOT BLOOD PREDATOR]---------------
public fx_headshot_green(origin[3])
{
// Blood spray, 8 times
for (new i = 0; i < 8; i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(101)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+30)
write_coord(random_num(-20,20)) // x
write_coord(random_num(-20,20)) // y
write_coord(random_num(50,300)) // z
write_byte(192) // color
write_byte(random_num(100,200)) // speed
message_end()
}
}
//---------------[BLOOD DECALS SMALL RED]---------------
static fx_blood_small_red(origin[3],num) //red blood decals [small]
{
// Blood decals
static const blood_small[7] = {190,191,192,193,194,195,197}
// Small splash
for (new j = 0; j < num; j++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(116) //TE_WORLDDECAL from const.h
write_coord(origin[0]+random_num(-100,100))
write_coord(origin[1]+random_num(-100,100))
write_coord(origin[2]-36)
write_byte(blood_small[random_num(0,6)]) // index
message_end()
}
}
//---------------[BLOOD DECALS BIG RED]---------------
static fx_blood_large_red(origin[3],num) //red blood decals [ big]
{
// Blood decals
static const blood_large[2] = {204,205}
// Large splash
for (new i = 0; i < num; i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(116) //TE_WORLDDECAL from const.h
write_coord(origin[0]+random_num(-50,50))
write_coord(origin[1]+random_num(-50,50))
write_coord(origin[2]-36)
write_byte(blood_large[random_num(0,1)]) // index
message_end()
}
}
//---------------[BLOOD DECALS SMALL GREEN]---------------
static fx_blood_small_green(origin[3],num) //green blood decals [small]
{
// Blood decals
static const blood_small[6] = {3,4,5,6,7,8}
// Small splash
for (new j = 0; j < num; j++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(116) //TE_WORLDDECAL from const.h
write_coord(origin[0]+random_num(-65,65))
write_coord(origin[1]+random_num(-65,65))
write_coord(origin[2]-36)
write_byte(blood_small[random_num(0,5)]) // index
message_end()
}
}
//---------------[BLOOD DECALS BIG GREEN]---------------
static fx_blood_large_green(origin[3],num) //green blood decals [ big]
{
// Blood decals
static const blood_large[2] = {26,27}
// Large splash
for (new i = 0; i < num; i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(116) //TE_WORLDDECAL from const.h
write_coord(origin[0]+random_num(-45,45))
write_coord(origin[1]+random_num(-45,45))
write_coord(origin[2]-36)
write_byte(blood_large[random_num(0,1)]) // index
message_end()
}
}
//---------------[GRANADE EXPLOTION BODYPARTS MODELS]---------------
static fx_gib_explode(origin[3])
{
new flesh[3]
flesh[0] = mdl_gib_flesh
flesh[1] = mdl_gib_meat
flesh[2] = mdl_gib_legbone
// Gib explosion
// Head
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(106) //TR_MODEL
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(mdl_gib_head)
write_byte(0) // bounce
write_byte(500) // life
message_end()
// Spine
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(106)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(mdl_gib_spine)
write_byte(0) // bounce
write_byte(500) // life
message_end()
// Lung
for(new i = 0; i < random_num(1,2); i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(106)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(mdl_gib_lung)
write_byte(0) // bounce
write_byte(500) // life
message_end()
}
// Parts, 5 times
for(new i = 0; i < 5; i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(106)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(flesh[random_num(0,2)])
write_byte(0) // bounce
write_byte(500) // life
message_end()
}
}
//===========================================[FUNCTIONS]===========================================
//---------------[PLAYER HIT BLOOD]---------------
public dmg_blood()
{
new id=read_data(0)
if(is_user_alive(id))
{
new origin[3]
get_user_origin(id,origin)
if(ispredator[id]==0)
{
fx_blood_red(origin)
fx_blood_small_red(origin,3)
}
if(ispredator[id]!=0)
{
fx_blood_green(origin)
fx_blood_small_green(origin,3)
}
}
}
//---------------[PLAYER BLEED ON LOW HP]---------------
public lowhp_blood()
{
new iPlayer, iPlayers[32], iNumPlayers, iOrigin[3]
get_players(iPlayers,iNumPlayers,"a")
for (new i = 0; i < iNumPlayers; i++)
{
iPlayer = iPlayers[i]
if(get_user_health(iPlayer)< 20)
{
if (ispredator[iPlayer]==0)
{
get_user_origin(iPlayer,iOrigin)
fx_bleed_red(iOrigin)
fx_blood_small_red(iOrigin,5)
}
if (ispredator[iPlayer]!=0)
{
get_user_origin(iPlayer,iOrigin)
fx_bleed_green(iOrigin)
fx_blood_small_green(iOrigin,5)
}
}
}
}
//---------------[DEATH BLOOD EFFECTS (HEADSHOT/GRANADE EXPLOTION)]---------------
public death_blood()
{
new iOrigin[3]
new sWeapon[32]
new id = read_data(2)
new iHeadshot = read_data(3)
read_data(4,sWeapon,31)
if (iHeadshot)
{
if(ispredator[id]==0)
{
get_user_origin(id,iOrigin)
fx_headshot_red(iOrigin)
fx_blood_large_red(iOrigin,2)
fx_blood_small_red(iOrigin,5)
}
if(ispredator[id]!=0)
{
get_user_origin(id,iOrigin)
fx_headshot_green(iOrigin)
fx_blood_large_green(iOrigin,2)
fx_blood_small_green(iOrigin,5)
}
}
else if (equal(sWeapon,"grenade"))
{
if(ispredator[id]==0)
{
get_user_origin(id,iOrigin)
// Effects
fx_blood_red(iOrigin)
fx_blood_red(iOrigin)
fx_blood_red(iOrigin)
fx_bleed_red(iOrigin)
fx_bleed_red(iOrigin)
fx_headshot_red(iOrigin)
fx_trans(id,0)
fx_gib_explode(iOrigin)
fx_blood_large_red(iOrigin,10)
fx_blood_small_red(iOrigin,25)
// Hide body
iOrigin[2] = iOrigin[2]-20
set_user_origin(id,iOrigin)
}
if(ispredator[id]!=0)
{
get_user_origin(id,iOrigin)
// Effects
fx_blood_green(iOrigin)
fx_blood_green(iOrigin)
fx_blood_green(iOrigin)
fx_bleed_green(iOrigin)
fx_bleed_green(iOrigin)
fx_headshot_green(iOrigin)
fx_trans(id,0)
fx_gib_explode(iOrigin)
fx_blood_large_green(iOrigin,10)
fx_blood_small_green(iOrigin,25)
// Hide body
iOrigin[2] = iOrigin[2]-20
set_user_origin(id,iOrigin)
}
}
if(ispredator[id]==0)
{
fx_blood_small_red(iOrigin,12)
fx_blood_large_red(iOrigin,5)
}
if(ispredator[id]!=0)
{
fx_blood_small_green(iOrigin,12)
fx_blood_large_green(iOrigin,5)
}
}
//---------------[AUTO BIND SYSTEM]---------------
public func_autobind(id)
{
client_cmd(id,"bind p pcview")
client_cmd(id,"bind mouse3 ppfire")
console_print(id,"Key Defaults are bound. ENJOY!")
return PLUGIN_HANDLED
}
//---------------[BODY HEAT SYSTEM CONNECT]---------------
public client_connect(id)
{
onoroff[id] = 0
ispredator[id]=0
plasma[id]=0
}
//---------------[BODY HEAT AND LIGHTSIGHT SYSTEM]---------------
public func_bodyheat()
{
new players[32]
new pnum,origin[3]
new idheat,id
get_players(players,pnum,"a")
for (new i = 0; i < pnum; i++)
{
id = players[i]
if(ispredator[id]!=0 && ispredator[id]!=5)
{
if (onoroff[id]==1 && is_user_alive(id))
{
for (new j = 0; j < pnum; j++)
{
idheat = players[j]
if (idheat != id && ispredator[idheat]==0 && is_user_alive(idheat))
{
get_user_origin(idheat,origin,0)
message_begin(MSG_ONE,SVC_TEMPENTITY,origin,id)
write_byte(21)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+30)
write_short(gTrailModel)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(60)
write_byte(1)
write_byte(250) // red
write_byte(60) // green
write_byte(0) // blue
write_byte(255) //brightness
write_byte(0)
message_end()
}
}
}
if (onoroff[id]==2 && is_user_alive(id))
{
for (new j = 0; j < pnum; j++)
{
idheat = players[j]
if (idheat != id && ispredator[idheat]!=0 && is_user_alive(idheat))
{
get_user_origin(idheat,origin,0)
message_begin(MSG_ONE,SVC_TEMPENTITY,origin,id)
write_byte(21)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+30)
write_short(gTrailModel)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(60)
write_byte(1)
write_byte(255) // red
write_byte(255) // green
write_byte(255) // blue
write_byte(255) //brightness
write_byte(0)
message_end()
}
}
}
}
}
}
//=======================================================================================
//======================================[Info Area]======================================
//=======================================================================================
//---------------[Predator Help]---------------
public func_predhelp(id)
{
show_motd(id,"/addons/amxmodx/plugins/predhelp.txt","Predator Help")
}
//---------------[Predator Cost Check]---------------
public func_predcost(id)
{
new msg[101]
format(msg,100,"^x01You need ^x04%d frags ^x01 and ^x04%d money ^x01 to be a predator.",get_cvar_num("admin_frags_predator"),get_cvar_num("admin_money_predator"))
message_begin(MSG_ONE,MsgSayText,{0,0,0},id)
write_byte(id)
write_string(msg)
message_end()
}
//---------------[Predator On or Off check]---------------
public func_predon(id)
{
new msg[101]
if(get_cvar_num("admin_enable_predator")==1)
{
format(msg,100,"^x01Predator Mode is ^x03 On.")
}
if(get_cvar_num("admin_enable_predator")==0)
{
format(msg,100,"^x01Predator Mode is ^x03 Off.")
}
message_begin(MSG_ONE,MsgSayText,{0,0,0},id)
write_byte(id)
write_string(msg)
message_end()
}