What a necro post
PHP Code:
#include <sdkhooks>
// ---------------------------
// Hit Group standards
// ---------------------------
#define HITGROUP_GENERIC 0
#define HITGROUP_HEAD 1
#define HITGROUP_CHEST 2
#define HITGROUP_STOMACH 3
#define HITGROUP_LEFTARM 4
#define HITGROUP_RIGHTARM 5
#define HITGROUP_LEFTLEG 6
#define HITGROUP_RIGHTLEG 7
#define HITGROUP_GEAR 10 // alerts NPC, but doesn't do damage or bleed (1/100th damage)
enum struct Player {
bool enabled;
void ToggleDontKillMe()
{
this.enabled = !this.enabled;
}
bool IsDontKillMe()
{
return this.enabled;
}
}
Player player[MAXPLAYERS+1];
public void OnPluginStart()
{
HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
RegConsoleCmd("dont_kill_me", dont_kill_me, "Player is harder to kill, missing head, chest, stomach hitgroups");
for(int i = 1; i <= MaxClients; i++)
if(IsClientInGame(i)) OnClientPutInServer(i);
}
public void round_start(Event event, const char[] name, bool dontBroadcast)
{
for(int x = 1 ; x <= MaxClients; x++) player[x].enabled = false;
}
public void OnClientPutInServer(int client)
{
SDKHook(client, SDKHook_TraceAttack, TraceAttack);
}
public Action dont_kill_me(int client, int args)
{
if(!client || !IsClientInGame(client)) return Plugin_Handled;
player[client].ToggleDontKillMe();
return Plugin_Handled;
}
public Action TraceAttack(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup)
{
if(!player[victim].IsDontKillMe()) return Plugin_Continue;
switch(hitgroup)
{
case HITGROUP_HEAD, HITGROUP_CHEST, HITGROUP_STOMACH:
{
return Plugin_Handled;
}
}
//PrintToServer("%N dont_kill_me hitbox %i, hitgroup %i", victim, hitbox, hitgroup);
return Plugin_Continue;
}