/*================================================================================
Poison Zombie
================================================================================*/
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
#define RADIUS
new g_zclasspoison
new g_iExplo
new cvar_speed
new g_MaxPlayers
new const g_SoundBombExplode [ ] [ ] = { "biohazard/zombi_bomb_exp.wav" }
// Zombie Attributes
new const zclass_name[] = "Poison Zombie" // name
new const zclass_info[] = "Khi Chet Se Lam Human Vang Xa" // description
new const zclass_model[] = "bio_poison2" // model
new const zclass_clawmodel[] = "v_poison.mdl" // claw model
const zclass_health = 1000 // health
const zclass_speed = 230 // speed
const Float:zclass_gravity = 1.0 // gravity
const Float:zclass_knockback = 1.0 // knockback
public plugin_init() {
register_plugin("[ZP] Class: Poison Zombie","1.0","Sophia - Dias")
zp_get_user_first_zombie(id) ? plugin_init2() : pause("ad")
}
public plugin_precache()
{
// Register the new class and store ID for reference
g_zclasspoison = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
g_iExplo = precache_model ( "sprites/zombiebomb_exp.spr")
new i
for ( i = 0; i < sizeof g_SoundBombExplode; i++ )
precache_sound ( g_SoundBombExplode [ i ] )
}
public plugin_init2()
{
cvar_speed = register_cvar ( "zp_class_poison_kb", "5000" )
g_MaxPlayers = get_maxplayers ( )
}
public bacon_zombie_killed(victim)
{
if (!zp_user_infected_post(victim) || zp_set_user_zombie_class(victim) != g_zclass)
return HAM_IGNORED;
if(zp_get_user_zombie_class(victim) == g_zclass)
jumping_explode (victim)
}
public jumping_explode ( victim )
{
if ( victim < 0 )
return
static Float:flOrigin [ 3 ]
pev ( victim, pev_origin, flOrigin )
engfunc ( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0 )
write_byte ( TE_SPRITE )
engfunc ( EngFunc_WriteCoord, flOrigin [ 0 ] )
engfunc ( EngFunc_WriteCoord, flOrigin [ 1 ] )
engfunc ( EngFunc_WriteCoord, flOrigin [ 2 ] + 45.0 )
write_short ( g_iExplo )
write_byte ( 35 )
write_byte ( 186 )
message_end ( )
emit_sound ( victim, CHAN_WEAPON, g_SoundBombExplode[random_num(0, sizeof g_SoundBombExplode-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
for ( new i = 1; i < g_MaxPlayers; i++ )
{
if ( !is_user_alive ( i ) )
continue
// bugfix!!!!
if ( zp_user_infected_post ( i ) )
continue
// Debug!
//client_print ( iOwner, print_chat, "Owner of Smoke Grenade!" )
new Float:flVictimOrigin [ 3 ]
pev ( i, pev_origin, flVictimOrigin )
new Float:flDistance = get_distance_f ( flOrigin, flVictimOrigin )
if ( flDistance <= RADIUS )
{
static Float:flSpeed
flSpeed = get_pcvar_float ( cvar_speed )
static Float:flNewSpeed
flNewSpeed = flSpeed * ( 1.0 - ( flDistance / RADIUS ) )
static Float:flVelocity [ 3 ]
get_speed_vector ( flOrigin, flVictimOrigin, flNewSpeed, flVelocity )
set_pev ( i, pev_velocity,flVelocity )
}
}
}