#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#define IsValidClientId(%0) (%0 > 0 && %0 <= MaxClients)
#pragma newdecls required
#pragma semicolon 1
public void OnPluginStart()
{
for (int client = 1; client <= MaxClients; client++)
{
if (IsClientInGame(client))
{
SDKHook(client, SDKHook_OnTakeDamage, TakeDamageHook);
}
}
}
public void OnClientPutInServer(int client)
{
SDKHook(client, SDKHook_OnTakeDamage, TakeDamageHook);
}
public Action TakeDamageHook(int client, int &attacker, int &inflictor, float &damage, int &damagetype)
{
if (IsValidClientId(client) && IsValidClientId(attacker) && (inflictor == 0 || inflictor == attacker))
{
char szWeaponName[64];
GetClientWeapon(attacker, szWeaponName, sizeof(szWeaponName));
if (!strncmp(szWeaponName[7], "knife", 5) || !strncmp(szWeaponName[7], "bayonet", 7))
{
damage = 0.0;
return Plugin_Changed;
}
}
return Plugin_Continue;
}