From ab5db7fde23ef6cd87fa8a7e07973179a80e02d4 Mon Sep 17 00:00:00 2001 From: BobTheBob <32057864+BobTheBob9@users.noreply.github.com> Date: Sat, 12 Nov 2022 14:16:38 +0000 Subject: allow vmts do be loaded from disk (#292) --- NorthstarDLL/NorthstarDLL.vcxproj | 1 + NorthstarDLL/NorthstarDLL.vcxproj.filters | 3 +++ NorthstarDLL/diskvmtfixes.cpp | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 NorthstarDLL/diskvmtfixes.cpp (limited to 'NorthstarDLL') diff --git a/NorthstarDLL/NorthstarDLL.vcxproj b/NorthstarDLL/NorthstarDLL.vcxproj index d39fd68b..90dced09 100644 --- a/NorthstarDLL/NorthstarDLL.vcxproj +++ b/NorthstarDLL/NorthstarDLL.vcxproj @@ -572,6 +572,7 @@ + diff --git a/NorthstarDLL/NorthstarDLL.vcxproj.filters b/NorthstarDLL/NorthstarDLL.vcxproj.filters index f5d5bd5d..8dfbe685 100644 --- a/NorthstarDLL/NorthstarDLL.vcxproj.filters +++ b/NorthstarDLL/NorthstarDLL.vcxproj.filters @@ -1697,6 +1697,9 @@ Source Files\Scripted + + Source Files\Client + Source Files diff --git a/NorthstarDLL/diskvmtfixes.cpp b/NorthstarDLL/diskvmtfixes.cpp new file mode 100644 index 00000000..f5f3e2cd --- /dev/null +++ b/NorthstarDLL/diskvmtfixes.cpp @@ -0,0 +1,16 @@ +#include "pch.h" + +ON_DLL_LOAD_CLIENT("materialsystem_dx11.dll", DiskVMTFixes, (CModule module)) +{ + // in retail VMTs will never load if cache read is invalid due to a special case for them in KeyValues::LoadFromFile + // this effectively makes it impossible to load them from mods because we invalidate cache for doing this + // so uhh, stop that from happening + + // tbh idk why they even changed any of this what's the point it looks like it works fine who cares my god + + // matsystem KeyValues::LoadFromFile: patch special case on cache read failure for vmts + module.Offset(0x1281B9).Patch("EB"); + + // CMaterialSystem::FindMaterial: don't call function that crashes if previous patch is applied + module.Offset(0x5F55A).NOP(5); +} -- cgit v1.2.3