#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <codmod>
#include <hamsandwich>
#include engine
#define DMG_HEGRENADE (1<<24)
new const nazwa[] = "P";
new const opis[] = "";
new const bronie = 1<<CSW_M3 | 1<<CSW_HEGRENADE | 1<<CSW_USP;
new const zdrowie = 5;
new const kondycja = 5;
new const inteligencja = 5;
new const wytrzymalosc = 15;
new bool:ma_klase[33];
new sprite_blast, sprite_white;
public plugin_init()
{
register_plugin(nazwa, "1.0", "RiviT");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
register_event("DeathMsg", "Death", "a");
}
public plugin_precache()
{
sprite_white = precache_model("sprites/white.spr") ;
sprite_blast = precache_model("sprites/dexplo.spr");
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
}
public cod_class_disabled(id)
ma_klase[id] = false;
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(damagebits & DMG_HEGRENADE && !random(2))
{
KillPlayer(this, idinflictor, idattacker, DMG_HEGRENADE)
return HAM_IGNORED
}
if(damagebits & (1<<1) && get_user_weapon(idattacker) == CSW_M3)
{
SetHamParamFloat(4, damage+5)
return HAM_HANDLED
}
return HAM_IGNORED;
}
KillPlayer(id, inflictor, attacker, damagebits)
{
static DeathMsgId
new msgblock, effect
if (!DeathMsgId) DeathMsgId = get_user_msgid("DeathMsg")
msgblock = get_msg_block(DeathMsgId)
set_msg_block(DeathMsgId, BLOCK_ONCE)
set_pdata_int(id, 75, HIT_GENERIC, 5)
set_pdata_int(id, 76, damagebits, 5)
ExecuteHamB(Ham_Killed, id, attacker, 1)
set_pev(id, pev_dmg_inflictor, inflictor)
effect = pev(id, pev_effects)
if(effect & 128) set_pev(id, pev_effects, effect-128)
set_msg_block(DeathMsgId, msgblock)
emessage_begin(MSG_ALL, DeathMsgId)
ewrite_byte(attacker)
ewrite_byte(id)
ewrite_byte(0)
ewrite_string("grenade")
emessage_end()
}
public Death()
{
new id = read_data(2);
if(!is_user_connected(id) || !ma_klase[id])
return PLUGIN_CONTINUE;
new Float:fOrigin[3];
entity_get_vector(id, EV_VEC_origin, fOrigin);
new iOrigin[3];
for(new i=0;i<=2;i++)
iOrigin[i] = floatround(fOrigin[i]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] );
write_coord( iOrigin[2] );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] + 200 );
write_coord( iOrigin[2] + 200 );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 10 );
write_byte( 255 );
write_byte( 255 );
write_byte( 100 );
write_byte( 100 );
write_byte( 128 );
write_byte( 0 );
message_end();
new entlist[33];
new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);
for (new i=0; i<=numfound; i++)
{
new pid = entlist[i];
if (is_user_alive(pid) && get_user_team(id) != get_user_team(pid))
ExecuteHam(Ham_TakeDamage, pid, id, id, 60.0+cod_get_user_intelligence(id,1,1,1), 1<<1)
}
return PLUGIN_CONTINUE;
}