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.
|
// kill_bonus number How many points to give per kill. Humans only.
|
||||||
// speed decimal The player speed.
|
// speed decimal The player speed.
|
||||||
// knockback decimal Force of the knockback when shot at. Zombies only.
|
// 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_height decimal Multiplier of the players jump height. 0.0 means no jump, 1.0 is normal.
|
||||||
// jump_distance decimal Extra forwards jump boost multiplier. 0.2 is normal distance.
|
// jump_distance decimal Multiplier of the players jump distance. 0.0 means no forward jump, 1.0 is normal.
|
||||||
|
|
||||||
"classes"
|
"classes"
|
||||||
{
|
{
|
||||||
@ -91,8 +91,8 @@
|
|||||||
|
|
||||||
"speed" "350"
|
"speed" "350"
|
||||||
"knockback" "4"
|
"knockback" "4"
|
||||||
"jump_height" "10.0"
|
"jump_height" "1.1"
|
||||||
"jump_distance" "0.3"
|
"jump_distance" "1.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
"fast"
|
"fast"
|
||||||
@ -134,8 +134,8 @@
|
|||||||
|
|
||||||
"speed" "380"
|
"speed" "380"
|
||||||
"knockback" "4.5"
|
"knockback" "4.5"
|
||||||
"jump_height" "30.0"
|
"jump_height" "1.3"
|
||||||
"jump_distance" "0.4"
|
"jump_distance" "1.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
"mutated"
|
"mutated"
|
||||||
@ -177,8 +177,8 @@
|
|||||||
|
|
||||||
"speed" "275"
|
"speed" "275"
|
||||||
"knockback" "3.5"
|
"knockback" "3.5"
|
||||||
"jump_height" "20.0"
|
"jump_height" "1.3"
|
||||||
"jump_distance" "0.4"
|
"jump_distance" "1.3"
|
||||||
}
|
}
|
||||||
|
|
||||||
"heavy"
|
"heavy"
|
||||||
@ -220,8 +220,8 @@
|
|||||||
|
|
||||||
"speed" "280"
|
"speed" "280"
|
||||||
"knockback" "2.5"
|
"knockback" "2.5"
|
||||||
"jump_height" "0.0"
|
"jump_height" "0.9"
|
||||||
"jump_distance" "0.2"
|
"jump_distance" "0.9"
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------
|
// ------------------------------------------
|
||||||
@ -269,8 +269,8 @@
|
|||||||
|
|
||||||
"speed" "300"
|
"speed" "300"
|
||||||
"knockback" "0"
|
"knockback" "0"
|
||||||
"jump_height" "0.0"
|
"jump_height" "1.0"
|
||||||
"jump_distance" "0.2"
|
"jump_distance" "1.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
"human_speedy"
|
"human_speedy"
|
||||||
@ -312,8 +312,8 @@
|
|||||||
|
|
||||||
"speed" "380"
|
"speed" "380"
|
||||||
"knockback" "0"
|
"knockback" "0"
|
||||||
"jump_height" "0.0"
|
"jump_height" "1.0"
|
||||||
"jump_distance" "0.2"
|
"jump_distance" "1.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
"human_light"
|
"human_light"
|
||||||
@ -355,7 +355,7 @@
|
|||||||
|
|
||||||
"speed" "300"
|
"speed" "300"
|
||||||
"knockback" "0"
|
"knockback" "0"
|
||||||
"jump_height" "30.0"
|
"jump_height" "1.3"
|
||||||
"jump_distance" "0.4"
|
"jump_distance" "1.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -554,7 +554,7 @@ zr_respawn_team_zombie_world "1"
|
|||||||
// Napalm (module)
|
// 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"
|
// Default: "1"
|
||||||
zr_napalm_ignite "1"
|
zr_napalm_ignite "1"
|
||||||
|
|
||||||
@ -565,15 +565,15 @@ zr_napalm_ignite "1"
|
|||||||
|
|
||||||
// Prevent players from using forward jump boost multipliers to bunny hop.
|
// Prevent players from using forward jump boost multipliers to bunny hop.
|
||||||
// Default: "1"
|
// 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.
|
// The maximum horizontal velocity a player can achieve before bunnyhop protection kicks in. [Dependency: zr_jumpboost_bhop_protect]
|
||||||
// Default: "275"
|
// Default: "300"
|
||||||
zr_jumpboost_bunnyhop_max "275"
|
zr_jumpboost_bhop_max "300"
|
||||||
|
|
||||||
// Specifies whether the speed should be reset, or limited to maximum when the limit is reached.
|
// 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: "1"
|
// Default: "0.9"
|
||||||
zr_jumpboost_bunnyhop_reset "1"
|
zr_jumpboost_bhop_reset "0.9"
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -135,9 +135,9 @@ 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_NAPALM_IGNITE,
|
Handle:CVAR_NAPALM_IGNITE,
|
||||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_PROTECT,
|
Handle:CVAR_JUMPBOOST_BHOP_PROTECT,
|
||||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_MAX,
|
Handle:CVAR_JUMPBOOST_BHOP_MAX,
|
||||||
Handle:CVAR_JUMPBOOST_BUNNYHOP_RESET,
|
Handle:CVAR_JUMPBOOST_BHOP_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,
|
||||||
@ -406,14 +406,14 @@ CvarsCreate()
|
|||||||
// Napalm (module)
|
// 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)
|
// 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_BHOP_PROTECT] = CreateConVar("zr_jumpboost_bhop_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_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_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_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.
|
* @param name Name of the event.
|
||||||
* @dontBroadcast If true, event is broadcasted to all clients, false if not.
|
* @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.
|
// Forward event to modules.
|
||||||
}
|
}
|
||||||
@ -213,18 +213,18 @@ public Action:EventPlayerSpawn(Handle:event, const String:name[], bool:dontBroad
|
|||||||
* @param name Name of the event.
|
* @param name Name of the event.
|
||||||
* @dontBroadcast If true, event is broadcasted to all clients, false if not.
|
* @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 client isn't in-game, then stop.
|
||||||
if (!IsClientInGame(index))
|
if (!IsClientInGame(client))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Forward event to modules.
|
// Forward event to modules.
|
||||||
WeaponsOnClientSpawnPost(index);
|
WeaponsOnClientSpawnPost(client);
|
||||||
SEffectsOnClientSpawnPost(index);
|
SEffectsOnClientSpawnPost(client);
|
||||||
SpawnProtectOnClientSpawnPost(index);
|
SpawnProtectOnClientSpawnPost(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -307,8 +307,28 @@ public Action:EventPlayerJump(Handle:event, const String:name[], bool:dontBroadc
|
|||||||
// Get all required event info.
|
// Get all required event info.
|
||||||
new index = GetClientOfUserId(GetEventInt(event, "userid"));
|
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.
|
// Forward event to modules.
|
||||||
JumpBoostOnClientJump(index);
|
JumpBoostOnClientJumpPost(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,85 +30,58 @@
|
|||||||
*
|
*
|
||||||
* @param client The client index.
|
* @param client The client index.
|
||||||
*/
|
*/
|
||||||
JumpBoostOnClientJump(client)
|
JumpBoostOnClientJumpPost(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:distancemultiplier = ClassGetJumpDistance(client);
|
||||||
new Float:height = ClassGetJumpHeight(client);
|
new Float:heightmultiplier = ClassGetJumpHeight(client);
|
||||||
|
|
||||||
// Do not apply jump boost if settings indicate no boost.
|
new Float:vecVelocity[3];
|
||||||
if (height == 0.0 && distance == 0.2)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get client's current velocity.
|
// Get client's current velocity.
|
||||||
ToolsClientVelocity(client, vecVelocity, false);
|
ToolsClientVelocity(client, vecVelocity, false);
|
||||||
|
|
||||||
// Get bunny hop setting.
|
// Protect against bunnyhop.
|
||||||
new bool:bunnyhopprotect = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_PROTECT]);
|
JumpBoostBHopProtect(vecVelocity, distancemultiplier);
|
||||||
|
|
||||||
// Check if bunny hop protection is enabled.
|
// Apply multipliers to jump vector.
|
||||||
if (bunnyhopprotect)
|
vecVelocity[0] *= distancemultiplier;
|
||||||
{
|
vecVelocity[1] *= distancemultiplier;
|
||||||
// Get jump boost settings.
|
vecVelocity[2] *= heightmultiplier;
|
||||||
new bool:bunnyhopreset = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_RESET]);
|
|
||||||
new Float:bunnyhopmax = GetConVarFloat(g_hCvarsList[CVAR_JUMPBOOST_BUNNYHOP_MAX]);
|
|
||||||
|
|
||||||
// Get movement distance.
|
ToolsClientVelocity(client, vecVelocity, true, false);
|
||||||
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 forward jump boost.
|
|
||||||
vecVelocity[0] *= distance;
|
|
||||||
vecVelocity[1] *= distance;
|
|
||||||
|
|
||||||
// Apply vertical jump boost.
|
|
||||||
vecVelocity[2] += height;
|
|
||||||
|
|
||||||
// Apply velocity.
|
|
||||||
JumpBoostSetClientVelocity(client, vecVelocity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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 The velocity of the client jumping.
|
||||||
* @param vecVelocity Velocity to set on client.
|
* @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.
|
* Initialize global offset variables.
|
||||||
*/
|
*/
|
||||||
new g_iToolsVelocity;
|
new g_iToolsVelocity;
|
||||||
new g_iToolsBaseVelocity;
|
|
||||||
new g_iToolsLMV;
|
new g_iToolsLMV;
|
||||||
new g_iToolsHasNightVision;
|
new g_iToolsHasNightVision;
|
||||||
new g_iToolsNightVisionOn;
|
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.");
|
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.
|
// If offset "m_flLaggedMovementValue" can't be found, then stop the plugin.
|
||||||
g_iToolsLMV = FindSendPropInfo("CCSPlayer", "m_flLaggedMovementValue");
|
g_iToolsLMV = FindSendPropInfo("CCSPlayer", "m_flLaggedMovementValue");
|
||||||
if (g_iToolsLMV == -1)
|
if (g_iToolsLMV == -1)
|
||||||
|
Loading…
Reference in New Issue
Block a user