From 3bb39483dc1bcf8107b2eba1a6af49c1b63bc830 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Thu, 27 Jan 2022 17:11:21 +0000 Subject: [PATCH 01/21] Use zone allocator instead of static mem allocator --- src/Components/Modules/AntiCheat.cpp | 2 +- .../Modules/AssetInterfaces/IFont_s.cpp | 43 +++++++++++-------- src/Utils/Memory.hpp | 2 + 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/Components/Modules/AntiCheat.cpp b/src/Components/Modules/AntiCheat.cpp index 01dbea5c..af7b678d 100644 --- a/src/Components/Modules/AntiCheat.cpp +++ b/src/Components/Modules/AntiCheat.cpp @@ -634,7 +634,7 @@ namespace Components LUID luid; TOKEN_PRIVILEGES tp = { 0 }; DWORD cb = sizeof(TOKEN_PRIVILEGES); - if (!LookupPrivilegeValueA(nullptr, SE_DEBUG_NAME, &luid)) return; + if (!LookupPrivilegeValueW(nullptr, SE_DEBUG_NAME, &luid)) return; tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; diff --git a/src/Components/Modules/AssetInterfaces/IFont_s.cpp b/src/Components/Modules/AssetInterfaces/IFont_s.cpp index a820011f..edeb572b 100644 --- a/src/Components/Modules/AssetInterfaces/IFont_s.cpp +++ b/src/Components/Modules/AssetInterfaces/IFont_s.cpp @@ -53,15 +53,15 @@ namespace Assets auto& glyph = glyphs[i++]; glyph.letter = ch; - glyph.s0 = x / static_cast(pw); - glyph.s1 = (x + gw) / static_cast(pw); - glyph.t0 = y / static_cast(ph); - glyph.t1 = (y + gh) / static_cast(ph); + glyph.s0 = static_cast(x / pw); + glyph.s1 = static_cast((x + gw) / pw); + glyph.t0 = static_cast(y / ph); + glyph.t1 = static_cast((y + gh) / ph); glyph.pixelWidth = static_cast(gw); glyph.pixelHeight = static_cast(gh); glyph.x0 = static_cast(x0); glyph.y0 = static_cast(y0 + yOffset); - glyph.dx = static_cast(roundf(scale * advance)); + glyph.dx = static_cast(std::roundf(scale * advance)); // Advance to next col x = x + gw + 1; @@ -92,7 +92,7 @@ namespace Assets } } - void IFont_s::load(Game::XAssetHeader* header, const std::string& name, Components::ZoneBuilder::Zone*) + void IFont_s::load(Game::XAssetHeader* header, const std::string& name, Components::ZoneBuilder::Zone* builder) { Components::FileSystem::File fontDefFile(Utils::String::VA("%s.json", name.data())); Components::FileSystem::File fontFile(Utils::String::VA("%s.ttf", name.data())); @@ -105,11 +105,13 @@ namespace Assets if (!errors.empty()) { Components::Logger::Error("Font define %s is broken: %s.", name.data(), errors.data()); + return; } if (!fontDef.is_object()) { Components::Logger::Error("Font define %s is invaild.", name.data(), errors.data()); + return; } int w = fontDef["textureWidth"].int_value(); @@ -118,22 +120,28 @@ namespace Assets int size = fontDef["size"].int_value(); int yOffset = fontDef["yOffset"].int_value(); - uint8_t* pixels = Utils::Memory::AllocateArray(w * h); + auto* pixels = builder->getAllocator()->allocateArray(w * h); // Setup assets - auto* texName = Utils::Memory::DuplicateString(Utils::String::VA("if_%s", name.data() + 6 /* skip "fonts/" */)); - auto* fontName = Utils::Memory::DuplicateString(name.data()); - auto* glowMaterialName = Utils::Memory::DuplicateString(Utils::String::VA("%s_glow", name.data())); + const auto* texName = builder->getAllocator()->duplicateString(Utils::String::VA("if_%s", name.data() + 6 /* skip "fonts/" */)); + const auto* fontName = builder->getAllocator()->duplicateString(name.data()); + const auto* glowMaterialName = builder->getAllocator()->duplicateString(Utils::String::VA("%s_glow", name.data())); + + auto* image = builder->getAllocator()->allocate(); + std::memcpy(image, Game::DB_FindXAssetHeader(Game::ASSET_TYPE_IMAGE, "gamefonts_pc").image, sizeof(Game::GfxImage)); - auto* image = Utils::Memory::Duplicate(Game::DB_FindXAssetHeader(Game::ASSET_TYPE_IMAGE, "gamefonts_pc").image); image->name = texName; - - auto* material = Utils::Memory::Duplicate(Game::DB_FindXAssetHeader(Game::ASSET_TYPE_MATERIAL, "fonts/gamefonts_pc").material); - material->textureTable = Utils::Memory::Duplicate(material->textureTable); + + auto* material = builder->getAllocator()->allocate(); + std::memcpy(material, Game::DB_FindXAssetHeader(Game::ASSET_TYPE_MATERIAL, "fonts/gamefonts_pc").material, sizeof(Game::Material)); + + material->textureTable = builder->getAllocator()->allocate(); material->textureTable->u.image = image; material->info.name = fontName; - auto* glowMaterial = Utils::Memory::Duplicate(Game::DB_FindXAssetHeader(Game::ASSET_TYPE_MATERIAL, "fonts/gamefonts_pc_glow").material); + auto* glowMaterial = builder->getAllocator()->allocate(); + std::memcpy(glowMaterial, Game::DB_FindXAssetHeader(Game::ASSET_TYPE_MATERIAL, "fonts/gamefonts_pc_glow").material, sizeof(Game::Material)); + glowMaterial->textureTable = material->textureTable; glowMaterial->info.name = glowMaterialName; @@ -161,14 +169,14 @@ namespace Assets charset.push_back(i); } - auto* font = Utils::Memory::Allocate(); + auto* font = builder->getAllocator()->allocate(); font->fontName = fontName; font->pixelHeight = size; font->material = material; font->glowMaterial = glowMaterial; font->glyphCount = charset.size(); - font->glyphs = Utils::Memory::AllocateArray(charset.size()); + font->glyphs = builder->getAllocator()->allocateArray(charset.size()); // Generate glyph data int result = PackFonts(reinterpret_cast(fontFile.getBuffer().data()), charset, font->glyphs, static_cast(size), pixels, w, h, yOffset); @@ -239,7 +247,6 @@ namespace Assets } Utils::IO::WriteFile(Utils::String::VA("userraw\\images\\%s.iwi", texName), outIwi); - Utils::Memory::Free(pixels); } } diff --git a/src/Utils/Memory.hpp b/src/Utils/Memory.hpp index f5eb5e50..88bb7007 100644 --- a/src/Utils/Memory.hpp +++ b/src/Utils/Memory.hpp @@ -81,10 +81,12 @@ namespace Utils this->pool.push_back(data); return data; } + template inline T* allocate() { return this->allocateArray(1); } + template inline T* allocateArray(size_t count = 1) { return static_cast(this->allocate(count * sizeof(T))); From 48f7cc2d4646ae5f702c566c0919832928588ee4 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Thu, 27 Jan 2022 17:16:40 +0000 Subject: [PATCH 02/21] Fix compilation --- src/Components/Modules/AntiCheat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/Modules/AntiCheat.cpp b/src/Components/Modules/AntiCheat.cpp index af7b678d..01dbea5c 100644 --- a/src/Components/Modules/AntiCheat.cpp +++ b/src/Components/Modules/AntiCheat.cpp @@ -634,7 +634,7 @@ namespace Components LUID luid; TOKEN_PRIVILEGES tp = { 0 }; DWORD cb = sizeof(TOKEN_PRIVILEGES); - if (!LookupPrivilegeValueW(nullptr, SE_DEBUG_NAME, &luid)) return; + if (!LookupPrivilegeValueA(nullptr, SE_DEBUG_NAME, &luid)) return; tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; From 5a2c0b565da99c527aef61647298b04f90246de8 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Thu, 3 Mar 2022 16:37:18 +0000 Subject: [PATCH 03/21] Do not lookup rcon dvars every single time we need them --- src/Components/Modules/RCon.cpp | 11 +++++++---- src/Components/Modules/RCon.hpp | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Components/Modules/RCon.cpp b/src/Components/Modules/RCon.cpp index 1ab6fc59..064b15d2 100644 --- a/src/Components/Modules/RCon.cpp +++ b/src/Components/Modules/RCon.cpp @@ -7,6 +7,9 @@ namespace Components std::string RCon::Password; + Dvar::Var RCon::RconPassword; + Dvar::Var RCon::RconLogRequests; + RCon::RCon() { Command::Add("rcon", [](Command::Params* params) @@ -75,8 +78,8 @@ namespace Components Dvar::OnInit([]() { - Dvar::Register("rcon_password", "", Game::dvar_flag::DVAR_FLAG_NONE, "The password for rcon"); - Dvar::Register("log_rcon_requests", false, Game::dvar_flag::DVAR_FLAG_NONE, "Print remote commands in the output log"); + RCon::RconPassword = Dvar::Register("rcon_password", "", Game::dvar_flag::DVAR_FLAG_NONE, "The password for rcon"); + RCon::RconLogRequests = Dvar::Register("rcon_logRequests", false, Game::dvar_flag::DVAR_FLAG_NONE, "Print remote commands in the output log"); }); Network::Handle("rcon", [](Network::Address address, const std::string& _data) @@ -100,7 +103,7 @@ namespace Components password.erase(password.begin()); } - std::string svPassword = Dvar::Var("rcon_password").get(); + const std::string svPassword = RCon::RconPassword.get(); if (svPassword.empty()) { @@ -114,7 +117,7 @@ namespace Components outputBuffer.clear(); #ifndef DEBUG - if (Dvar::Var("log_rcon_requests").get()) + if (RCon::RconLogRequests.get()) #endif { Logger::Print("Executing RCon request from %s: %s\n", address.getCString(), command.data()); diff --git a/src/Components/Modules/RCon.hpp b/src/Components/Modules/RCon.hpp index 1cc486e5..b5ec83cd 100644 --- a/src/Components/Modules/RCon.hpp +++ b/src/Components/Modules/RCon.hpp @@ -25,5 +25,8 @@ namespace Components // For sr0's fucking rcon command // Son of a bitch! Annoying me day and night with that shit... static std::string Password; + + static Dvar::Var RconPassword; + static Dvar::Var RconLogRequests; }; } From 74ed534bf63dd32fa05373e51df8134b834f435d Mon Sep 17 00:00:00 2001 From: FutureRave Date: Thu, 3 Mar 2022 17:43:22 +0000 Subject: [PATCH 04/21] snake case var --- src/Components/Modules/RCon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/Modules/RCon.cpp b/src/Components/Modules/RCon.cpp index 064b15d2..8d506708 100644 --- a/src/Components/Modules/RCon.cpp +++ b/src/Components/Modules/RCon.cpp @@ -79,7 +79,7 @@ namespace Components Dvar::OnInit([]() { RCon::RconPassword = Dvar::Register("rcon_password", "", Game::dvar_flag::DVAR_FLAG_NONE, "The password for rcon"); - RCon::RconLogRequests = Dvar::Register("rcon_logRequests", false, Game::dvar_flag::DVAR_FLAG_NONE, "Print remote commands in the output log"); + RCon::RconLogRequests = Dvar::Register("rcon_log_requests", false, Game::dvar_flag::DVAR_FLAG_NONE, "Print remote commands in the output log"); }); Network::Handle("rcon", [](Network::Address address, const std::string& _data) From 0cf2ac2853fbc0c06221d96f9b65a25de86b70be Mon Sep 17 00:00:00 2001 From: FutureRave Date: Mon, 7 Mar 2022 22:35:12 +0000 Subject: [PATCH 05/21] Disable warning, fix naming inconsistency for component & remove unused code Rename Slowmotion.cpp to SlowMotion.cpp Rename Slowmotion.hpp to SlowMotion.hpp Modify comments and remove unused code --- .../Modules/{Slowmotion.cpp => SlowMotion.cpp} | 2 +- .../Modules/{Slowmotion.hpp => SlowMotion.hpp} | 0 src/STDInclude.hpp | 10 ++-------- 3 files changed, 3 insertions(+), 9 deletions(-) rename src/Components/Modules/{Slowmotion.cpp => SlowMotion.cpp} (99%) rename src/Components/Modules/{Slowmotion.hpp => SlowMotion.hpp} (100%) diff --git a/src/Components/Modules/Slowmotion.cpp b/src/Components/Modules/SlowMotion.cpp similarity index 99% rename from src/Components/Modules/Slowmotion.cpp rename to src/Components/Modules/SlowMotion.cpp index ff80ca1f..268a2a0a 100644 --- a/src/Components/Modules/Slowmotion.cpp +++ b/src/Components/Modules/SlowMotion.cpp @@ -91,4 +91,4 @@ namespace Components Utils::Hook(0x4A54ED, SlowMotion::DrawConnectionInterruptedStub, HOOK_CALL).install()->quick(); Utils::Hook(0x4A54FB, SlowMotion::DrawConnectionInterruptedStub, HOOK_CALL).install()->quick(); } -} \ No newline at end of file +} diff --git a/src/Components/Modules/Slowmotion.hpp b/src/Components/Modules/SlowMotion.hpp similarity index 100% rename from src/Components/Modules/Slowmotion.hpp rename to src/Components/Modules/SlowMotion.hpp diff --git a/src/STDInclude.hpp b/src/STDInclude.hpp index 4ae48092..bdec22d1 100644 --- a/src/STDInclude.hpp +++ b/src/STDInclude.hpp @@ -54,14 +54,7 @@ #include #pragma comment (lib, "xinput.lib") -// Usefull for debugging -template class Sizer { }; -#define BindNum(x, y) Sizer y; -#define Size_Of(x, y) BindNum(sizeof(x), y) -#define Offset_Of(x, y, z) BindNum(offsetof(x, y), z) - -// Submodules -// Ignore the warnings, it's not our code! +// Ignore the warnings #pragma warning(push) #pragma warning(disable: 4005) #pragma warning(disable: 4091) @@ -79,6 +72,7 @@ template class Sizer { }; #pragma warning(disable: 6258) #pragma warning(disable: 6386) #pragma warning(disable: 6387) +#pragma warning(disable: 26812) #include From 21f0fe8c5ee66f01b6b2c4d7dd806913f9e802e6 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Tue, 8 Mar 2022 12:20:28 +0000 Subject: [PATCH 06/21] Fix dvar flags & various dvar improvements --- src/Components/Modules/AssetHandler.cpp | 2 +- src/Components/Modules/Auth.cpp | 2 +- src/Components/Modules/CardTitles.cpp | 2 +- src/Components/Modules/Chat.cpp | 2 +- src/Components/Modules/Clantags.cpp | 2 +- src/Components/Modules/Console.cpp | 7 +-- src/Components/Modules/Console.hpp | 2 +- src/Components/Modules/D3D9Ex.cpp | 2 +- src/Components/Modules/Dedicated.cpp | 14 ++--- src/Components/Modules/Discovery.cpp | 4 +- src/Components/Modules/Download.cpp | 12 ++--- src/Components/Modules/Dvar.cpp | 46 ++++++++-------- src/Components/Modules/Dvar.hpp | 6 +-- src/Components/Modules/Elevators.cpp | 2 +- src/Components/Modules/FastFiles.cpp | 2 +- src/Components/Modules/Friends.cpp | 4 +- src/Components/Modules/Gamepad.cpp | 46 ++++++++-------- src/Components/Modules/Localization.cpp | 2 +- src/Components/Modules/Logger.cpp | 2 +- src/Components/Modules/Maps.cpp | 8 +-- src/Components/Modules/ModList.cpp | 2 +- src/Components/Modules/Movement.cpp | 34 ++++++------ src/Components/Modules/Movement.hpp | 4 +- src/Components/Modules/News.cpp | 4 +- src/Components/Modules/Party.cpp | 18 +++---- src/Components/Modules/PlayerName.cpp | 2 +- src/Components/Modules/QuickPatch.cpp | 18 +++---- src/Components/Modules/QuickPatch.hpp | 2 +- src/Components/Modules/RCon.cpp | 4 +- src/Components/Modules/Renderer.cpp | 12 ++--- src/Components/Modules/ServerList.cpp | 14 ++--- src/Components/Modules/StartupMessages.cpp | 6 +-- src/Components/Modules/TextRenderer.cpp | 14 ++--- src/Components/Modules/Theatre.cpp | 4 +- src/Components/Modules/UIFeeder.cpp | 6 +-- src/Components/Modules/Window.cpp | 4 +- src/Components/Modules/ZoneBuilder.cpp | 2 +- src/Game/Functions.hpp | 38 ++++++------- src/Game/Structs.hpp | 62 +++++++++++----------- 39 files changed, 209 insertions(+), 210 deletions(-) diff --git a/src/Components/Modules/AssetHandler.cpp b/src/Components/Modules/AssetHandler.cpp index 98270b52..b3c7057a 100644 --- a/src/Components/Modules/AssetHandler.cpp +++ b/src/Components/Modules/AssetHandler.cpp @@ -494,7 +494,7 @@ namespace Components { this->reallocateEntryPool(); - Dvar::Register("r_noVoid", false, Game::DVAR_FLAG_SAVED, "Disable void model (red fx)"); + Dvar::Register("r_noVoid", false, Game::DVAR_ARCHIVE, "Disable void model (red fx)"); AssetHandler::ClearTemporaryAssets(); diff --git a/src/Components/Modules/Auth.cpp b/src/Components/Modules/Auth.cpp index 1ea665f7..9bb70dfa 100644 --- a/src/Components/Modules/Auth.cpp +++ b/src/Components/Modules/Auth.cpp @@ -432,7 +432,7 @@ namespace Components Scheduler::OnFrame(Auth::Frame); // Register dvar - Dvar::Register("sv_securityLevel", 23, 0, 512, Game::dvar_flag::DVAR_FLAG_SERVERINFO, "Security level for GUID certificates (POW)"); + Dvar::Register("sv_securityLevel", 23, 0, 512, Game::dvar_flag::DVAR_SERVERINFO, "Security level for GUID certificates (POW)"); // Install registration hook Utils::Hook(0x6265F9, Auth::DirectConnectStub, HOOK_JUMP).install()->quick(); diff --git a/src/Components/Modules/CardTitles.cpp b/src/Components/Modules/CardTitles.cpp index 471dd8ec..ae052e9d 100644 --- a/src/Components/Modules/CardTitles.cpp +++ b/src/Components/Modules/CardTitles.cpp @@ -192,7 +192,7 @@ namespace Components { Dvar::OnInit([]() { - CardTitles::CustomTitleDvar = Dvar::Register("customtitle", "", Game::dvar_flag::DVAR_FLAG_USERINFO | Game::dvar_flag::DVAR_FLAG_SAVED, "Custom card title"); + CardTitles::CustomTitleDvar = Dvar::Register("customtitle", "", Game::dvar_flag::DVAR_USERINFO | Game::dvar_flag::DVAR_ARCHIVE, "Custom card title"); }); ServerCommands::OnCommand(21, [](Command::Params* params) diff --git a/src/Components/Modules/Chat.cpp b/src/Components/Modules/Chat.cpp index abe117d8..283455b5 100644 --- a/src/Components/Modules/Chat.cpp +++ b/src/Components/Modules/Chat.cpp @@ -316,7 +316,7 @@ namespace Components { Dvar::OnInit([] { - cg_chatWidth = Dvar::Register("cg_chatWidth", 52, 1, std::numeric_limits::max(), Game::DVAR_FLAG_SAVED, "The normalized maximum width of a chat message"); + cg_chatWidth = Dvar::Register("cg_chatWidth", 52, 1, std::numeric_limits::max(), Game::DVAR_ARCHIVE, "The normalized maximum width of a chat message"); Chat::AddChatCommands(); }); diff --git a/src/Components/Modules/Clantags.cpp b/src/Components/Modules/Clantags.cpp index ff6e2022..6b9e6979 100644 --- a/src/Components/Modules/Clantags.cpp +++ b/src/Components/Modules/Clantags.cpp @@ -75,7 +75,7 @@ namespace Components // Create clantag dvar Dvar::OnInit([]() { - Dvar::Register("clantag", "", Game::dvar_flag::DVAR_FLAG_USERINFO | Game::dvar_flag::DVAR_FLAG_SAVED, "If set, your clantag will be shown on the scoreboard."); + Dvar::Register("clantag", "", Game::dvar_flag::DVAR_USERINFO | Game::dvar_flag::DVAR_ARCHIVE, "If set, your clantag will be shown on the scoreboard."); }); // Servercommand hook diff --git a/src/Components/Modules/Console.cpp b/src/Components/Modules/Console.cpp index 18b82ff6..c50f723c 100644 --- a/src/Components/Modules/Console.cpp +++ b/src/Components/Modules/Console.cpp @@ -504,7 +504,8 @@ namespace Components Console::ConsoleThread = std::thread(Console::ConsoleRunner); } - Game::dvar_t* Console::RegisterConColor(const char* name, float r, float g, float b, float a, float min, float max, int flags, const char* description) + Game::dvar_t* Console::RegisterConColor(const char* dvarName, float r, float g, float b, float a, float min, + float max, unsigned __int16 flags, const char* description) { static struct { @@ -521,7 +522,7 @@ namespace Components for (int i = 0; i < ARRAYSIZE(patchedColors); ++i) { - if (std::string(name) == patchedColors[i].name) + if (std::strcmp(dvarName, patchedColors[i].name) == 0) { r = patchedColors[i].color[0]; g = patchedColors[i].color[1]; @@ -531,7 +532,7 @@ namespace Components } } - return reinterpret_cast(0x471500)(name, r, g, b, a, min, max, flags, description); + return reinterpret_cast(0x471500)(dvarName, r, g, b, a, min, max, flags, description); } Console::Console() diff --git a/src/Components/Modules/Console.hpp b/src/Components/Modules/Console.hpp index 0ef30bb5..2ca6eb60 100644 --- a/src/Components/Modules/Console.hpp +++ b/src/Components/Modules/Console.hpp @@ -66,6 +66,6 @@ namespace Components static void ToggleConsole(); static char** GetAutoCompleteFileList(const char *path, const char *extension, Game::FsListBehavior_e behavior, int *numfiles, int allocTrackType); - static Game::dvar_t* RegisterConColor(const char* name, float r, float g, float b, float a, float min, float max, int flags, const char* description); + static Game::dvar_t* RegisterConColor(const char* dvarName, float r, float g, float b, float a, float min, float max, unsigned __int16 flags, const char* description); }; } diff --git a/src/Components/Modules/D3D9Ex.cpp b/src/Components/Modules/D3D9Ex.cpp index c78113dd..d9222836 100644 --- a/src/Components/Modules/D3D9Ex.cpp +++ b/src/Components/Modules/D3D9Ex.cpp @@ -748,7 +748,7 @@ namespace Components { if (Dedicated::IsEnabled()) return; - Dvar::Register("r_useD3D9Ex", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Use extended d3d9 interface!"); + Dvar::Register("r_useD3D9Ex", false, Game::dvar_flag::DVAR_ARCHIVE, "Use extended d3d9 interface!"); // Hook Interface creation Utils::Hook::Set(0x6D74D0, D3D9Ex::Direct3DCreate9Stub); diff --git a/src/Components/Modules/Dedicated.cpp b/src/Components/Modules/Dedicated.cpp index 3e615dab..8e0bf319 100644 --- a/src/Components/Modules/Dedicated.cpp +++ b/src/Components/Modules/Dedicated.cpp @@ -275,22 +275,22 @@ namespace Components Game::dvar_t* Dedicated::Dvar_RegisterSVNetworkFps(const char* dvarName, int, int min, int, int, const char* description) { - return Game::Dvar_RegisterInt(dvarName, 1000, min, 1000, Game::dvar_flag::DVAR_FLAG_NONE, description); + return Game::Dvar_RegisterInt(dvarName, 1000, min, 1000, Game::dvar_flag::DVAR_NONE, description); } Dedicated::Dedicated() { // Map rotation Utils::Hook::Set(0x4152E8, Dedicated::MapRotate); - Dvar::Register("sv_dontrotate", false, Game::dvar_flag::DVAR_FLAG_CHEAT, ""); - Dvar::Register("com_logFilter", true, Game::dvar_flag::DVAR_FLAG_LATCHED, "Removes ~95% of unneeded lines from the log"); + Dvar::Register("sv_dontrotate", false, Game::dvar_flag::DVAR_CHEAT, ""); + Dvar::Register("com_logFilter", true, Game::dvar_flag::DVAR_LATCH, "Removes ~95% of unneeded lines from the log"); if (Dedicated::IsEnabled() || ZoneBuilder::IsEnabled()) { // Make sure all callbacks are handled Scheduler::OnFrame(Steam::SteamAPI_RunCallbacks); - Dvar::Register("sv_lanOnly", false, Game::dvar_flag::DVAR_FLAG_NONE, "Don't act as node"); + Dvar::Register("sv_lanOnly", false, Game::dvar_flag::DVAR_NONE, "Don't act as node"); Utils::Hook(0x60BE98, Dedicated::InitDedicatedServer, HOOK_CALL).install()->quick(); @@ -391,9 +391,9 @@ namespace Components Dvar::OnInit([]() { - Dedicated::SVRandomMapRotation = Dvar::Register("sv_randomMapRotation", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Randomize map rotation when true"); - Dvar::Register("sv_sayName", "^7Console", Game::dvar_flag::DVAR_FLAG_NONE, "The name to pose as for 'say' commands"); - Dvar::Register("sv_motd", "", Game::dvar_flag::DVAR_FLAG_NONE, "A custom message of the day for servers"); + Dedicated::SVRandomMapRotation = Dvar::Register("sv_randomMapRotation", false, Game::dvar_flag::DVAR_ARCHIVE, "Randomize map rotation when true"); + Dvar::Register("sv_sayName", "^7Console", Game::dvar_flag::DVAR_NONE, "The name to pose as for 'say' commands"); + Dvar::Register("sv_motd", "", Game::dvar_flag::DVAR_NONE, "A custom message of the day for servers"); // Say command Command::AddSV("say", [](Command::Params* params) diff --git a/src/Components/Modules/Discovery.cpp b/src/Components/Modules/Discovery.cpp index 758ef317..67833a0f 100644 --- a/src/Components/Modules/Discovery.cpp +++ b/src/Components/Modules/Discovery.cpp @@ -14,8 +14,8 @@ namespace Components Discovery::Discovery() { - Dvar::Register("net_discoveryPortRangeMin", 25000, 0, 65535, Game::dvar_flag::DVAR_FLAG_SAVED, "Minimum scan range port for local server discovery"); - Dvar::Register("net_discoveryPortRangeMax", 35000, 1, 65536, Game::dvar_flag::DVAR_FLAG_SAVED, "Maximum scan range port for local server discovery"); + Dvar::Register("net_discoveryPortRangeMin", 25000, 0, 65535, Game::dvar_flag::DVAR_ARCHIVE, "Minimum scan range port for local server discovery"); + Dvar::Register("net_discoveryPortRangeMax", 35000, 1, 65536, Game::dvar_flag::DVAR_ARCHIVE, "Maximum scan range port for local server discovery"); // An additional thread prevents lags // Not sure if that's the best way though diff --git a/src/Components/Modules/Download.cpp b/src/Components/Modules/Download.cpp index 9d803891..a4ac5727 100644 --- a/src/Components/Modules/Download.cpp +++ b/src/Components/Modules/Download.cpp @@ -902,9 +902,9 @@ namespace Components { Dvar::OnInit([]() { - Dvar::Register("ui_dl_timeLeft", "", Game::dvar_flag::DVAR_FLAG_NONE, ""); - Dvar::Register("ui_dl_progress", "", Game::dvar_flag::DVAR_FLAG_NONE, ""); - Dvar::Register("ui_dl_transRate", "", Game::dvar_flag::DVAR_FLAG_NONE, ""); + Dvar::Register("ui_dl_timeLeft", "", Game::dvar_flag::DVAR_NONE, ""); + Dvar::Register("ui_dl_progress", "", Game::dvar_flag::DVAR_NONE, ""); + Dvar::Register("ui_dl_transRate", "", Game::dvar_flag::DVAR_NONE, ""); }); UIScript::Add("mod_download_cancel", [](UIScript::Token) @@ -915,13 +915,13 @@ namespace Components Dvar::OnInit([]() { - Dvar::Register("sv_wwwDownload", false, Game::dvar_flag::DVAR_FLAG_DEDISAVED, "Set to true to enable downloading maps/mods from an external server."); - Dvar::Register("sv_wwwBaseUrl", "", Game::dvar_flag::DVAR_FLAG_DEDISAVED, "Set to the base url for the external map download."); + Dvar::Register("sv_wwwDownload", false, Game::dvar_flag::DVAR_ARCHIVE, "Set to true to enable downloading maps/mods from an external server."); + Dvar::Register("sv_wwwBaseUrl", "", Game::dvar_flag::DVAR_ARCHIVE, "Set to the base url for the external map download."); // Force users to enable this because we don't want to accidentally turn everyone's pc into a http server into all their files again // not saying we are but ya know... accidents happen // by having it saved we force the user to enable it in config_mp because it only checks the dvar on startup to see if we should init download or not - Dvar::Register("mod_force_download_server", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Set to true to force the client to run the download server for mods (for mods in private matches)."); + Dvar::Register("mod_force_download_server", false, Game::dvar_flag::DVAR_ARCHIVE, "Set to true to force the client to run the download server for mods (for mods in private matches)."); }); Scheduler::OnFrame([]() diff --git a/src/Components/Modules/Dvar.cpp b/src/Components/Modules/Dvar.cpp index 5e6f8a60..fb1b88eb 100644 --- a/src/Components/Modules/Dvar.cpp +++ b/src/Components/Modules/Dvar.cpp @@ -181,24 +181,24 @@ namespace Components } } - template<> static Dvar::Var Dvar::Register(const char* name, bool value, Dvar::Flag flag, const char* description) + template<> static Dvar::Var Dvar::Register(const char* dvarName, bool value, Dvar::Flag flag, const char* description) { - return Game::Dvar_RegisterBool(name, value, flag.val, description); + return Game::Dvar_RegisterBool(dvarName, value, flag.val, description); } - template<> static Dvar::Var Dvar::Register(const char* name, const char* value, Dvar::Flag flag, const char* description) + template<> static Dvar::Var Dvar::Register(const char* dvarName, const char* value, Dvar::Flag flag, const char* description) { - return Game::Dvar_RegisterString(name, value, flag.val, description); + return Game::Dvar_RegisterString(dvarName, value, flag.val, description); } - template<> static Dvar::Var Dvar::Register(const char* name, int value, int min, int max, Dvar::Flag flag, const char* description) + template<> static Dvar::Var Dvar::Register(const char* dvarName, int value, int min, int max, Dvar::Flag flag, const char* description) { - return Game::Dvar_RegisterInt(name, value, min, max, flag.val, description); + return Game::Dvar_RegisterInt(dvarName, value, min, max, flag.val, description); } - template<> static Dvar::Var Dvar::Register(const char* name, float value, float min, float max, Dvar::Flag flag, const char* description) + template<> static Dvar::Var Dvar::Register(const char* dvarName, float value, float min, float max, Dvar::Flag flag, const char* description) { - return Game::Dvar_RegisterFloat(name, value, min, max, flag.val, description); + return Game::Dvar_RegisterFloat(dvarName, value, min, max, flag.val, description); } void Dvar::OnInit(Utils::Slot callback) @@ -255,7 +255,7 @@ namespace Components } } - return Dvar::Register(name, username.data(), Dvar::Flag(flag | Game::dvar_flag::DVAR_FLAG_SAVED).val, description).get(); + return Dvar::Register(name, username.data(), Dvar::Flag(flag | Game::dvar_flag::DVAR_ARCHIVE).val, description).get(); } void Dvar::SetFromStringByNameSafeExternal(const char* dvarName, const char* string) @@ -305,7 +305,7 @@ namespace Components { // Save the dvar original value if it has the archive flag const auto* dvar = Game::Dvar_FindVar(dvarName); - if (dvar != nullptr && dvar->flags & Game::dvar_flag::DVAR_FLAG_SAVED) + if (dvar != nullptr && dvar->flags & Game::dvar_flag::DVAR_ARCHIVE) { Dvar::SaveArchiveDvar(dvar); } @@ -316,25 +316,25 @@ namespace Components Dvar::Dvar() { // set flags of cg_drawFPS to archive - Utils::Hook::Or(0x4F8F69, Game::dvar_flag::DVAR_FLAG_SAVED); + Utils::Hook::Or(0x4F8F69, Game::dvar_flag::DVAR_ARCHIVE); // un-cheat camera_thirdPersonCrosshairOffset and add archive flags - Utils::Hook::Xor(0x447B41, Game::dvar_flag::DVAR_FLAG_CHEAT | Game::dvar_flag::DVAR_FLAG_SAVED); + Utils::Hook::Xor(0x447B41, Game::dvar_flag::DVAR_CHEAT | Game::dvar_flag::DVAR_ARCHIVE); // un-cheat cg_fov and add archive flags - Utils::Hook::Xor(0x4F8E35, Game::dvar_flag::DVAR_FLAG_CHEAT | Game::dvar_flag::DVAR_FLAG_SAVED); + Utils::Hook::Xor(0x4F8E35, Game::dvar_flag::DVAR_CHEAT | Game::dvar_flag::DVAR_ARCHIVE); // un-cheat cg_fovscale and add archive flags - Utils::Hook::Xor(0x4F8E68, Game::dvar_flag::DVAR_FLAG_CHEAT | Game::dvar_flag::DVAR_FLAG_SAVED); + Utils::Hook::Xor(0x4F8E68, Game::dvar_flag::DVAR_CHEAT | Game::dvar_flag::DVAR_ARCHIVE); // un-cheat cg_debugInfoCornerOffset and add archive flags - Utils::Hook::Xor(0x4F8FC2, Game::dvar_flag::DVAR_FLAG_CHEAT | Game::dvar_flag::DVAR_FLAG_SAVED); + Utils::Hook::Xor(0x4F8FC2, Game::dvar_flag::DVAR_CHEAT | Game::dvar_flag::DVAR_ARCHIVE); // remove archive flags for cg_hudchatposition - Utils::Hook::Xor(0x4F9992, Game::dvar_flag::DVAR_FLAG_SAVED); + Utils::Hook::Xor(0x4F9992, Game::dvar_flag::DVAR_ARCHIVE); // remove write protection from fs_game - Utils::Hook::Xor(0x6431EA, Game::dvar_flag::DVAR_FLAG_WRITEPROTECTED); + Utils::Hook::Xor(0x6431EA, Game::dvar_flag::DVAR_WRITEPROTECTED); // set cg_fov max to 90.0 // ...120 because of V2 @@ -346,19 +346,19 @@ namespace Components Utils::Hook::Set(0x408078, &volume); // Uncheat ui_showList - Utils::Hook::Xor(0x6310DC, Game::dvar_flag::DVAR_FLAG_CHEAT); + Utils::Hook::Xor(0x6310DC, Game::dvar_flag::DVAR_CHEAT); // Uncheat ui_debugMode - Utils::Hook::Xor(0x6312DE, Game::dvar_flag::DVAR_FLAG_CHEAT); + Utils::Hook::Xor(0x6312DE, Game::dvar_flag::DVAR_CHEAT); // Hook dvar 'name' registration Utils::Hook(0x40531C, Dvar::RegisterName, HOOK_CALL).install()->quick(); // un-cheat safeArea_* and add archive flags - Utils::Hook::Xor(0x42E3F5, Game::dvar_flag::DVAR_FLAG_READONLY | Game::dvar_flag::DVAR_FLAG_SAVED); //safeArea_adjusted_horizontal - Utils::Hook::Xor(0x42E423, Game::dvar_flag::DVAR_FLAG_READONLY | Game::dvar_flag::DVAR_FLAG_SAVED); //safeArea_adjusted_vertical - Utils::Hook::Xor(0x42E398, Game::dvar_flag::DVAR_FLAG_CHEAT | Game::dvar_flag::DVAR_FLAG_SAVED); //safeArea_horizontal - Utils::Hook::Xor(0x42E3C4, Game::dvar_flag::DVAR_FLAG_CHEAT | Game::dvar_flag::DVAR_FLAG_SAVED); //safeArea_vertical + Utils::Hook::Xor(0x42E3F5, Game::dvar_flag::DVAR_READONLY | Game::dvar_flag::DVAR_ARCHIVE); //safeArea_adjusted_horizontal + Utils::Hook::Xor(0x42E423, Game::dvar_flag::DVAR_READONLY | Game::dvar_flag::DVAR_ARCHIVE); //safeArea_adjusted_vertical + Utils::Hook::Xor(0x42E398, Game::dvar_flag::DVAR_CHEAT | Game::dvar_flag::DVAR_ARCHIVE); //safeArea_horizontal + Utils::Hook::Xor(0x42E3C4, Game::dvar_flag::DVAR_CHEAT | Game::dvar_flag::DVAR_ARCHIVE); //safeArea_vertical // Don't allow setting cheat protected dvars via menus Utils::Hook(0x63C897, Dvar::SetFromStringByNameExternal, HOOK_CALL).install()->quick(); diff --git a/src/Components/Modules/Dvar.hpp b/src/Components/Modules/Dvar.hpp index 8f87eaf5..c140ac73 100644 --- a/src/Components/Modules/Dvar.hpp +++ b/src/Components/Modules/Dvar.hpp @@ -9,7 +9,7 @@ namespace Components { public: Flag(Game::dvar_flag flag) : val(flag) {}; - Flag(int flag) : Flag(static_cast(flag)) {}; + Flag(unsigned __int16 flag) : Flag(static_cast(flag)) {}; Game::dvar_flag val; }; @@ -46,8 +46,8 @@ namespace Components static void OnInit(Utils::Slot callback); // Only strings and bools use this type of declaration - template static Var Register(const char* name, T value, Flag flag, const char* description); - template static Var Register(const char* name, T value, T min, T max, Flag flag, const char* description); + template static Var Register(const char* dvarName, T value, Flag flag, const char* description); + template static Var Register(const char* dvarName, T value, T min, T max, Flag flag, const char* description); static void ResetDvarsValue(); diff --git a/src/Components/Modules/Elevators.cpp b/src/Components/Modules/Elevators.cpp index 9438f9ce..9a8f5dcd 100644 --- a/src/Components/Modules/Elevators.cpp +++ b/src/Components/Modules/Elevators.cpp @@ -108,7 +108,7 @@ namespace Components }; Elevators::BG_Elevators = Game::Dvar_RegisterEnum("bg_elevators", values, - Elevators::ENABLED, Game::DVAR_FLAG_REPLICATED, "Elevators glitch settings"); + Elevators::ENABLED, Game::DVAR_CODINFO, "Elevators glitch settings"); }); //Replace PM_CorrectAllSolid diff --git a/src/Components/Modules/FastFiles.cpp b/src/Components/Modules/FastFiles.cpp index 2170e3c6..148fe107 100644 --- a/src/Components/Modules/FastFiles.cpp +++ b/src/Components/Modules/FastFiles.cpp @@ -495,7 +495,7 @@ namespace Components FastFiles::FastFiles() { - Dvar::Register("ui_zoneDebug", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Display current loaded zone."); + Dvar::Register("ui_zoneDebug", false, Game::dvar_flag::DVAR_ARCHIVE, "Display current loaded zone."); // Fix XSurface assets Utils::Hook(0x0048E8A5, FastFiles::Load_XSurfaceArray, HOOK_CALL).install()->quick(); diff --git a/src/Components/Modules/Friends.cpp b/src/Components/Modules/Friends.cpp index d8d483ac..d48dffe1 100644 --- a/src/Components/Modules/Friends.cpp +++ b/src/Components/Modules/Friends.cpp @@ -578,8 +578,8 @@ namespace Components if (Dedicated::IsEnabled() || ZoneBuilder::IsEnabled() || Monitor::IsEnabled()) return; - Dvar::Register("cl_anonymous", false, Game::DVAR_FLAG_SAVED, "Enable invisible mode for Steam"); - Dvar::Register("cl_notifyFriendState", true, Game::DVAR_FLAG_SAVED, "Update friends about current game status"); + Dvar::Register("cl_anonymous", false, Game::DVAR_ARCHIVE, "Enable invisible mode for Steam"); + Dvar::Register("cl_notifyFriendState", true, Game::DVAR_ARCHIVE, "Update friends about current game status"); Command::Add("addFriend", [](Command::Params* params) { diff --git a/src/Components/Modules/Gamepad.cpp b/src/Components/Modules/Gamepad.cpp index 445868aa..1e4b85a1 100644 --- a/src/Components/Modules/Gamepad.cpp +++ b/src/Components/Modules/Gamepad.cpp @@ -1711,32 +1711,32 @@ namespace Components void Gamepad::InitDvars() { - gpad_enabled = Dvar::Register("gpad_enabled", false, Game::DVAR_FLAG_SAVED, "Game pad enabled"); - gpad_debug = Dvar::Register("gpad_debug", false, Game::DVAR_FLAG_NONE, "Game pad debugging"); - gpad_present = Dvar::Register("gpad_present", false, Game::DVAR_FLAG_NONE, "Game pad present"); - gpad_in_use = Dvar::Register("gpad_in_use", false, Game::DVAR_FLAG_NONE, "A game pad is in use"); - gpad_style = Dvar::Register("gpad_style", false, Game::DVAR_FLAG_SAVED, "Switch between Xbox and PS HUD"); - gpad_sticksConfig = Dvar::Register("gpad_sticksConfig", "", Game::DVAR_FLAG_SAVED, "Game pad stick configuration"); - gpad_buttonConfig = Dvar::Register("gpad_buttonConfig", "", Game::DVAR_FLAG_SAVED, "Game pad button configuration"); - gpad_menu_scroll_delay_first = Dvar::Register("gpad_menu_scroll_delay_first", 420, 0, 1000, Game::DVAR_FLAG_SAVED, "Menu scroll key-repeat delay, for the first repeat, in milliseconds"); - gpad_menu_scroll_delay_rest = Dvar::Register("gpad_menu_scroll_delay_rest", 210, 0, 1000, Game::DVAR_FLAG_SAVED, + gpad_enabled = Dvar::Register("gpad_enabled", false, Game::DVAR_ARCHIVE, "Game pad enabled"); + gpad_debug = Dvar::Register("gpad_debug", false, Game::DVAR_NONE, "Game pad debugging"); + gpad_present = Dvar::Register("gpad_present", false, Game::DVAR_NONE, "Game pad present"); + gpad_in_use = Dvar::Register("gpad_in_use", false, Game::DVAR_NONE, "A game pad is in use"); + gpad_style = Dvar::Register("gpad_style", false, Game::DVAR_ARCHIVE, "Switch between Xbox and PS HUD"); + gpad_sticksConfig = Dvar::Register("gpad_sticksConfig", "", Game::DVAR_ARCHIVE, "Game pad stick configuration"); + gpad_buttonConfig = Dvar::Register("gpad_buttonConfig", "", Game::DVAR_ARCHIVE, "Game pad button configuration"); + gpad_menu_scroll_delay_first = Dvar::Register("gpad_menu_scroll_delay_first", 420, 0, 1000, Game::DVAR_ARCHIVE, "Menu scroll key-repeat delay, for the first repeat, in milliseconds"); + gpad_menu_scroll_delay_rest = Dvar::Register("gpad_menu_scroll_delay_rest", 210, 0, 1000, Game::DVAR_ARCHIVE, "Menu scroll key-repeat delay, for repeats after the first, in milliseconds"); - gpad_rumble = Dvar::Register("gpad_rumble", true, Game::DVAR_FLAG_SAVED, "Enable game pad rumble"); - gpad_stick_pressed_hysteresis = Dvar::Register("gpad_stick_pressed_hysteresis", 0.1f, 0.0f, 1.0f, Game::DVAR_FLAG_NONE, + gpad_rumble = Dvar::Register("gpad_rumble", true, Game::DVAR_ARCHIVE, "Enable game pad rumble"); + gpad_stick_pressed_hysteresis = Dvar::Register("gpad_stick_pressed_hysteresis", 0.1f, 0.0f, 1.0f, Game::DVAR_NONE, "Game pad stick pressed no-change-zone around gpad_stick_pressed to prevent bouncing"); - gpad_stick_pressed = Dvar::Register("gpad_stick_pressed", 0.4f, 0.0, 1.0, Game::DVAR_FLAG_NONE, "Game pad stick pressed threshhold"); - gpad_stick_deadzone_max = Dvar::Register("gpad_stick_deadzone_max", 0.01f, 0.0f, 1.0f, Game::DVAR_FLAG_NONE, "Game pad maximum stick deadzone"); - gpad_stick_deadzone_min = Dvar::Register("gpad_stick_deadzone_min", 0.2f, 0.0f, 1.0f, Game::DVAR_FLAG_NONE, "Game pad minimum stick deadzone"); - gpad_button_deadzone = Dvar::Register("gpad_button_deadzone", 0.13f, 0.0f, 1.0f, Game::DVAR_FLAG_NONE, "Game pad button deadzone threshhold"); - gpad_button_lstick_deflect_max = Dvar::Register("gpad_button_lstick_deflect_max", 1.0f, 0.0f, 1.0f, Game::DVAR_FLAG_NONE, "Game pad maximum pad stick pressed value"); - gpad_button_rstick_deflect_max = Dvar::Register("gpad_button_rstick_deflect_max", 1.0f, 0.0f, 1.0f, Game::DVAR_FLAG_NONE, "Game pad maximum pad stick pressed value"); - gpad_use_hold_time = Dvar::Register("gpad_use_hold_time", 250, 0, std::numeric_limits::max(), Game::DVAR_FLAG_NONE, "Time to hold the 'use' button on gamepads to activate use"); - gpad_lockon_enabled = Dvar::Register("gpad_lockon_enabled", true, Game::DVAR_FLAG_SAVED, "Game pad lockon aim assist enabled"); - gpad_slowdown_enabled = Dvar::Register("gpad_slowdown_enabled", true, Game::DVAR_FLAG_SAVED, "Game pad slowdown aim assist enabled"); + gpad_stick_pressed = Dvar::Register("gpad_stick_pressed", 0.4f, 0.0, 1.0, Game::DVAR_NONE, "Game pad stick pressed threshhold"); + gpad_stick_deadzone_max = Dvar::Register("gpad_stick_deadzone_max", 0.01f, 0.0f, 1.0f, Game::DVAR_NONE, "Game pad maximum stick deadzone"); + gpad_stick_deadzone_min = Dvar::Register("gpad_stick_deadzone_min", 0.2f, 0.0f, 1.0f, Game::DVAR_NONE, "Game pad minimum stick deadzone"); + gpad_button_deadzone = Dvar::Register("gpad_button_deadzone", 0.13f, 0.0f, 1.0f, Game::DVAR_NONE, "Game pad button deadzone threshhold"); + gpad_button_lstick_deflect_max = Dvar::Register("gpad_button_lstick_deflect_max", 1.0f, 0.0f, 1.0f, Game::DVAR_NONE, "Game pad maximum pad stick pressed value"); + gpad_button_rstick_deflect_max = Dvar::Register("gpad_button_rstick_deflect_max", 1.0f, 0.0f, 1.0f, Game::DVAR_NONE, "Game pad maximum pad stick pressed value"); + gpad_use_hold_time = Dvar::Register("gpad_use_hold_time", 250, 0, std::numeric_limits::max(), Game::DVAR_NONE, "Time to hold the 'use' button on gamepads to activate use"); + gpad_lockon_enabled = Dvar::Register("gpad_lockon_enabled", true, Game::DVAR_ARCHIVE, "Game pad lockon aim assist enabled"); + gpad_slowdown_enabled = Dvar::Register("gpad_slowdown_enabled", true, Game::DVAR_ARCHIVE, "Game pad slowdown aim assist enabled"); - input_viewSensitivity = Dvar::Register("input_viewSensitivity", 1.0f, 0.0001f, 5.0f, Game::DVAR_FLAG_SAVED, "View Sensitivity"); - input_invertPitch = Dvar::Register("input_invertPitch", false, Game::DVAR_FLAG_SAVED, "Invert gamepad pitch"); - sv_allowAimAssist = Dvar::Register("sv_allowAimAssist", true, Game::DVAR_FLAG_NONE, "Controls whether aim assist features on clients are enabled"); + input_viewSensitivity = Dvar::Register("input_viewSensitivity", 1.0f, 0.0001f, 5.0f, Game::DVAR_ARCHIVE, "View Sensitivity"); + input_invertPitch = Dvar::Register("input_invertPitch", false, Game::DVAR_ARCHIVE, "Invert gamepad pitch"); + sv_allowAimAssist = Dvar::Register("sv_allowAimAssist", true, Game::DVAR_NONE, "Controls whether aim assist features on clients are enabled"); aim_turnrate_pitch = Dvar::Var("aim_turnrate_pitch"); aim_turnrate_pitch_ads = Dvar::Var("aim_turnrate_pitch_ads"); aim_turnrate_yaw = Dvar::Var("aim_turnrate_yaw"); diff --git a/src/Components/Modules/Localization.cpp b/src/Components/Modules/Localization.cpp index 0bed7bac..3b385506 100644 --- a/src/Components/Modules/Localization.cpp +++ b/src/Components/Modules/Localization.cpp @@ -277,7 +277,7 @@ namespace Components // Overwrite SetString Utils::Hook(0x4CE5EE, Localization::SetStringStub, HOOK_CALL).install()->quick(); - Localization::UseLocalization = Dvar::Register("ui_localize", true, Game::dvar_flag::DVAR_FLAG_NONE, "Use localization strings"); + Localization::UseLocalization = Dvar::Register("ui_localize", true, Game::dvar_flag::DVAR_NONE, "Use localization strings"); // Generate localized entries for custom classes above 10 AssetHandler::OnLoad([](Game::XAssetType type, Game::XAssetHeader asset, const std::string& name, bool* /*restrict*/) diff --git a/src/Components/Modules/Logger.cpp b/src/Components/Modules/Logger.cpp index 75f2ec3b..06c964f4 100644 --- a/src/Components/Modules/Logger.cpp +++ b/src/Components/Modules/Logger.cpp @@ -242,7 +242,7 @@ namespace Components Logger::Logger() { - Dvar::Register("iw4x_onelog", false, Game::dvar_flag::DVAR_FLAG_LATCHED | Game::dvar_flag::DVAR_FLAG_SAVED, "Only write the game log to the 'userraw' OS folder"); + Dvar::Register("iw4x_onelog", false, Game::dvar_flag::DVAR_LATCH | Game::dvar_flag::DVAR_ARCHIVE, "Only write the game log to the 'userraw' OS folder"); Utils::Hook(0x642139, Logger::BuildOSPathStub, HOOK_JUMP).install()->quick(); Logger::PipeOutput(nullptr); diff --git a/src/Components/Modules/Maps.cpp b/src/Components/Modules/Maps.cpp index dc842f4d..f46fdd56 100644 --- a/src/Components/Modules/Maps.cpp +++ b/src/Components/Modules/Maps.cpp @@ -544,7 +544,7 @@ namespace Components } } - Dvar::Register(Utils::String::VA("isDlcInstalled_%d", dlc.index), false, Game::DVAR_FLAG_USERCREATED | Game::DVAR_FLAG_WRITEPROTECTED, ""); + Dvar::Register(Utils::String::VA("isDlcInstalled_%d", dlc.index), false, Game::DVAR_EXTERNAL | Game::DVAR_WRITEPROTECTED, ""); Maps::DlcPacks.push_back(dlc); Maps::UpdateDlcStatus(); @@ -690,7 +690,7 @@ namespace Components Game::dvar_t* Maps::GetSpecularDvar() { Game::dvar_t*& r_specular = *reinterpret_cast(0x69F0D94); - static Game::dvar_t* r_specularCustomMaps = Game::Dvar_RegisterBool("r_specularCustomMaps", false, Game::DVAR_FLAG_SAVED, "Allows shaders to use phong specular lighting on custom maps"); + static Game::dvar_t* r_specularCustomMaps = Game::Dvar_RegisterBool("r_specularCustomMaps", false, Game::DVAR_ARCHIVE, "Allows shaders to use phong specular lighting on custom maps"); if (Maps::IsCustomMap()) { @@ -769,8 +769,8 @@ namespace Components { Dvar::OnInit([]() { - Dvar::Register("isDlcInstalled_All", false, Game::DVAR_FLAG_USERCREATED | Game::DVAR_FLAG_WRITEPROTECTED, ""); - Dvar::Register("r_listSModels", false, Game::DVAR_FLAG_NONE, "Display a list of visible SModels"); + Dvar::Register("isDlcInstalled_All", false, Game::DVAR_EXTERNAL | Game::DVAR_WRITEPROTECTED, ""); + Dvar::Register("r_listSModels", false, Game::DVAR_NONE, "Display a list of visible SModels"); Maps::AddDlc({ 1, "Stimulus Pack", {"mp_complex", "mp_compact", "mp_storm", "mp_overgrown", "mp_crash"} }); Maps::AddDlc({ 2, "Resurgence Pack", {"mp_abandon", "mp_vacant", "mp_trailerpark", "mp_strike", "mp_fuel2"} }); diff --git a/src/Components/Modules/ModList.cpp b/src/Components/Modules/ModList.cpp index 8935b586..88e71a05 100644 --- a/src/Components/Modules/ModList.cpp +++ b/src/Components/Modules/ModList.cpp @@ -93,7 +93,7 @@ namespace Components if (Dedicated::IsEnabled()) return; ModList::CurrentMod = 0; - Dvar::Register("cl_modVidRestart", true, Game::dvar_flag::DVAR_FLAG_SAVED, "Perform a vid_restart when loading a mod."); + Dvar::Register("cl_modVidRestart", true, Game::dvar_flag::DVAR_ARCHIVE, "Perform a vid_restart when loading a mod."); UIScript::Add("LoadMods", ModList::UIScript_LoadMods); UIScript::Add("RunMod", ModList::UIScript_RunMod); diff --git a/src/Components/Modules/Movement.cpp b/src/Components/Modules/Movement.cpp index a59a00a5..57bfc72f 100644 --- a/src/Components/Modules/Movement.cpp +++ b/src/Components/Modules/Movement.cpp @@ -260,20 +260,20 @@ namespace Components } } - Game::dvar_t* Movement::Dvar_RegisterLastStandSpeedScale(const char* name, float value, - float min, float max, int, const char* desc) + Game::dvar_t* Movement::Dvar_RegisterLastStandSpeedScale(const char* dvarName, float value, + float min, float max, unsigned __int16 /*flags*/, const char* description) { - Movement::PlayerLastStandCrawlSpeedScale = Dvar::Register(name, value, - min, max, Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_REPLICATED, desc); + Movement::PlayerLastStandCrawlSpeedScale = Dvar::Register(dvarName, value, + min, max, Game::DVAR_CHEAT | Game::DVAR_CODINFO, description); return Movement::PlayerLastStandCrawlSpeedScale.get(); } - Game::dvar_t* Movement::Dvar_RegisterSpectateSpeedScale(const char* name, float value, - float min, float max, int, const char* desc) + Game::dvar_t* Movement::Dvar_RegisterSpectateSpeedScale(const char* dvarName, float value, + float min, float max, unsigned __int16 /*flags*/, const char* description) { - Movement::PlayerSpectateSpeedScale = Dvar::Register(name, value, - min, max, Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_REPLICATED, desc); + Movement::PlayerSpectateSpeedScale = Dvar::Register(dvarName, value, + min, max, Game::DVAR_CHEAT | Game::DVAR_CODINFO, description); return Movement::PlayerSpectateSpeedScale.get(); } @@ -291,36 +291,36 @@ namespace Components }; Movement::PlayerDuckedSpeedScale = Dvar::Register("player_duckedSpeedScale", - 0.65f, 0.0f, 5.0f, Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_REPLICATED, + 0.65f, 0.0f, 5.0f, Game::DVAR_CHEAT | Game::DVAR_CODINFO, "The scale applied to the player speed when ducking"); Movement::PlayerProneSpeedScale = Dvar::Register("player_proneSpeedScale", - 0.15f, 0.0f, 5.0f, Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_REPLICATED, + 0.15f, 0.0f, 5.0f, Game::DVAR_CHEAT | Game::DVAR_CODINFO, "The scale applied to the player speed when crawling"); // 3arc naming convention Movement::CGUfoScaler = Dvar::Register("cg_ufo_scaler", - 6.0f, 0.001f, 1000.0f, Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_REPLICATED, + 6.0f, 0.001f, 1000.0f, Game::DVAR_CHEAT | Game::DVAR_CODINFO, "The speed at which ufo camera moves"); Movement::CGNoclipScaler = Dvar::Register("cg_noclip_scaler", - 3.0f, 0.001f, 1000.0f, Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_REPLICATED, + 3.0f, 0.001f, 1000.0f, Game::DVAR_CHEAT | Game::DVAR_CODINFO, "The speed at which noclip camera moves"); Movement::BGBounces = Game::Dvar_RegisterEnum("bg_bounces", - bg_bouncesValues, Movement::DISABLED, Game::DVAR_FLAG_REPLICATED, "Bounce glitch settings"); + bg_bouncesValues, Movement::DISABLED, Game::DVAR_CODINFO, "Bounce glitch settings"); Movement::BGBouncesAllAngles = Dvar::Register("bg_bouncesAllAngles", - false, Game::DVAR_FLAG_REPLICATED, "Force bounce from all angles"); + false, Game::DVAR_CODINFO, "Force bounce from all angles"); Movement::BGRocketJump = Dvar::Register("bg_rocketJump", - false, Game::DVAR_FLAG_REPLICATED, "Enable CoD4 rocket jumps"); + false, Game::DVAR_CODINFO, "Enable CoD4 rocket jumps"); Movement::BGPlayerEjection = Dvar::Register("bg_playerEjection", - true, Game::DVAR_FLAG_REPLICATED, "Push intersecting players away from each other"); + true, Game::DVAR_CODINFO, "Push intersecting players away from each other"); Movement::BGPlayerCollision = Dvar::Register("bg_playerCollision", - true, Game::DVAR_FLAG_REPLICATED, "Push intersecting players away from each other"); + true, Game::DVAR_CODINFO, "Push intersecting players away from each other"); }); // Hook PM_CmdScaleForStance in PM_CmdScale_Walk diff --git a/src/Components/Modules/Movement.hpp b/src/Components/Modules/Movement.hpp index 97243ee2..2b718258 100644 --- a/src/Components/Modules/Movement.hpp +++ b/src/Components/Modules/Movement.hpp @@ -40,7 +40,7 @@ namespace Components static int StuckInClient_Hk(Game::gentity_s* self); static void CM_TransformedCapsuleTrace_Hk(Game::trace_t* results, const float* start, const float* end, const Game::Bounds* bounds, const Game::Bounds* capsule, int contents, const float* origin, const float* angles); - static Game::dvar_t* Dvar_RegisterLastStandSpeedScale(const char* name, float value, float min, float max, int flags, const char* desc); - static Game::dvar_t* Dvar_RegisterSpectateSpeedScale(const char* name, float value, float min, float max, int flags, const char* desc); + static Game::dvar_t* Dvar_RegisterLastStandSpeedScale(const char* dvarName, float value, float min, float max, unsigned __int16 flags, const char* description); + static Game::dvar_t* Dvar_RegisterSpectateSpeedScale(const char* dvarName, float value, float min, float max, unsigned __int16 flags, const char* description); }; } diff --git a/src/Components/Modules/News.cpp b/src/Components/Modules/News.cpp index ae852e51..a377084e 100644 --- a/src/Components/Modules/News.cpp +++ b/src/Components/Modules/News.cpp @@ -39,9 +39,9 @@ namespace Components { if (ZoneBuilder::IsEnabled() || Dedicated::IsEnabled()) return; // Maybe also dedi? - Dvar::Register("g_firstLaunch", true, Game::DVAR_FLAG_SAVED, ""); + Dvar::Register("g_firstLaunch", true, Game::DVAR_ARCHIVE, ""); - Dvar::Register("cl_updateoldversion", REVISION, REVISION, REVISION, Game::DVAR_FLAG_WRITEPROTECTED, "Current version number."); + Dvar::Register("cl_updateoldversion", REVISION, REVISION, REVISION, Game::DVAR_WRITEPROTECTED, "Current version number."); UIScript::Add("checkFirstLaunch", [](UIScript::Token) { diff --git a/src/Components/Modules/Party.cpp b/src/Components/Modules/Party.cpp index afa418ad..34049df9 100644 --- a/src/Components/Modules/Party.cpp +++ b/src/Components/Modules/Party.cpp @@ -79,7 +79,7 @@ namespace Components Game::dvar_t* Party::RegisterMinPlayers(const char* name, int /*value*/, int /*min*/, int max, Game::dvar_flag flag, const char* description) { - return Dvar::Register(name, 1, 1, max, Game::dvar_flag::DVAR_FLAG_WRITEPROTECTED | flag, description).get(); + return Dvar::Register(name, 1, 1, max, Game::dvar_flag::DVAR_WRITEPROTECTED | flag, description).get(); } bool Party::PlaylistAwaiting() @@ -150,8 +150,8 @@ namespace Components Party::Party() { - static Game::dvar_t* partyEnable = Dvar::Register("party_enable", Dedicated::IsEnabled(), Game::dvar_flag::DVAR_FLAG_NONE, "Enable party system").get(); - Dvar::Register("xblive_privatematch", true, Game::dvar_flag::DVAR_FLAG_WRITEPROTECTED, ""); + static Game::dvar_t* partyEnable = Dvar::Register("party_enable", Dedicated::IsEnabled(), Game::dvar_flag::DVAR_NONE, "Enable party system").get(); + Dvar::Register("xblive_privatematch", true, Game::dvar_flag::DVAR_WRITEPROTECTED, ""); // various changes to SV_DirectConnect-y stuff to allow non-party joinees Utils::Hook::Set(0x460D96, 0x90E9); @@ -249,12 +249,12 @@ namespace Components Utils::Hook::Set(0x5E3772, "sv_maxclients"); // Unlatch maxclient dvars - Utils::Hook::Xor(0x426187, Game::dvar_flag::DVAR_FLAG_LATCHED); - Utils::Hook::Xor(0x4D374E, Game::dvar_flag::DVAR_FLAG_LATCHED); - Utils::Hook::Xor(0x5E376A, Game::dvar_flag::DVAR_FLAG_LATCHED); - Utils::Hook::Xor(0x4261A1, Game::dvar_flag::DVAR_FLAG_LATCHED); - Utils::Hook::Xor(0x4D376D, Game::dvar_flag::DVAR_FLAG_LATCHED); - Utils::Hook::Xor(0x5E3789, Game::dvar_flag::DVAR_FLAG_LATCHED); + Utils::Hook::Xor(0x426187, Game::dvar_flag::DVAR_LATCH); + Utils::Hook::Xor(0x4D374E, Game::dvar_flag::DVAR_LATCH); + Utils::Hook::Xor(0x5E376A, Game::dvar_flag::DVAR_LATCH); + Utils::Hook::Xor(0x4261A1, Game::dvar_flag::DVAR_LATCH); + Utils::Hook::Xor(0x4D376D, Game::dvar_flag::DVAR_LATCH); + Utils::Hook::Xor(0x5E3789, Game::dvar_flag::DVAR_LATCH); // Patch Live_PlayerHasLoopbackAddr //Utils::Hook::Set(0x418F30, 0x90C3C033); diff --git a/src/Components/Modules/PlayerName.cpp b/src/Components/Modules/PlayerName.cpp index 793bcc8a..d90cadf7 100644 --- a/src/Components/Modules/PlayerName.cpp +++ b/src/Components/Modules/PlayerName.cpp @@ -61,7 +61,7 @@ namespace Components PlayerName::PlayerName() { - sv_allowColoredNames = Dvar::Register("sv_allowColoredNames", true, Game::dvar_flag::DVAR_FLAG_NONE, "Allow colored names on the server"); + sv_allowColoredNames = Dvar::Register("sv_allowColoredNames", true, Game::dvar_flag::DVAR_NONE, "Allow colored names on the server"); // Disable SV_UpdateUserinfo_f, to block changing the name ingame Utils::Hook::Set(0x6258D0, 0xC3); diff --git a/src/Components/Modules/QuickPatch.cpp b/src/Components/Modules/QuickPatch.cpp index 64ab5efe..38410e9b 100644 --- a/src/Components/Modules/QuickPatch.cpp +++ b/src/Components/Modules/QuickPatch.cpp @@ -96,7 +96,7 @@ namespace Components std::string dvarName = args[3]; Game::dvar_t* dvar = Game::Dvar_FindVar(dvarName.data()); - if (Command::Find(dvarName) || (dvar && (dvar->flags & (Game::DVAR_FLAG_WRITEPROTECTED | Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_READONLY)))) + if (Command::Find(dvarName) || (dvar && (dvar->flags & (Game::DVAR_WRITEPROTECTED | Game::DVAR_CHEAT | Game::DVAR_READONLY)))) { return; } @@ -238,7 +238,7 @@ namespace Components } } - Game::dvar_t* QuickPatch::Dvar_RegisterAspectRatioDvar(const char* name, char**, int defaultVal, int flags, const char* description) + Game::dvar_t* QuickPatch::Dvar_RegisterAspectRatioDvar(const char* dvarName, const char** /*valueList*/, int defaultIndex, unsigned __int16 flags, const char* description) { static const char* r_aspectRatioEnum[] = { @@ -256,7 +256,7 @@ namespace Components "Screen aspect ratio. Divide the width by the height in order to get the aspect ratio value. For example: 16 / 9 = 1,77"); // register enumeration dvar - return Game::Dvar_RegisterEnum(name, r_aspectRatioEnum, defaultVal, flags, description); + return Game::Dvar_RegisterEnum(dvarName, r_aspectRatioEnum, defaultIndex, flags, description); } void QuickPatch::SetAspectRatio() @@ -353,7 +353,7 @@ namespace Components Game::dvar_t* QuickPatch::Dvar_RegisterUIBuildLocation(const char* dvarName, float /*x*/, float /*y*/, float min, float max, int /*flags*/, const char* description) { - return Game::Dvar_RegisterVec2(dvarName, -60.0f, 474.0f, min, max, Game::DVAR_FLAG_READONLY, description); + return Game::Dvar_RegisterVec2(dvarName, -60.0f, 474.0f, min, max, Game::DVAR_READONLY, description); } QuickPatch::QuickPatch() @@ -374,9 +374,9 @@ namespace Components Utils::Hook(0x4F66A3, CL_KeyEvent_ConsoleEscape_Stub, HOOK_JUMP).install()->quick(); // Intermission time dvar - Game::Dvar_RegisterFloat("scr_intermissionTime", 10, 0, 120, Game::DVAR_FLAG_REPLICATED | Game::DVAR_FLAG_DEDISAVED, "Time in seconds before match server loads the next map"); + Game::Dvar_RegisterFloat("scr_intermissionTime", 10, 0, 120, Game::dvar_flag::DVAR_SCRIPTINFO, "Time in seconds before match server loads the next map"); - g_antilag = Game::Dvar_RegisterBool("g_antilag", true, Game::DVAR_FLAG_REPLICATED, "Perform antilag"); + g_antilag = Game::Dvar_RegisterBool("g_antilag", true, Game::DVAR_CODINFO, "Perform antilag"); Utils::Hook(0x5D6D56, QuickPatch::ClientEventsFireWeaponStub, HOOK_JUMP).install()->quick(); Utils::Hook(0x5D6D6A, QuickPatch::ClientEventsFireWeaponMeleeStub, HOOK_JUMP).install()->quick(); @@ -477,7 +477,7 @@ namespace Components // Numerical ping (cg_scoreboardPingText 1) Utils::Hook::Set(0x45888E, 1); - Utils::Hook::Set(0x45888C, Game::dvar_flag::DVAR_FLAG_CHEAT); + Utils::Hook::Set(0x45888C, Game::dvar_flag::DVAR_CHEAT); // increase font sizes for chat on higher resolutions static float float13 = 13.0f; @@ -633,7 +633,7 @@ namespace Components }); // Fix mouse pitch adjustments - Dvar::Register("ui_mousePitch", false, Game::DVAR_FLAG_SAVED, ""); + Dvar::Register("ui_mousePitch", false, Game::DVAR_ARCHIVE, ""); UIScript::Add("updateui_mousePitch", [](UIScript::Token) { if (Dvar::Var("ui_mousePitch").get()) @@ -859,7 +859,7 @@ namespace Components }); // Dvars - Dvar::Register("ui_streamFriendly", false, Game::DVAR_FLAG_SAVED, "Stream friendly UI"); + Dvar::Register("ui_streamFriendly", false, Game::DVAR_ARCHIVE, "Stream friendly UI"); // Debug patches #ifdef DEBUG diff --git a/src/Components/Modules/QuickPatch.hpp b/src/Components/Modules/QuickPatch.hpp index 32c3ed61..6eac85a2 100644 --- a/src/Components/Modules/QuickPatch.hpp +++ b/src/Components/Modules/QuickPatch.hpp @@ -28,7 +28,7 @@ namespace Components static void InvalidNameStub(); static Dvar::Var r_customAspectRatio; - static Game::dvar_t* Dvar_RegisterAspectRatioDvar(const char* name, char** enumValues, int defaultVal, int flags, const char* description); + static Game::dvar_t* Dvar_RegisterAspectRatioDvar(const char* dvarName, const char** valueList, int defaultIndex, unsigned __int16 flags, const char* description); static void SetAspectRatioStub(); static void SetAspectRatio(); diff --git a/src/Components/Modules/RCon.cpp b/src/Components/Modules/RCon.cpp index 8d506708..8325064f 100644 --- a/src/Components/Modules/RCon.cpp +++ b/src/Components/Modules/RCon.cpp @@ -78,8 +78,8 @@ namespace Components Dvar::OnInit([]() { - RCon::RconPassword = Dvar::Register("rcon_password", "", Game::dvar_flag::DVAR_FLAG_NONE, "The password for rcon"); - RCon::RconLogRequests = Dvar::Register("rcon_log_requests", false, Game::dvar_flag::DVAR_FLAG_NONE, "Print remote commands in the output log"); + RCon::RconPassword = Dvar::Register("rcon_password", "", Game::dvar_flag::DVAR_NONE, "The password for rcon"); + RCon::RconLogRequests = Dvar::Register("rcon_log_requests", false, Game::dvar_flag::DVAR_NONE, "Print remote commands in the output log"); }); Network::Handle("rcon", [](Network::Address address, const std::string& _data) diff --git a/src/Components/Modules/Renderer.cpp b/src/Components/Modules/Renderer.cpp index e79472dc..efa91e94 100644 --- a/src/Components/Modules/Renderer.cpp +++ b/src/Components/Modules/Renderer.cpp @@ -546,12 +546,12 @@ namespace Components nullptr }; - Renderer::r_drawModelBoundingBoxes = Game::Dvar_RegisterEnum("r_drawModelBoundingBoxes", values, 0, Game::DVAR_FLAG_CHEAT, "Draw scene model bounding boxes"); - Renderer::r_drawSceneModelCollisions = Game::Dvar_RegisterBool("r_drawSceneModelCollisions", false, Game::DVAR_FLAG_CHEAT, "Draw scene model collisions"); - Renderer::r_drawTriggers = Game::Dvar_RegisterBool("r_drawTriggers", false, Game::DVAR_FLAG_CHEAT, "Draw triggers"); - Renderer::r_drawModelNames = Game::Dvar_RegisterEnum("r_drawModelNames", values, 0, Game::DVAR_FLAG_CHEAT, "Draw all model names"); - Renderer::r_drawAABBTrees = Game::Dvar_RegisterBool("r_drawAabbTrees", false, Game::DVAR_FLAG_CHEAT, "Draw aabb trees"); - Renderer::r_playerDrawDebugDistance = Game::Dvar_RegisterInt("r_drawDebugDistance", 1000, 0, 50000, Game::DVAR_FLAG_SAVED, "r_draw debug functions draw distance, relative to the player"); + Renderer::r_drawModelBoundingBoxes = Game::Dvar_RegisterEnum("r_drawModelBoundingBoxes", values, 0, Game::DVAR_CHEAT, "Draw scene model bounding boxes"); + Renderer::r_drawSceneModelCollisions = Game::Dvar_RegisterBool("r_drawSceneModelCollisions", false, Game::DVAR_CHEAT, "Draw scene model collisions"); + Renderer::r_drawTriggers = Game::Dvar_RegisterBool("r_drawTriggers", false, Game::DVAR_CHEAT, "Draw triggers"); + Renderer::r_drawModelNames = Game::Dvar_RegisterEnum("r_drawModelNames", values, 0, Game::DVAR_CHEAT, "Draw all model names"); + Renderer::r_drawAABBTrees = Game::Dvar_RegisterBool("r_drawAabbTrees", false, Game::DVAR_CHEAT, "Draw aabb trees"); + Renderer::r_playerDrawDebugDistance = Game::Dvar_RegisterInt("r_drawDebugDistance", 1000, 0, 50000, Game::DVAR_ARCHIVE, "r_draw debug functions draw distance, relative to the player"); }); } diff --git a/src/Components/Modules/ServerList.cpp b/src/Components/Modules/ServerList.cpp index 94c3e473..aac56a28 100644 --- a/src/Components/Modules/ServerList.cpp +++ b/src/Components/Modules/ServerList.cpp @@ -734,16 +734,16 @@ namespace Components Dvar::OnInit([]() { - Dvar::Register("ui_serverSelected", false, Game::dvar_flag::DVAR_FLAG_NONE, "Whether a server has been selected in the serverlist"); - Dvar::Register("ui_serverSelectedMap", "mp_afghan", Game::dvar_flag::DVAR_FLAG_NONE, "Map of the selected server"); + Dvar::Register("ui_serverSelected", false, Game::dvar_flag::DVAR_NONE, "Whether a server has been selected in the serverlist"); + Dvar::Register("ui_serverSelectedMap", "mp_afghan", Game::dvar_flag::DVAR_NONE, "Map of the selected server"); - Dvar::Register("net_serverQueryLimit", 1, 1, 10, Dedicated::IsEnabled() ? 0 : Game::dvar_flag::DVAR_FLAG_SAVED, "Amount of server queries per frame"); - Dvar::Register("net_serverFrames", 30, 1, 60, Dedicated::IsEnabled() ? 0 : Game::dvar_flag::DVAR_FLAG_SAVED, "Amount of server query frames per second"); + Dvar::Register("net_serverQueryLimit", 1, 1, 10, Dedicated::IsEnabled() ? 0 : Game::dvar_flag::DVAR_ARCHIVE, "Amount of server queries per frame"); + Dvar::Register("net_serverFrames", 30, 1, 60, Dedicated::IsEnabled() ? 0 : Game::dvar_flag::DVAR_ARCHIVE, "Amount of server query frames per second"); }); // Fix ui_netsource dvar Utils::Hook::Nop(0x4CDEEC, 5); // Don't reset the netsource when gametypes aren't loaded - Dvar::Register("ui_netSource", 1, 0, 2, Game::DVAR_FLAG_SAVED, reinterpret_cast(0x6D9F08)); + Dvar::Register("ui_netSource", 1, 0, 2, Game::DVAR_ARCHIVE, reinterpret_cast(0x6D9F08)); //Localization::Set("MPUI_SERVERQUERIED", "Sent requests: 0/0"); Localization::Set("MPUI_SERVERQUERIED", "Servers: 0\nPlayers: 0 (0)"); @@ -782,8 +782,8 @@ namespace Components // Set default masterServerName + port and save it #ifdef USE_LEGACY_SERVER_LIST Utils::Hook::Set(0x60AD92, "127.0.0.1"); - Utils::Hook::Set(0x60AD90, Game::dvar_flag::DVAR_FLAG_SAVED); // masterServerName - Utils::Hook::Set(0x60ADC6, Game::dvar_flag::DVAR_FLAG_SAVED); // masterPort + Utils::Hook::Set(0x60AD90, Game::dvar_flag::DVAR_ARCHIVE); // masterServerName + Utils::Hook::Set(0x60ADC6, Game::dvar_flag::DVAR_ARCHIVE); // masterPort #endif // Add server list feeder diff --git a/src/Components/Modules/StartupMessages.cpp b/src/Components/Modules/StartupMessages.cpp index 16cf8497..211a0d3f 100644 --- a/src/Components/Modules/StartupMessages.cpp +++ b/src/Components/Modules/StartupMessages.cpp @@ -9,9 +9,9 @@ namespace Components { Dvar::OnInit([]() { - Dvar::Register("ui_startupMessage", "", Game::DVAR_FLAG_USERCREATED | Game::DVAR_FLAG_WRITEPROTECTED, ""); - Dvar::Register("ui_startupMessageTitle", "", Game::DVAR_FLAG_USERCREATED | Game::DVAR_FLAG_WRITEPROTECTED, ""); - Dvar::Register("ui_startupNextButtonText", "", Game::DVAR_FLAG_USERCREATED | Game::DVAR_FLAG_WRITEPROTECTED, ""); + Dvar::Register("ui_startupMessage", "", Game::DVAR_EXTERNAL | Game::DVAR_WRITEPROTECTED, ""); + Dvar::Register("ui_startupMessageTitle", "", Game::DVAR_EXTERNAL | Game::DVAR_WRITEPROTECTED, ""); + Dvar::Register("ui_startupNextButtonText", "", Game::DVAR_EXTERNAL | Game::DVAR_WRITEPROTECTED, ""); }); UIScript::Add("nextStartupMessage", [](UIScript::Token) diff --git a/src/Components/Modules/TextRenderer.cpp b/src/Components/Modules/TextRenderer.cpp index e5a26a91..2a11a676 100644 --- a/src/Components/Modules/TextRenderer.cpp +++ b/src/Components/Modules/TextRenderer.cpp @@ -1598,10 +1598,10 @@ namespace Components { currentColorTable = &colorTableDefault; - cg_newColors = Dvar::Register("cg_newColors", true, Game::dvar_flag::DVAR_FLAG_SAVED, "Use Warfare 2 color code style."); - cg_fontIconAutocomplete = Dvar::Register("cg_fontIconAutocomplete", true, Game::dvar_flag::DVAR_FLAG_SAVED, "Show autocomplete for fonticons when typing."); - cg_fontIconAutocompleteHint = Dvar::Register("cg_fontIconAutocompleteHint", true, Game::dvar_flag::DVAR_FLAG_SAVED, "Show hint text in autocomplete for fonticons."); - sv_customTextColor = Game::Dvar_RegisterColor("sv_customTextColor", 1, 0.7f, 0, 1, Game::dvar_flag::DVAR_FLAG_REPLICATED, "Color for the extended color code."); + cg_newColors = Dvar::Register("cg_newColors", true, Game::dvar_flag::DVAR_ARCHIVE, "Use Warfare 2 color code style."); + cg_fontIconAutocomplete = Dvar::Register("cg_fontIconAutocomplete", true, Game::dvar_flag::DVAR_ARCHIVE, "Show autocomplete for fonticons when typing."); + cg_fontIconAutocompleteHint = Dvar::Register("cg_fontIconAutocompleteHint", true, Game::dvar_flag::DVAR_ARCHIVE, "Show hint text in autocomplete for fonticons."); + sv_customTextColor = Game::Dvar_RegisterColor("sv_customTextColor", 1, 0.7f, 0, 1, Game::dvar_flag::DVAR_CODINFO, "Color for the extended color code."); // Initialize font icons when initializing UI Utils::Hook(0x4B5422, UI_Init_Hk, HOOK_CALL).install()->quick(); @@ -1616,11 +1616,11 @@ namespace Components Utils::Hook(0x417770, ColorIndex, HOOK_JUMP).install()->quick(); // Add a colorblind mode for team colors - r_colorBlind = Dvar::Register("r_colorBlind", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Use color-blindness-friendly colors"); + r_colorBlind = Dvar::Register("r_colorBlind", false, Game::dvar_flag::DVAR_ARCHIVE, "Use color-blindness-friendly colors"); // A dark red - g_ColorBlind_EnemyTeam = Game::Dvar_RegisterColor("g_ColorBlind_EnemyTeam", 0.659f, 0.088f, 0.145f, 1, Game::dvar_flag::DVAR_FLAG_SAVED, "Enemy team color for colorblind mode"); + g_ColorBlind_EnemyTeam = Game::Dvar_RegisterColor("g_ColorBlind_EnemyTeam", 0.659f, 0.088f, 0.145f, 1, Game::dvar_flag::DVAR_ARCHIVE, "Enemy team color for colorblind mode"); // A bright yellow - g_ColorBlind_MyTeam = Game::Dvar_RegisterColor("g_ColorBlind_MyTeam", 1, 0.859f, 0.125f, 1, Game::dvar_flag::DVAR_FLAG_SAVED, "Ally team color for colorblind mode"); + g_ColorBlind_MyTeam = Game::Dvar_RegisterColor("g_ColorBlind_MyTeam", 1, 0.859f, 0.125f, 1, Game::dvar_flag::DVAR_ARCHIVE, "Ally team color for colorblind mode"); // Replace team colors with colorblind team colors when colorblind is enabled Utils::Hook(0x406530, GetUnpackedColorByNameStub, HOOK_JUMP).install()->quick(); diff --git a/src/Components/Modules/Theatre.cpp b/src/Components/Modules/Theatre.cpp index 2e3cdcaa..84a95284 100644 --- a/src/Components/Modules/Theatre.cpp +++ b/src/Components/Modules/Theatre.cpp @@ -342,8 +342,8 @@ namespace Components Theatre::Theatre() { - Dvar::Register("cl_autoRecord", true, Game::dvar_flag::DVAR_FLAG_SAVED, "Automatically record games."); - Dvar::Register("cl_demosKeep", 30, 1, 999, Game::dvar_flag::DVAR_FLAG_SAVED, "How many demos to keep with autorecord."); + Dvar::Register("cl_autoRecord", true, Game::dvar_flag::DVAR_ARCHIVE, "Automatically record games."); + Dvar::Register("cl_demosKeep", 30, 1, 999, Game::dvar_flag::DVAR_ARCHIVE, "How many demos to keep with autorecord."); Utils::Hook(0x5A8370, Theatre::GamestateWriteStub, HOOK_CALL).install()->quick(); Utils::Hook(0x5A85D2, Theatre::RecordGamestateStub, HOOK_CALL).install()->quick(); diff --git a/src/Components/Modules/UIFeeder.cpp b/src/Components/Modules/UIFeeder.cpp index ee3032ab..b0e554bf 100644 --- a/src/Components/Modules/UIFeeder.cpp +++ b/src/Components/Modules/UIFeeder.cpp @@ -383,9 +383,9 @@ namespace Components Dvar::OnInit([]() { - Dvar::Register("ui_map_long", "Afghan", Game::dvar_flag::DVAR_FLAG_NONE, ""); - Dvar::Register("ui_map_name", "mp_afghan", Game::dvar_flag::DVAR_FLAG_NONE, ""); - Dvar::Register("ui_map_desc", "", Game::dvar_flag::DVAR_FLAG_NONE, ""); + Dvar::Register("ui_map_long", "Afghan", Game::dvar_flag::DVAR_NONE, ""); + Dvar::Register("ui_map_name", "mp_afghan", Game::dvar_flag::DVAR_NONE, ""); + Dvar::Register("ui_map_desc", "", Game::dvar_flag::DVAR_NONE, ""); }); // Get feeder item count diff --git a/src/Components/Modules/Window.cpp b/src/Components/Modules/Window.cpp index 2a7b07de..a5669656 100644 --- a/src/Components/Modules/Window.cpp +++ b/src/Components/Modules/Window.cpp @@ -144,8 +144,8 @@ namespace Components Window::Window() { // Borderless window - Window::NoBorder = Dvar::Register("r_noborder", true, Game::dvar_flag::DVAR_FLAG_SAVED, "Do not use a border in windowed mode"); - Window::NativeCursor = Dvar::Register("ui_nativeCursor", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Display native cursor"); + Window::NoBorder = Dvar::Register("r_noborder", true, Game::dvar_flag::DVAR_ARCHIVE, "Do not use a border in windowed mode"); + Window::NativeCursor = Dvar::Register("ui_nativeCursor", false, Game::dvar_flag::DVAR_ARCHIVE, "Display native cursor"); Utils::Hook(0x507643, Window::StyleHookStub, HOOK_CALL).install()->quick(); diff --git a/src/Components/Modules/ZoneBuilder.cpp b/src/Components/Modules/ZoneBuilder.cpp index b548ed99..3fa883cb 100644 --- a/src/Components/Modules/ZoneBuilder.cpp +++ b/src/Components/Modules/ZoneBuilder.cpp @@ -1525,7 +1525,7 @@ namespace Components Logger::Print("------------------- END IWI DUMP -------------------\n"); }); - ZoneBuilder::PreferDiskAssetsDvar = Dvar::Register("zb_prefer_disk_assets", false, Game::DVAR_FLAG_NONE, "Should zonebuilder prefer in-memory assets (requirements) or disk assets, when both are present?"); + ZoneBuilder::PreferDiskAssetsDvar = Dvar::Register("zb_prefer_disk_assets", false, Game::DVAR_NONE, "Should zonebuilder prefer in-memory assets (requirements) or disk assets, when both are present?"); } } diff --git a/src/Game/Functions.hpp b/src/Game/Functions.hpp index 7975d876..f4fefd2d 100644 --- a/src/Game/Functions.hpp +++ b/src/Game/Functions.hpp @@ -232,67 +232,67 @@ namespace Game typedef void(__cdecl * DB_XModelSurfsFixup_t)(XModel* model); extern DB_XModelSurfsFixup_t DB_XModelSurfsFixup; - typedef dvar_t* (__cdecl * Dvar_RegisterBool_t)(const char* name, bool defaultVal, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterBool_t)(const char* dvarName, bool value, unsigned __int16 flags, const char* description); extern Dvar_RegisterBool_t Dvar_RegisterBool; - typedef dvar_t* (__cdecl * Dvar_RegisterFloat_t)(const char* name, float defaultVal, float min, float max, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterFloat_t)(const char* dvarName, float value, float min, float max, unsigned __int16 flags, const char* description); extern Dvar_RegisterFloat_t Dvar_RegisterFloat; - typedef dvar_t* (__cdecl * Dvar_RegisterVec2_t)(const char* name, float defx, float defy, float min, float max, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterVec2_t)(const char* dvarName, float x, float y, float min, float max, unsigned __int16 flags, const char* description); extern Dvar_RegisterVec2_t Dvar_RegisterVec2; - typedef dvar_t* (__cdecl * Dvar_RegisterVec3_t)(const char* name, float defx, float defy, float defz, float min, float max, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterVec3_t)(const char* dvarName, float x, float y, float z, float min, float max, unsigned __int16 flags, const char* description); extern Dvar_RegisterVec3_t Dvar_RegisterVec3; - typedef dvar_t* (__cdecl * Dvar_RegisterVec4_t)(const char* name, float defx, float defy, float defz, float defw, float min, float max, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterVec4_t)(const char* dvarName, float x, float y, float z, float w, float min, float max, unsigned __int16 flags, const char* description); extern Dvar_RegisterVec4_t Dvar_RegisterVec4; - typedef dvar_t* (__cdecl * Dvar_RegisterInt_t)(const char* name, int defaultVal, int min, int max, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterInt_t)(const char* dvarName, int value, int min, int max, unsigned __int16 flags, const char* description); extern Dvar_RegisterInt_t Dvar_RegisterInt; - typedef dvar_t* (__cdecl * Dvar_RegisterEnum_t)(const char* name, const char** enumValues, int defaultVal, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterEnum_t)(const char* dvarName, const char** valueList, int defaultIndex, unsigned __int16 flags, const char* description); extern Dvar_RegisterEnum_t Dvar_RegisterEnum; - typedef dvar_t* (__cdecl * Dvar_RegisterString_t)(const char* name, const char* defaultVal, int, const char*); + typedef dvar_t*(__cdecl * Dvar_RegisterString_t)(const char* dvarName, const char* value, unsigned __int16 flags, const char* description); extern Dvar_RegisterString_t Dvar_RegisterString; - typedef dvar_t* (__cdecl * Dvar_RegisterColor_t)(const char* name, float r, float g, float b, float a, int flags, const char* description); + typedef dvar_t*(__cdecl * Dvar_RegisterColor_t)(const char* dvarName, float r, float g, float b, float a, unsigned __int16 flags, const char* description); extern Dvar_RegisterColor_t Dvar_RegisterColor; typedef void(__cdecl * Dvar_SetFromStringByName_t)(const char* dvarName, const char* string); extern Dvar_SetFromStringByName_t Dvar_SetFromStringByName; - typedef const dvar_t* (__cdecl * Dvar_SetFromStringByNameFromSource_t)(const char* dvarName, const char* string, DvarSetSource source); + typedef const dvar_t*(__cdecl * Dvar_SetFromStringByNameFromSource_t)(const char* dvarName, const char* string, DvarSetSource source); extern Dvar_SetFromStringByNameFromSource_t Dvar_SetFromStringByNameFromSource; - typedef void (__cdecl * Dvar_SetStringByName_t)(const char* cvar, const char* value); + typedef void(__cdecl * Dvar_SetStringByName_t)(const char* dvarName, const char* value); extern Dvar_SetStringByName_t Dvar_SetStringByName; - typedef void (__cdecl * Dvar_SetString_t)(const dvar_t* cvar, const char* value); + typedef void(__cdecl * Dvar_SetString_t)(const dvar_t* dvar, const char* value); extern Dvar_SetString_t Dvar_SetString; - typedef void (__cdecl * Dvar_SetBool_t)(const dvar_t* cvar, bool enabled); + typedef void(__cdecl * Dvar_SetBool_t)(const dvar_t* dvar, bool enabled); extern Dvar_SetBool_t Dvar_SetBool; - typedef void (__cdecl * Dvar_SetFloat_t)(const dvar_t* cvar, float value); + typedef void(__cdecl * Dvar_SetFloat_t)(const dvar_t* dvar, float value); extern Dvar_SetFloat_t Dvar_SetFloat; - typedef void (__cdecl * Dvar_SetInt_t)(const dvar_t* cvar, int integer); + typedef void(__cdecl * Dvar_SetInt_t)(const dvar_t* dvar, int integer); extern Dvar_SetInt_t Dvar_SetInt; - typedef void(__cdecl * Dvar_GetUnpackedColorByName_t)(const char* name, float* color); + typedef void(__cdecl * Dvar_GetUnpackedColorByName_t)(const char* dvarName, float* expandedColor); extern Dvar_GetUnpackedColorByName_t Dvar_GetUnpackedColorByName; - typedef dvar_t* (__cdecl * Dvar_FindVar_t)(const char *dvarName); + typedef dvar_t*(__cdecl * Dvar_FindVar_t)(const char* dvarName); extern Dvar_FindVar_t Dvar_FindVar; - typedef char* (__cdecl * Dvar_InfoString_Big_t)(int bit); + typedef char*(__cdecl * Dvar_InfoString_Big_t)(int bit); extern Dvar_InfoString_Big_t Dvar_InfoString_Big; typedef void(__cdecl * Dvar_SetCommand_t)(const char* dvarName, const char* string); extern Dvar_SetCommand_t Dvar_SetCommand; - typedef const char* (__cdecl * Dvar_DisplayableValue_t)(const dvar_t* cvar); + typedef const char*(__cdecl * Dvar_DisplayableValue_t)(const dvar_t* dvar); extern Dvar_DisplayableValue_t Dvar_DisplayableValue; typedef bool(__cdecl * Encode_Init_t)(const char* ); diff --git a/src/Game/Structs.hpp b/src/Game/Structs.hpp index e32dfdca..753fa215 100644 --- a/src/Game/Structs.hpp +++ b/src/Game/Structs.hpp @@ -74,29 +74,27 @@ namespace Game ASSET_TYPE_INVALID = -1, }; - typedef enum : unsigned int + enum dvar_flag : unsigned __int16 { - DVAR_FLAG_NONE = 0x0, //no flags - DVAR_FLAG_SAVED = 0x1, //saves in config_mp.cfg for clients - DVAR_FLAG_LATCHED = 0x2, //no changing apart from initial value (although it might apply on a map reload, I think) - DVAR_FLAG_CHEAT = 0x4, //cheat - DVAR_FLAG_REPLICATED = 0x8, //on change, this is sent to all clients (if you are host) - DVAR_FLAG_UNKNOWN10 = 0x10, //unknown - DVAR_FLAG_UNKNOWN20 = 0x20, //unknown - DVAR_FLAG_UNKNOWN40 = 0x40, //unknown - DVAR_FLAG_UNKNOWN80 = 0x80, //unknown - DVAR_FLAG_USERCREATED = 0x100, //a 'set' type command created it - DVAR_FLAG_USERINFO = 0x200, //userinfo? - DVAR_FLAG_SERVERINFO = 0x400, //in the getstatus oob - DVAR_FLAG_WRITEPROTECTED = 0x800, //write protected - DVAR_FLAG_UNKNOWN1000 = 0x1000, //unknown - DVAR_FLAG_READONLY = 0x2000, //read only (same as 0x800?) - DVAR_FLAG_UNKNOWN4000 = 0x4000, //unknown - DVAR_FLAG_UNKNOWN8000 = 0x8000, //unknown - DVAR_FLAG_UNKNOWN10000 = 0x10000, //unknown - DVAR_FLAG_DEDISAVED = 0x1000000, //unknown - DVAR_FLAG_NONEXISTENT = 0xFFFFFFFF //no such dvar - } dvar_flag; + DVAR_NONE = 0x0, // No flags + DVAR_ARCHIVE = 0x1, // Set to cause it to be saved to config_mp.cfg of the client + DVAR_LATCH = 0x2, // Will only change when C code next does a Dvar_Get(), so it can't be changed + // without proper initialization. Modified will be set, even though the value hasn't changed yet + DVAR_CHEAT = 0x4, // Can not be changed if cheats are disabled + DVAR_CODINFO = 0x8, // On change, this is sent to all clients (if you are host) + DVAR_SCRIPTINFO = 0x10, + DVAR_UNKNOWN20 = 0x20, + DVAR_CHANGEABLE_RESET = 0x40, + DVAR_UNKNOWN80 = 0x80, + DVAR_EXTERNAL = 0x100, // Created by a set command + DVAR_USERINFO = 0x200, // Sent to server on connect or change + DVAR_SERVERINFO = 0x400, // Sent in response to front end requests + DVAR_WRITEPROTECTED = 0x800, + DVAR_SYSTEMINFO = 0x1000, // These dvars will be duplicated on all clients + DVAR_READONLY = 0x2000, // Read only (same as DVAR_WRITEPROTECTED?) + DVAR_SAVED = 0x4000, + DVAR_AUTOEXEC = 0x8000, + }; enum ImageCategory : char { @@ -3329,14 +3327,14 @@ namespace Game unsigned int unsignedInt; float value; float vector[4]; - const char *string; + const char* string; unsigned char color[4]; }; struct $BFBB53559BEAC4289F32B924847E59CB { int stringCount; - const char **strings; + const char** strings; }; struct $9CA192F9DB66A3CB7E01DE78A0DEA53D @@ -3361,35 +3359,35 @@ namespace Game struct dvar_t { - const char *name; - const char *description; - unsigned int flags; + const char* name; + const char* description; + unsigned __int16 flags; dvar_type type; bool modified; DvarValue current; DvarValue latched; DvarValue reset; DvarLimits domain; - bool(__cdecl *domainFunc)(dvar_t *, DvarValue); + bool(__cdecl * domainFunc)(dvar_t*, DvarValue); dvar_t *hashNext; }; struct StaticDvar { - dvar_t *dvar; - char *dvarName; + dvar_t* dvar; + char* dvarName; }; struct StaticDvarList { int numStaticDvars; - StaticDvar **staticDvars; + StaticDvar** staticDvars; }; struct StringList { int totalStrings; - const char **strings; + const char** strings; }; struct ExpressionSupportingData From 43fa4cd73657ee921fed957400586395c0ff7616 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Tue, 8 Mar 2022 12:44:05 +0000 Subject: [PATCH 07/21] Fix flag for scr_dvar --- src/Components/Modules/QuickPatch.cpp | 2 +- src/Components/Modules/ServerList.cpp | 4 ++-- src/Game/Structs.hpp | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Components/Modules/QuickPatch.cpp b/src/Components/Modules/QuickPatch.cpp index 38410e9b..395ff0ff 100644 --- a/src/Components/Modules/QuickPatch.cpp +++ b/src/Components/Modules/QuickPatch.cpp @@ -374,7 +374,7 @@ namespace Components Utils::Hook(0x4F66A3, CL_KeyEvent_ConsoleEscape_Stub, HOOK_JUMP).install()->quick(); // Intermission time dvar - Game::Dvar_RegisterFloat("scr_intermissionTime", 10, 0, 120, Game::dvar_flag::DVAR_SCRIPTINFO, "Time in seconds before match server loads the next map"); + Game::Dvar_RegisterFloat("scr_intermissionTime", 10, 0, 120, Game::dvar_flag::DVAR_EXTERNAL, "Time in seconds before match server loads the next map"); g_antilag = Game::Dvar_RegisterBool("g_antilag", true, Game::DVAR_CODINFO, "Perform antilag"); Utils::Hook(0x5D6D56, QuickPatch::ClientEventsFireWeaponStub, HOOK_JUMP).install()->quick(); diff --git a/src/Components/Modules/ServerList.cpp b/src/Components/Modules/ServerList.cpp index aac56a28..c7cce94f 100644 --- a/src/Components/Modules/ServerList.cpp +++ b/src/Components/Modules/ServerList.cpp @@ -737,8 +737,8 @@ namespace Components Dvar::Register("ui_serverSelected", false, Game::dvar_flag::DVAR_NONE, "Whether a server has been selected in the serverlist"); Dvar::Register("ui_serverSelectedMap", "mp_afghan", Game::dvar_flag::DVAR_NONE, "Map of the selected server"); - Dvar::Register("net_serverQueryLimit", 1, 1, 10, Dedicated::IsEnabled() ? 0 : Game::dvar_flag::DVAR_ARCHIVE, "Amount of server queries per frame"); - Dvar::Register("net_serverFrames", 30, 1, 60, Dedicated::IsEnabled() ? 0 : Game::dvar_flag::DVAR_ARCHIVE, "Amount of server query frames per second"); + Dvar::Register("net_serverQueryLimit", 1, 1, 10, Dedicated::IsEnabled() ? Game::dvar_flag::DVAR_NONE : Game::dvar_flag::DVAR_ARCHIVE, "Amount of server queries per frame"); + Dvar::Register("net_serverFrames", 30, 1, 60, Dedicated::IsEnabled() ? Game::dvar_flag::DVAR_NONE : Game::dvar_flag::DVAR_ARCHIVE, "Amount of server query frames per second"); }); // Fix ui_netsource dvar diff --git a/src/Game/Structs.hpp b/src/Game/Structs.hpp index 753fa215..bb3751c5 100644 --- a/src/Game/Structs.hpp +++ b/src/Game/Structs.hpp @@ -76,18 +76,18 @@ namespace Game enum dvar_flag : unsigned __int16 { - DVAR_NONE = 0x0, // No flags - DVAR_ARCHIVE = 0x1, // Set to cause it to be saved to config_mp.cfg of the client - DVAR_LATCH = 0x2, // Will only change when C code next does a Dvar_Get(), so it can't be changed - // without proper initialization. Modified will be set, even though the value hasn't changed yet - DVAR_CHEAT = 0x4, // Can not be changed if cheats are disabled - DVAR_CODINFO = 0x8, // On change, this is sent to all clients (if you are host) + DVAR_NONE = 0x0, // No flags + DVAR_ARCHIVE = 0x1, // Set to cause it to be saved to config_mp.cfg of the client + DVAR_LATCH = 0x2, // Will only change when C code next does a Dvar_Get(), so it can't be changed + // without proper initialization. Modified will be set, even though the value hasn't changed yet + DVAR_CHEAT = 0x4, // Can not be changed if cheats are disabled + DVAR_CODINFO = 0x8, // On change, this is sent to all clients (if you are host) DVAR_SCRIPTINFO = 0x10, DVAR_UNKNOWN20 = 0x20, DVAR_CHANGEABLE_RESET = 0x40, DVAR_UNKNOWN80 = 0x80, - DVAR_EXTERNAL = 0x100, // Created by a set command - DVAR_USERINFO = 0x200, // Sent to server on connect or change + DVAR_EXTERNAL = 0x100, // Created by a set command + DVAR_USERINFO = 0x200, // Sent to server on connect or change DVAR_SERVERINFO = 0x400, // Sent in response to front end requests DVAR_WRITEPROTECTED = 0x800, DVAR_SYSTEMINFO = 0x1000, // These dvars will be duplicated on all clients From 253121696977ec4549215e4d7d40526f6dca2540 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Tue, 8 Mar 2022 14:03:38 +0000 Subject: [PATCH 08/21] Document dvar_rom --- src/Game/Structs.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Game/Structs.hpp b/src/Game/Structs.hpp index bb3751c5..25c23fc0 100644 --- a/src/Game/Structs.hpp +++ b/src/Game/Structs.hpp @@ -85,7 +85,7 @@ namespace Game DVAR_SCRIPTINFO = 0x10, DVAR_UNKNOWN20 = 0x20, DVAR_CHANGEABLE_RESET = 0x40, - DVAR_UNKNOWN80 = 0x80, + DVAR_ROM = 0x80, // Display only, cannot be set by user at all DVAR_EXTERNAL = 0x100, // Created by a set command DVAR_USERINFO = 0x200, // Sent to server on connect or change DVAR_SERVERINFO = 0x400, // Sent in response to front end requests From f3a2d6f40664a4bb8b870084bb209607e60d4dc6 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Tue, 8 Mar 2022 14:42:41 +0000 Subject: [PATCH 09/21] Fix some things --- src/Components/Modules/Download.cpp | 8 ++++---- src/Components/Modules/Playlist.cpp | 2 +- src/Components/Modules/QuickPatch.cpp | 2 +- src/Game/Structs.hpp | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Components/Modules/Download.cpp b/src/Components/Modules/Download.cpp index a4ac5727..02b1de2a 100644 --- a/src/Components/Modules/Download.cpp +++ b/src/Components/Modules/Download.cpp @@ -918,10 +918,10 @@ namespace Components Dvar::Register("sv_wwwDownload", false, Game::dvar_flag::DVAR_ARCHIVE, "Set to true to enable downloading maps/mods from an external server."); Dvar::Register("sv_wwwBaseUrl", "", Game::dvar_flag::DVAR_ARCHIVE, "Set to the base url for the external map download."); - // Force users to enable this because we don't want to accidentally turn everyone's pc into a http server into all their files again - // not saying we are but ya know... accidents happen - // by having it saved we force the user to enable it in config_mp because it only checks the dvar on startup to see if we should init download or not - Dvar::Register("mod_force_download_server", false, Game::dvar_flag::DVAR_ARCHIVE, "Set to true to force the client to run the download server for mods (for mods in private matches)."); + // Force users to enable this because we don't want to accidentally turn everyone's pc into a http server into all their files again + // not saying we are but ya know... accidents happen + // by having it saved we force the user to enable it in config_mp because it only checks the dvar on startup to see if we should init download or not + Dvar::Register("mod_force_download_server", false, Game::dvar_flag::DVAR_ARCHIVE, "Set to true to force the client to run the download server for mods (for mods in private matches)."); }); Scheduler::OnFrame([]() diff --git a/src/Components/Modules/Playlist.cpp b/src/Components/Modules/Playlist.cpp index e413d534..09cb8776 100644 --- a/src/Components/Modules/Playlist.cpp +++ b/src/Components/Modules/Playlist.cpp @@ -21,7 +21,7 @@ namespace Components Dvar::Var("xblive_privateserver").set(false); - std::string playlistFilename = Dvar::Var("playlistFilename").get(); + auto playlistFilename = Dvar::Var("playlistFilename").get(); FileSystem::File playlist(playlistFilename); if (playlist.exists()) diff --git a/src/Components/Modules/QuickPatch.cpp b/src/Components/Modules/QuickPatch.cpp index 395ff0ff..cf1f517e 100644 --- a/src/Components/Modules/QuickPatch.cpp +++ b/src/Components/Modules/QuickPatch.cpp @@ -374,7 +374,7 @@ namespace Components Utils::Hook(0x4F66A3, CL_KeyEvent_ConsoleEscape_Stub, HOOK_JUMP).install()->quick(); // Intermission time dvar - Game::Dvar_RegisterFloat("scr_intermissionTime", 10, 0, 120, Game::dvar_flag::DVAR_EXTERNAL, "Time in seconds before match server loads the next map"); + Game::Dvar_RegisterFloat("scr_intermissionTime", 10, 0, 120, Game::dvar_flag::DVAR_NONE, "Time in seconds before match server loads the next map"); g_antilag = Game::Dvar_RegisterBool("g_antilag", true, Game::DVAR_CODINFO, "Perform antilag"); Utils::Hook(0x5D6D56, QuickPatch::ClientEventsFireWeaponStub, HOOK_JUMP).install()->quick(); diff --git a/src/Game/Structs.hpp b/src/Game/Structs.hpp index 25c23fc0..0b691df5 100644 --- a/src/Game/Structs.hpp +++ b/src/Game/Structs.hpp @@ -85,12 +85,12 @@ namespace Game DVAR_SCRIPTINFO = 0x10, DVAR_UNKNOWN20 = 0x20, DVAR_CHANGEABLE_RESET = 0x40, - DVAR_ROM = 0x80, // Display only, cannot be set by user at all + DVAR_UNKNOWN80 = 0x80, DVAR_EXTERNAL = 0x100, // Created by a set command DVAR_USERINFO = 0x200, // Sent to server on connect or change DVAR_SERVERINFO = 0x400, // Sent in response to front end requests DVAR_WRITEPROTECTED = 0x800, - DVAR_SYSTEMINFO = 0x1000, // These dvars will be duplicated on all clients + DVAR_SYSTEMINFO = 0x1000, // Will be duplicated on all clients DVAR_READONLY = 0x2000, // Read only (same as DVAR_WRITEPROTECTED?) DVAR_SAVED = 0x4000, DVAR_AUTOEXEC = 0x8000, @@ -3361,7 +3361,7 @@ namespace Game { const char* name; const char* description; - unsigned __int16 flags; + unsigned int flags; dvar_type type; bool modified; DvarValue current; From bc852d884049e1db80cc1e8ecba91cfb2ad4cacd Mon Sep 17 00:00:00 2001 From: FutureRave Date: Fri, 11 Mar 2022 10:42:22 +0000 Subject: [PATCH 10/21] Revert changes to some maths operation --- src/Components/Modules/AssetInterfaces/IFont_s.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Components/Modules/AssetInterfaces/IFont_s.cpp b/src/Components/Modules/AssetInterfaces/IFont_s.cpp index edeb572b..bb53c252 100644 --- a/src/Components/Modules/AssetInterfaces/IFont_s.cpp +++ b/src/Components/Modules/AssetInterfaces/IFont_s.cpp @@ -53,10 +53,10 @@ namespace Assets auto& glyph = glyphs[i++]; glyph.letter = ch; - glyph.s0 = static_cast(x / pw); - glyph.s1 = static_cast((x + gw) / pw); - glyph.t0 = static_cast(y / ph); - glyph.t1 = static_cast((y + gh) / ph); + glyph.s0 = x / static_cast(pw); + glyph.s1 = (x + gw) / static_cast(pw); + glyph.t0 = y / static_cast(ph); + glyph.t1 = (y + gh) / static_cast(ph); glyph.pixelWidth = static_cast(gw); glyph.pixelHeight = static_cast(gh); glyph.x0 = static_cast(x0); From 7fbfd1037a804d4118cd6ad254a6d8883217810e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 17:21:18 +0000 Subject: [PATCH 11/21] Bump deps/libtommath from `04e9d1e` to `66de864` Bumps [deps/libtommath](https://github.com/libtom/libtommath) from `04e9d1e` to `66de864`. - [Release notes](https://github.com/libtom/libtommath/releases) - [Commits](https://github.com/libtom/libtommath/compare/04e9d1e7a0493910b2eb5e757d623870692ada04...66de86426e9cdb88526974c765108f01554af2b0) --- updated-dependencies: - dependency-name: deps/libtommath dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/libtommath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/libtommath b/deps/libtommath index 04e9d1e7..66de8642 160000 --- a/deps/libtommath +++ b/deps/libtommath @@ -1 +1 @@ -Subproject commit 04e9d1e7a0493910b2eb5e757d623870692ada04 +Subproject commit 66de86426e9cdb88526974c765108f01554af2b0 From a30d200fc15d840c3d93e1587cf559a5ba9ebe32 Mon Sep 17 00:00:00 2001 From: Edo Date: Tue, 15 Mar 2022 18:20:47 +0000 Subject: [PATCH 12/21] Update build.yml --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1d949fc..8e16bfe9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Check out files - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: submodules: true fetch-depth: 0 @@ -116,4 +116,4 @@ jobs: # run: rsync -avz ./data/ ${{ secrets.XLABS_MASTER_SSH_USER }}@${{ secrets.XLABS_MASTER_SSH_ADDRESS }}:${{ env.XLABS_MASTER_PATH }}/iw4x/data/ - name: Publish changes - run: ssh ${{ secrets.XLABS_MASTER_SSH_USER }}@${{ secrets.XLABS_MASTER_SSH_ADDRESS }} ${{ secrets.XLABS_MASTER_SSH_CHANGE_PUBLISH_COMMAND }} \ No newline at end of file + run: ssh ${{ secrets.XLABS_MASTER_SSH_USER }}@${{ secrets.XLABS_MASTER_SSH_ADDRESS }} ${{ secrets.XLABS_MASTER_SSH_CHANGE_PUBLISH_COMMAND }} From 809e66cdb1124b5d6cff70f53173c275187b1c55 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Wed, 16 Mar 2022 00:44:59 +0000 Subject: [PATCH 13/21] Remove unnecessary deconstructors --- src/Components/Modules/Bans.cpp | 5 ----- src/Components/Modules/Bans.hpp | 1 - src/Components/Modules/CardTitles.cpp | 8 -------- src/Components/Modules/CardTitles.hpp | 1 - src/Components/Modules/Changelog.cpp | 8 -------- src/Components/Modules/Changelog.hpp | 1 - src/Components/Modules/Chat.cpp | 5 ----- src/Components/Modules/Chat.hpp | 1 - src/Components/Modules/Clantags.cpp | 8 -------- src/Components/Modules/Clantags.hpp | 1 - src/Components/Modules/ClientCommand.cpp | 5 ----- src/Components/Modules/ClientCommand.hpp | 2 +- src/Components/Modules/Command.cpp | 6 ------ src/Components/Modules/Command.hpp | 2 +- src/Components/Modules/Dedicated.cpp | 5 ----- src/Components/Modules/Dedicated.hpp | 1 - src/Components/Modules/Discovery.cpp | 5 ----- src/Components/Modules/Discovery.hpp | 1 - src/Components/Modules/Elevators.cpp | 4 ---- src/Components/Modules/Elevators.hpp | 1 - src/Components/Modules/FastFiles.cpp | 5 ----- src/Components/Modules/FastFiles.hpp | 1 - src/Components/Modules/Flags.cpp | 4 ---- src/Components/Modules/Flags.hpp | 2 +- src/Components/Modules/Menus.cpp | 1 - src/Components/Modules/ModList.cpp | 5 ----- src/Components/Modules/ModList.hpp | 1 - src/Components/Modules/MusicalTalent.cpp | 5 ----- src/Components/Modules/MusicalTalent.hpp | 1 - src/Components/Modules/Network.cpp | 7 ------- src/Components/Modules/Network.hpp | 1 - src/Components/Modules/Party.cpp | 5 ----- src/Components/Modules/Party.hpp | 1 - src/Components/Modules/Playlist.cpp | 7 ------- src/Components/Modules/Playlist.hpp | 1 - src/Components/Modules/RCon.cpp | 5 ----- src/Components/Modules/RCon.hpp | 1 - src/Components/Modules/Script.cpp | 8 -------- src/Components/Modules/ServerCommands.cpp | 5 ----- src/Components/Modules/ServerCommands.hpp | 1 - src/Components/Modules/ServerList.cpp | 13 +++---------- src/Components/Modules/StartupMessages.cpp | 5 ----- src/Components/Modules/StartupMessages.hpp | 1 - src/Components/Modules/Stats.cpp | 5 ----- src/Components/Modules/Stats.hpp | 1 - src/Components/Modules/StringTable.cpp | 5 ----- src/Components/Modules/StringTable.hpp | 1 - src/Components/Modules/StructuredData.cpp | 5 ----- src/Components/Modules/StructuredData.hpp | 1 - src/Components/Modules/Zones.cpp | 5 ----- src/Components/Modules/Zones.hpp | 1 - 51 files changed, 6 insertions(+), 175 deletions(-) diff --git a/src/Components/Modules/Bans.cpp b/src/Components/Modules/Bans.cpp index 38cd20e9..6310ef5c 100644 --- a/src/Components/Modules/Bans.cpp +++ b/src/Components/Modules/Bans.cpp @@ -274,9 +274,4 @@ namespace Components Bans::LoadBans(&list); }); } - - Bans::~Bans() - { - - } } diff --git a/src/Components/Modules/Bans.hpp b/src/Components/Modules/Bans.hpp index 1ba76a66..fe5c6410 100644 --- a/src/Components/Modules/Bans.hpp +++ b/src/Components/Modules/Bans.hpp @@ -8,7 +8,6 @@ namespace Components typedef std::pair Entry; Bans(); - ~Bans(); static void BanClientNum(int num, const std::string& reason); static void UnbanClient(SteamID id); diff --git a/src/Components/Modules/CardTitles.cpp b/src/Components/Modules/CardTitles.cpp index 471dd8ec..5afb8a8b 100644 --- a/src/Components/Modules/CardTitles.cpp +++ b/src/Components/Modules/CardTitles.cpp @@ -227,12 +227,4 @@ namespace Components AntiCheat::CheckStartupTime(); #endif } - - CardTitles::~CardTitles() - { - for (int i = 0; i < ARRAYSIZE(CardTitles::CustomTitles); ++i) - { - CardTitles::CustomTitles[i].clear(); - } - } } diff --git a/src/Components/Modules/CardTitles.hpp b/src/Components/Modules/CardTitles.hpp index 7f838ef8..0b43bdab 100644 --- a/src/Components/Modules/CardTitles.hpp +++ b/src/Components/Modules/CardTitles.hpp @@ -60,7 +60,6 @@ namespace Components static void ParseCustomTitles(const char * msg); CardTitles(); - ~CardTitles(); private: static CClient * GetClientByIndex(std::uint32_t index); diff --git a/src/Components/Modules/Changelog.cpp b/src/Components/Modules/Changelog.cpp index 28773007..a6da0d83 100644 --- a/src/Components/Modules/Changelog.cpp +++ b/src/Components/Modules/Changelog.cpp @@ -60,12 +60,4 @@ namespace Components Scheduler::OnFrameAsync(AntiCheat::QuickCodeScanner1); #endif } - - Changelog::~Changelog() - { - { - std::lock_guard _(Changelog::Mutex); - Changelog::Lines.clear(); - } - } } diff --git a/src/Components/Modules/Changelog.hpp b/src/Components/Modules/Changelog.hpp index dd74a8be..b58eb1ca 100644 --- a/src/Components/Modules/Changelog.hpp +++ b/src/Components/Modules/Changelog.hpp @@ -6,7 +6,6 @@ namespace Components { public: Changelog(); - ~Changelog(); static void LoadChangelog(); diff --git a/src/Components/Modules/Chat.cpp b/src/Components/Modules/Chat.cpp index abe117d8..0300d56c 100644 --- a/src/Components/Modules/Chat.cpp +++ b/src/Components/Modules/Chat.cpp @@ -328,9 +328,4 @@ namespace Components // Change logic that does word splitting with new lines for chat messages to support fonticons Utils::Hook(0x592E10, CG_AddToTeamChat_Stub, HOOK_JUMP).install()->quick(); } - - Chat::~Chat() - { - Chat::MuteList.clear(); - } } diff --git a/src/Components/Modules/Chat.hpp b/src/Components/Modules/Chat.hpp index 62bc36aa..134efb37 100644 --- a/src/Components/Modules/Chat.hpp +++ b/src/Components/Modules/Chat.hpp @@ -7,7 +7,6 @@ namespace Components static constexpr auto FONT_ICON_CHAT_WIDTH_CALCULATION_MULTIPLIER = 2.0f; public: Chat(); - ~Chat(); private: static Game::dvar_t** cg_chatHeight; diff --git a/src/Components/Modules/Clantags.cpp b/src/Components/Modules/Clantags.cpp index ff6e2022..e2d03cf6 100644 --- a/src/Components/Modules/Clantags.cpp +++ b/src/Components/Modules/Clantags.cpp @@ -101,12 +101,4 @@ namespace Components // Draw clantag before playername Utils::Hook(0x591242, ClanTags::DrawPlayerNameOnScoreboard).install()->quick(); } - - ClanTags::~ClanTags() - { - for (int i = 0; i < ARRAYSIZE(ClanTags::Tags); ++i) - { - ClanTags::Tags[i].clear(); - } - } } diff --git a/src/Components/Modules/Clantags.hpp b/src/Components/Modules/Clantags.hpp index caadbe69..ea7bca39 100644 --- a/src/Components/Modules/Clantags.hpp +++ b/src/Components/Modules/Clantags.hpp @@ -10,7 +10,6 @@ namespace Components static const char* GetUserClantag(std::uint32_t clientnum, const char * playername); ClanTags(); - ~ClanTags(); private: static std::string Tags[18]; diff --git a/src/Components/Modules/ClientCommand.cpp b/src/Components/Modules/ClientCommand.cpp index 1c0c7fa4..bc0a202f 100644 --- a/src/Components/Modules/ClientCommand.cpp +++ b/src/Components/Modules/ClientCommand.cpp @@ -309,9 +309,4 @@ namespace Components ClientCommand::AddCheatCommands(); ClientCommand::AddScriptFunctions(); } - - ClientCommand::~ClientCommand() - { - ClientCommand::FunctionMap.clear(); - } } diff --git a/src/Components/Modules/ClientCommand.hpp b/src/Components/Modules/ClientCommand.hpp index 3c1d1da6..ca9bc2a3 100644 --- a/src/Components/Modules/ClientCommand.hpp +++ b/src/Components/Modules/ClientCommand.hpp @@ -8,7 +8,7 @@ namespace Components typedef void(Callback)(Game::gentity_s* entity); ClientCommand(); - ~ClientCommand(); + static void Add(const char* name, Utils::Slot callback); static bool CheatsOk(const Game::gentity_s* ent); diff --git a/src/Components/Modules/Command.cpp b/src/Components/Modules/Command.cpp index d3846df5..b0d30727 100644 --- a/src/Components/Modules/Command.cpp +++ b/src/Components/Modules/Command.cpp @@ -168,10 +168,4 @@ namespace Components } }); } - - Command::~Command() - { - Command::FunctionMap.clear(); - Command::FunctionMapSV.clear(); - } } diff --git a/src/Components/Modules/Command.hpp b/src/Components/Modules/Command.hpp index 4e07ba87..1b6ccc6d 100644 --- a/src/Components/Modules/Command.hpp +++ b/src/Components/Modules/Command.hpp @@ -10,6 +10,7 @@ namespace Components public: Params() {}; virtual ~Params() {}; + virtual const char* get(size_t index) = 0; virtual size_t length() = 0; @@ -48,7 +49,6 @@ namespace Components typedef void(Callback)(Command::Params* params); Command(); - ~Command(); static Game::cmd_function_t* Allocate(); diff --git a/src/Components/Modules/Dedicated.cpp b/src/Components/Modules/Dedicated.cpp index 3e615dab..813621d6 100644 --- a/src/Components/Modules/Dedicated.cpp +++ b/src/Components/Modules/Dedicated.cpp @@ -519,9 +519,4 @@ namespace Components } }); } - - Dedicated::~Dedicated() - { - - } } diff --git a/src/Components/Modules/Dedicated.hpp b/src/Components/Modules/Dedicated.hpp index 78126922..cfcbc539 100644 --- a/src/Components/Modules/Dedicated.hpp +++ b/src/Components/Modules/Dedicated.hpp @@ -6,7 +6,6 @@ namespace Components { public: Dedicated(); - ~Dedicated(); static SteamID PlayerGuids[18][2]; diff --git a/src/Components/Modules/Discovery.cpp b/src/Components/Modules/Discovery.cpp index 758ef317..9b3e94ef 100644 --- a/src/Components/Modules/Discovery.cpp +++ b/src/Components/Modules/Discovery.cpp @@ -95,11 +95,6 @@ namespace Components #endif } - Discovery::~Discovery() - { - - } - void Discovery::preDestroy() { Discovery::IsPerforming = false; diff --git a/src/Components/Modules/Discovery.hpp b/src/Components/Modules/Discovery.hpp index 655122bf..63f69b1b 100644 --- a/src/Components/Modules/Discovery.hpp +++ b/src/Components/Modules/Discovery.hpp @@ -6,7 +6,6 @@ namespace Components { public: Discovery(); - ~Discovery(); void preDestroy() override; diff --git a/src/Components/Modules/Elevators.cpp b/src/Components/Modules/Elevators.cpp index 9438f9ce..bb998410 100644 --- a/src/Components/Modules/Elevators.cpp +++ b/src/Components/Modules/Elevators.cpp @@ -120,8 +120,4 @@ namespace Components Utils::Hook(0x570E0B, Elevators::PM_Trace_Hk, HOOK_CALL).install()->quick(); Utils::Hook(0x570D70, Elevators::PM_Trace_Hk, HOOK_CALL).install()->quick(); } - - Elevators::~Elevators() - { - } } diff --git a/src/Components/Modules/Elevators.hpp b/src/Components/Modules/Elevators.hpp index 02b0b64e..1a096161 100644 --- a/src/Components/Modules/Elevators.hpp +++ b/src/Components/Modules/Elevators.hpp @@ -6,7 +6,6 @@ namespace Components { public: Elevators(); - ~Elevators(); private: enum ElevatorSettings { DISABLED, ENABLED, EASY }; diff --git a/src/Components/Modules/FastFiles.cpp b/src/Components/Modules/FastFiles.cpp index 2170e3c6..dbeeb667 100644 --- a/src/Components/Modules/FastFiles.cpp +++ b/src/Components/Modules/FastFiles.cpp @@ -622,9 +622,4 @@ namespace Components }, HOOK_CALL).install()/*->quick()*/; #endif } - - FastFiles::~FastFiles() - { - FastFiles::ZonePaths.clear(); - } } diff --git a/src/Components/Modules/FastFiles.hpp b/src/Components/Modules/FastFiles.hpp index 38c3e62c..a1b4c235 100644 --- a/src/Components/Modules/FastFiles.hpp +++ b/src/Components/Modules/FastFiles.hpp @@ -6,7 +6,6 @@ namespace Components { public: FastFiles(); - ~FastFiles(); static void AddZonePath(const std::string& path); static std::string Current(); diff --git a/src/Components/Modules/Flags.cpp b/src/Components/Modules/Flags.cpp index e3139910..0ae96615 100644 --- a/src/Components/Modules/Flags.cpp +++ b/src/Components/Modules/Flags.cpp @@ -53,8 +53,4 @@ namespace Components Flags::EnabledFlags.push_back("stdout"); } } - - Flags::Flags() - { - } } diff --git a/src/Components/Modules/Flags.hpp b/src/Components/Modules/Flags.hpp index ec35f350..b8ee410d 100644 --- a/src/Components/Modules/Flags.hpp +++ b/src/Components/Modules/Flags.hpp @@ -5,7 +5,7 @@ namespace Components class Flags : public Component { public: - Flags(); + Flags() = default; static bool HasFlag(const std::string& flag); diff --git a/src/Components/Modules/Menus.cpp b/src/Components/Modules/Menus.cpp index 9f7faa12..b6c95ea9 100644 --- a/src/Components/Modules/Menus.cpp +++ b/src/Components/Modules/Menus.cpp @@ -913,7 +913,6 @@ namespace Components Menus::~Menus() { - Menus::CustomMenus.clear(); Menus::FreeEverything(); } } diff --git a/src/Components/Modules/ModList.cpp b/src/Components/Modules/ModList.cpp index 8935b586..944aa7b4 100644 --- a/src/Components/Modules/ModList.cpp +++ b/src/Components/Modules/ModList.cpp @@ -101,9 +101,4 @@ namespace Components UIFeeder::Add(9.0f, ModList::GetItemCount, ModList::GetItemText, ModList::Select); } - - ModList::~ModList() - { - ModList::Mods.clear(); - } } diff --git a/src/Components/Modules/ModList.hpp b/src/Components/Modules/ModList.hpp index a871fb45..185aaed1 100644 --- a/src/Components/Modules/ModList.hpp +++ b/src/Components/Modules/ModList.hpp @@ -6,7 +6,6 @@ namespace Components { public: ModList(); - ~ModList(); static void RunMod(const std::string& mod); diff --git a/src/Components/Modules/MusicalTalent.cpp b/src/Components/Modules/MusicalTalent.cpp index 7deef61c..9769fcb6 100644 --- a/src/Components/Modules/MusicalTalent.cpp +++ b/src/Components/Modules/MusicalTalent.cpp @@ -39,9 +39,4 @@ namespace Components MusicalTalent::Replace("music_mainmenu_mp", "hz_t_menumusic.mp3"); } - - MusicalTalent::~MusicalTalent() - { - MusicalTalent::SoundAliasList.clear(); - } } diff --git a/src/Components/Modules/MusicalTalent.hpp b/src/Components/Modules/MusicalTalent.hpp index e5bfc181..9d10d3d9 100644 --- a/src/Components/Modules/MusicalTalent.hpp +++ b/src/Components/Modules/MusicalTalent.hpp @@ -6,7 +6,6 @@ namespace Components { public: MusicalTalent(); - ~MusicalTalent(); static void Replace(const std::string& sound, const char* file); diff --git a/src/Components/Modules/Network.cpp b/src/Components/Modules/Network.cpp index 18132d2b..cd573569 100644 --- a/src/Components/Modules/Network.cpp +++ b/src/Components/Modules/Network.cpp @@ -403,11 +403,4 @@ namespace Components Network::SendRaw(address, address.getString()); }); } - - Network::~Network() - { - Network::SelectedPacket.clear(); - Network::PacketHandlers.clear(); - Network::StartupSignal.clear(); - } } diff --git a/src/Components/Modules/Network.hpp b/src/Components/Modules/Network.hpp index f3248817..f3096350 100644 --- a/src/Components/Modules/Network.hpp +++ b/src/Components/Modules/Network.hpp @@ -52,7 +52,6 @@ namespace Components typedef void(CallbackRaw)(); Network(); - ~Network(); static unsigned short GetPort(); diff --git a/src/Components/Modules/Party.cpp b/src/Components/Modules/Party.cpp index afa418ad..f4bb851e 100644 --- a/src/Components/Modules/Party.cpp +++ b/src/Components/Modules/Party.cpp @@ -513,9 +513,4 @@ namespace Components Friends::UpdateServer(address, info.get("hostname"), info.get("mapname")); }); } - - Party::~Party() - { - Party::LobbyMap.clear(); - } } diff --git a/src/Components/Modules/Party.hpp b/src/Components/Modules/Party.hpp index 974bdc2f..d8f70cf1 100644 --- a/src/Components/Modules/Party.hpp +++ b/src/Components/Modules/Party.hpp @@ -6,7 +6,6 @@ namespace Components { public: Party(); - ~Party(); static Network::Address Target(); static void Connect(Network::Address target); diff --git a/src/Components/Modules/Playlist.cpp b/src/Components/Modules/Playlist.cpp index e413d534..f2291ebc 100644 --- a/src/Components/Modules/Playlist.cpp +++ b/src/Components/Modules/Playlist.cpp @@ -190,11 +190,4 @@ namespace Components Network::Handle("playlistResponse", PlaylistReponse); Network::Handle("playlistInvalidPassword", PlaylistInvalidPassword); } - - Playlist::~Playlist() - { - Playlist::MapRelocation.clear(); - Playlist::CurrentPlaylistBuffer.clear(); - Playlist::ReceivedPlaylistBuffer.clear(); - } } diff --git a/src/Components/Modules/Playlist.hpp b/src/Components/Modules/Playlist.hpp index c586815f..d8e7a8fb 100644 --- a/src/Components/Modules/Playlist.hpp +++ b/src/Components/Modules/Playlist.hpp @@ -8,7 +8,6 @@ namespace Components typedef void(*Callback)(); Playlist(); - ~Playlist(); static void LoadPlaylist(); diff --git a/src/Components/Modules/RCon.cpp b/src/Components/Modules/RCon.cpp index 1ab6fc59..5412ec43 100644 --- a/src/Components/Modules/RCon.cpp +++ b/src/Components/Modules/RCon.cpp @@ -173,9 +173,4 @@ namespace Components } }); } - - RCon::~RCon() - { - RCon::Password.clear(); - } } diff --git a/src/Components/Modules/RCon.hpp b/src/Components/Modules/RCon.hpp index 1cc486e5..de09bbae 100644 --- a/src/Components/Modules/RCon.hpp +++ b/src/Components/Modules/RCon.hpp @@ -6,7 +6,6 @@ namespace Components { public: RCon(); - ~RCon(); private: class Container diff --git a/src/Components/Modules/Script.cpp b/src/Components/Modules/Script.cpp index 42b9037c..5dc331a3 100644 --- a/src/Components/Modules/Script.cpp +++ b/src/Components/Modules/Script.cpp @@ -705,14 +705,6 @@ namespace Components Script::~Script() { - Script::ScriptName.clear(); - Script::ScriptHandles.clear(); - Script::ScriptNameStack.clear(); - Script::ScriptFunctions.clear(); - Script::ReplacedFunctions.clear(); Script::VMShutdownSignal.clear(); - - Script::ScriptStorage.clear(); - Script::ScriptBaseProgramNum.clear(); } } diff --git a/src/Components/Modules/ServerCommands.cpp b/src/Components/Modules/ServerCommands.cpp index 471b32a6..7f47e086 100644 --- a/src/Components/Modules/ServerCommands.cpp +++ b/src/Components/Modules/ServerCommands.cpp @@ -65,9 +65,4 @@ namespace Components // Server command receive hook Utils::Hook(0x59449F, ServerCommands::OnServerCommandStub).install()->quick(); } - - ServerCommands::~ServerCommands() - { - ServerCommands::Commands.clear(); - } } diff --git a/src/Components/Modules/ServerCommands.hpp b/src/Components/Modules/ServerCommands.hpp index 8fc22459..61f823a6 100644 --- a/src/Components/Modules/ServerCommands.hpp +++ b/src/Components/Modules/ServerCommands.hpp @@ -6,7 +6,6 @@ namespace Components { public: ServerCommands(); - ~ServerCommands(); static void OnCommand(std::int32_t cmd, Utils::Slot cb); diff --git a/src/Components/Modules/ServerList.cpp b/src/Components/Modules/ServerList.cpp index 94c3e473..4ddfa993 100644 --- a/src/Components/Modules/ServerList.cpp +++ b/src/Components/Modules/ServerList.cpp @@ -880,15 +880,8 @@ namespace Components ServerList::~ServerList() { - ServerList::OnlineList.clear(); - ServerList::OfflineList.clear(); - ServerList::FavouriteList.clear(); - ServerList::VisibleList.clear(); - - { - std::lock_guard _(ServerList::RefreshContainer.mutex); - ServerList::RefreshContainer.awatingList = false; - ServerList::RefreshContainer.servers.clear(); - } + std::lock_guard _(ServerList::RefreshContainer.mutex); + ServerList::RefreshContainer.awatingList = false; + ServerList::RefreshContainer.servers.clear(); } } diff --git a/src/Components/Modules/StartupMessages.cpp b/src/Components/Modules/StartupMessages.cpp index 16cf8497..c274ecfb 100644 --- a/src/Components/Modules/StartupMessages.cpp +++ b/src/Components/Modules/StartupMessages.cpp @@ -34,11 +34,6 @@ namespace Components }); } - StartupMessages::~StartupMessages() - { - StartupMessages::MessageList.clear(); - } - void StartupMessages::AddMessage(const std::string& message) { StartupMessages::MessageList.push_back(message); diff --git a/src/Components/Modules/StartupMessages.hpp b/src/Components/Modules/StartupMessages.hpp index 6ecf3cbe..7680c77a 100644 --- a/src/Components/Modules/StartupMessages.hpp +++ b/src/Components/Modules/StartupMessages.hpp @@ -6,7 +6,6 @@ namespace Components { public: StartupMessages(); - ~StartupMessages(); static void AddMessage(const std::string& message); diff --git a/src/Components/Modules/Stats.cpp b/src/Components/Modules/Stats.cpp index cdfab8c9..dc807c37 100644 --- a/src/Components/Modules/Stats.cpp +++ b/src/Components/Modules/Stats.cpp @@ -107,9 +107,4 @@ namespace Components // Write stats to mod folder if a mod is loaded Utils::Hook(0x682F7B, Stats::SaveStats, HOOK_CALL).install()->quick(); } - - Stats::~Stats() - { - - } } diff --git a/src/Components/Modules/Stats.hpp b/src/Components/Modules/Stats.hpp index 6fa5be2c..c4de9fd9 100644 --- a/src/Components/Modules/Stats.hpp +++ b/src/Components/Modules/Stats.hpp @@ -6,7 +6,6 @@ namespace Components { public: Stats(); - ~Stats(); static bool IsMaxLevel(); diff --git a/src/Components/Modules/StringTable.cpp b/src/Components/Modules/StringTable.cpp index 3fd00880..8f1d590d 100644 --- a/src/Components/Modules/StringTable.cpp +++ b/src/Components/Modules/StringTable.cpp @@ -76,9 +76,4 @@ namespace Components return header; }); } - - StringTable::~StringTable() - { - StringTable::StringTableMap.clear(); - } } diff --git a/src/Components/Modules/StringTable.hpp b/src/Components/Modules/StringTable.hpp index 21701b24..118cd076 100644 --- a/src/Components/Modules/StringTable.hpp +++ b/src/Components/Modules/StringTable.hpp @@ -6,7 +6,6 @@ namespace Components { public: StringTable(); - ~StringTable(); private: static std::unordered_map StringTableMap; diff --git a/src/Components/Modules/StructuredData.cpp b/src/Components/Modules/StructuredData.cpp index 64e3b375..983ee2e7 100644 --- a/src/Components/Modules/StructuredData.cpp +++ b/src/Components/Modules/StructuredData.cpp @@ -311,9 +311,4 @@ namespace Components } }); } - - StructuredData::~StructuredData() - { - StructuredData::MemAllocator.clear(); - } } diff --git a/src/Components/Modules/StructuredData.hpp b/src/Components/Modules/StructuredData.hpp index 8c7a6431..3a1b42f2 100644 --- a/src/Components/Modules/StructuredData.hpp +++ b/src/Components/Modules/StructuredData.hpp @@ -24,7 +24,6 @@ namespace Components }; StructuredData(); - ~StructuredData(); private: static bool UpdateVersionOffsets(Game::StructuredDataDefSet *set, Game::StructuredDataBuffer *buffer, Game::StructuredDataDef *oldDef); diff --git a/src/Components/Modules/Zones.cpp b/src/Components/Modules/Zones.cpp index da24ffeb..24af1db6 100644 --- a/src/Components/Modules/Zones.cpp +++ b/src/Components/Modules/Zones.cpp @@ -3696,10 +3696,5 @@ namespace Components Utils::Hook::Set(0x6B9602,0xCCCC); #endif } - - Zones::~Zones() - { - - } } #pragma optimize( "", on ) \ No newline at end of file diff --git a/src/Components/Modules/Zones.hpp b/src/Components/Modules/Zones.hpp index dd1b5df6..615bc450 100644 --- a/src/Components/Modules/Zones.hpp +++ b/src/Components/Modules/Zones.hpp @@ -18,7 +18,6 @@ namespace Components }; Zones(); - ~Zones(); static void SetVersion(int version); From fb68afe19edc24a801c38869029884d2666b14d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Mar 2022 17:19:16 +0000 Subject: [PATCH 14/21] Bump deps/libtomcrypt from `673f5ce` to `06a81ae` Bumps [deps/libtomcrypt](https://github.com/libtom/libtomcrypt) from `673f5ce` to `06a81ae`. - [Release notes](https://github.com/libtom/libtomcrypt/releases) - [Commits](https://github.com/libtom/libtomcrypt/compare/673f5ce29015a9bba3c96792920a10601b5b0718...06a81aeb227424182125363f7554fad5146d6d2a) --- updated-dependencies: - dependency-name: deps/libtomcrypt dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/libtomcrypt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/libtomcrypt b/deps/libtomcrypt index 673f5ce2..06a81aeb 160000 --- a/deps/libtomcrypt +++ b/deps/libtomcrypt @@ -1 +1 @@ -Subproject commit 673f5ce29015a9bba3c96792920a10601b5b0718 +Subproject commit 06a81aeb227424182125363f7554fad5146d6d2a From a41d7356ccef44659cdd48b4ef586229097c417b Mon Sep 17 00:00:00 2001 From: FutureRave Date: Thu, 17 Mar 2022 18:50:20 +0000 Subject: [PATCH 15/21] Refactor command (changes from s1x) --- src/Components/Modules/Auth.cpp | 6 +- src/Components/Modules/Bans.cpp | 6 +- src/Components/Modules/Bots.cpp | 2 +- src/Components/Modules/CardTitles.cpp | 2 +- src/Components/Modules/Chat.cpp | 6 +- src/Components/Modules/Clantags.cpp | 2 +- src/Components/Modules/ClientCommand.cpp | 6 +- src/Components/Modules/Command.cpp | 81 ++++++++++++++--------- src/Components/Modules/Command.hpp | 33 +++++---- src/Components/Modules/Dedicated.cpp | 28 ++------ src/Components/Modules/Dvar.cpp | 17 +++-- src/Components/Modules/Exception.cpp | 2 +- src/Components/Modules/FastFiles.cpp | 2 +- src/Components/Modules/Friends.cpp | 2 +- src/Components/Modules/Gamepad.cpp | 2 +- src/Components/Modules/Logger.cpp | 8 +-- src/Components/Modules/Menus.cpp | 2 +- src/Components/Modules/Node.cpp | 2 +- src/Components/Modules/Party.cpp | 2 +- src/Components/Modules/QuickPatch.cpp | 16 ++--- src/Components/Modules/RCon.cpp | 10 +-- src/Components/Modules/RawFiles.cpp | 2 +- src/Components/Modules/ServerCommands.cpp | 6 +- src/Components/Modules/Weapon.cpp | 5 +- src/Components/Modules/ZoneBuilder.cpp | 10 +-- src/Game/Functions.cpp | 9 +-- src/Game/Functions.hpp | 10 +-- src/Game/Structs.hpp | 15 ++++- 28 files changed, 147 insertions(+), 147 deletions(-) diff --git a/src/Components/Modules/Auth.cpp b/src/Components/Modules/Auth.cpp index 1ea665f7..02a35b59 100644 --- a/src/Components/Modules/Auth.cpp +++ b/src/Components/Modules/Auth.cpp @@ -83,7 +83,7 @@ namespace Components Command::ServerParams params; - if (params.length() < 3) + if (params.size() < 3) { Game::SV_Cmd_EndTokenizedString(); Logger::SoftError("Connecting failed: Command parsing error!"); @@ -170,7 +170,7 @@ namespace Components Command::ServerParams params; // Ensure there are enough params - if (params.length() < 3) + if (params.size() < 3) { Network::Send(address, "error\nInvalid connect string!"); return; @@ -455,7 +455,7 @@ namespace Components { Command::Add("securityLevel", [](Command::Params* params) { - if (params->length() < 2) + if (params->size() < 2) { uint32_t level = Auth::GetZeroBits(Auth::GuidToken, Auth::GuidKey.getPublicKey()); Logger::Print("Your current security level is %d\n", level); diff --git a/src/Components/Modules/Bans.cpp b/src/Components/Modules/Bans.cpp index 38cd20e9..14eb15b5 100644 --- a/src/Components/Modules/Bans.cpp +++ b/src/Components/Modules/Bans.cpp @@ -234,17 +234,17 @@ namespace Components { Command::Add("banclient", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; std::string reason = "EXE_ERR_BANNED_PERM"; - if (params->length() >= 3) reason = params->join(2); + if (params->size() >= 3) reason = params->join(2); Bans::BanClientNum(atoi(params->get(1)), reason); }); Command::Add("unbanclient", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; std::string type = params->get(1); diff --git a/src/Components/Modules/Bots.cpp b/src/Components/Modules/Bots.cpp index 78d42d0a..d177c573 100644 --- a/src/Components/Modules/Bots.cpp +++ b/src/Components/Modules/Bots.cpp @@ -447,7 +447,7 @@ namespace Components { unsigned int count = 1; - if (params->length() > 1) + if (params->size() > 1) { if (params->get(1) == "all"s) count = static_cast(-1); else count = atoi(params->get(1)); diff --git a/src/Components/Modules/CardTitles.cpp b/src/Components/Modules/CardTitles.cpp index 471dd8ec..0a47ce91 100644 --- a/src/Components/Modules/CardTitles.cpp +++ b/src/Components/Modules/CardTitles.cpp @@ -199,7 +199,7 @@ namespace Components { if (params->get(1) == "customTitles"s && !Dedicated::IsEnabled()) { - if (params->length() == 3) + if (params->size() == 3) { CardTitles::ParseCustomTitles(params->get(2)); return true; diff --git a/src/Components/Modules/Chat.cpp b/src/Components/Modules/Chat.cpp index abe117d8..80740e7c 100644 --- a/src/Components/Modules/Chat.cpp +++ b/src/Components/Modules/Chat.cpp @@ -263,7 +263,7 @@ namespace Components } const auto* cmd = params->get(0); - if (params->length() < 2) + if (params->size() < 2) { Logger::Print("Usage: %s : prevent the player from using the chat\n", cmd); return; @@ -285,7 +285,7 @@ namespace Components } const auto* cmd = params->get(0); - if (params->length() < 2) + if (params->size() < 2) { Logger::Print("Usage: %s \n%s all = unmute everyone\n", cmd, cmd); return; @@ -299,7 +299,7 @@ namespace Components return; } - if (params->get(1) == "all"s) + if (std::strcmp(params->get(1), "all") == 0) { Logger::Print("All players were unmuted\n"); Chat::UnmuteInternal(0, true); diff --git a/src/Components/Modules/Clantags.cpp b/src/Components/Modules/Clantags.cpp index ff6e2022..f78fdbdf 100644 --- a/src/Components/Modules/Clantags.cpp +++ b/src/Components/Modules/Clantags.cpp @@ -83,7 +83,7 @@ namespace Components { if (params->get(1) == "clantags"s && !Dedicated::IsEnabled()) { - if (params->length() == 3) + if (params->size() == 3) { ClanTags::ParseClantags(params->get(2)); return true; diff --git a/src/Components/Modules/ClientCommand.cpp b/src/Components/Modules/ClientCommand.cpp index 1c0c7fa4..4bdb8b03 100644 --- a/src/Components/Modules/ClientCommand.cpp +++ b/src/Components/Modules/ClientCommand.cpp @@ -147,7 +147,7 @@ namespace Components Command::ServerParams params = {}; Game::vec3_t origin, angles{0.f, 0.f, 0.f}; - if (params.length() < 4u || params.length() > 6u) + if (params.size() < 4 || params.size() > 6) { Game::SV_GameSendServerCommand(ent->s.number, 0, Utils::String::VA("%c \"GAME_USAGE\x15: setviewpos x y z [yaw] [pitch]\n\"", 0x65)); @@ -159,12 +159,12 @@ namespace Components origin[i] = std::strtof(params.get(i + 1), nullptr); } - if (params.length() >= 5u) + if (params.size() >= 5) { angles[1] = std::strtof(params.get(4), nullptr); // Yaw } - if (params.length() == 6u) + if (params.size() == 6) { angles[0] = std::strtof(params.get(5), nullptr); // Pitch } diff --git a/src/Components/Modules/Command.cpp b/src/Components/Modules/Command.cpp index d3846df5..071be212 100644 --- a/src/Components/Modules/Command.cpp +++ b/src/Components/Modules/Command.cpp @@ -5,56 +5,72 @@ namespace Components std::unordered_map> Command::FunctionMap; std::unordered_map> Command::FunctionMapSV; - std::string Command::Params::join(size_t startIndex) + std::string Command::Params::join(const int index) { std::string result; - for (size_t i = startIndex; i < this->length(); ++i) + for (auto i = index; i < this->size(); i++) { - if (i > startIndex) result.append(" "); - result.append(this->operator[](i)); + if (i > index) result.append(" "); + result.append(this->get(i)); } return result; } - const char* Command::Params::operator[](size_t index) + Command::ClientParams::ClientParams() + : nesting_(Game::cmd_args->nesting) { - return this->get(index); + assert(Game::cmd_args->nesting < Game::CMD_MAX_NESTING); } - const char* Command::ClientParams::get(size_t index) + int Command::ClientParams::size() { - if (index >= this->length()) return ""; - return Game::cmd_argv[this->commandId][index]; + return Game::cmd_args->argc[this->nesting_]; } - size_t Command::ClientParams::length() + const char* Command::ClientParams::get(const int index) { - return Game::cmd_argc[this->commandId]; + if (index >= this->size()) + { + return ""; + } + + return Game::cmd_args->argv[this->nesting_][index]; } - const char* Command::ServerParams::get(size_t index) + Command::ServerParams::ServerParams() + : nesting_(Game::sv_cmd_args->nesting) { - if (index >= this->length()) return ""; - return Game::cmd_argv_sv[this->commandId][index]; + assert(Game::sv_cmd_args->nesting < Game::CMD_MAX_NESTING); } - size_t Command::ServerParams::length() + int Command::ServerParams::size() { - return Game::cmd_argc_sv[this->commandId]; + return Game::sv_cmd_args->argc[this->nesting_]; + } + + const char* Command::ServerParams::get(const int index) + { + if (index >= this->size()) + { + return ""; + } + + return Game::sv_cmd_args->argv[this->nesting_][index]; } void Command::Add(const char* name, Utils::Slot callback) { - std::string command = Utils::String::ToLower(name); + const auto command = Utils::String::ToLower(name); + const auto got = Command::FunctionMap.find(command); - if (Command::FunctionMap.find(command) == Command::FunctionMap.end()) + if (got == Command::FunctionMap.end()) { Command::AddRaw(name, Command::MainCallback); } - Command::FunctionMap[command] = callback; + got->second = std::move(callback); } void Command::AddSV(const char* name, Utils::Slot callback) @@ -70,9 +86,10 @@ namespace Components return; } - std::string command = Utils::String::ToLower(name); + const auto command = Utils::String::ToLower(name); + const auto got = Command::FunctionMapSV.find(command); - if (Command::FunctionMapSV.find(command) == Command::FunctionMapSV.end()) + if (got == Command::FunctionMapSV.end()) { Command::AddRawSV(name, Command::MainCallbackSV); @@ -80,7 +97,7 @@ namespace Components Command::AddRaw(name, Game::Cbuf_AddServerText); } - Command::FunctionMapSV[command] = callback; + got->second = std::move(callback); } void Command::AddRaw(const char* name, void(*callback)(), bool key) @@ -134,25 +151,27 @@ namespace Components void Command::MainCallback() { - Command::ClientParams params(*Game::cmd_id); + Command::ClientParams params; - std::string command = Utils::String::ToLower(params[0]); + const auto command = Utils::String::ToLower(params[0]); + const auto got = Command::FunctionMap.find(command); - if (Command::FunctionMap.find(command) != Command::FunctionMap.end()) + if (got != Command::FunctionMap.end()) { - Command::FunctionMap[command](¶ms); + got->second(¶ms); } } void Command::MainCallbackSV() { - Command::ServerParams params(*Game::cmd_id_sv); + Command::ServerParams params; - std::string command = Utils::String::ToLower(params[0]); + const auto command = Utils::String::ToLower(params[0]); + const auto got = Command::FunctionMapSV.find(command); - if (Command::FunctionMapSV.find(command) != Command::FunctionMapSV.end()) + if (got != Command::FunctionMapSV.end()) { - Command::FunctionMapSV[command](¶ms); + got->second(¶ms); } } @@ -162,7 +181,7 @@ namespace Components Command::Add("openLink", [](Command::Params* params) { - if (params->length() > 1) + if (params->size() > 1) { Utils::OpenUrl(params->get(1)); } diff --git a/src/Components/Modules/Command.hpp b/src/Components/Modules/Command.hpp index 4e07ba87..365555e6 100644 --- a/src/Components/Modules/Command.hpp +++ b/src/Components/Modules/Command.hpp @@ -9,40 +9,39 @@ namespace Components { public: Params() {}; - virtual ~Params() {}; - virtual const char* get(size_t index) = 0; - virtual size_t length() = 0; - virtual std::string join(size_t startIndex); - virtual const char* operator[](size_t index); + virtual int size() = 0; + virtual const char* get(int index) = 0; + virtual std::string join(int index); + + virtual const char* operator[](const int index) + { + return this->get(index); + } }; class ClientParams : public Params { public: - ClientParams(unsigned int id) : commandId(id) {}; - ClientParams(const ClientParams &obj) : commandId(obj.commandId) {}; - ClientParams() : ClientParams(*Game::cmd_id) {}; + ClientParams(); - const char* get(size_t index) override; - size_t length() override; + int size() override; + const char* get(int index) override; private: - unsigned int commandId; + int nesting_; }; class ServerParams : public Params { public: - ServerParams(unsigned int id) : commandId(id) {}; - ServerParams(const ServerParams &obj) : commandId(obj.commandId) {}; - ServerParams() : ServerParams(*Game::cmd_id_sv) {}; + ServerParams(); - const char* get(size_t index) override; - size_t length() override; + int size() override; + const char* get(int index) override; private: - unsigned int commandId; + int nesting_; }; typedef void(Callback)(Command::Params* params); diff --git a/src/Components/Modules/Dedicated.cpp b/src/Components/Modules/Dedicated.cpp index 3e615dab..0c20904c 100644 --- a/src/Components/Modules/Dedicated.cpp +++ b/src/Components/Modules/Dedicated.cpp @@ -398,7 +398,7 @@ namespace Components // Say command Command::AddSV("say", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; std::string message = params->join(1); std::string name = Dvar::Var("sv_sayName").get(); @@ -418,7 +418,7 @@ namespace Components // Tell command Command::AddSV("tell", [](Command::Params* params) { - if (params->length() < 3) return; + if (params->size() < 3) return; int client = atoi(params->get(1)); std::string message = params->join(2); @@ -439,7 +439,7 @@ namespace Components // Sayraw command Command::AddSV("sayraw", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; std::string message = params->join(1); Game::SV_GameSendServerCommand(-1, 0, Utils::String::VA("%c \"%s\"", 104, message.data())); @@ -449,33 +449,13 @@ namespace Components // Tellraw command Command::AddSV("tellraw", [](Command::Params* params) { - if (params->length() < 3) return; + if (params->size() < 3) return; int client = atoi(params->get(1)); std::string message = params->join(2); Game::SV_GameSendServerCommand(client, 0, Utils::String::VA("%c \"%s\"", 104, message.data())); Game::Com_Printf(15, "Raw -> %i: %s\n", client, message.data()); }); - - // ! command - Command::AddSV("!", [](Command::Params* params) - { - if (params->length() != 2) return; - - int client = -1; - if (params->get(1) != "all"s) - { - client = atoi(params->get(1)); - - if (client >= *reinterpret_cast(0x31D938C)) - { - Game::Com_Printf(0, "Invalid player.\n"); - return; - } - } - - Game::SV_GameSendServerCommand(client, 0, Utils::String::VA("%c \"\"", 106)); - }); }); } } diff --git a/src/Components/Modules/Dvar.cpp b/src/Components/Modules/Dvar.cpp index 5e6f8a60..c9e385ba 100644 --- a/src/Components/Modules/Dvar.cpp +++ b/src/Components/Modules/Dvar.cpp @@ -181,22 +181,22 @@ namespace Components } } - template<> static Dvar::Var Dvar::Register(const char* name, bool value, Dvar::Flag flag, const char* description) + template<> Dvar::Var Dvar::Register(const char* name, bool value, Dvar::Flag flag, const char* description) { return Game::Dvar_RegisterBool(name, value, flag.val, description); } - template<> static Dvar::Var Dvar::Register(const char* name, const char* value, Dvar::Flag flag, const char* description) + template<> Dvar::Var Dvar::Register(const char* name, const char* value, Dvar::Flag flag, const char* description) { return Game::Dvar_RegisterString(name, value, flag.val, description); } - template<> static Dvar::Var Dvar::Register(const char* name, int value, int min, int max, Dvar::Flag flag, const char* description) + template<> Dvar::Var Dvar::Register(const char* name, int value, int min, int max, Dvar::Flag flag, const char* description) { return Game::Dvar_RegisterInt(name, value, min, max, flag.val, description); } - template<> static Dvar::Var Dvar::Register(const char* name, float value, float min, float max, Dvar::Flag flag, const char* description) + template<> Dvar::Var Dvar::Register(const char* name, float value, float min, float max, Dvar::Flag flag, const char* description) { return Game::Dvar_RegisterFloat(name, value, min, max, flag.val, description); } @@ -336,10 +336,10 @@ namespace Components // remove write protection from fs_game Utils::Hook::Xor(0x6431EA, Game::dvar_flag::DVAR_FLAG_WRITEPROTECTED); - // set cg_fov max to 90.0 - // ...120 because of V2 - static float cgFov90 = 120.0f; - Utils::Hook::Set(0x4F8E28, &cgFov90); + // set cg_fov max to 160.0 + // because that's the max on SP + static float cg_Fov = 160.0f; + Utils::Hook::Set(0x4F8E28, &cg_Fov); // set max volume to 1 static float volume = 1.0f; @@ -385,7 +385,6 @@ namespace Components Utils::Hook(0x59386A, Dvar::DvarSetFromStringByNameStub, HOOK_CALL).install()->quick(); // If the game closed abruptly, the dvars would not have been restored - Dvar::OnInit([] { Dvar::ResetDvarsValue(); diff --git a/src/Components/Modules/Exception.cpp b/src/Components/Modules/Exception.cpp index c5b09faf..3700587b 100644 --- a/src/Components/Modules/Exception.cpp +++ b/src/Components/Modules/Exception.cpp @@ -234,7 +234,7 @@ namespace Components Game::UI_UpdateArenas(); std::string command; - for (auto i = 0; i < (params->length() >= 2 ? atoi(params->get(1)) : *Game::arenaCount); ++i) + for (auto i = 0; i < (params->size() >= 2 ? atoi(params->get(1)) : *Game::arenaCount); ++i) { const auto* mapname = ArenaLength::NewArenas[i % *Game::arenaCount].mapName; diff --git a/src/Components/Modules/FastFiles.cpp b/src/Components/Modules/FastFiles.cpp index 2170e3c6..6a900ed1 100644 --- a/src/Components/Modules/FastFiles.cpp +++ b/src/Components/Modules/FastFiles.cpp @@ -594,7 +594,7 @@ namespace Components Command::Add("loadzone", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; Game::XZoneInfo info; info.name = params->get(1); diff --git a/src/Components/Modules/Friends.cpp b/src/Components/Modules/Friends.cpp index d8d483ac..77a8eaa2 100644 --- a/src/Components/Modules/Friends.cpp +++ b/src/Components/Modules/Friends.cpp @@ -583,7 +583,7 @@ namespace Components Command::Add("addFriend", [](Command::Params* params) { - if (params->length() < 2u) + if (params->size() < 2u) { Logger::Print("Usage: %s \n", params->get(0)); return; diff --git a/src/Components/Modules/Gamepad.cpp b/src/Components/Modules/Gamepad.cpp index 445868aa..5b6de852 100644 --- a/src/Components/Modules/Gamepad.cpp +++ b/src/Components/Modules/Gamepad.cpp @@ -1641,7 +1641,7 @@ namespace Components void Gamepad::Axis_Bind_f(Command::Params* params) { - if (params->length() < 4) + if (params->size() < 4) { Logger::Print("bindaxis \n"); return; diff --git a/src/Components/Modules/Logger.cpp b/src/Components/Modules/Logger.cpp index 75f2ec3b..69a8e9e6 100644 --- a/src/Components/Modules/Logger.cpp +++ b/src/Components/Modules/Logger.cpp @@ -261,7 +261,7 @@ namespace Components { Command::AddSV("log_add", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; Network::Address addr(params->get(1)); @@ -273,7 +273,7 @@ namespace Components Command::AddSV("log_del", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; int num = atoi(params->get(1)); if (Utils::String::VA("%i", num) == std::string(params->get(1)) && static_cast(num) < Logger::LoggingAddresses[0].size()) @@ -312,7 +312,7 @@ namespace Components Command::AddSV("g_log_add", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; Network::Address addr(params->get(1)); @@ -324,7 +324,7 @@ namespace Components Command::AddSV("g_log_del", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; int num = atoi(params->get(1)); if (Utils::String::VA("%i", num) == std::string(params->get(1)) && static_cast(num) < Logger::LoggingAddresses[1].size()) diff --git a/src/Components/Modules/Menus.cpp b/src/Components/Modules/Menus.cpp index 9f7faa12..f3cf9b05 100644 --- a/src/Components/Modules/Menus.cpp +++ b/src/Components/Modules/Menus.cpp @@ -845,7 +845,7 @@ namespace Components Command::Add("openmenu", [](Command::Params* params) { - if (params->length() != 2) + if (params->size() != 2) { Logger::Print("USAGE: openmenu \n"); return; diff --git a/src/Components/Modules/Node.cpp b/src/Components/Modules/Node.cpp index 7aa1584b..50797f93 100644 --- a/src/Components/Modules/Node.cpp +++ b/src/Components/Modules/Node.cpp @@ -377,7 +377,7 @@ namespace Components Command::Add("addnode", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; Node::Add({ params->get(1) }); }); } diff --git a/src/Components/Modules/Party.cpp b/src/Components/Modules/Party.cpp index afa418ad..abfe36df 100644 --- a/src/Components/Modules/Party.cpp +++ b/src/Components/Modules/Party.cpp @@ -261,7 +261,7 @@ namespace Components Command::Add("connect", [](Command::Params* params) { - if (params->length() < 2) + if (params->size() < 2) { return; } diff --git a/src/Components/Modules/QuickPatch.cpp b/src/Components/Modules/QuickPatch.cpp index 64ab5efe..30543a79 100644 --- a/src/Components/Modules/QuickPatch.cpp +++ b/src/Components/Modules/QuickPatch.cpp @@ -86,17 +86,15 @@ namespace Components void QuickPatch::SelectStringTableEntryInDvarStub() { - Command::ClientParams args; + Command::ClientParams params; - if (args.length() >= 4) + if (params.size() >= 4) { - std::string cmd = args[0]; - std::string table = args[1]; - std::string col = args[2]; - std::string dvarName = args[3]; - Game::dvar_t* dvar = Game::Dvar_FindVar(dvarName.data()); + const auto* dvarName = params[3]; + const auto* dvar = Game::Dvar_FindVar(dvarName); - if (Command::Find(dvarName) || (dvar && (dvar->flags & (Game::DVAR_FLAG_WRITEPROTECTED | Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_READONLY)))) + if (Command::Find(dvarName) || + (dvar != nullptr && dvar->flags & (Game::DVAR_FLAG_WRITEPROTECTED | Game::DVAR_FLAG_CHEAT | Game::DVAR_FLAG_READONLY))) { return; } @@ -671,7 +669,7 @@ namespace Components Command::Add("dumptechsets", [](Command::Params* param) { - if (param->length() != 2) + if (param->size() != 2) { Logger::Print("usage: dumptechsets | all\n"); return; diff --git a/src/Components/Modules/RCon.cpp b/src/Components/Modules/RCon.cpp index 1ab6fc59..e14f0a4f 100644 --- a/src/Components/Modules/RCon.cpp +++ b/src/Components/Modules/RCon.cpp @@ -11,15 +11,15 @@ namespace Components { Command::Add("rcon", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; - std::string operation = params->get(1); - if (operation == "login") + const auto* operation = params->get(1); + if (std::strcmp(operation, "login") == 0) { - if (params->length() < 3) return; + if (params->size() < 3) return; RCon::Password = params->get(2); } - else if (operation == "logout") + else if (std::strcmp(operation, "logout") == 0) { RCon::Password.clear(); } diff --git a/src/Components/Modules/RawFiles.cpp b/src/Components/Modules/RawFiles.cpp index 30489edf..108da3e0 100644 --- a/src/Components/Modules/RawFiles.cpp +++ b/src/Components/Modules/RawFiles.cpp @@ -24,7 +24,7 @@ namespace Components Command::Add("dumpraw", [](Command::Params* params) { - if (params->length() < 2) + if (params->size() < 2) { Logger::Print("Specify a filename!\n"); return; diff --git a/src/Components/Modules/ServerCommands.cpp b/src/Components/Modules/ServerCommands.cpp index 471b32a6..3cbbde8b 100644 --- a/src/Components/Modules/ServerCommands.cpp +++ b/src/Components/Modules/ServerCommands.cpp @@ -11,11 +11,11 @@ namespace Components bool ServerCommands::OnServerCommand() { - Command::ClientParams params(*Game::cmd_id); + Command::ClientParams params; - for (auto &serverCommandCB : ServerCommands::Commands) + for (const auto& serverCommandCB : ServerCommands::Commands) { - if (params.length() >= 1) + if (params.size() >= 1) { if (params.get(0)[0] == serverCommandCB.first) { diff --git a/src/Components/Modules/Weapon.cpp b/src/Components/Modules/Weapon.cpp index d526c747..e1becfe7 100644 --- a/src/Components/Modules/Weapon.cpp +++ b/src/Components/Modules/Weapon.cpp @@ -37,7 +37,10 @@ namespace Components int Weapon::ParseWeaponConfigStrings() { Command::ClientParams params; - if (params.length() <= 1) return 0; + + if (params.size() <= 1) + return 0; + int index = atoi(params[1]); if (index >= 4139) diff --git a/src/Components/Modules/ZoneBuilder.cpp b/src/Components/Modules/ZoneBuilder.cpp index d3be354b..de49b525 100644 --- a/src/Components/Modules/ZoneBuilder.cpp +++ b/src/Components/Modules/ZoneBuilder.cpp @@ -1110,7 +1110,7 @@ namespace Components Command::Add("verifyzone", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; /* Utils::Hook(0x4AE9C2, [] { Game::WeaponCompleteDef** varPtr = (Game::WeaponCompleteDef**)0x112A9F4; @@ -1165,7 +1165,7 @@ namespace Components Command::Add("buildzone", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; std::string zoneName = params->get(1); Logger::Print("Building zone '%s'...\n", zoneName.data()); @@ -1455,7 +1455,7 @@ namespace Components Command::Add("listassets", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; Game::XAssetType type = Game::DB_GetXAssetNameType(params->get(1)); if (type != Game::XAssetType::ASSET_TYPE_INVALID) @@ -1470,7 +1470,7 @@ namespace Components Command::Add("loadtempzone", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; if (FastFiles::Exists(params->get(1))) { @@ -1502,7 +1502,7 @@ namespace Components Command::Add("iwiDump", [](Command::Params* params) { - if (params->length() < 2) return; + if (params->size() < 2) return; std::string path = Utils::String::VA("%s\\mods\\%s\\images", Dvar::Var("fs_basepath").get(), params->get(1)); std::vector images = FileSystem::GetSysFileList(path, "iwi", false); diff --git a/src/Game/Functions.cpp b/src/Game/Functions.cpp index ad853b8d..0a7e4b89 100644 --- a/src/Game/Functions.cpp +++ b/src/Game/Functions.cpp @@ -390,13 +390,8 @@ namespace Game XAssetHeader* DB_XAssetPool = reinterpret_cast(0x7998A8); unsigned int* g_poolSize = reinterpret_cast(0x7995E8); - DWORD* cmd_id = reinterpret_cast(0x1AAC5D0); - DWORD* cmd_argc = reinterpret_cast(0x1AAC614); - char*** cmd_argv = reinterpret_cast(0x1AAC634); - - DWORD* cmd_id_sv = reinterpret_cast(0x1ACF8A0); - DWORD* cmd_argc_sv = reinterpret_cast(0x1ACF8E4); - char*** cmd_argv_sv = reinterpret_cast(0x1ACF904); + CmdArgs* cmd_args = reinterpret_cast(0x1AAC5D0); + CmdArgs* sv_cmd_args = reinterpret_cast(0x1ACF8A0); cmd_function_t** cmd_functions = reinterpret_cast(0x1AAC658); diff --git a/src/Game/Functions.hpp b/src/Game/Functions.hpp index 3940ba99..47635d49 100644 --- a/src/Game/Functions.hpp +++ b/src/Game/Functions.hpp @@ -921,13 +921,9 @@ namespace Game extern XAssetHeader* DB_XAssetPool; extern unsigned int* g_poolSize; - extern DWORD* cmd_id; - extern DWORD* cmd_argc; - extern char*** cmd_argv; - - extern DWORD* cmd_id_sv; - extern DWORD* cmd_argc_sv; - extern char*** cmd_argv_sv; + constexpr auto CMD_MAX_NESTING = 8; + extern CmdArgs* cmd_args; + extern CmdArgs* sv_cmd_args; extern cmd_function_t** cmd_functions; diff --git a/src/Game/Structs.hpp b/src/Game/Structs.hpp index 1f8d712d..2ce48006 100644 --- a/src/Game/Structs.hpp +++ b/src/Game/Structs.hpp @@ -170,8 +170,8 @@ namespace Game typedef enum { CS_FREE = 0x0, - CS_UNKNOWN1 = 0x1, - CS_UNKNOWN2 = 0x2, + CS_ZOMBIE = 0x1, + CS_RECONNECTING = 0x2, CS_CONNECTED = 0x3, CS_CLIENTLOADING = 0x4, CS_ACTIVE = 0x5, @@ -244,6 +244,17 @@ namespace Game struct MenuEventHandlerSet; struct menuDef_t; + struct CmdArgs + { + int nesting; + int localClientNum[8]; + int controllerIndex[8]; + int argc[8]; + const char** argv[8]; + }; + + static_assert(sizeof(CmdArgs) == 132); + typedef struct cmd_function_s { cmd_function_s *next; From 045640d460fc031d4478dd51821b224d81e4c3c6 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Sat, 19 Mar 2022 16:38:07 +0000 Subject: [PATCH 16/21] Fix bug --- src/Components/Modules/Command.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Components/Modules/Command.cpp b/src/Components/Modules/Command.cpp index 071be212..173ea297 100644 --- a/src/Components/Modules/Command.cpp +++ b/src/Components/Modules/Command.cpp @@ -63,14 +63,13 @@ namespace Components void Command::Add(const char* name, Utils::Slot callback) { const auto command = Utils::String::ToLower(name); - const auto got = Command::FunctionMap.find(command); - if (got == Command::FunctionMap.end()) + if (Command::FunctionMap.find(command) == Command::FunctionMap.end()) { Command::AddRaw(name, Command::MainCallback); } - got->second = std::move(callback); + Command::FunctionMap[command] = std::move(callback); } void Command::AddSV(const char* name, Utils::Slot callback) @@ -87,9 +86,8 @@ namespace Components } const auto command = Utils::String::ToLower(name); - const auto got = Command::FunctionMapSV.find(command); - if (got == Command::FunctionMapSV.end()) + if (Command::FunctionMapSV.find(command) == Command::FunctionMapSV.end()) { Command::AddRawSV(name, Command::MainCallbackSV); @@ -97,7 +95,7 @@ namespace Components Command::AddRaw(name, Game::Cbuf_AddServerText); } - got->second = std::move(callback); + FunctionMapSV[command] = std::move(callback); } void Command::AddRaw(const char* name, void(*callback)(), bool key) From 5e55ba3d1dcebfde4afc738d8f9a20e69b1836d2 Mon Sep 17 00:00:00 2001 From: FutureRave Date: Sun, 20 Mar 2022 09:05:45 +0000 Subject: [PATCH 17/21] Refactor quickpatch --- src/Components/Modules/QuickPatch.cpp | 6 ++++-- src/Utils/Library.cpp | 12 +++--------- src/Utils/Library.hpp | 8 ++++---- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/Components/Modules/QuickPatch.cpp b/src/Components/Modules/QuickPatch.cpp index 30543a79..35294f96 100644 --- a/src/Components/Modules/QuickPatch.cpp +++ b/src/Components/Modules/QuickPatch.cpp @@ -356,8 +356,8 @@ namespace Components QuickPatch::QuickPatch() { - // quit_hard - Command::Add("quit_hard", [](Command::Params*) + // quitHard + Command::Add("quitHard", [](Command::Params*) { int data = false; const Utils::Library ntdll("ntdll.dll"); @@ -841,6 +841,7 @@ namespace Components } }); +#ifdef DEBUG AssetHandler::OnLoad([](Game::XAssetType type, Game::XAssetHeader asset, const std::string& /*name*/, bool* /*restrict*/) { if (type == Game::XAssetType::ASSET_TYPE_GFXWORLD) @@ -855,6 +856,7 @@ namespace Components Utils::IO::WriteFile("userraw/logs/matlog.txt", buffer); } }); +#endif // Dvars Dvar::Register("ui_streamFriendly", false, Game::DVAR_FLAG_SAVED, "Stream friendly UI"); diff --git a/src/Utils/Library.cpp b/src/Utils/Library.cpp index 0cf9ab67..1b10bf40 100644 --- a/src/Utils/Library.cpp +++ b/src/Utils/Library.cpp @@ -19,15 +19,9 @@ namespace Utils return Library(handle); } - Library::Library(const std::string& buffer, bool _freeOnDestroy) : _module(nullptr), freeOnDestroy(_freeOnDestroy) + Library::Library(const std::string& name, bool _freeOnDestroy) : _module(nullptr), freeOnDestroy(_freeOnDestroy) { - this->_module = LoadLibraryExA(buffer.data(), nullptr, 0); - } - - Library::Library(const std::string& buffer) - { - this->_module = GetModuleHandleA(buffer.data()); - this->freeOnDestroy = true; + this->_module = LoadLibraryExA(name.data(), nullptr, 0); } Library::Library(const HMODULE handle) @@ -49,7 +43,7 @@ namespace Utils return this->_module != nullptr; } - HMODULE Library::getModule() + HMODULE Library::getModule() const { return this->_module; } diff --git a/src/Utils/Library.hpp b/src/Utils/Library.hpp index 2262987d..a736b987 100644 --- a/src/Utils/Library.hpp +++ b/src/Utils/Library.hpp @@ -9,14 +9,14 @@ namespace Utils static Library Load(const std::filesystem::path& path); static Library GetByAddress(void* address); - Library() : _module(nullptr), freeOnDestroy(false) {}; - Library(const std::string& buffer, bool freeOnDestroy); - explicit Library(const std::string& name); + Library() : _module(GetModuleHandleA(nullptr)), freeOnDestroy(false) {}; + explicit Library(const std::string& name, bool freeOnDestroy); + explicit Library(const std::string& name) : _module(GetModuleHandleA(name.data())), freeOnDestroy(true) {}; explicit Library(HMODULE handle); ~Library(); bool isValid() const; - HMODULE getModule(); + HMODULE getModule() const; template T getProc(const std::string& process) const From 21de40c48a29cbc5754824203f8f2263394dd2ce Mon Sep 17 00:00:00 2001 From: FutureRave Date: Sun, 20 Mar 2022 11:20:53 +0000 Subject: [PATCH 18/21] Remove redundant clears --- src/Components/Modules/CardTitles.cpp | 5 ----- src/Components/Modules/Clantags.cpp | 5 ----- 2 files changed, 10 deletions(-) diff --git a/src/Components/Modules/CardTitles.cpp b/src/Components/Modules/CardTitles.cpp index 5afb8a8b..51477a54 100644 --- a/src/Components/Modules/CardTitles.cpp +++ b/src/Components/Modules/CardTitles.cpp @@ -210,11 +210,6 @@ namespace Components }); - for (int i = 0; i < ARRAYSIZE(CardTitles::CustomTitles); ++i) - { - CardTitles::CustomTitles[i].clear(); - } - Utils::Hook(0x62EB26, CardTitles::GetPlayerCardClientInfoStub).install()->quick(); // Table lookup stuff diff --git a/src/Components/Modules/Clantags.cpp b/src/Components/Modules/Clantags.cpp index e2d03cf6..51e25cd7 100644 --- a/src/Components/Modules/Clantags.cpp +++ b/src/Components/Modules/Clantags.cpp @@ -93,11 +93,6 @@ namespace Components return false; }); - for (int i = 0; i < ARRAYSIZE(ClanTags::Tags); ++i) - { - ClanTags::Tags[i].clear(); - } - // Draw clantag before playername Utils::Hook(0x591242, ClanTags::DrawPlayerNameOnScoreboard).install()->quick(); } From 0a7890a1b72d5ab8cd1e3b6612ea1d88cc165415 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 17:22:25 +0000 Subject: [PATCH 19/21] Bump deps/libtommath from `66de864` to `5108f12` Bumps [deps/libtommath](https://github.com/libtom/libtommath) from `66de864` to `5108f12`. - [Release notes](https://github.com/libtom/libtommath/releases) - [Commits](https://github.com/libtom/libtommath/compare/66de86426e9cdb88526974c765108f01554af2b0...5108f12350b6daa4aa5dbc846517ad1db2f8388a) --- updated-dependencies: - dependency-name: deps/libtommath dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/libtommath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/libtommath b/deps/libtommath index 66de8642..5108f123 160000 --- a/deps/libtommath +++ b/deps/libtommath @@ -1 +1 @@ -Subproject commit 66de86426e9cdb88526974c765108f01554af2b0 +Subproject commit 5108f12350b6daa4aa5dbc846517ad1db2f8388a From 71b49e3201093e786b4570128658a2d8fab611e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 31 Mar 2022 17:21:26 +0000 Subject: [PATCH 20/21] Bump deps/zlib from `2014a99` to `ec3df00` Bumps [deps/zlib](https://github.com/madler/zlib) from `2014a99` to `ec3df00`. - [Release notes](https://github.com/madler/zlib/releases) - [Commits](https://github.com/madler/zlib/compare/2014a993addbc8f1b9785d97f55fd189792c2f78...ec3df00224d4b396e2ac6586ab5d25f673caa4c2) --- updated-dependencies: - dependency-name: deps/zlib dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/zlib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/zlib b/deps/zlib index 2014a993..ec3df002 160000 --- a/deps/zlib +++ b/deps/zlib @@ -1 +1 @@ -Subproject commit 2014a993addbc8f1b9785d97f55fd189792c2f78 +Subproject commit ec3df00224d4b396e2ac6586ab5d25f673caa4c2 From 7e8d14120dfe18faaccddb9d4d0e5a59f4dc5713 Mon Sep 17 00:00:00 2001 From: Diavolo Date: Tue, 5 Apr 2022 11:50:13 +0200 Subject: [PATCH 21/21] Fix Wine --- src/Components/Modules/Flags.cpp | 22 +++++++++++----------- src/Utils/Utils.cpp | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Components/Modules/Flags.cpp b/src/Components/Modules/Flags.cpp index e3139910..761c9e10 100644 --- a/src/Components/Modules/Flags.cpp +++ b/src/Components/Modules/Flags.cpp @@ -6,13 +6,7 @@ namespace Components bool Flags::HasFlag(const std::string& flag) { - static auto parsed = false; - - if (!parsed) - { - Flags::ParseFlags(); - parsed = true; - } + Flags::ParseFlags(); for (const auto& entry : Flags::EnabledFlags) { @@ -27,11 +21,17 @@ namespace Components void Flags::ParseFlags() { + static auto flagsParsed = false; + if (flagsParsed) + { + return; + } + + // Only parse flags once + flagsParsed = true; int numArgs; auto* const argv = CommandLineToArgvW(GetCommandLineW(), &numArgs); - assert(Flags::EnabledFlags.empty()); - if (argv) { for (auto i = 0; i < numArgs; ++i) @@ -40,7 +40,7 @@ namespace Components if (wFlag[0] == L'-') { wFlag.erase(wFlag.begin()); - Flags::EnabledFlags.push_back(Utils::String::Convert(wFlag)); + Flags::EnabledFlags.emplace_back(Utils::String::Convert(wFlag)); } } @@ -50,7 +50,7 @@ namespace Components // Workaround for wine if (Utils::IsWineEnvironment() && Dedicated::IsEnabled() && !Flags::HasFlag("console") && !Flags::HasFlag("stdout")) { - Flags::EnabledFlags.push_back("stdout"); + Flags::EnabledFlags.emplace_back("stdout"); } } diff --git a/src/Utils/Utils.cpp b/src/Utils/Utils.cpp index dd84caca..e17480bf 100644 --- a/src/Utils/Utils.cpp +++ b/src/Utils/Utils.cpp @@ -107,9 +107,9 @@ namespace Utils void SetEnvironment() { wchar_t exeName[512]; - GetModuleFileNameW(GetModuleHandle(nullptr), exeName, sizeof(exeName) / 2); + GetModuleFileNameW(GetModuleHandle(nullptr), exeName, sizeof(exeName) / sizeof(wchar_t)); - wchar_t* exeBaseName = wcsrchr(exeName, L'\\'); + auto* exeBaseName = wcsrchr(exeName, L'\\'); exeBaseName[0] = L'\0'; SetCurrentDirectoryW(exeName);