#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#define DMG_BULLET (1<<1)
#define DMG_HEGRENADE (1<<24)
new const nazwa[] = "Ghost";
new const opis[] = "1/2 z he, +15DMG(+INT) z m4a1, gdy kuca z nożem jest niewidzialny,";
new const bronie = (1<<CSW_HEGRENADE)|(1<<CSW_M4A1);
new const zdrowie = 50;
new const kondycja = 50;
new const inteligencja = 50;
new const wytrzymalosc = 50;
new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "xxx");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_forward(FM_PlayerPreThink, "fwPrethink_Niewidzialnosc", 1);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}
public cod_class_enabled(id)
{
if(~get_user_flags(id) & ADMIN_LEVEL_E)
{
client_print(id, print_chat, "[Ghost] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
give_item(id, "weapon_hegrenade");
ma_klase[id] = true;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
ma_klase[id] = false;
}
//Przy kucaniu
public fwPrethink_Niewidzialnosc(id)
{
if(!ma_klase[id])
return;
new button = get_user_button(id);
if( button & IN_DUCK && get_user_weapon(id) == CSW_KNIFE)
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 1);
}
else
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
}
}
public TakeDamage(id, ent, attacker, Float:damage, damagebits)
{
if(!is_user_alive(id) || !is_user_connected(attacker) || !ma_klase[attacker] || get_user_team(id) == get_user_team(attacker)) return HAM_IGNORED
if(damagebits & DMG_BULLET && ent == attacker && get_user_weapon(attacker) == CSW_M4A1)
{
SetHamParamFloat(4,damage+15.0+float(cod_get_user_intelligence(attacker,1,1,1))*0.5)
return HAM_HANDLED
}
else if(damagebits & DMG_HEGRENADE && ent != attacker && !random(2)) KillPlayer(id,ent,attacker,CSW_HEGRENADE,HIT_GENERIC,0,DMG_HEGRENADE)
return HAM_IGNORED
}
KillPlayer(id,inflictor,attacker,weapon,body,shouldgib,damagebits)
{
if(weapon > 30 || !is_user_alive(id) || !is_user_connected(attacker)) return
const GrenadeWeapon = 1<<CSW_HEGRENADE | 1<<CSW_C4 | 1<<CSW_SMOKEGRENADE | 1<<CSW_FLASHBANG
const m_LastHitGroup = 75
const m_bitsDamageType = 76
const m_fHasTakenHighDamage = 107
static DeathMsgId
new msgblock,weaponname[32],effect
if (!DeathMsgId) DeathMsgId = get_user_msgid("DeathMsg")
set_pdata_int(id,m_LastHitGroup,body,5)
set_pdata_int(id,m_bitsDamageType,damagebits,5)
set_pdata_int(id,m_fHasTakenHighDamage,1,5)
set_pev(id,pev_dmg_inflictor,inflictor)
msgblock = get_msg_block(DeathMsgId)
set_msg_block(DeathMsgId, BLOCK_SET)
ExecuteHamB(Ham_Killed,id,attacker,shouldgib)
set_msg_block(DeathMsgId, msgblock)
effect = pev(id,pev_effects)
if(effect & 128) set_pev(id,pev_effects,effect-128)
new len
if(get_weaponname(weapon,weaponname,31))
{
if(~GrenadeWeapon & 1<<weapon) len = 7
else weaponname = "grenade"
}
else if(weapon == 2) weaponname = "tracktrain"
else weaponname = "world"
emessage_begin(MSG_ALL, DeathMsgId)
ewrite_byte(attacker)
ewrite_byte(id)
ewrite_byte(body == HIT_HEAD ? 1:0)
ewrite_string(weaponname[len])
emessage_end()
}