PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta_util>
#include <fun>
#define PLUGIN "[HNS - ITEM]: Campo De Fuerza"
#define VERSION "v2.0"
#define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.
#define CAMPO_ROUND_NAME "Campo De Fuerza"
#define CAMPO_TIME_NAME "Campo De Fuerza"
/*=============================[Plugin Customization]=============================*/
#define CAMPO_TASK
//#define CAMPO_ROUND
//#define RANDOM_COLOR
#define ONE_COLOR
new const NADE_TYPE_CAMPO = 4367
#if defined ONE_COLOR
new Float:CampoColors[3] = { 0.0 , 0.0 , 255.0 }
#endif
#define PRICE 7000
new VIEW_MODEL[] = "models/campo/v_auragren.mdl"
new const model[] = "models/campo/aura8.mdl"
//new const w_model[] = "models/w_smokegrenade.mdl"
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const entclas[] = "campo_grenade_hielo"
new g_trailSpr, g_SayText
new bool:g_buy_bomb[33]
new Glowx
/*=============================[End Customization]=============================*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
register_forward(FM_SetModel, "fw_SetModel")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_touch(entclas, "player", "entity_touch")
register_event("CurWeapon", "Event_CurWeapon", "be","1=1")
g_SayText = get_user_msgid("SayText")
register_clcmd("say /hielo", "clcmd_campo")
}
public plugin_natives()
register_native("hns_campo_hielo", "native_campo_hielo", 1)
public native_campo_hielo(id)
g_buy_bomb[id] = true
public clcmd_campo2(id)
{
g_buy_bomb[id] = true
}
public clcmd_campo(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
if(cs_get_user_money(id) < PRICE)
{
client_print(id, print_chat, "[By StorM 2.0] No tienes suficiente dinero para comprar un campo de fuerza de hielo ($%d)", PRICE)
return PLUGIN_HANDLED;
}
g_buy_bomb[id] = true
fm_give_item(id, "weapon_smokegrenade")
cs_set_user_money(id, cs_get_user_money(id) - PRICE)
return PLUGIN_CONTINUE;
}
public fw_PlayerSpawn_Post(id)
{
if(!is_user_connected(id))
return;
}
public event_round_start() {
#if defined CAMPO_ROUND
remove_entity_name(entclas)
#endif
}
public plugin_precache() {
g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
engfunc(EngFunc_PrecacheModel, model)
//engfunc(EngFunc_PrecacheModel, w_model)
precache_model(VIEW_MODEL)
Glowx = precache_model("sprites/blueflare1.spr")
}
public Event_CurWeapon(id)
{
new weaponID = read_data(2)
if(weaponID != CSW_SMOKEGRENADE)
return PLUGIN_CONTINUE
if(!g_buy_bomb[id])
return PLUGIN_CONTINUE;
entity_set_string(id, EV_SZ_viewmodel, VIEW_MODEL)
return PLUGIN_CONTINUE
}
public fw_ThinkGrenade(entity) {
if(!pev_valid(entity)) return HAM_IGNORED
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if (dmgtime > get_gametime())
return HAM_IGNORED
if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
{
g_buy_bomb[pev(entity, pev_owner)] = false
crear_ent(entity)
remove_entity(entity)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public fw_SetModel(entity, const model[]) {
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if (dmgtime == 0.0)
return FMRES_IGNORED;
new id = pev(entity, pev_owner)
if(g_buy_bomb[id])
{
if (equal(model[7], "w_sm", 4))
{
fm_set_rendering(entity, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 16)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(000) // r
write_byte(255) // g
write_byte(255) // b
write_byte(500) // brightness
message_end()
set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
//entity_set_model(entity, w_model)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public crear_ent(ent)
{
// Create entitity
new iEntity = create_entity("info_target")
if(!is_valid_ent(iEntity))
return PLUGIN_HANDLED
new Float: Origin[3]
entity_get_vector(ent, EV_VEC_origin, Origin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
write_byte(TE_SPRITETRAIL)
engfunc(EngFunc_WriteCoord, Origin[0]) // X
engfunc(EngFunc_WriteCoord, Origin[1]) // Y
engfunc(EngFunc_WriteCoord, Origin[2]) // Z
engfunc(EngFunc_WriteCoord, Origin[0]) // X
engfunc(EngFunc_WriteCoord, Origin[1]) // Y
engfunc(EngFunc_WriteCoord, Origin[2]) // Z
write_short(Glowx) //Sprite
write_byte(100) //amount
write_byte(1) //life
write_byte(2) //width
write_byte(60) //speed
write_byte(60) //speed
message_end()
entity_set_string(iEntity, EV_SZ_classname, entclas)
entity_set_vector(iEntity,EV_VEC_origin, Origin)
entity_set_model(iEntity,model)
entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
entity_set_size(iEntity, Float: {-100.0, -100.0, -100.0}, Float: {100.0, 100.0, 100.0})
entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
entity_set_float(iEntity, EV_FL_renderamt, 50.0)
entity_set_int(iEntity, EV_INT_iuser4, get_user_team(entity_get_edict(ent, EV_ENT_owner)))
#if defined RANDOM_COLOR
if(is_valid_ent(iEntity))
{
new Float:vColor[3]
vColor[0] = 0
vColor[1] = 0
vColor[2] = 255
entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
}
#endif
#if defined ONE_COLOR
entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
#endif
#if defined CAMPO_TASK
set_task(15.0, "DeleteEntity", iEntity)
#endif
return PLUGIN_CONTINUE;
}
public entity_touch(ent, id) {
if(entity_get_int(ent, EV_INT_iuser4) != get_user_team(id))
{
new Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power = 6.0
pev(ent, pev_origin, pos_ptr)
pev(id, pev_origin, pos_ptd)
for(new i = 0; i < 3; i++)
{
pos_ptd[i] -= pos_ptr[i]
pos_ptd[i] *= push_power
}
set_pev(id, pev_velocity, pos_ptd)
set_pev(id, pev_impulse, pos_ptd)
if(callfunc_begin("freeze_player","frostnades2.amxx") == 1)
{
callfunc_push_int(id);
callfunc_push_int(pev(entity_get_int(ent, EV_INT_iuser4),pev_team));
callfunc_end();
}
if(callfunc_begin("chill_player","frostnades2.amxx") == 1)
{
callfunc_push_int(id);
callfunc_push_int(pev(entity_get_int(ent, EV_INT_iuser4),pev_team));
callfunc_end();
}
}
}
public remove_ent() {
remove_entity_name(entclas)
}
public DeleteEntity( entity ) // Thanks xPaw For The Code =D
if( is_valid_ent( entity ) )
remove_entity( entity );
stock Color(const id, const input[], any:...)
{
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")
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
write_byte(id)
write_string(msg)
message_end()
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1034\\ f0\\ fs16 \n\\ par }
*/