Removed antistick nudge on infect, disabled zadmin menu items that are under construction, added knockback module, and weapon-specific knockback multipliers in weapons.txt

This commit is contained in:
Greyscale
2009-04-14 22:05:20 +02:00
parent 9031facaec
commit ddf0515a9e
11 changed files with 259 additions and 155 deletions

View File

@ -252,11 +252,14 @@ public Action:PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
new index = GetClientOfUserId(GetEventInt(event, "userid"));
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
new dmg = GetEventInt(event, "dmg_health");
new dmg_health = GetEventInt(event, "dmg_health");
decl String:weapon[32];
GetEventString(event, "weapon", weapon, sizeof(weapon));
// Forward event to modules.
KnockbackPlayerHurt(index, attacker, weapon, dmg_health);
// Check if the attacker is a player.
if (attacker != 0)
{
@ -269,41 +272,6 @@ public Action:PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
Zombify(index, attacker);
}
}
// Check if a human attacks a zombie.
if (IsPlayerZombie(index) && IsPlayerHuman(attacker))
{
// Get zombie knockback value.
new Float:knockback = ClassGetKnockback(index);
new Float:clientloc[3];
new Float:attackerloc[3];
GetClientAbsOrigin(index, clientloc);
// Check if a grenade was thrown.
if (StrEqual(weapon, "hegrenade"))
{
// Get the location of the grenade.
FindExplodingGrenade(attackerloc);
// Give knockback on the victim.
KnockBack(index, clientloc, attackerloc, knockback, dmg, true);
}
else
{
GetPlayerEyePosition(attacker, attackerloc);
new Float:attackerang[3];
GetPlayerEyeAngles(attacker, attackerang);
// Calculate victim location.
TR_TraceRayFilter(attackerloc, attackerang, MASK_ALL, RayType_Infinite, TraceRayFilter);
TR_GetEndPosition(clientloc);
KnockBack(index, clientloc, attackerloc, knockback, dmg, false);
}
}
}
// Check if the player is a human.
@ -337,41 +305,6 @@ public Action:PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
UpdateHPDisplay(index);
}
public bool:TraceRayFilter(entity, contentsMask)
{
if (entity > 0 && entity < MAXPLAYERS)
{
return false;
}
return true;
}
FindExplodingGrenade(Float:heLoc[3])
{
decl String:classname[64];
new maxentities = GetMaxEntities();
for (new x = GetMaxClients(); x <= maxentities; x++)
{
if (IsValidEdict(x))
{
GetEdictClassname(x, classname, sizeof(classname));
if (StrEqual(classname, "hegrenade_projectile"))
{
new takedamage = GetEntProp(x, Prop_Data, "m_takedamage");
if (takedamage == 0)
{
GetEntPropVector(x, Prop_Send, "m_vecOrigin", heLoc);
return x;
}
}
}
}
return -1;
}
public Action:PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
new index = GetClientOfUserId(GetEventInt(event, "userid"));