#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <engine>
#include <colorchat>
#include <amxmisc>
#define DMG_BULLET (1<<1)
new bool:ma_klase[33];
new aktBron[33];
new bool:mKoniec[33];
static Float:Last[33];
new bool:pCzas[33];
new hudsync
new const nazwa[] = "Koks";
new const opis[] = "Natychmiastowe zabicie z noza(PPM). Nie potrafi utrzymac broni. Podczas bezruchu staje sie niewidzialny na 5 sek.";
new const bronie = 1<<CSW_KNIFE;
new const zdrowie = 0;
new const kondycja = 50;
new const inteligencja = 10;
new const wytrzymalosc = 0;
public plugin_init()
{
register_plugin(nazwa, "1.0", "_McHappy");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
register_event("CurWeapon","CurWeapon","be", "1=1");
hudsync = CreateHudSyncObj()
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
mKoniec[id] = false;
pCzas[id] = false;
UstawNoz(id);
}
public cod_class_disabled(id)
ma_klase[id] = false;
public TakeDamage(idCel, byt_obrazen, idAtakujacy, Float:Obrazenia, typ_obrazen)
{
if(!is_user_connected(idAtakujacy))
return HAM_IGNORED;
if(!ma_klase[idAtakujacy])
return HAM_IGNORED;
if(get_user_weapon(idAtakujacy) == CSW_KNIFE && typ_obrazen & DMG_BULLET && Obrazenia > 20.0)
cod_inflict_damage(idAtakujacy, idCel, float(get_user_health(idCel))-Obrazenia+1.0, 0.0, byt_obrazen, typ_obrazen);
return HAM_IGNORED;
}
public client_PostThink(id)
{
if(ma_klase[id] && is_user_alive(id))
{
new button = get_user_button(id);
if(!(button & (IN_FORWARD+IN_BACK+IN_MOVELEFT+IN_MOVERIGHT)) && get_user_weapon(id) == CSW_KNIFE && !mKoniec[id])
Zastanie(id)
else
{
Demaskuj(id);
}
if(mKoniec[id])
Pokaz_Status(id)
if((button & (IN_FORWARD+IN_BACK+IN_MOVELEFT+IN_MOVERIGHT)))
{
pCzas[id] = false;
mKoniec[id] = false;
}
}
}
public Maskuj(id)
{
set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 0);
}
public Zastanie(id)
{
if(!pCzas[id])
{
Last[id] = get_gametime();
pCzas[id] = true;
}
new Float:Now = get_gametime();
if((Now - Float:Last[id]) >= 5.0)
{
Demaskuj(id);
mKoniec[id] = true;
}
else
{
Maskuj(id)
Pokaz_Status(id);
}
}
public Demaskuj(id)
{
set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255);
}
public CurWeapon(id)
{
aktBron[id] = get_user_weapon(id)
if( (aktBron[id] != get_weaponid("weapon_knife") && aktBron[id] != get_weaponid("weapon_c4") ) && ma_klase[id])
{
client_cmd(id, "drop");
UstawNoz(id);
}
return PLUGIN_CONTINUE;
}
public Pokaz_Status(id) {
static Float:OstHUD[33];
new Float:czAkt = get_gametime();
new Float:odstep = (czAkt - Float:OstHUD[id]);
if(odstep >= 0.1)
{
OstHUD[id] = czAkt;
if(!mKoniec[id])
set_hudmessage(0, 255, 0, -1.0, 0.9, 0, 0.0, 0.0, 0.2, 0.1, -1)
else
set_hudmessage(255, 0, 0, -1.0, 0.9, 0, 0.0, 0.0, 0.0, 0.1, -1)
if((czAkt - Float:Last[id]) < 4.9)
ShowSyncHudMsg(id, hudsync, "Niewidzialnosc %0.1f sek", (5.0 - (czAkt - Float:Last[id])))
else
ShowSyncHudMsg(id, hudsync, "Niewidzialnosc 0.0 sek")
}
}
public UstawNoz(id)
{
client_cmd(id, "weapon_knife");
}