void FixEditorFont(void) { // try something nice, otherwise fall back on SYSTEM_FIXED_FONT fontHandle = CreateFontIndirect(&kLucidaConsole9); if(fontHandle) { fontInfo = kLucidaConsole9; } else { fontHandle = GetStockObject(SYSTEM_FIXED_FONT); GetObject(fontHandle, sizeof(fontInfo), &fontInfo); } UInt32 basePatchAddr = 0x005C4331; // Right after call d:CreateWindowA after aRichedit20a WriteRelCall(basePatchAddr, pModScriptWindow); //SafeWrite8(basePatchAddr + 6, 0x90); }
void Hooks_SaveLoad_Commit(void) { // Load & save WriteRelCall(0x006814D0 + 0x01E2, GetFnAddr(&BGSSaveLoadManager::SaveGame_Hook)); WriteRelCall(0x006821C0 + 0x00B5, GetFnAddr(&BGSSaveLoadManager::LoadGame_Hook)); WriteRelCall(0x0069CBD0 + 0x0064, GetFnAddr(&BGSSaveLoadManager::ProcessEvents_Hook)); // New Game WriteRelCall(0x00876710 + 0x57, GetFnAddr(&TESQuest::NewGame_Hook)); // Delete savegame WriteRelCall(0x00677600 + 0x10, (UInt32)DeleteSavegame_Hook); // DeleteGame WriteRelCall(0x00677890 + 0x73, (UInt32)DeleteSavegame_Hook); // SaveGame overwrite (= delete+new) }
void Hooks_Papyrus_Commit(void) { #ifdef PAPYRUS_CUSTOM_CLASS SafeWrite32(0x010EAA64, GetFnAddr(&IObjectHandlePolicy::Unk_02_Hook)); SafeWrite32(0x010EAA60, GetFnAddr(&IObjectHandlePolicy::IsType_Hook)); SafeWrite32(0x010EAA6C, GetFnAddr(&IObjectHandlePolicy::Create_Hook)); SafeWrite32(0x010EAA7C, GetFnAddr(&IObjectHandlePolicy::Resolve_Hook)); #endif WriteRelCall(0x008D7A40 + 0x098B, (UInt32)RegisterPapyrusFunctions_Hook); // GlobalData / event regs WriteRelCall(0x008D6550 + 0x002A, GetFnAddr(&SkyrimVM::OnFormDelete_Hook)); WriteRelCall(0x008D6990 + 0x0017, GetFnAddr(&SkyrimVM::RevertGlobalData_Hook)); // Normal game load WriteRelCall(0x008D6D00 + 0x0116, GetFnAddr(&SkyrimVM::RevertGlobalData_Hook)); // New script reload command WriteRelCall(0x008D3750 + 0x0101, GetFnAddr(&SkyrimVM::SaveGlobalData_Hook)); WriteRelCall(0x008D69C0 + 0x01B9, GetFnAddr(&SkyrimVM::LoadGlobalData_Hook)); // SafeWrite32(0x01149B98 + 4 * 3, GetFnAddr(&VMClassLoader::Load_Hook)); }
void Hooks_Threads_Commit(void) { WriteRelCall(0x006910F0 + 0x016, GetFnAddr(&BSTaskPool::ProcessTasks)); WriteRelCall(0x0069CBD0 + 0x578, GetFnAddr(&BSTaskPool::ProcessTasks)); }