Updated jump module, removed no longer needed offset.
This commit is contained in:
parent
79bf4230c1
commit
268ab778cf
@ -42,8 +42,8 @@
|
||||
// kill_bonus number How many points to give per kill. Humans only.
|
||||
// speed decimal The player speed.
|
||||
// knockback decimal Force of the knockback when shot at. Zombies only.
|
||||
// jump_height decimal Extra upwards jump boost in units. 0.0 for no extra boost.
|
||||
// jump_distance decimal Extra forwards jump boost multiplier. 0.2 is normal distance.
|
||||
// jump_height decimal Multiplier of the players jump height. 0.0 means no jump, 1.0 is normal.
|
||||
// jump_distance decimal Multiplier of the players jump distance. 0.0 means no forward jump, 1.0 is normal.
|
||||
|
||||
"classes"
|
||||
{
|
||||
@ -91,8 +91,8 @@
|
||||
|
||||
"speed" "350"
|
||||
"knockback" "4"
|
||||
"jump_height" "10.0"
|
||||
"jump_distance" "0.3"
|
||||
"jump_height" "1.1"
|
||||
"jump_distance" "1.2"
|
||||
}
|
||||
|
||||
"fast"
|
||||
@ -134,8 +134,8 @@
|
||||
|
||||
"speed" "380"
|
||||
"knockback" "4.5"
|
||||
"jump_height" "30.0"
|
||||
"jump_distance" "0.4"
|
||||
"jump_height" "1.3"
|
||||
"jump_distance" "1.2"
|
||||
}
|
||||
|
||||
"mutated"
|
||||
@ -177,8 +177,8 @@
|
||||
|
||||
"speed" "275"
|
||||
"knockback" "3.5"
|
||||
"jump_height" "20.0"
|
||||
"jump_distance" "0.4"
|
||||
"jump_height" "1.3"
|
||||
"jump_distance" "1.3"
|
||||
}
|
||||
|
||||
"heavy"
|
||||
@ -220,8 +220,8 @@
|
||||
|
||||
"speed" "280"
|
||||
"knockback" "2.5"
|
||||
"jump_height" "0.0"
|
||||
"jump_distance" "0.2"
|
||||
"jump_height" "0.9"
|
||||
"jump_distance" "0.9"
|
||||
}
|
||||
|
||||
// ------------------------------------------
|
||||
@ -269,8 +269,8 @@
|
||||
|
||||
"speed" "300"
|
||||
"knockback" "0"
|
||||
"jump_height" "0.0"
|
||||
"jump_distance" "0.2"
|
||||
"jump_height" "1.0"
|
||||
"jump_distance" "1.0"
|
||||
}
|
||||
|
||||
"human_speedy"
|
||||
@ -312,8 +312,8 @@
|
||||
|
||||
"speed" "380"
|
||||
"knockback" "0"
|
||||
"jump_height" "0.0"
|
||||
"jump_distance" "0.2"
|
||||
"jump_height" "1.0"
|
||||
"jump_distance" "1.0"
|
||||
}
|
||||
|
||||
"human_light"
|
||||
@ -355,7 +355,7 @@
|
||||
|
||||
"speed" "300"
|
||||
"knockback" "0"
|
||||
"jump_height" "30.0"
|
||||
"jump_distance" "0.4"
|
||||
"jump_height" "1.3"
|
||||
"jump_distance" "1.3"
|
||||
}
|
||||
}
|
||||
|
@ -554,7 +554,7 @@ zr_respawn_team_zombie_world "1"
|
||||
// Napalm (module)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'napalm']
|
||||
// Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'has_napalm']
|
||||
// Default: "1"
|
||||
zr_napalm_ignite "1"
|
||||
|
||||
@ -565,15 +565,15 @@ zr_napalm_ignite "1"
|
||||
|
||||
// Prevent players from using forward jump boost multipliers to bunny hop.
|
||||
// Default: "1"
|
||||
zr_jumpboost_bunnyhop_protect "1"
|
||||
zr_jumpboost_bhop_protect "1"
|
||||
|
||||
// The maximum horizontal velocity a player can have for any additional push to be applied, when bunny hop prevention is enabled.
|
||||
// Default: "275"
|
||||
zr_jumpboost_bunnyhop_max "275"
|
||||
// The maximum horizontal velocity a player can achieve before bunnyhop protection kicks in. [Dependency: zr_jumpboost_bhop_protect]
|
||||
// Default: "300"
|
||||
zr_jumpboost_bhop_max "300"
|
||||
|
||||
// Specifies whether the speed should be reset, or limited to maximum when the limit is reached.
|
||||
// Default: "1"
|
||||
zr_jumpboost_bunnyhop_reset "1"
|
||||
// This is the horizontal jump multiplier for when the max limit is exceeded. ['0.9' = 90% of the jumps original magnitude | '>1.0' = Redundant | Dependency: zr_jumpboost_bhop_protect&zr_jumpboost_bhop_max]
|
||||
// Default: "0.9"
|
||||
zr_jumpboost_bhop_reset "0.9"
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -135,9 +135,9 @@ enum CvarsList
|
||||
Handle:CVAR_RESPAWN_TEAM_ZOMBIE,
|
||||
Handle:CVAR_RESPAWN_TEAM_ZOMBIE_WORLD,
|
||||
Handle:CVAR_NAPALM_IGNITE,
|
||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_PROTECT,
|
||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_MAX,
|
||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_RESET,
|
||||
Handle:CVAR_JUMPBOOST_BHOP_PROTECT,
|
||||
Handle:CVAR_JUMPBOOST_BHOP_MAX,
|
||||
Handle:CVAR_JUMPBOOST_BHOP_RESET,
|
||||
Handle:CVAR_VOL,
|
||||
Handle:CVAR_VOL_UPDATE_INTERVAL,
|
||||
Handle:CVAR_VOL_TRIGGER_INTERVAL,
|
||||
@ -406,14 +406,14 @@ CvarsCreate()
|
||||
// Napalm (module)
|
||||
// ===========================
|
||||
|
||||
g_hCvarsList[CVAR_NAPALM_IGNITE] = CreateConVar("zr_napalm_ignite", "1", "Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'hasnapalm']");
|
||||
g_hCvarsList[CVAR_NAPALM_IGNITE] = CreateConVar("zr_napalm_ignite", "1", "Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'has_napalm']");
|
||||
|
||||
// ===========================
|
||||
// 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_MAX] = CreateConVar("zr_jumpboost_bunnyhop_max", "275", "The maximum horizontal velocity a player can have for any additional push to be applied. [Dependency: zr_jumpboost_bunnyhop_protect]");
|
||||
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. [Dependency: zr_jumpboost_bunnyhop_protect&zr_jumpboost_bunnyhop_max]");
|
||||
g_hCvarsList[CVAR_JUMPBOOST_BHOP_PROTECT] = CreateConVar("zr_jumpboost_bhop_protect", "1", "Prevent players from using forward jump boost multipliers to bunny hop.");
|
||||
g_hCvarsList[CVAR_JUMPBOOST_BHOP_MAX] = CreateConVar("zr_jumpboost_bhop_max", "300", "The maximum horizontal velocity a player can achieve before bunnyhop protection kicks in. [Dependency: zr_jumpboost_bhop_protect]");
|
||||
g_hCvarsList[CVAR_JUMPBOOST_BHOP_RESET] = CreateConVar("zr_jumpboost_bhop_reset", "0.9", "This is the horizontal jump multiplier for when the max limit is exceeded. ['0.9' = 90% of the jumps original magnitude | '>1.0' = Redundant | Dependency: zr_jumpboost_bhop_protect&zr_jumpboost_bhop_max]");
|
||||
|
||||
|
||||
// ===========================
|
||||
|
@ -103,7 +103,7 @@ public Action:EventRoundStart(Handle:event, const String:name[], bool:dontBroadc
|
||||
* @param name Name of the event.
|
||||
* @dontBroadcast If true, event is broadcasted to all clients, false if not.
|
||||
*/
|
||||
public Action:EventRoundStartPost(Handle:timer, any:index)
|
||||
public Action:EventRoundStartPost(Handle:timer)
|
||||
{
|
||||
// Forward event to modules.
|
||||
}
|
||||
@ -213,18 +213,18 @@ public Action:EventPlayerSpawn(Handle:event, const String:name[], bool:dontBroad
|
||||
* @param name Name of the event.
|
||||
* @dontBroadcast If true, event is broadcasted to all clients, false if not.
|
||||
*/
|
||||
public Action:EventPlayerSpawnPost(Handle:timer, any:index)
|
||||
public Action:EventPlayerSpawnPost(Handle:timer, any:client)
|
||||
{
|
||||
// If client isn't in-game, then stop.
|
||||
if (!IsClientInGame(index))
|
||||
if (!IsClientInGame(client))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Forward event to modules.
|
||||
WeaponsOnClientSpawnPost(index);
|
||||
SEffectsOnClientSpawnPost(index);
|
||||
SpawnProtectOnClientSpawnPost(index);
|
||||
WeaponsOnClientSpawnPost(client);
|
||||
SEffectsOnClientSpawnPost(client);
|
||||
SpawnProtectOnClientSpawnPost(client);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -307,8 +307,28 @@ public Action:EventPlayerJump(Handle:event, const String:name[], bool:dontBroadc
|
||||
// Get all required event info.
|
||||
new index = GetClientOfUserId(GetEventInt(event, "userid"));
|
||||
|
||||
// Fire post player_jump event.
|
||||
CreateTimer(0.0, EventPlayerJumpPost, index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Event callback (player_jump)
|
||||
* Client is jumping. *Post
|
||||
*
|
||||
* @param event The event handle.
|
||||
* @param name Name of the event.
|
||||
* @dontBroadcast If true, event is broadcasted to all clients, false if not.
|
||||
*/
|
||||
public Action:EventPlayerJumpPost(Handle:timer, any:client)
|
||||
{
|
||||
// If client isn't in-game, then stop.
|
||||
if (!IsClientInGame(client))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Forward event to modules.
|
||||
JumpBoostOnClientJump(index);
|
||||
JumpBoostOnClientJumpPost(client);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -30,85 +30,58 @@
|
||||
*
|
||||
* @param client The client index.
|
||||
*/
|
||||
JumpBoostOnClientJump(client)
|
||||
JumpBoostOnClientJumpPost(client)
|
||||
{
|
||||
new Float:vecVelocity[3];
|
||||
new Float:vecBuffer[3];
|
||||
new Float:magnitude;
|
||||
|
||||
// Get class jump multipliers.
|
||||
new Float:distance = ClassGetJumpDistance(client);
|
||||
new Float:height = ClassGetJumpHeight(client);
|
||||
new Float:distancemultiplier = ClassGetJumpDistance(client);
|
||||
new Float:heightmultiplier = ClassGetJumpHeight(client);
|
||||
|
||||
// Do not apply jump boost if settings indicate no boost.
|
||||
if (height == 0.0 && distance == 0.2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
new Float:vecVelocity[3];
|
||||
|
||||
// Get client's current velocity.
|
||||
ToolsClientVelocity(client, vecVelocity, false);
|
||||
|
||||
// Get bunny hop setting.
|
||||
new bool:bunnyhopprotect = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_PROTECT]);
|
||||
// Protect against bunnyhop.
|
||||
JumpBoostBHopProtect(vecVelocity, distancemultiplier);
|
||||
|
||||
// Check if bunny hop protection is enabled.
|
||||
if (bunnyhopprotect)
|
||||
{
|
||||
// Get jump boost settings.
|
||||
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)
|
||||
{
|
||||
// Reset horizontal velocity.
|
||||
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 multipliers to jump vector.
|
||||
vecVelocity[0] *= distancemultiplier;
|
||||
vecVelocity[1] *= distancemultiplier;
|
||||
vecVelocity[2] *= heightmultiplier;
|
||||
|
||||
// Apply forward jump boost.
|
||||
vecVelocity[0] *= distance;
|
||||
vecVelocity[1] *= distance;
|
||||
|
||||
// Apply vertical jump boost.
|
||||
vecVelocity[2] += height;
|
||||
|
||||
// Apply velocity.
|
||||
JumpBoostSetClientVelocity(client, vecVelocity);
|
||||
ToolsClientVelocity(client, vecVelocity, true, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set new velocity on client. (Special method separate from ToolsClientVelocity)
|
||||
* This function protects against excessive bunnyhopping.
|
||||
* Note: This ONLY stops bunnyhopping from being worse than CS:S already allows.
|
||||
*
|
||||
* @param client The client index.
|
||||
* @param vecVelocity Velocity to set on client.
|
||||
* @param vecVelocity The velocity of the client jumping.
|
||||
* @param distancemultiplier The distance multiplier used on this jump.
|
||||
*/
|
||||
JumpBoostSetClientVelocity(client, const Float:vecVelocity[3])
|
||||
stock JumpBoostBHopProtect(Float:vecVelocity[], Float:distancemultiplier)
|
||||
{
|
||||
SetEntDataVector(client, g_iToolsBaseVelocity, vecVelocity, true);
|
||||
// If bunnyhop protection is disabled, then stop.
|
||||
new bool:bunnyhopprotect = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BHOP_PROTECT]);
|
||||
if (!bunnyhopprotect)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate the magnitude of jump on the xy plane.
|
||||
new Float:magnitude = SquareRoot(Pow(vecVelocity[0], 2.0) + Pow(vecVelocity[1], 2.0));
|
||||
|
||||
// If the magnitude doesn't exceed the limit, then stop.
|
||||
new Float:bunnyhopmax = GetConVarFloat(g_hCvarsList[CVAR_JUMPBOOST_BHOP_MAX]);
|
||||
if (magnitude <= bunnyhopmax)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If we are resetting the velocity, then set to 1.0 (normal jump)
|
||||
new Float:bunnyhopreset = GetConVarFloat(g_hCvarsList[CVAR_JUMPBOOST_BHOP_RESET]);
|
||||
|
||||
// Scale with cvar value.
|
||||
vecVelocity[0] /= (distancemultiplier / bunnyhopreset);
|
||||
vecVelocity[1] /= (distancemultiplier / bunnyhopreset);
|
||||
}
|
||||
|
@ -29,7 +29,6 @@
|
||||
* Initialize global offset variables.
|
||||
*/
|
||||
new g_iToolsVelocity;
|
||||
new g_iToolsBaseVelocity;
|
||||
new g_iToolsLMV;
|
||||
new g_iToolsHasNightVision;
|
||||
new g_iToolsNightVisionOn;
|
||||
@ -77,13 +76,6 @@ ToolsFindOffsets()
|
||||
LogEvent(false, LogType_Fatal, LOG_CORE_EVENTS, LogModule_Tools, "Offsets", "Offset \"CBasePlayer::m_vecVelocity[0]\" was not found.");
|
||||
}
|
||||
|
||||
// If offset "m_vecBaseVelocity" can't be found, then stop the plugin.
|
||||
g_iToolsBaseVelocity = FindSendPropInfo("CBasePlayer", "m_vecBaseVelocity");
|
||||
if (g_iToolsBaseVelocity == -1)
|
||||
{
|
||||
LogEvent(false, LogType_Fatal, LOG_CORE_EVENTS, LogModule_Tools, "Offsets", "Offset \"CBasePlayer::m_vecBaseVelocity\" was not found.");
|
||||
}
|
||||
|
||||
// If offset "m_flLaggedMovementValue" can't be found, then stop the plugin.
|
||||
g_iToolsLMV = FindSendPropInfo("CCSPlayer", "m_flLaggedMovementValue");
|
||||
if (g_iToolsLMV == -1)
|
||||
|
Loading…
Reference in New Issue
Block a user