PHP Code:
#include <amxmodx>
#include <engine>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
#include <biohazard>
#include <fakemeta_util>
#define MIN -10.0
#define MAX 10.0
#define RADIUS 290.0
#define DAMAGE 2.0
#define V_MODEL "models/v_grenade_firee.mdl"
#define CRAZY_CODE 5646489
const TASK_BURN = 1000
new g_frostexp
new g_frost_gibs;
new gMsgScreenShake , g_iHookedDeathMsg, gMsgScreenFade, grenadetrail
new g_flameSpr;
new yaniyonfuatabi[33] = 0;
new const sprite_grenade_fire[] = "sprites/flame.spr"
public plugin_init()
{
register_plugin("Behemoth Grenade" , "2.0" , "maTT_hArdy [T.Knight EDIT]!")
register_cvar("behemot", "hardy", FCVAR_SERVER|FCVAR_SPONLY)
register_forward(FM_SetModel, "fw_SetModel")
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
RegisterHam(Ham_Item_Deploy,"weapon_hegrenade", "fw_Item_Deploy_Post", 1)
RegisterHam( Ham_Killed, "player", "player_dead" )
gMsgScreenShake = get_user_msgid("ScreenShake");
gMsgScreenFade = get_user_msgid("ScreenFade");
}
public plugin_precache()
{
grenadetrail = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr")
engfunc(EngFunc_PrecacheModel, V_MODEL)
engfunc(EngFunc_PrecacheSound, "zombi_bomb_exp.wav")
g_frostexp = precache_model("sprites/fire_kurukafa.spr")
g_frost_gibs = precache_model("sprites/firebomb_oskolok.spr")
g_flameSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_fire)
}
public client_putinserver(id)
{
new g_Ham_Bot
if(!g_Ham_Bot && is_user_bot(id))
{
g_Ham_Bot = 1
set_task(0.1, "Do_RegisterHam_Bot", id)
}
}
public Do_RegisterHam_Bot(id)
{
RegisterHamFromEntity(Ham_Killed, id, "player_dead")
}
public fw_Item_Deploy_Post(weapon_ent)
{
static id; id = fm_cs_get_weapon_ent_owner(weapon_ent)
if (!pev_valid(id))
return
set_pev(id, pev_viewmodel2, V_MODEL)
}
public fw_ThinkGrenade(entity)
{
// Invalid entity
if (!pev_valid(entity)) return HAM_IGNORED;
if(pev(entity, pev_iuser2) != CRAZY_CODE) return HAM_IGNORED;
new Float:dmgtime;
pev(entity,pev_dmgtime,dmgtime);
if(dmgtime > get_gametime()) return HAM_IGNORED;
fire_explode(entity)
return HAM_SUPERCEDE;
}
public MsgDeathMsg( ) {
set_msg_arg_int( 3, ARG_BYTE, 0 );
set_msg_arg_string( 4, "grenade" );
return PLUGIN_CONTINUE;
}
fire_explode(ent)
{
// Get origin
static Float:originF[3], Owner
pev(ent, pev_origin, originF)
Owner = pev(ent, pev_owner)
// Make the explosion
yeni_balast_ates(originF)
// Fire nade explode sound
emit_sound(ent, CHAN_WEAPON, "zombi_bomb_exp.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
static Float:PlayerOrigin[3]
static Float:distance
for(new i = 0; i < get_maxplayers(); i++)
{
if(!is_user_alive(i))
continue
if(!is_user_connected(Owner))
continue
if(cs_get_user_team(i) == cs_get_user_team(Owner))
continue
//if(!get_cvar_num("mp_friendlyfire") && cs_get_user_team(i) == cs_get_user_team(Owner) && i != Owner)
//continue
pev(i, pev_origin, PlayerOrigin)
distance = get_distance_f(originF, PlayerOrigin)
if(distance > RADIUS)
continue
new Float:pengurang = distance / RADIUS
new Float:pengurang2 = 1.0 - pengurang
new Float:flDamage = 100.0 * pengurang2
new Float:flDamage_final = flDamage + (flDamage * DAMAGE)
yaniyonfuatabi[i] = 1
set_task(0.2, "yak", i)
if (task_exists(i+56213)) remove_task(i+56213)
set_task(10.0, "RemoveGlowShell", i+56213)
//playerlight(i)
crazy2(i)
set_task(0.5,"crazy",i+231687,"",0,"a",20)
g_iHookedDeathMsg = register_message( get_user_msgid("DeathMsg"), "MsgDeathMsg" );
ExecuteHamB( Ham_TakeDamage, i, ent, Owner, flDamage_final, DMG_GENERIC );
if( g_iHookedDeathMsg )
{
unregister_message( get_user_msgid("DeathMsg"), g_iHookedDeathMsg );
g_iHookedDeathMsg = 0;
}
}
// Get rid of the grenade
set_pev(ent, pev_iuser2, 0)
engfunc(EngFunc_RemoveEntity, ent)
}
public yak(kisi)
{
if (!is_user_zombie(kisi)) return;
if (yaniyonfuatabi[kisi] == 1){
//CSmiLeFaCe
static Float:originF[3]
pev(kisi, pev_origin, originF)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord, originF[0]+random_float(-5.0, 5.0)) // x
engfunc(EngFunc_WriteCoord, originF[1]+random_float(-5.0, 5.0)) // y
engfunc(EngFunc_WriteCoord, originF[2]+random_float(-10.0, 10.0)) // z
write_short(g_flameSpr)
write_byte(random_num(5, 10))
write_byte(200)
message_end()
set_task(0.2, "yak", kisi)
}
}
public fw_SetModel(entity, const model[])
{//CSmiLeFaCe
// We don't care
if (strlen(model) < 8)
return;
if (model[9] == 'h' && model[10] == 'e' && model[11] == 'g' && model[12] == 'r')
{
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 244, 251, 105, kRenderNormal, 16);
set_pev(entity, pev_iuser2, CRAZY_CODE)
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(grenadetrail) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(244) // r
write_byte(251) // g
write_byte(105) // b
write_byte(200) // brightness
message_end()
}
}
public crazy(taskid)
{
new id = taskid - 231687
new Float:fVec[3];
fVec[0] = random_float(MIN , MAX);
fVec[1] = random_float(MIN , MAX);
fVec[2] = random_float(MIN , MAX);
entity_set_vector(id , EV_VEC_punchangle , fVec);
message_begin(MSG_ONE , gMsgScreenShake , {0,0,0} ,id)
write_short( 1<<14 );
write_short( 1<<14 );
write_short( 1<<14 );
message_end();
message_begin(MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id);
write_short( 1<<10 );
write_short( 1<<10 );
write_short( 1<<12 );
write_byte( random_num(0,255) );
write_byte( random_num(0,255) );
write_byte( random_num(0,255) );
write_byte( 95 );
message_end();
}
public crazy2(id)
{
new Float:fVec[3];
fVec[0] = random_float(MIN , MAX);
fVec[1] = random_float(MIN , MAX);
fVec[2] = random_float(MIN , MAX);
entity_set_vector(id , EV_VEC_punchangle , fVec);
message_begin(MSG_ONE , gMsgScreenShake , {0,0,0} ,id)
write_short( 1<<14 );
write_short( 1<<14 );
write_short( 1<<14 );
message_end();
message_begin(MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , id);
write_short( 1<<10 );
write_short( 1<<10 );
write_short( 1<<12 );
write_byte( random_num(0,255) );
write_byte( random_num(0,255) );
write_byte( random_num(0,255) );
write_byte( 95 );
message_end();
}
public Event_NewRound()
{
for(new i = 0; i < get_maxplayers(); i++)
{
if(task_exists(i+56213))
{
remove_task(i+56213)
set_normal(i)
}
if(task_exists(i+231687)) remove_task(i+231687)
}
}
public player_dead(id)
{
if(task_exists(id+56213))
{
remove_task(id+56213)
set_normal(id)
}
if(task_exists(id+231687)) remove_task(id+231687)
}
public RemoveGlowShell(taskid)
{
new id = taskid - 56213
set_normal(id)
if(task_exists(taskid)) remove_task(taskid)
}
stock set_normal(entity)
{
yaniyonfuatabi[entity] = 0;
}
yeni_balast_ates(const Float:originF[3]){
message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord, originF[0]+random_float(-5.0, 5.0))
engfunc(EngFunc_WriteCoord, originF[1]+random_float(-5.0, 5.0))
engfunc(EngFunc_WriteCoord, originF[2]+50.0)
write_short(g_frostexp)
write_byte(13) //Büyüklük
write_byte(150) //Saydamlık
message_end()
message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( TE_SPRITETRAIL )
engfunc(EngFunc_WriteCoord, originF[ 0 ]) // başlangıç
engfunc(EngFunc_WriteCoord, originF[ 1 ])
engfunc(EngFunc_WriteCoord, originF[ 2 ] + 200.0)
engfunc(EngFunc_WriteCoord, originF[ 0 ]) // hızı
engfunc(EngFunc_WriteCoord, originF[ 1 ])
engfunc(EngFunc_WriteCoord, originF[ 2 ] + 30.0)
write_short(g_frost_gibs) // sprite dosyası
write_byte(60) // kaç adet dağılacağı
write_byte(random_num(27,30))
write_byte(2)
write_byte(50)
write_byte(10)
message_end()
}
stock fm_cs_get_weapon_ent_owner(ent)
{
if (pev_valid(ent) != 2)
return -1
return get_pdata_cbase(ent, 41, 4)
}