Jump hook
This commit is contained in:
parent
ff50ecfddf
commit
ecf44c8580
@ -221,7 +221,7 @@ namespace Components
|
|||||||
|
|
||||||
|
|
||||||
// Patches team overhead normally
|
// Patches team overhead normally
|
||||||
signed int __cdecl Colors::Dvar_GetUnpackedColorByName(const char* name, float* color)
|
int Colors::Dvar_GetUnpackedColorByName(const char* name, float* color)
|
||||||
{
|
{
|
||||||
if (Colors::ColorBlind.get<bool>())
|
if (Colors::ColorBlind.get<bool>())
|
||||||
{
|
{
|
||||||
@ -244,18 +244,46 @@ namespace Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Utils::Hook::Call<signed int(const char*, float*)>(0x406530)(name, color);
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
__declspec(naked) void Colors::GetUnpackedColorByNameStub()
|
||||||
|
{
|
||||||
|
__asm
|
||||||
|
{
|
||||||
|
push eax
|
||||||
|
pushad
|
||||||
|
|
||||||
|
push [esp + 2Ch]
|
||||||
|
push [esp + 2Ch];
|
||||||
|
call Colors::Dvar_GetUnpackedColorByName
|
||||||
|
add esp, 8h
|
||||||
|
|
||||||
|
mov [esp + 20h], eax
|
||||||
|
|
||||||
|
popad
|
||||||
|
pop eax
|
||||||
|
|
||||||
|
test eax, eax
|
||||||
|
jnz continue
|
||||||
|
|
||||||
|
xor eax, eax
|
||||||
|
retn
|
||||||
|
|
||||||
|
continue:
|
||||||
|
push edi
|
||||||
|
mov edi, dword ptr[esp + 4h]
|
||||||
|
|
||||||
|
push 406535h
|
||||||
|
retn
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Colors::Colors()
|
Colors::Colors()
|
||||||
{
|
{
|
||||||
// Add a colorblind mode for team colors
|
// Add a colorblind mode for team colors
|
||||||
Colors::ColorBlind = Dvar::Register<bool>("r_colorBlindTeams", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Use color-blindness-friendly colors for ingame team names");
|
Colors::ColorBlind = Dvar::Register<bool>("r_colorBlindTeams", false, Game::dvar_flag::DVAR_FLAG_SAVED, "Use color-blindness-friendly colors for ingame team names");
|
||||||
Utils::Hook(0x4C09BE, Colors::Dvar_GetUnpackedColorByName, HOOK_CALL).install()->quick();
|
Utils::Hook(0x406530, Colors::GetUnpackedColorByNameStub, HOOK_JUMP).install()->quick();
|
||||||
Utils::Hook(0x583661, Colors::Dvar_GetUnpackedColorByName, HOOK_CALL).install()->quick();
|
|
||||||
Utils::Hook(0x5836A5, Colors::Dvar_GetUnpackedColorByName, HOOK_CALL).install()->quick();
|
|
||||||
Utils::Hook(0x4264FC, Colors::Dvar_GetUnpackedColorByName, HOOK_CALL).install()->quick();
|
|
||||||
Utils::Hook(0x4264E5, Colors::Dvar_GetUnpackedColorByName, HOOK_CALL).install()->quick();
|
|
||||||
|
|
||||||
// Disable SV_UpdateUserinfo_f, to block changing the name ingame
|
// Disable SV_UpdateUserinfo_f, to block changing the name ingame
|
||||||
Utils::Hook::Set<BYTE>(0x6258D0, 0xC3);
|
Utils::Hook::Set<BYTE>(0x6258D0, 0xC3);
|
||||||
|
@ -36,7 +36,8 @@ namespace Components
|
|||||||
static void LookupColor(DWORD* color, char index);
|
static void LookupColor(DWORD* color, char index);
|
||||||
static void LookupColorStub();
|
static void LookupColorStub();
|
||||||
static char* CleanStrStub(char* string);
|
static char* CleanStrStub(char* string);
|
||||||
static signed int Dvar_GetUnpackedColorByName(const char* name, float* color);
|
static int Dvar_GetUnpackedColorByName(const char* name, float* color);
|
||||||
|
static void GetUnpackedColorByNameStub();
|
||||||
static std::vector<DWORD> ColorTable;
|
static std::vector<DWORD> ColorTable;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user