PHP Code:
public void OnClientPutInServer(int client)
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
if(!IsClientAndInGame(victim) || !IsClientAndInGame(attacker) || !IsValidEdict(inflictor) || damage == 0.0) { return Plugin_Continue; }
if (GetClientTeam(victim) == 2 && GetClientTeam(attacker) == 3)
{
int zombie_class = GetZombieClass(attacker);
int hasvictim = L4D_GetSurvivorVictim(attacker);
if(zombie_class != 5 && hasvictim != victim) //not tank and claw damage
{
damage = 10.0; //modify damage here.
PrintToChatAll("attacker %N - claw damage: %f - class: %d", attacker, damage, zombie_class);
return Plugin_Changed;
}
}
return Plugin_Continue;
}
int GetZombieClass(int client)
{
return GetEntProp(client, Prop_Send, "m_zombieClass");
}
bool IsClientAndInGame(int index)
{
if (index > 0 && index < MaxClients)
{
return IsClientInGame(index);
}
return false;
}
int L4D_GetSurvivorVictim(int client)
{
int victim;
/* Hunter */
victim = GetEntPropEnt(client, Prop_Send, "m_pounceVictim");
if (victim > 0)
{
return victim;
}
/* Smoker */
victim = GetEntPropEnt(client, Prop_Send, "m_tongueVictim");
if (victim > 0)
{
return victim;
}
return -1;
}
__________________