PHP Code:
#include <amxmodx>
#include <zombie_plague_advance>
#include <fakemeta_util>
new off
new const zclass_name[] = { "Radioactive" } // name
new const zclass_info[] = { "\y[Infects in]\r[touch]" } // description
new const zclass_model[] = { "zombie_Radioactive" } // model
new const zclass_clawmodel[] = { "v_Radioactive.mdl" } // claw model
const zclass_health = 2000 // health
const zclass_speed = 260 // speed
const Float:zclass_gravity = 0.8 // gravity
const Float:zclass_knockback = 0.6 // knockback
new g_msgDeathMsg,g_msgScoreAttrib, g_msgScoreInfo
// Class IDs
new g_zclassid1
new cvar_ammoinfect
public plugin_init()
{
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
register_forward(FM_Touch, "fwd_touch")
g_msgDeathMsg = get_user_msgid("DeathMsg")
g_msgScoreAttrib = get_user_msgid("ScoreAttrib")
g_msgScoreInfo = get_user_msgid("ScoreInfo")
cvar_ammoinfect = get_cvar_pointer("zp_zombie_infect_reward")
}
public plugin_precache()
{
register_plugin("[ZP] Zombie Classe: Radioactive", "1.0", "jr_acn [Junin]")
g_zclassid1 = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}
public zp_user_infected_post(id, infector)
{
if(!zp_get_user_zombie(id))
return;
if(zp_get_user_nemesis(id))
return;
if(zp_get_user_zombie_class(id) != g_zclassid1)
return ;
client_print(id,print_chat,"[a[M]ir] You are Zombie Radioactive")
}
public fw_PlayerPreThink(id)
{
if(!is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id))
return PLUGIN_CONTINUE;
if(zp_get_user_zombie_class(id) != g_zclassid1)
return PLUGIN_CONTINUE;
fm_set_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 5);
return PLUGIN_CONTINUE
}
public fwd_touch(blocker, id)
{
if(!is_user_alive(blocker) || !is_user_alive(id) || !zp_get_user_zombie(id)|| zp_get_user_nemesis(id) || zp_get_user_zombie(blocker) || zp_get_user_nemesis(blocker) || zp_get_user_assassin(blocker) || zp_get_user_survivor(blocker)|| zp_get_user_sniper(blocker)|| is_user_bot(id) || zp_get_user_last_human(blocker) || zp_is_plague_round() || zp_is_lnj_round())
return FMRES_IGNORED
if(zp_get_user_zombie_class(id) != g_zclassid1)
return FMRES_IGNORED
zp_infect_user(blocker, 0, 1, 0)
if(off)
return FMRES_IGNORED
SendDeathMsg(id, blocker)
FixDeadAttrib(blocker)
UpdateFrags(id, blocker, 1, 1, 1)
zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(cvar_ammoinfect))
return PLUGIN_CONTINUE
}
public SendDeathMsg(attacker, victim)
{
message_begin(MSG_BROADCAST, g_msgDeathMsg)
write_byte(attacker) // killer
write_byte(victim) // victim
write_byte(1) // headshot flag
write_string("infection") // killer's weapon
message_end()
}
public FixDeadAttrib(id)
{
message_begin(MSG_BROADCAST, g_msgScoreAttrib)
write_byte(id) // id
write_byte(0) // attrib
message_end()
}
public UpdateFrags(attacker, victim, frags, deaths, scoreboard)
{
set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
fm_set_user_deaths(victim, fm_get_user_deaths(victim) + deaths)
if (scoreboard)
{
message_begin(MSG_BROADCAST, g_msgScoreInfo)
write_byte(attacker) // id
write_short(pev(attacker, pev_frags)) // frags
write_short(fm_get_user_deaths(attacker)) // deaths
write_short(0) // class?
write_short(fm_get_user_team(attacker)) // team
message_end()
message_begin(MSG_BROADCAST, g_msgScoreInfo)
write_byte(victim) // id
write_short(pev(victim, pev_frags)) // frags
write_short(fm_get_user_deaths(victim)) // deaths
write_short(0) // class?
write_short(fm_get_user_team(victim)) // team
message_end()
}
}
public zp_round_started()
{
off = false
}
stock fm_set_user_deaths(id, value)
{
set_pdata_int(id, 444, value, 5)
}
stock fm_get_user_deaths(id)
{
return get_pdata_int(id, 444, 5)
}
stock fm_get_user_team(id)
{
return get_pdata_int(id, 114, 5)
}
public zp_round_ended()
{
off = true
}