-- 作者:CS0123456789
-- 发布时间:2017-12-13 0:33:00
-- [原创]ZP灵气插件源码(默认闪电自行修改)
#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) }
[此贴子已经被作者于2017-12-18 21:31:51编辑过]
|