#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
new g_maxplayers;
public plugin_init() {
// register ham hooks
RegisterHam(Ham_TraceAttack,"player","fw_PlayerTraceAttackPre", 0)
RegisterHam(Ham_TraceAttack,"player","fw_PlayerTraceAttackPost", 1)
RegisterHam(Ham_TakeDamage,"player","fw_PlayerTakeDamagePre", 0)
RegisterHam(Ham_TakeDamage,"player","fw_PlayerTakeDamagePost", 1)
g_maxplayers = get_maxplayers()
}
public fw_PlayerTakeDamagePre(victim,inflictor,attacker) // Before damage to be taken set godmode if damage comes from teammates.
{
if(!(0<attacker<=g_maxplayers))
return HAM_IGNORED
// check teams
if(get_user_team(inflictor)!=get_user_team(victim))
return HAM_IGNORED
set_pev(victim, pev_takedamage, DAMAGE_NO);
return HAM_SUPERCEDE
}
public fw_PlayerTakeDamagePost(victim,inflictor,attacker)
{
if(!(0<attacker<=g_maxplayers))
return HAM_IGNORED
if(get_user_team(attacker)!=get_user_team(victim)||victim==attacker)
return HAM_IGNORED
set_pev(victim, pev_takedamage, DAMAGE_YES);
return HAM_SUPERCEDE
}
public fw_PlayerTraceAttackPre(victim,inflictor) // Before damage to be taken set godmode if damage comes from teammates.
{
if(!(0<inflictor<=g_maxplayers))
return HAM_IGNORED
if(get_user_team(inflictor)!=get_user_team(victim))
return HAM_IGNORED
set_pev(victim, pev_takedamage, DAMAGE_NO);
return HAM_SUPERCEDE
}
public fw_PlayerTraceAttackPost(victim,inflictor) // When damage is already "taken" remove godmode, so another non-mates can attack this player.
{
if(!(0<inflictor<=g_maxplayers))
return HAM_IGNORED
if(get_user_team(inflictor)!=get_user_team(victim))
return HAM_IGNORED
set_pev(victim, pev_takedamage, DAMAGE_YES);
return HAM_SUPERCEDE
}