From 7c6be6f8e20d40b99fb185ad07f162b94f19bb38 Mon Sep 17 00:00:00 2001 From: ZIlko Date: Tue, 14 Jan 2025 08:36:10 -0600 Subject: [PATCH] 2.3.8 --- changelog.md | 4 ++++ mod.json | 4 ++-- src/gdr/gdr.hpp | 16 +++++++++------- src/hacks/tps_bypass.cpp | 14 +++++++++++--- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/changelog.md b/changelog.md index 5ae2c37..c6c4a41 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +# v2.3.8 + +* Fixed some tps thing and some macro offset thing. + # v2.3.7 * Fixed macro death bug with other bot's macros. diff --git a/mod.json b/mod.json index 98118bc..95d7475 100644 --- a/mod.json +++ b/mod.json @@ -1,10 +1,10 @@ { - "geode": "4.0.1", + "geode": "4.1.1", "gd": { "win": "2.2074", "android": "2.2074" }, - "version": "2.3.7", + "version": "2.3.8", "id": "zilko.xdbot", "name": "xdBot", "developer": "Zilko", diff --git a/src/gdr/gdr.hpp b/src/gdr/gdr.hpp index 7676f87..fa7e16d 100644 --- a/src/gdr/gdr.hpp +++ b/src/gdr/gdr.hpp @@ -14,7 +14,7 @@ cocos2d::CCPoint dataFromString(std::string dataString); std::vector splitByChar(std::string str, char splitChar); -const std::string xdBotVersion = "v2.3.7"; +const std::string xdBotVersion = "v2.3.8"; namespace gdr { @@ -166,10 +166,10 @@ namespace gdr { bool rotation = ver.find("beta.") == std::string::npos && ver.find("alpha.") == std::string::npos; if (replay.botInfo.name == "xdBot" && ver == "v2.0.0") rotation = true; - // bool addOffset = false; - bool addOffset = replay.botInfo.name == "xdBot"; + // bool offset = false; + int offset = replay.botInfo.name == "xdBot" ? 1 : 0; - if (addOffset) { + if (offset == 1) { if (ver.front() == 'v') ver = ver.substr(1); std::vector splitVer = splitByChar(ver, '.'); @@ -180,8 +180,10 @@ namespace gdr { geode::prelude::VersionInfo macroVer = getVersion(splitVer); geode::prelude::VersionInfo checkVer = getVersion(realVer); - if (macroVer >= checkVer) addOffset = false; + if (macroVer >= checkVer) offset = false; } + + if (ver == "2.0.0-alpha.1") offset--; } replay.parseExtension(replayJson.get()); @@ -195,7 +197,7 @@ namespace gdr { if (!inputJson.contains("frame")) continue; if (inputJson["frame"].is_null()) continue; - input.frame = inputJson["frame"].get() + (addOffset ? 1 : 0); + input.frame = inputJson["frame"].get() + offset; input.button = inputJson["btn"]; input.player2 = inputJson["2p"]; input.down = inputJson["down"]; @@ -212,7 +214,7 @@ namespace gdr { if (!frameFixJson.contains("frame")) continue; if (frameFixJson["frame"].is_null()) continue; - frameFix.frame = frameFixJson["frame"].get() + (addOffset ? 1 : 0); + frameFix.frame = frameFixJson["frame"].get() + offset; if (frameFixJson.contains("player1")) { diff --git a/src/hacks/tps_bypass.cpp b/src/hacks/tps_bypass.cpp index 146ca2e..56eec29 100644 --- a/src/hacks/tps_bypass.cpp +++ b/src/hacks/tps_bypass.cpp @@ -1,23 +1,31 @@ #include "../includes.hpp" #include +float leftOver2 = 0.f; + class $modify(GJBaseGameLayer) { void update(float dt) { if (!Global::get().tpsEnabled) return GJBaseGameLayer::update(dt); - if (Global::getTPS() == 240.f) return GJBaseGameLayer::update(dt); if (Global::get().frameStepper) return GJBaseGameLayer::update(dt); if (!PlayLayer::get()) return GJBaseGameLayer::update(dt); float newDt = 1.f / Global::getTPS(); + if (Global::getTPS() == 240.f) return GJBaseGameLayer::update(newDt); + auto startTime = std::chrono::high_resolution_clock::now(); + int mult = static_cast((dt+ leftOver2) / newDt); - for (int i = 0; i < static_cast(dt / newDt); ++i) { + for (int i = 0; i < mult; ++i) { GJBaseGameLayer::update(newDt); - if (std::chrono::high_resolution_clock::now() - startTime > std::chrono::duration(16.666)) + if (std::chrono::high_resolution_clock::now() - startTime > std::chrono::duration(16.666)) { + mult = i + 1; break; + } } + + leftOver2 += (dt - newDt * mult); }