/* AMX Mod X script.
No Headshot With Helmet plugin
(c) Copyright 2007, Simon Logic 'slspam@land.ru'
This file is provided AS IS (no warranties).
Info:
When player has a helmet he can't be killed by headshot.
Requirements:
* CS/CZ mod
* AMX/X 1.7x or higher
* CStrike module
* Fakemeta module
New cvars:
* amx_superhelmet_when_armor <num> (default=0)
set armor threshold when helmet acts as shield
Credits:
* Cheap_Suit for 'hitgroup 8' idea
Changelog:
v1.1.0 [2007-06-22]
+ added cvar 'amx_superhelmet_when_armor'
+ kevlar can act as shield (req. by Stixsmaster)
* optimized core as XxAvalanchexX suggested (experimental)
v1.0.0 [2007-06-14]
* first public release
*/
#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#define MY_PLUGIN_NAME "No Headshot With Helmet"
#define MY_PLUGIN_VERSION "1.1.0"
#define MY_PLUGIN_AUTHOR "Simon Logic"
#define HIT_SHIELD 8
new g_iMaxPlayers
new g_cvarSHelmetThreshold
public plugin_init()
{
g_iMaxPlayers = get_maxplayers()
register_plugin(MY_PLUGIN_NAME, MY_PLUGIN_VERSION, MY_PLUGIN_AUTHOR)
register_cvar("version_no_headshot_with_helmet", MY_PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
g_cvarSHelmetThreshold = register_cvar("amx_superhelmet_when_armor", "0")
//register_forward(FM_TraceLine, "onTraceLine")
register_forward(FM_TraceLine, "onTraceLinePost", 1)
}
public onTraceLinePost(Float:v1[3], Float:v2[3], fNoMonsters, pentToSkip, ptr)
{
//engfunc(EngFunc_TraceLine, v1, v2, fNoMonsters, pentToSkip, ptr)
static iHitEnt; iHitEnt = get_tr2(ptr, TR_pHit)
if(1 <= iHitEnt <= g_iMaxPlayers)
{
static iArmor
static CsArmorType:tArmor
iArmor = cs_get_user_armor(iHitEnt, tArmor)
if(iArmor > 0 && tArmor == CS_ARMOR_VESTHELM
&& get_tr2(ptr, TR_iHitgroup) == HIT_HEAD)
{
iHitEnt = get_pcvar_num(g_cvarSHelmetThreshold) // re-use iHitEnt
if(iHitEnt > 0 && iArmor >= iHitEnt)
iHitEnt = HIT_SHIELD
else
iHitEnt = HIT_GENERIC
set_tr2(ptr, TR_iHitgroup, iHitEnt)
}
}
//return FMRES_SUPERCEDE
}