Hi guys.
This plugin for ZP.
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <zombieplague>
#define TASK_AURA 27000
new g_item, ElectroSpr, g_electro[33], g_Weapon[33], cvar_aura_colors[3]
new bool:g_electroweapon[33]
new g_iMaxPlayers, g_msgScreenFade
new cvar_aura_size
const UNIT_SECOND = (1<<12)
public plugin_init()
{
register_plugin("Elektrik Mp5", "1.2", "Zapdos1")
g_item = zp_register_extra_item("Electro MP5", 15, ZP_TEAM_HUMAN)
cvar_aura_size = register_cvar("zp_aura_size", "50")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
cvar_aura_colors[0] = register_cvar("zp_aura_red", "255")
cvar_aura_colors[1] = register_cvar("zp_aura_green", "255")
cvar_aura_colors[2] = register_cvar("zp_aura_blue", "0")
g_iMaxPlayers = get_maxplayers()
g_msgScreenFade = get_user_msgid("ScreenFade")
}
public plugin_precache()
{
precache_model("models/zombie_plague/v_electro.mdl");
precache_sound("zombie_plague/spark6.wav");
ElectroSpr = precache_model("sprites/spark1.spr");
}
public event_round_start()
{
for (new i = 1; i <= g_iMaxPlayers; i++)
{
remove_task(i + TASK_AURA)
if (!is_user_connected(i))
continue
if (g_electroweapon[i])
{
g_electroweapon[i] = false
}
if(g_electro[i])
{
g_electro[i] = false
}
}
}
public zp_extra_item_selected(player, itemid)
{
if (itemid == g_item)
{
client_print(player, print_chat, "You bought an Electro Weapon!")
g_electroweapon[player] = true
strip_user_weapons(player)
give_item(player, "weapon_mp5navy")
cs_set_user_bpammo(player, CSW_MP5NAVY, 150)
set_hudmessage(255, 255, 0, -1.0, -1.0, 0, 6.0, 5.0)
show_hudmessage(player, "Electro Power activated!")
set_task(0.1, "electro_aura", player + TASK_AURA, _, _, "b")
set_user_rendering (player, kRenderFxGlowShell, 255, 255, 0, kRenderTransAlpha, 255)
}
}
public zp_user_infected_post(infected, infector)
{
remove_task(infected + TASK_AURA)
if (g_electroweapon[infected])
{
g_electroweapon[infected] = false
}
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(attacker) || !is_user_connected(victim) || attacker == victim || !attacker)
return HAM_IGNORED
static Float:originF[3]
pev(victim, pev_origin, originF)
static originF2[3]
get_user_origin(victim, originF2)
if (g_electroweapon[attacker] && get_user_weapon(attacker) == CSW_MP5NAVY)
{
ElectroEffect(victim)
ElectroRing(originF)
ElectroSound(originF2)
}
if(zp_get_user_nemesis(victim))
{
return HAM_IGNORED
}
return PLUGIN_HANDLED;
}
public event_CurWeapon(id)
{
if (!is_user_alive(id))
return PLUGIN_CONTINUE
g_Weapon[id] = read_data(2)
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
return PLUGIN_CONTINUE
if(!g_electroweapon[id] || g_Weapon[id] != CSW_MP5NAVY)
return PLUGIN_CONTINUE
entity_set_string(id, EV_SZ_viewmodel, "models/zombie_plague/v_electro.mdl")
return PLUGIN_CONTINUE
}
public fw_PlayerPreThink(id)
{
if (!is_user_alive(id))
return;
}
public ElectroSound(iOrigin[3])
{
new Entity = create_entity("info_target")
new Float:flOrigin[3]
IVecFVec(iOrigin, flOrigin)
entity_set_origin(Entity, flOrigin)
emit_sound(Entity, CHAN_WEAPON, "zombie_plague/spark6.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
remove_entity(Entity)
}
ElectroRing(const Float:originF3[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF3, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF3[0])
engfunc(EngFunc_WriteCoord, originF3[1])
engfunc(EngFunc_WriteCoord, originF3[2])
engfunc(EngFunc_WriteCoord, originF3[0])
engfunc(EngFunc_WriteCoord, originF3[1])
engfunc(EngFunc_WriteCoord, originF3[2]+100.0)
write_short(ElectroSpr)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(41)
write_byte(138)
write_byte(255)
write_byte(200)
write_byte(0)
message_end()
}
public ElectroEffect(id)
{
if (!is_user_alive(id) || !zp_get_user_zombie(id) || g_electro[id])
return;
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id)
write_short(UNIT_SECOND*1)
write_short(UNIT_SECOND*1)
write_short(0x0000)
write_byte(255)
write_byte(255)
write_byte(0)
write_byte(100)
message_end()
#if defined HANDLE_MODELS_ON_SEPARATE_ENT
fm_set_rendering(g_ent_playermodel[id], kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 25)
#else
fm_set_rendering(id, kRenderFxGlowShell, 250, 250, 0, kRenderNormal, 25)
#endif
g_electro[id] = true
set_task(5.0, "stopelectro", id)
}
public stopelectro(id)
{
if (!is_user_alive(id) || !g_electro[id])
return;
g_electro[id] = false;
#if defined HANDLE_MODELS_ON_SEPARATE_ENT
fm_set_rendering(g_ent_playermodel[id])
#else
fm_set_rendering(id)
#endif
}
public client_putinserver(id)
{
g_electroweapon[id] = false
g_electro[id] = false
}
public client_disconnect(id)
{
g_electroweapon[id] = false
g_electro[id] = false
remove_task(id + TASK_AURA)
}
public electro_aura(id)
{
id -= TASK_AURA
if (!is_user_alive(id))
return
static Float:FOrigin[3]
pev(id, pev_origin, FOrigin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin, 0)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, FOrigin[0])
engfunc(EngFunc_WriteCoord, FOrigin[1])
engfunc(EngFunc_WriteCoord, FOrigin[2])
write_byte(get_pcvar_num(cvar_aura_size))
write_byte(get_pcvar_num(cvar_aura_colors[0]))
write_byte(get_pcvar_num(cvar_aura_colors[1]))
write_byte(get_pcvar_num(cvar_aura_colors[2]))
write_byte(2)
write_byte(0)
message_end()
}