eventqueue-fix/gamedata/eventfix.games.txt
2025-02-23 01:54:17 +00:00

145 lines
5.7 KiB
Plaintext

"Games"
{
"#default"
{
"Offsets"
{
"LINUX"
{
"linux" "1"
}
}
}
"csgo"
{
"Signatures"
{
"AddEvent"
{
"windows" "\x55\x8B\xEC\x83\xEC\x14\xFF\x75\x18"
"linux" "@_ZN11CEventQueue8AddEventEP11CBaseEntityPKcfS1_S1_i"
}
"AddEventTwo"
{
"windows" "\x55\x8B\xEC\x56\xE8\x2A\x2A\x2A\x2A\x8B\xF0\x85\xF6\x74\x2A\xC7\x46\x0C\xFF\xFF\xFF\xFF\xC7\x46\x10\xFF\xFF\xFF\xFF\xC7\x46\x18\xFF\xFF\xFF\xFF\xC7\x46\x1C\x00\x00\x00\x00\xC7\x46\x28\xFF\xFF\xFF\xFF\xC7\x46\x2C\x00\x00\x00\x00\xEB\x2A\x33\xF6\xA1\x2A\x2A\x2A\x2A\x8B\x4D\x08"
"linux" "@_ZN11CEventQueue8AddEventEP11CBaseEntityPKc9variant_tfS1_S1_i"
}
// Search "Usage:\n ent_fire <target> [action] [value] [delay]" to find `ent_fire`'s command handler.
// The last function call in this function is `AddEvent`
"AddEventThree"
{
"windows" "\x55\x8B\xEC\x56\xE8\x2A\x2A\x2A\x2A\x8B\xF0\x85\xF6\x74\x2A\xC7\x46\x0C\xFF\xFF\xFF\xFF\xC7\x46\x10\xFF\xFF\xFF\xFF\xC7\x46\x18\xFF\xFF\xFF\xFF\xC7\x46\x1C\x00\x00\x00\x00\xC7\x46\x28\xFF\xFF\xFF\xFF\xC7\x46\x2C\x00\x00\x00\x00\xEB\x2A\x33\xF6\xA1\x2A\x2A\x2A\x2A\xF3\x0F\x10\x40\x10"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x24\x8B\x5D\x2A\x6A\x38"
}
// Search "unhandled input: (%s) -> (%s,%s)"
"AcceptInput"
{
"windows" "\x55\x8B\xEC\x83\xE4\xF8\x81\xEC\x58\x02\x00\x00\xA1\x2A\x2A\x2A\x2A"
"linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x6C\x01\x00\x00\x8B\x45\x2A\x89\x85"
}
// Search "NULL entity in global entity list!" and look for the function that compares to the char '!' at the top.
"FindEntityByName"
{
"windows" "\x55\x8B\xEC\x53\x8B\x5D\x0C\x85\xDB\x74\x2A"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x1C\x8B\x55\x2A\x8B\x5D\x2A\x8B\x7D"
}
// Search "SUB_Remove" to find `SUB_Remove`. Then grind through references to find this stupid function...
"ActivateMultiTrigger"
{
"windows" "\x55\x8B\xEC\x83\xEC\x14\x53\x56\x8B\xF1\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x86\x2A\x2A\x2A\x2A\x57\x8D\xBE\x2A\x2A\x2A\x2A\x83\xF8\xFF"
"linux" "\x55\x89\xE5\x56\x53\x83\xEC\x18\x8B\x5D\x2A\x6A\x00\x8B\x75\x2A\x53\xE8\x2A\x2A\x2A\x2A\xA1"
}
}
"Offsets"
{
"m_angRotation"
{
"class" "CBaseEntity"
"prop" "m_angRotation"
}
"m_RefEHandle"
{
"windows" "12"
"linux" "12"
}
"FindEntityByName_StaticCall"
{
"windows" "1"
}
}
}
"cstrike"
{
"Signatures"
{
// search for "ent_fire <target> [action]" to find the ent_fire command callback.
// the last function call should be the AddEvent function we're looking for...
// TODO: Might need g_EventQueue passed on windows64, linux64, and linux (or at least a dummy value)
"AddEventThree"
{
"windows" "\x55\x8B\xEC\x56\x57\x8B\xF9\xB9\x2A\x2A\x2A\x2A\x6A\x38\xE8\x2A\x2A\x2A\x2A\x8B\xF0\x85\xF6\x74\x2A\xC7\x46\x2A\xFF\xFF\xFF\xFF\xC7\x46\x2A\xFF\xFF\xFF\xFF\xC7\x46\x2A\xFF\xFF\xFF\xFF\xC7\x46\x2A\x00\x00\x00\x00\xC7\x46\x2A\xFF\xFF\xFF\xFF\xC7\x46\x2A\x00\x00\x00\x00\xEB\x2A\x33\xF6\xA1\x2A\x2A\x2A\x2A\xF3\x0F\x10\x45\x2A\xF3\x0F\x58\x40"
"windows64" "\x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x57\x41\x56\x41\x57\x48\x83\xEC\x20\x48\x8B\xFA\x48\x8B\xE9"
"linux" "@_ZN11CEventQueue8AddEventEPKcS1_9variant_tfP11CBaseEntityS4_i"
"linux64" "@_ZN11CEventQueue8AddEventEPKcS1_9variant_tfP11CBaseEntityS4_i"
}
// search for "Can't find landmark %s" to find CChangeLevel::FindLandmark and the first function call inside is the `FindEntityByName` we're looking for...
// TODO: Might need gEntList to be passed
"FindEntityByName"
{
"windows" "\x55\x8B\xEC\x53\x8B\x5D\x2A\x56\x8B\xF1\x57\x85\xDB\x0F\x84"
"windows64" "\x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x41\x56\x48\x83\xEC\x30\x4D\x8B\xD1"
"linux" "@_ZN17CGlobalEntityList16FindEntityByNameEP11CBaseEntityPKcS1_S1_S1_P17IEntityFindFilter"
"linux64" "@_ZN17CGlobalEntityList16FindEntityByNameEP11CBaseEntityPKcS1_S1_S1_P17IEntityFindFilter"
}
// search for the float 0.2f in memory and find somewhere that uses it and looks like this:
// void CTriggerMultiple::Spawn(longlong param_1)
// {
// FUN_1802b1170();
// FUN_1802b6d20(param_1);
// *(code **)(param_1 + 0x130) = CTriggerMultiple::MultiTouch_with_inlined_ActivateMultiTrigger; // <---- might be ::MultiTouch, might be MultiTouch_with_inlined_ActivateMultiTrigger (on Windows64).
// if (*(float *)(param_1 + 0x488) == 0.0) {
// *(undefined4 *)(param_1 + 0x488) = 0x3e4ccccd;
// }
// return;
// }
// or like this on windows32
// void __fastcall CTriggerMultiple::Spawn(int param_1)
// {
// FUN_1024a100();
// FUN_1024f190();
// *(code **)(param_1 + 200) = CTriggerMultiple::MultiTouch_with_inlined_ActivateMultiTrigger;
// if (NAN(*(float *)(param_1 + 0x37c)) != (*(float *)(param_1 + 0x37c) == 0.0)) {
// *(undefined4 *)(param_1 + 0x37c) = 0x3e4ccccd;
// }
// return;
// }
"ActivateMultiTrigger"
{
"windows" "\x55\x8B\xEC\x56\x8B\xF1\x57\x8B\x7D\x2A\x57\x8B\x06\x8B\x80\x2A\x2A\x2A\x2A\xFF\xD0\x84\xC0\x0F\x84\x2A\x2A\x2A\x2A\x6A\x00"
"windows64" "\x48\x89\x5C\x24\x2A\x57\x48\x83\xEC\x30\x48\x8B\x01\x48\x8B\xFA\x48\x8B\xD9\xFF\x90\x2A\x2A\x2A\x2A\x84\xC0\x0F\x84\x2A\x2A\x2A\x2A\x33\xD2"
"linux" "@_ZN16CTriggerMultiple20ActivateMultiTriggerEP11CBaseEntity"
"linux64" "@_ZN16CTriggerMultiple20ActivateMultiTriggerEP11CBaseEntity"
}
}
"Offsets"
{
"m_angRotation"
{
"class" "CBaseEntity"
"prop" "m_angRotation"
}
"m_RefEHandle"
{
"windows" "12"
"windows64" "12"
"linux" "12"
"linux64" "12"
}
}
}
}