- Código:
#include <amxmodx>
#include <fakemeta>
#include <zombie_plague_advance>
native zp_get_user_berserker(id)
new const zclass_name[] = "Zombie Hunter"
new const zclass_info[] = "[Super Pulo CTRL + E] "
new const zclass_model[] = "class_hunter"
new const zclass_clawmodel[] = "v_knife_zombie_hunter.mdl"
const zclass_health = 2800
const zclass_speed = 290
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0
new const leap_sound[4][] = { "left_4_dead2/hunter_jump.wav", "left_4_dead2/hunter_jump1.wav", "left_4_dead2/hunter_jump2.wav", "left_4_dead2/hunter_jump3.wav" }
new g_hunter
new Float:g_lastleaptime[33]
new cvar_force, cvar_cooldown
#define PLUG_VERSION "0.2"
#define PLUG_AUTHOR "DJHD!"
public plugin_precache()
{
g_hunter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
static i
for(i = 0; i < sizeof leap_sound; i++)
precache_sound(leap_sound[i])
}
public plugin_init()
{
register_plugin("[ZP] Zombie Class: Hunter L4D2 Zombie", PLUG_VERSION, PLUG_AUTHOR)
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
cvar_force = register_cvar("zp_hunter_jump_force", "900")
cvar_cooldown = register_cvar("zp_hunter_jump_cooldown", "8.0")
static szCvar[30]
formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTHOR)
register_cvar("zp_zclass_hunterl4d2", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
}
public zp_user_infected_post(id, infector)
{
if(zp_get_user_zombie_class(id) == g_hunter)
{
if(zp_get_user_nemesis(id))
return
if(zp_get_user_berserker(id))
return
if(zp_get_user_sniper(id))
return
if(zp_get_user_assassin(id))
return
if(zp_get_user_survivor(id))
return
if(!zp_get_user_zombie(id)) // Para Nao Bugar A Classe Quando Estiver de Humano
return
client_printcolor(id, "/g[ZP]/y Para Usar o Poder do Super Pulo Pressione /g-/t ^"CTRL + E^"")
}
}
public fw_PlayerPreThink(id)
{
if(!is_user_alive(id))
return
if(zp_get_user_nemesis(id))
return
if(zp_get_user_berserker(id))
return
if(zp_get_user_sniper(id))
return
if(zp_get_user_assassin(id))
return
if(zp_get_user_survivor(id))
return
if(!zp_get_user_zombie(id)) // Para Nao Bugar A Classe Quando Estiver de Humano
return
if(is_user_connected(id))
{
if (allowed_hunterjump(id))
{
static Float:velocity[3]
velocity_by_aim(id, get_pcvar_num(cvar_force), velocity)
set_pev(id, pev_velocity, velocity)
emit_sound(id, CHAN_STREAM, leap_sound[random_num(0, sizeof leap_sound -1)], 1.0, ATTN_NORM, 0, PITCH_HIGH)
g_lastleaptime[id] = get_gametime()
}
}
}
allowed_hunterjump(id)
{
if (!zp_get_user_zombie(id) && zp_get_user_nemesis(id) && zp_get_user_assassin(id) && zp_get_user_sniper(id) && zp_get_user_berserker(id) && zp_get_user_survivor(id))
return false
if (zp_get_user_zombie_class(id) != g_hunter)
return false
if (!((pev(id, pev_flags) & FL_ONGROUND) && (pev(id, pev_flags) & FL_DUCKING)))
return false
static buttons
buttons = pev(id, pev_button)
if (!(buttons & IN_USE) && !is_user_bot(id))
return false
static Float:cooldown
cooldown = get_pcvar_float(cvar_cooldown)
if (get_gametime() - g_lastleaptime[id] < cooldown)
return false
return true
}
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "/g", "^4")
replace_all(msg, 190, "/y", "^1")
replace_all(msg, 190, "/t", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Não Ira Buga Apenas
Humano,Berserker,Sniper,Assassin,Nemesis e Survivor
Última edição por Dexter em 11/12/2013, 5:27 pm, editado 2 vez(es)