Improved jump boost settings. See details.
Made a CVAR for setting maximum horizontal speed when bunny hop prevention is enabled. Made a CVAR for switching between reset modes when maximum speed is reached. Either full reset, or setting to max speed allowed.
This commit is contained in:
parent
f23bba58c6
commit
db866c6f43
@ -114,6 +114,8 @@ enum CvarsList
|
|||||||
Handle:CVAR_RESPAWN_TEAM_ZOMBIE,
|
Handle:CVAR_RESPAWN_TEAM_ZOMBIE,
|
||||||
Handle:CVAR_RESPAWN_TEAM_ZOMBIE_WORLD,
|
Handle:CVAR_RESPAWN_TEAM_ZOMBIE_WORLD,
|
||||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_PROTECT,
|
Handle:CVAR_JUMPBOOST_BUNNYHOP_PROTECT,
|
||||||
|
Handle:CVAR_JUMPBOOST_BUNNYHOP_MAX,
|
||||||
|
Handle:CVAR_JUMPBOOST_BUNNYHOP_RESET,
|
||||||
Handle:CVAR_VOL,
|
Handle:CVAR_VOL,
|
||||||
Handle:CVAR_VOL_UPDATE_INTERVAL,
|
Handle:CVAR_VOL_UPDATE_INTERVAL,
|
||||||
Handle:CVAR_VOL_TRIGGER_INTERVAL,
|
Handle:CVAR_VOL_TRIGGER_INTERVAL,
|
||||||
@ -424,6 +426,8 @@ CvarsCreate()
|
|||||||
// Jump Boost (module)
|
// Jump Boost (module)
|
||||||
// ===========================
|
// ===========================
|
||||||
g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_PROTECT] = CreateConVar("zr_jumpboost_bunnyhop_protect", "1", "Prevent players from using forward jump boost multipliers to bunny hop.");
|
g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_PROTECT] = CreateConVar("zr_jumpboost_bunnyhop_protect", "1", "Prevent players from using forward jump boost multipliers to bunny hop.");
|
||||||
|
g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_MAX] = CreateConVar("zr_jumpboost_bunnyhop_max", "275", "The maximum horizontal velocity a player can have for any additional push to be applied, when bunny hop prevention is enabled.");
|
||||||
|
g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_RESET] = CreateConVar("zr_jumpboost_bunnyhop_reset", "1", "Specifies whether the speed should be reset, or limited to maximum when the limit is reached.");
|
||||||
|
|
||||||
|
|
||||||
// ===========================
|
// ===========================
|
||||||
|
@ -10,11 +10,6 @@
|
|||||||
* ============================================================================
|
* ============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* The maximum forward velocity client can have for any additional push to be applied.
|
|
||||||
*/
|
|
||||||
#define JUMPBOOST_FORWARD_VEL_MAX 275.0
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client is jumping.
|
* Client is jumping.
|
||||||
*
|
*
|
||||||
@ -22,30 +17,63 @@
|
|||||||
*/
|
*/
|
||||||
JumpBoostOnClientJump(client)
|
JumpBoostOnClientJump(client)
|
||||||
{
|
{
|
||||||
|
new Float:vecVelocity[3];
|
||||||
|
new Float:vecBuffer[3];
|
||||||
|
new Float:magnitude;
|
||||||
|
|
||||||
// Get class jump multipliers.
|
// Get class jump multipliers.
|
||||||
new Float:distance = ClassGetJumpDistance(client);
|
new Float:distance = ClassGetJumpDistance(client);
|
||||||
new Float:height = ClassGetJumpHeight(client);
|
new Float:height = ClassGetJumpHeight(client);
|
||||||
|
|
||||||
// Do not apply jump boost if class jump boost multiplier is 1.0.
|
// Do not apply jump boost if class jump boost multiplier is 1.0.
|
||||||
if (height == 1.0)
|
if (height == 1.0 && distance == 1.0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get client's current velocity.
|
// Get client's current velocity.
|
||||||
new Float:vecVelocity[3];
|
|
||||||
ToolsClientVelocity(client, vecVelocity, false);
|
ToolsClientVelocity(client, vecVelocity, false);
|
||||||
|
|
||||||
// Protect against bunnyhopping, if cvar is enabled.
|
// Get bunny hop setting.
|
||||||
new bool:bunnyhopprotect = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_PROTECT]);
|
new bool:bunnyhopprotect = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_PROTECT]);
|
||||||
|
|
||||||
|
// Check if bunny hop protection is enabled.
|
||||||
if (bunnyhopprotect)
|
if (bunnyhopprotect)
|
||||||
{
|
{
|
||||||
new Float:magnitude = SquareRoot(Pow(vecVelocity[0], 2.0) + Pow(vecVelocity[1], 2.0));
|
// Get jump boost settings.
|
||||||
if (magnitude >= JUMPBOOST_FORWARD_VEL_MAX)
|
new bool:bunnyhopreset = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_RESET]);
|
||||||
|
new Float:bunnyhopmax = GetConVarFloat(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_MAX]);
|
||||||
|
|
||||||
|
// Get movement distance.
|
||||||
|
magnitude = SquareRoot(Pow(vecVelocity[0], 2.0) + Pow(vecVelocity[1], 2.0));
|
||||||
|
|
||||||
|
// Check if maximum speed is reached and reset setting is set.
|
||||||
|
if ((magnitude > bunnyhopmax) && bunnyhopreset)
|
||||||
{
|
{
|
||||||
// Set distance multiplier to 0.
|
// Reset horizontal velocity.
|
||||||
distance = 0.0;
|
distance = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if maximum speed is reached and reset setting is disabled.
|
||||||
|
else if ((magnitude > bunnyhopmax) && !bunnyhopreset)
|
||||||
|
{
|
||||||
|
// Set horizontal velocity to maximum allowed.
|
||||||
|
|
||||||
|
// Copy to buffer.
|
||||||
|
vecBuffer[0] = vecVelocity[0];
|
||||||
|
vecBuffer[1] = vecVelocity[1];
|
||||||
|
vecBuffer[2] = 1.0; // Dummy value.
|
||||||
|
|
||||||
|
// Normalize buffer vector to make it a unit vector.
|
||||||
|
NormalizeVector(vecBuffer, vecBuffer);
|
||||||
|
|
||||||
|
// Restore horizontal axis in buffer to velocity vector.
|
||||||
|
vecVelocity[0] = vecBuffer[0];
|
||||||
|
vecVelocity[1] = vecBuffer[1];
|
||||||
|
|
||||||
|
// Set distance to maximum speed.
|
||||||
|
distance = bunnyhopmax;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply forward jump boost.
|
// Apply forward jump boost.
|
||||||
|
Loading…
Reference in New Issue
Block a user