diff options
-rw-r--r-- | builtin/client/cheats/init.lua | 3 | ||||
-rw-r--r-- | builtin/client/cheats/movement.lua | 35 | ||||
-rw-r--r-- | builtin/settingtypes.txt | 12 | ||||
-rw-r--r-- | src/defaultsettings.cpp | 6 |
4 files changed, 50 insertions, 6 deletions
diff --git a/builtin/client/cheats/init.lua b/builtin/client/cheats/init.lua index 2307c7aec..69dbac02a 100644 --- a/builtin/client/cheats/init.lua +++ b/builtin/client/cheats/init.lua @@ -19,6 +19,9 @@ core.cheats = { ["NoSlow"] = "no_slow", ["AutoSneak"] = "autosneak", ["AutoSprint"] = "autosprint", + ["SpeedOverride"] = "override_speed", + ["JumpOverride"] = "override_jump", + ["GravityOverride"] = "override_gravity", }, ["Render"] = { ["Xray"] = "xray", diff --git a/builtin/client/cheats/movement.lua b/builtin/client/cheats/movement.lua index 907990cce..33a46fca0 100644 --- a/builtin/client/cheats/movement.lua +++ b/builtin/client/cheats/movement.lua @@ -1,14 +1,13 @@ local function register_keypress_cheat(cheat, keyname, condition) - local was_enabled = false + local was_active = false core.register_globalstep(function() - local is_active = core.settings:get_bool(cheat) - local condition_true = (not condition or condition()) - if is_active and condition_true then + local is_active = core.settings:get_bool(cheat) and (not condition or condition()) + if is_active then core.set_keypress(keyname, true) - elseif was_enabled then + elseif was_active then core.set_keypress(keyname, false) end - was_enabled = is_active and condition_true + was_active = is_active end) end @@ -16,3 +15,27 @@ register_keypress_cheat("autosneak", "sneak", function() return core.localplayer:is_touching_ground() end) register_keypress_cheat("autosprint", "special1") + +local legit_override + +local function get_override_factor(name) + if core.settings:get_bool("override_" .. name) then + return tonumber(core.settings:get("override_" .. name .. "_factor")) or 1 + else + return 1.0 + end +end + +core.register_globalstep(function() + if not legit_override then return end + local override = table.copy(legit_override) + override.speed = override.speed * get_override_factor("speed") + override.jump = override.jump * get_override_factor("jump") + override.gravity = override.gravity * get_override_factor("gravity") + core.localplayer:set_physics_override(override) +end) + +core.register_on_recieve_physics_override(function(override) + legit_override = override + return true +end) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 6e683c025..f91603ff4 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -2355,3 +2355,15 @@ node_esp_nodes (NodeESP Nodes) string only_trace_players (OnlyTracePlayers) bool false autosprint (AutoSprint) bool false + +override_speed (SpeedOverride) bool false + +override_jump (JumpOverride) bool false + +override_gravity (GravityOverride) bool false + +override_speed_factor (SpeedOverride Factor) float 1.2 + +override_jump_factor (JumpOverride Factor) float 2.0 + +override_gravity_factor (GravityOverride) float 0.8 diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 6775fdcd4..bb9c47dc8 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -136,6 +136,12 @@ void set_default_settings(Settings *settings) settings->setDefault("node_esp_nodes", ""); settings->setDefault("only_trace_players", "false"); settings->setDefault("autosprint", "false"); + settings->setDefault("override_speed", "false"); + settings->setDefault("override_jump", "false"); + settings->setDefault("override_gravity", "false"); + settings->setDefault("override_speed_factor", "1.2"); + settings->setDefault("override_jump_factor", "2.0"); + settings->setDefault("override_gravity_factor", "0.9"); // Keymap settings->setDefault("remote_port", "30000"); |