From fe1110a580bf0f152f22edd347d268febd59b4a7 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 19 May 2022 17:01:34 +0200 Subject: [PATCH] Some fixes --- src/client/component/dedicated.cpp | 10 +++++----- src/client/component/demonware.cpp | 2 +- src/client/component/party.cpp | 26 +++++++++++++------------- src/client/component/splash.cpp | 8 ++++---- src/client/game/symbols.hpp | 4 ++-- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/client/component/dedicated.cpp b/src/client/component/dedicated.cpp index 5ff6fa3c..3871a764 100644 --- a/src/client/component/dedicated.cpp +++ b/src/client/component/dedicated.cpp @@ -215,7 +215,7 @@ namespace dedicated gscr_set_dynamic_dvar_hook.create(0x43CF60_b, &gscr_set_dynamic_dvar); utils::hook::nop(0x189514_b, 248); // don't load config file - utils::hook::nop(0x156C46_b, 5); // ^ // NOT SURE + utils::hook::nop(0x156C46_b, 5); // ^ utils::hook::set(0x17F470_b, 0xC3); // don't save config file utils::hook::set(0x351AA0_b, 0xC3); // disable self-registration utils::hook::set(0x5BF4E0_b, 0xC3); // init sound system (1) @@ -268,7 +268,7 @@ namespace dedicated utils::hook::set(0x687D20_b, 0xC3); // R_Shutdown utils::hook::set(0x652BA0_b, 0xC3); // shutdown stuff utils::hook::set(0x687DF0_b, 0xC3); // ^ - utils::hook::set(0x686DE0_b, 0xC3); // ^ COULDN'T FOUND + utils::hook::set(0x686DE0_b, 0xC3); // ^ // utils::hook::set(0x1404B67E0, 0xC3); // sound crashes (H1 - questionable, function looks way different) @@ -288,9 +288,9 @@ namespace dedicated // Reduce min required memory utils::hook::set(0x5B7F37_b, 0x80000000); - utils::hook::set(0x399E10_b, 0xC3); // some loop - utils::hook::set(0x1D48B0_b, 0xC3); // related to shader caching / techsets / fastfilesc - utils::hook::set(0x3A1940_b, 0xC3); // DB_ReadPackedLoadedSounds + utils::hook::set(0x399E10_b, 0xC3); // some loop + utils::hook::set(0x1D48B0_b, 0xC3); // related to shader caching / techsets / fastfilesc + utils::hook::set(0x3A1940_b, 0xC3); // DB_ReadPackedLoadedSounds // initialize the game after onlinedataflags is 32 (workaround) scheduler::schedule([=]() diff --git a/src/client/component/demonware.cpp b/src/client/component/demonware.cpp index 37bdfdae..632a2422 100644 --- a/src/client/component/demonware.cpp +++ b/src/client/component/demonware.cpp @@ -512,7 +512,7 @@ namespace demonware void request_start_match_stub() { const auto* args = "StartServer"; - utils::hook::invoke(0x1E35B0_b, 0, &args); + game::UI_RunMenuScript(0, &args); } } diff --git a/src/client/component/party.cpp b/src/client/component/party.cpp index fda85945..37fd040b 100644 --- a/src/client/component/party.cpp +++ b/src/client/component/party.cpp @@ -148,15 +148,15 @@ namespace party const auto drop_reason_stub = utils::hook::assemble([](utils::hook::assembler& a) { - // a.mov(rdx, rdi); - // a.mov(ecx, 2); - // a.jmp(0x140251F78); + a.mov(rdx, rsi); + a.mov(ecx, 2); + a.jmp(0x12EF27_b); }); void menu_error(const std::string& error) { - //utils::hook::invoke(0x1400DACC0, error.data(), "MENU_NOTICE"); - //utils::hook::set(0x142C1DA98, 1); + utils::hook::invoke(0x17D770_b, error.data(), "MENU_NOTICE"); + utils::hook::set(0x2ED2F78_b, 1); } } @@ -282,7 +282,6 @@ namespace party } console::info("Starting map: %s\n", mapname.data()); - auto* gametype = game::Dvar_FindVar("g_gametype"); if (gametype && gametype->current.string) { @@ -326,12 +325,12 @@ namespace party if (game::environment::is_mp()) { // show custom drop reason - // utils::hook::nop(0x140251EFB, 13); - // utils::hook::jump(0x140251EFB, drop_reason_stub, true); + // utils::hook::nop(0x12EF4E_b, 13); + // utils::hook::jump(0x12EF4E_b, drop_reason_stub, true); } // enable custom kick reason in GScr_KickPlayer - // utils::hook::set(0x140376A1D, 0xEB); + // utils::hook::set(0xE423D_b, 0xEB); command::add("map", [](const command::params& argument) { @@ -349,11 +348,12 @@ namespace party { return; } - // *reinterpret_cast(0x14A3A91D0) = 1; // sv_map_restart - // *reinterpret_cast(0x14A3A91D4) = 1; // sv_loadScripts - // *reinterpret_cast(0x14A3A91D8) = 0; // sv_migrate - // utils::hook::invoke(0x14047E7F0); // SV_CheckLoadGame + *reinterpret_cast(0xB7B8E60_b) = 1; // sv_map_restart + *reinterpret_cast(0xB7B8E64_b) = 1; // sv_loadScripts + *reinterpret_cast(0xB7B8E68_b) = 0; // sv_migrate + + utils::hook::invoke(0x54BD50_b); // SV_CheckLoadGame }); command::add("fast_restart", []() diff --git a/src/client/component/splash.cpp b/src/client/component/splash.cpp index 716be76c..37b0e417 100644 --- a/src/client/component/splash.cpp +++ b/src/client/component/splash.cpp @@ -30,9 +30,9 @@ namespace splash void post_unpack() override { // Disable native splash screen - utils::hook::nop(SELECT_VALUE(0x1403E192E, 0x1405123E2), 5); - utils::hook::jump(SELECT_VALUE(0x1403E2E70, 0x140513AF0), destroy_stub); - utils::hook::jump(SELECT_VALUE(0x1403E2EB0, 0x140513B30), destroy_stub); + utils::hook::set(SELECT_VALUE(0, 0x5BDF20_b), 0xC3); + utils::hook::jump(SELECT_VALUE(0, 0x5BE1D0_b), destroy_stub, true); + utils::hook::jump(SELECT_VALUE(0, 0x5BE210_b), destroy_stub, true); } void pre_destroy() override @@ -138,4 +138,4 @@ namespace splash }; } -//REGISTER_COMPONENT(splash::component) +REGISTER_COMPONENT(splash::component) diff --git a/src/client/game/symbols.hpp b/src/client/game/symbols.hpp index c943c028..fc1cd08d 100644 --- a/src/client/game/symbols.hpp +++ b/src/client/game/symbols.hpp @@ -183,7 +183,7 @@ namespace game WEAK symbol SV_SetConfigstring{0x0, 0x0}; WEAK symbol SV_Loaded{0x0, 0x553970}; WEAK symbol SV_KickClientNum{0x0, 0x0}; - WEAK symbol SV_MapExists{0x0, 0x0}; + WEAK symbol SV_MapExists{0x0, 0x54C0C0}; WEAK symbol SV_ExecuteClientCommand{0x0, 0x0}; WEAK symbol SV_FastRestart{0x0, 0x0}; WEAK symbol SV_SendServerCommand{0x0, 0x1CC040}; @@ -199,7 +199,7 @@ namespace game WEAK symbol UI_GetMapDisplayName{0x0, 0x0}; WEAK symbol UI_GetGameTypeDisplayName{0x0, 0x4DD8C0}; - WEAK symbol UI_RunMenuScript{0x0, 0x0}; + WEAK symbol UI_RunMenuScript{0x0, 0x1E35B0}; WEAK symbol UI_TextWidth{0x0, 0x0}; WEAK symbol UI_SafeTranslateString{0x0, 0x4E8BC0};