DamageProxy: Add new KnockbackMaxVel from ZR

This commit is contained in:
BotoX 2019-09-29 01:13:55 +02:00
parent 8518a0d893
commit c477d14bd4
7 changed files with 43 additions and 25 deletions

View File

@ -8,7 +8,7 @@
"z1397647" // Troll
{
"KnockbackMaxVel" "400"
"KnockbackMaxVel" "150"
"KnockbackScale" "0.25"
"FullKnife" "1"
}

View File

@ -6,7 +6,7 @@
"KillPush" "0"
}
"z147102" // Balrog
"z145917" // Balrog
{
"KnockbackScale" "0.0"
"KillPush" "0"

View File

@ -2,7 +2,7 @@
{
"z7560944" // Barbossa
{
"KnockbackMaxVel" "350"
"KnockbackMaxVel" "150"
"KnockbackScale" "0.50"
"FullKnife" "1"
}

View File

@ -2,8 +2,8 @@
{
"z1551382" // Werewolf
{
"KnockbackMaxVel" "150"
"KnockbackScale" "0.25"
"KnockbackMaxVel" "100"
"KnockbackScale" "10"
"FullKnife" "1"
}
@ -16,8 +16,8 @@
"z1551122" // Giant
{
"KnockbackMaxVel" "150"
"KnockbackScale" "0.20"
"KnockbackMaxVel" "100"
"KnockbackScale" "0.25"
}
"z1551162" // Dragonpriest

View File

@ -115,6 +115,7 @@ public void OnClientPutInServer(int client)
{
g_iSpecialKnife[client] = 0;
g_bNoSlowdown[client] = false;
g_bRestoreHP[client] = false;
g_bFullKnife[client] = false;
if(g_Config)
@ -150,13 +151,17 @@ public void OnWeaponEquipped(int client, int entity)
if(!g_Config.JumpToKey(sHammerID))
return;
float fKnockbackMaxVel = g_Config.GetFloat("KnockbackMaxVel", 0.0);
if(fKnockbackMaxVel >= 0.0)
ZR_SetClientKnockbackMaxVelocity(client, fKnockbackMaxVel);
float fKnockbackScale = g_Config.GetFloat("KnockbackScale", 1.0);
ZR_SetClientKnockbackScale(client, fKnockbackScale);
float fKnockbackMaxForce = g_Config.GetFloat("KnockbackMaxForce", 0.0);
if(fKnockbackMaxForce >= 0.0)
ZR_SetClientKnockbackMaxForce(client, fKnockbackMaxForce);
float fKnockbackMaxVel = g_Config.GetFloat("KnockbackMaxVel", -1.0);
if(fKnockbackMaxVel >= 0.0)
ZR_SetClientKnockbackMaxVelocity(client, fKnockbackMaxVel);
g_bNoSlowdown[client] = view_as<bool>(g_Config.GetNum("NoSlowDown", 0));
g_bRestoreHP[client] = view_as<bool>(g_Config.GetNum("RestoreHP", 1));
@ -172,8 +177,9 @@ public void OnWeaponDropped(int client, int entity)
{
if(entity == g_iSpecialKnife[client])
{
ZR_SetClientKnockbackMaxVelocity(client, 0.0);
ZR_SetClientKnockbackScale(client, 1.0);
ZR_SetClientKnockbackMaxForce(client, 0.0);
ZR_SetClientKnockbackMaxVelocity(client, -1.0);
g_iSpecialKnife[client] = 0;
g_bNoSlowdown[client] = false;
g_bRestoreHP[client] = false;
@ -281,7 +287,7 @@ public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &dam
g_LastAttacker = attacker;
g_LastVictim = victim;
int flags = ZR_KNOCKBACK_CUSTOM | ZR_KNOCKBACK_SCALE | ZR_KNOCKBACK_LIMITVEL;
int flags = ZR_KNOCKBACK_CUSTOM | ZR_KNOCKBACK_SCALE | ZR_KNOCKBACK_LIMITFORCE | ZR_KNOCKBACK_LIMITVEL;
if(g_bFullKnife[victim])
{
@ -296,7 +302,7 @@ public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &dam
GetEdictClassname(inflictor, sWeaponClassname, sizeof(sWeaponClassname));
if(StrEqual(sWeaponClassname, "weapon_knife"))
flags &= ~(ZR_KNOCKBACK_SCALE | ZR_KNOCKBACK_LIMITVEL);
flags &= ~(ZR_KNOCKBACK_SCALE | ZR_KNOCKBACK_LIMITFORCE | ZR_KNOCKBACK_LIMITVEL);
}
float flVelocityModifier;
@ -307,7 +313,9 @@ public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &dam
if(g_bRestoreHP[client])
iClientHealth = GetClientHealth(client);
damagetype |= DMG_DROWN;
// Don't damage kevlar.
damagetype |= DMG_RADIATION;
SDKHooks_TakeDamage(victim, inflictor, attacker, damage, damagetype, weapon, damageForce, damagePosition, flags);
if(g_bNoSlowdown[client])

View File

@ -66,7 +66,8 @@ public void __pl_zombiereloaded_SetNTVOptional()
MarkNativeAsOptional("ZR_SetKilledByWorld");
MarkNativeAsOptional("ZR_GetKilledByWorld");
MarkNativeAsOptional("ZR_SetClientKnockbackMaxVelocity");
MarkNativeAsOptional("ZR_SetClientKnockbackScale");
MarkNativeAsOptional("ZR_SetClientKnockbackMaxForce");
MarkNativeAsOptional("ZR_SetClientKnockbackMaxVelocity");
}
#endif

View File

@ -27,15 +27,8 @@
#define ZR_KNOCKBACK_CUSTOM (1<<31)
#define ZR_KNOCKBACK_SCALE (1<<1)
#define ZR_KNOCKBACK_LIMITVEL (1<<2)
/**
* Set a maximum knockback velocity.
*
* @param client The client.
* @param fVelocity Maximum knockback velocity / force.
*/
native void ZR_SetClientKnockbackMaxVelocity(int client, float fVelocity);
#define ZR_KNOCKBACK_LIMITFORCE (1<<2)
#define ZR_KNOCKBACK_LIMITVEL (1<<3)
/**
* Set a custom knockback scale.
@ -44,3 +37,19 @@ native void ZR_SetClientKnockbackMaxVelocity(int client, float fVelocity);
* @param fScale Custom knockback scale.
*/
native void ZR_SetClientKnockbackScale(int client, float fScale);
/**
* Set a maximum knockback force per tick.
*
* @param client The client.
* @param fForce Maximum knockback force per tick.
*/
native void ZR_SetClientKnockbackMaxForce(int client, float fForce);
/**
* Set a maximum knockback velocity.
*
* @param client The client.
* @param fVelocity Maximum knockback velocity.
*/
native void ZR_SetClientKnockbackMaxVelocity(int client, float fVelocity);