PHP Code:
// **********************************************************************************
// **********************************************************************************
// *** ***
// *** AWP LASER GUN ***
// *** Codigos de xLeoNNN ***
// *** ***
// *** EDIT: By StorM 2.0 ***
// *** ***
// **********************************************************************************
// **********************************************************************************
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <HamSandWich>
#include <engine>
#include <fakemeta>
#define PLUGIN "AWP Laser"
#define VERSION "1.0"
#define AUTHOR "StorM 2.0"
new hotflarex, sprite_beam, thunder
new bool:g_lasergun[33]
new g_iMaxPlayers
const q_pPlayer = 41
const Second = ( 1<<10 )
new g_currentweapon[33]
new cvar_particles_dead
new const LaserSound[] = "weapons/electro4.wav"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /pruebalaser", "ComprarAWP")
register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_awp", "fw_AWP_PrimaryAttack_Post", 1)
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
cvar_particles_dead = register_cvar("zp_slg_particles", "1")
}
public plugin_precache()
{
hotflarex = precache_model("sprites/flare6.spr")
sprite_beam = precache_model("sprites/laserbeam.spr")
thunder = precache_model("sprites/zbeam1.spr")
precache_sound(LaserSound)
}
public event_round_start()
{
for (new i = 1; i <= g_iMaxPlayers; i++)
{
if (!is_user_connected(i))
continue
if (g_lasergun[i])
{
g_lasergun[i] = false
}
}
}
public client_putinserver(id)
{
g_lasergun[id] = false
}
public client_disconnect(id)
{
g_lasergun[id] = false
}
public ComprarAWP(id)
{
if ( !is_user_alive(id) )
{
client_print(id,print_chat, "[AMXX] Para Comprar la AWP laser, Debes estar Vivo.")
return PLUGIN_HANDLED
}
give_item(id, "weapon_awp")
g_lasergun[id] = true
return PLUGIN_HANDLED
}
public make_tracer(id)
{
if(g_lasergun[id])
{
new clip,ammo
new wpnid = get_user_weapon(id,clip,ammo)
new pteam[16]
get_user_team(id, pteam, 15)
if (wpnid == CSW_AWP)
{
new laser1[3], laser2[3]
get_user_origin(id, laser1, 1)
get_user_origin(id, laser2, 4)
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (1)
write_short(id | 0x1000)
write_coord (laser2[0])
write_coord (laser2[1])
write_coord (laser2[2])
write_short( sprite_beam )
write_byte(1)
write_byte(5)
write_byte(1)
write_byte(80)
write_byte(20)
write_byte(0)
write_byte(52)
write_byte(92) //r
write_byte(173) //g
write_byte(20) //b
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
write_coord(laser1[0])
write_coord(laser1[1])
write_coord(laser1[2])
write_byte(13)
write_byte(254)
write_byte(0)
write_byte(0)
write_byte(100)
write_byte(10)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITETRAIL)
write_coord(laser1[0])
write_coord(laser1[1])
write_coord(laser1[2])
write_coord(laser2[0])
write_coord(laser2[1])
write_coord(laser2[2])
write_short(hotflarex)
write_byte(80)
write_byte(1)
write_byte(3)
write_byte(34)
write_byte(43)
message_end()
emit_sound(id, CHAN_AUTO, LaserSound, VOL_NORM, ATTN_NORM , 0, PITCH_NORM)
}
}
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits) {
if (g_lasergun[attacker] && g_currentweapon[attacker] == CSW_AWP)
{
SetHamParamFloat(4, damage * 3.0)
client_print(attacker, print_center, "Zombie Electrocutado!")
if(get_pcvar_num(cvar_particles_dead)) {
static Float:originF[3]
pev(victim, pev_origin, originF)
dead_efect(originF)
}
}
return HAM_IGNORED
}
dead_efect(const Float:originF[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_PARTICLEBURST)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+10)
write_short(250)
write_byte(70)
write_byte(55)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_PARTICLEBURST)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+10)
write_short(250)
write_byte(70)
write_byte(55)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_PARTICLEBURST)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+10)
write_short(250)
write_byte(83)
write_byte(55)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_IMPLOSION)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+10)
write_byte(random_num(100, 300))
write_byte(20)
write_byte(3)
message_end()
}
public fw_AWP_PrimaryAttack_Post(awp)
{
static id
id = get_pdata_cbase(awp, q_pPlayer, 4)
if(is_user_connected(id) && g_lasergun[id])
{
new iEndOrigin[3]
get_user_origin(id, iEndOrigin, 3)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iEndOrigin)
write_byte(TE_EXPLOSION)
write_coord(iEndOrigin[0])
write_coord(iEndOrigin[1])
write_coord(iEndOrigin[2] +10)
write_short(thunder)
write_byte(90)
write_byte(60)
write_byte(TE_EXPLFLAG_NONE)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iEndOrigin)
write_byte(TE_EXPLOSION)
write_coord(iEndOrigin[0])
write_coord(iEndOrigin[1])
write_coord(iEndOrigin[2]+20)
write_short(thunder)
write_byte(60)
write_byte(20)
write_byte(TE_EXPLFLAG_NONE)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iEndOrigin)
write_byte(TE_EXPLOSION)
write_coord(iEndOrigin[0])
write_coord(iEndOrigin[1])
write_coord(iEndOrigin[2] +30)
write_short(thunder)
write_byte(60)
write_byte(20)
write_byte(TE_EXPLFLAG_NONE)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iEndOrigin)
write_byte(TE_BEAMCYLINDER)
write_coord(iEndOrigin[0])
write_coord(iEndOrigin[1])
write_coord(iEndOrigin[2])
write_coord(iEndOrigin[0])
write_coord(iEndOrigin[1])
write_coord(iEndOrigin[2]+200)
write_short(hotflarex)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(8)
write_byte(1)
write_byte(255)
write_byte(255)
write_byte(192)
write_byte(128)
write_byte(5)
message_end()
// TE_IMPLOSION: partículas que se reunen en un punto determinado
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iEndOrigin)
write_byte(TE_IMPLOSION) // TE id
write_coord(iEndOrigin[0]) // x
write_coord(iEndOrigin[1]) // y
write_coord(iEndOrigin[2]) // z
write_byte(130) // radius
write_byte(180) // count
write_byte(12) // duration
message_end()
}
}
public fw_PlayerSpawn_Post(id)
{
if(g_lasergun[id])
{
g_lasergun[id] = false
ham_strip_weapon(id, "weapon_awp")
}
}
stock ham_strip_weapon(id, weapon[])
{
if(!equal(weapon,"weapon_",7))
return 0
new idd = get_weaponid(weapon)
if(!idd) return 0
new wEnt
while((wEnt = find_ent_by_class(wEnt, weapon)) && entity_get_edict(wEnt, EV_ENT_owner) != id) {}
if(!wEnt) return 0
if(get_user_weapon(id) == idd)
ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt))
return 0
ExecuteHamB(Ham_Item_Kill, wEnt)
entity_set_int(id, EV_INT_weapons, entity_get_int(id, EV_INT_weapons) & ~(1<<idd))
return 1
}