Is their a way to do something like the follwing using a switch.
In source mod i know i had to set the values from 0 = false then 1 - 4 = true.. never done this with amx modx. so i have no idea how it works.
PHP Code:
//==============================================================//
// ******************* //
// * Cvar Values * //
// ******************* //
// nhs_mode 1 Blocks bots from shooting humans in the head //
// nhs_mode 2 Blocks all headshots (Humans and bots) //
// nhs_mode 3 Headshots Only (blocks all other hitzones) //
// nhs_mode 4 Redirects all hitzones to the head //
//==============================================================//
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
new mode, bool:gBotsRegistered;
public plugin_init()
{
register_plugin("No Headshot", "1.0", "=(GrG)=");
RegisterHam(Ham_TraceAttack, "player", "HamTraceAttack");
mode = register_cvar("nhs_mode", "2");
}
public client_authorized( id )
{
if( !gBotsRegistered && is_user_bot( id ) )
{
set_task( 0.1, "register_bots", id );
}
}
public register_bots( id )
{
if( !gBotsRegistered && is_user_connected( id ) )
{
RegisterHamFromEntity( Ham_TraceAttack, id, "HamTraceAttack");
gBotsRegistered = true;
}
}
public HamTraceAttack(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits)
{
new Nhs_Modes = get_pcvar_num(mode);
switch(Nhs_Modes)
{
case 1:
{
if(!is_user_bot(Vic) && is_user_bot(Att))
{
if(get_tr2(traceresult, TR_iHitgroup) == HIT_HEAD)
{
//set_tr2(traceresult, TR_iHitgroup, HIT_CHEST) //uncomment to make headshots hit the chest
return HAM_HANDLED
}
}
}
case 2:
{
if(get_tr2(traceresult, TR_iHitgroup) == HIT_HEAD)
{
//set_tr2(traceresult, TR_iHitgroup, HIT_CHEST) //uncomment to make headshots hit the chest
return HAM_HANDLED
}
}
case 3:
{
if(get_tr2(traceresult, TR_iHitgroup) != HIT_HEAD)
{
return HAM_HANDLED
}
}
case 4:
{
if(get_tr2(traceresult, TR_iHitgroup) != HIT_HEAD)
{
set_tr2(traceresult, TR_iHitgroup, HIT_HEAD) //uncomment to make headshots hit the chest
return HAM_HANDLED
}
}
}
return HAM_IGNORED;
}