
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <zombieplague>
#include <xs>
#include <Vexd_Utilities>
new lingqi[33]
new g_exploSpr,Thunder
new const sprite_grenade_ring[] = "sprites/shockwave.spr"
new const lgtning[] = "sprites/lgtning.spr"
#define ID_NVISION (taskid - TASK_NVISION)
#define ID_GUANGHUANG (taskid - TASK_GUANGHUANG)
#define ID_LINGQI (taskid - TASK_LINGQI)
#define ID_LINGQI_WAIT (taskid - TASK_LINGQI_WAIT)
enum (+= 100)
{
TASK_NVISION,
TASK_GUANGHUANG,
TASK_LINGQI,
TASK_LINGQI_WAIT
}
public plugin_init()
{
register_plugin("lingqi", "1.0", "weiji")
register_concmd("shandian", "shandian")
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
}
public fw_PlayerSpawn_Post(id)
{
remove_task(id+TASK_NVISION)
remove_task(id+TASK_GUANGHUANG)
remove_task(id+TASK_LINGQI)
lingqi[id] = 0
}
public plugin_precache()
{
g_exploSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_ring)
precache_sound( "ambience/thunder_clap.wav" )
Thunder = engfunc(EngFunc_PrecacheModel, lgtning)
}
public zp_user_infected_post( id,Infector )
{
remove_task(id+TASK_NVISION)
remove_task(id+TASK_GUANGHUANG)
remove_task(id+TASK_LINGQI)
fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 1)
lingqi[id] = 0
}
public zp_user_humanized_post ( id, Survivor )
{
remove_task(id+TASK_NVISION)
remove_task(id+TASK_GUANGHUANG)
remove_task(id+TASK_LINGQI)
fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 1)
lingqi[id] = 0
}
public shandian(id)
{
lingqi[id]=1
fm_set_rendering(id, kRenderFxGlowShell, 255, 255, 255, kRenderTransAlpha, 30)
create_blast5(id)
lqshandian(id)
remove_task(id+TASK_NVISION)
remove_task(id+TASK_GUANGHUANG)
remove_task(id+TASK_LINGQI)
set_task(0.1, "set_user_nvision", id+TASK_NVISION, _, _, "b")
set_task(3.0, "guanghuan", id+TASK_GUANGHUANG, _, _, "b")
set_task(2.5, "lqshandian", id+TASK_LINGQI, _, _, "b")
return
}
public set_user_nvision(taskid)
{
static origin[3]
get_user_origin(ID_NVISION, origin)
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, ID_NVISION)
write_byte(TE_DLIGHT) // TE id
write_coord(origin[0]) // x
write_coord(origin[1]) // y
write_coord(origin[2]) // z
write_byte(15) // radius
write_byte(255) // r
write_byte(255) // g
write_byte(255) // b
write_byte(4) // life
write_byte(0) // decay rate
message_end()
}
public lqshandian(taskid)
{
if (!is_user_alive(ID_LINGQI))
return;
if (zp_get_user_zombie(ID_LINGQI))
return;
new maxplayers = get_maxplayers();
for (new id2; id2 <= maxplayers; id2++)
{
fangwei(ID_LINGQI, id2)
}
}
public guanghuan(taskid)
{
if (zp_get_user_zombie(ID_GUANGHUANG))
return;
if (!is_user_alive(ID_GUANGHUANG))
return;
create_blast5(ID_GUANGHUANG)
}
public fangwei(id1, id2)
{
if (!is_user_alive(id1))
return
static Float:vOrigin[3], Float:vOrigin2[3]
pev(id1, pev_origin, vOrigin)
pev(id2, pev_origin, vOrigin2)
if(vector_distance(vOrigin, vOrigin2) < 240)
{
if (!is_user_alive(id2))
return
if (!zp_get_user_zombie(id2))
return
static health
health = pev(id2, pev_health)
if (health - 150 > 0)
{
set_pev(id2, pev_health, health - 150.0)
}
else
{
log_kill(id1,id2,"闪电灵气",0)
UpdateFrags(id1)
}
new vorigin[3],srco[3];
get_user_origin(id2, vorigin)
vorigin[2] -= 26
srco[0] = vorigin[0] + 150
srco[1] = vorigin[1] + 150
srco[2] = vorigin[2] + 800
set_user_rendering(id2, kRenderFxGlowShell, 255, 255, 255, kRenderNormal, 16)
emit_sound(id2 ,CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
ThunderCarabine(srco,vorigin)
ThunderCarabine(srco,vorigin)
ThunderCarabine(srco,vorigin)
zp_set_user_frozen(id2, true, 0.5)
}
}
ThunderCarabine(vec1[3],vec2[3])
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(0);
write_coord(vec1[0]);
write_coord(vec1[1]);
write_coord(vec1[2]);
write_coord(vec2[0]);
write_coord(vec2[1]);
write_coord(vec2[2]);
write_short(Thunder);
write_byte(1);
write_byte(5);
write_byte(2);
write_byte(20);
write_byte(30);
write_byte(200);
write_byte(200);
write_byte(200);
write_byte(200);
write_byte(200);
message_end();
message_begin( MSG_PVS, SVC_TEMPENTITY,vec2);
write_byte(9);
write_coord(vec2[0]);
write_coord(vec2[1]);
write_coord(vec2[2]);
message_end();
}
create_blast5(id)
{
// Smallest ring
static Float:originF[3];
pev(id,pev_origin,originF);
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+300.0) // z axis
write_short(g_exploSpr) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(255) // red5
write_byte(255) // green
write_byte(255) // blue
write_byte(255) // brightness
write_byte(0) // speed
message_end()
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));
return 1;
}
stock log_kill(killer, victim, weapon[], headshot)
{
// code from MeRcyLeZZ
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
ExecuteHamB(Ham_Killed, victim, killer, 2) // set last param to 2 if you want victim to gib
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"))
write_byte(killer)
write_byte(victim)
write_byte(headshot)
write_string(weapon)
message_end()
//
if(get_user_team(killer)!=get_user_team(victim))
set_user_frags(killer,get_user_frags(killer) +1)
if(get_user_team(killer)==get_user_team(victim))
set_user_frags(killer,get_user_frags(killer) -1)
new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]
get_user_name(killer, kname, 31)
get_user_team(killer, kteam, 9)
get_user_authid(killer, kauthid, 31)
get_user_name(victim, vname, 31)
get_user_team(victim, vteam, 9)
get_user_authid(victim, vauthid, 31)
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
kname, get_user_userid(killer), kauthid, kteam,
vname, get_user_userid(victim), vauthid, vteam, weapon)
return PLUGIN_CONTINUE;
}
stock UpdateFrags(attacker)
{
zp_set_user_ammo_packs(attacker,zp_get_user_ammo_packs(attacker) + 10)
}