aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/modmanager.cpp
diff options
context:
space:
mode:
authorKittenPopo <Pokeberry123@gmail.com>2022-03-26 16:20:09 -0700
committerGitHub <noreply@github.com>2022-03-26 23:20:09 +0000
commit379cbc8bc251307777a14b901e5617e834398485 (patch)
tree4722db4a3c301462ca009f5bb2976508b652677e /NorthstarDedicatedTest/modmanager.cpp
parent2c74033440212308eb0fe0d8b3135ffc5cd0422e (diff)
downloadNorthstarLauncher-379cbc8bc251307777a14b901e5617e834398485.tar.gz
NorthstarLauncher-379cbc8bc251307777a14b901e5617e834398485.zip
Major exploit fixes and some minor bug fixes/improvements (#117)v1.6.0-rc3
* Added main exploit fixes * Fixed typo in sigscanning.cpp * Fully implemented * Added proper includes for new files * Update README.md * typo * spare me my sanity (fixed ridiculous code) * Added rest of KittenMemUtils * Rename KittenMemUtils * Removed all messy memory edits, implemented NSMem instead * Update NorthstarDedicatedTest.vcxproj * [1] Move everything from securitypatches to ExploitFixes * [2] Move everything from securitypatches to ExploitFixes * Fixed module offsets in stack trace * Fixed UTF8 Parsing (Multiplayer Crash) * Implemented UT8 fix * Update NorthstarDedicatedTest.vcxproj * Update hookutils.cpp * Small fixes * all my homies hate clang-format * Temporarily restore README.md * Added string hash macro * Added convenient vtfunc macro * Made lil ConCommand creation macro * Fixed multiple NET_SetConVar exploits * Quick fixerino * Fix convar struct (and other things) * Revive clang-format (but good, i think) * Update .clang-format * Reformatted code to meet .clang-format requirements * Minor formatting fixes * Fixed Northstar "crashing" when console is closed * Update .clang-format
Diffstat (limited to 'NorthstarDedicatedTest/modmanager.cpp')
-rw-r--r--NorthstarDedicatedTest/modmanager.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/NorthstarDedicatedTest/modmanager.cpp b/NorthstarDedicatedTest/modmanager.cpp
index 79529c99..99bb5fdb 100644
--- a/NorthstarDedicatedTest/modmanager.cpp
+++ b/NorthstarDedicatedTest/modmanager.cpp
@@ -191,9 +191,10 @@ ModManager::ModManager()
{
// precaculated string hashes
// note: use backslashes for these, since we use lexically_normal for file paths which uses them
- m_hScriptsRsonHash = std::hash<std::string>{}("scripts\\vscripts\\scripts.rson");
- m_hPdefHash = std::hash<std::string>{}(
- "cfg\\server\\persistent_player_data_version_231.pdef"); // this can have multiple versions, but we use 231 so that's what we hash
+ m_hScriptsRsonHash = STR_HASH("scripts\\vscripts\\scripts.rson");
+ m_hPdefHash = STR_HASH(
+ "cfg\\server\\persistent_player_data_version_231.pdef" // this can have multiple versions, but we use 231 so that's what we hash
+ );
LoadMods();
}
@@ -282,9 +283,7 @@ void ModManager::LoadMods()
// preexisting convars note: we don't delete convars if they already exist because they're used for script stuff, unfortunately this
// causes us to leak memory on reload, but not much, potentially find a way to not do this at some point
for (ModConVar* convar : mod.ConVars)
- if (g_CustomConvars.find(convar->Name) ==
- g_CustomConvars.end()) // make sure convar isn't registered yet, unsure if necessary but idk what behaviour is for defining
- // same convar multiple times
+ if (!g_pCVar->FindVar(convar->Name.c_str())) // make sure convar isn't registered yet, unsure if necessary but idk what behaviour is for defining same convar multiple times
new ConVar(convar->Name.c_str(), convar->DefaultValue.c_str(), convar->Flags, convar->HelpString.c_str());
// read vpk paths
@@ -396,7 +395,7 @@ void ModManager::LoadMods()
if (fs::is_regular_file(file))
{
std::string kvStr = file.path().lexically_relative(mod.ModDirectory / "keyvalues").lexically_normal().string();
- mod.KeyValues.emplace(std::hash<std::string>{}(kvStr), kvStr);
+ mod.KeyValues.emplace(STR_HASH(kvStr), kvStr);
}
}
}
@@ -537,7 +536,7 @@ void ModManager::UnloadMods()
void ModManager::CompileAssetsForFile(const char* filename)
{
- size_t fileHash = std::hash<std::string>{}(fs::path(filename).lexically_normal().string());
+ size_t fileHash = STR_HASH(fs::path(filename).lexically_normal().string());
if (fileHash == m_hScriptsRsonHash)
BuildScriptsRson();