"Games" { "tf" { "MemPatches" { "CTFPlayer::TFPlayerThink_Patch" { "signature" "CTFPlayer::TFPlayerThink_Patch" "patch" "\x85\xF6\x90\x90\x90\x90\x90" // Same across os's } } "Functions" { "CTFLaserPointer::DestroyLaserDot" { "signature" "CTFLaserPointer::DestroyLaserDot" "callconv" "thiscall" "return" "void" "this" "entity" } "CTFLaserPointer::UpdateLaserDot" { "signature" "CTFLaserPointer::UpdateLaserDot" "callconv" "thiscall" "return" "void" "this" "entity" } "CTFPlayer::TFPlayerThink" { "signature" "CTFPlayer::TFPlayerThink" "callconv" "thiscall" "return" "void" "this" "entity" } "CTFPlayer::RemoveAllObjects" { "signature" "CTFPlayer::RemoveAllObjects" "callconv" "thiscall" "return" "void" "this" "entity" "arguments" { "explode" { "type" "bool" } } } "CObjectTeleporter::FindMatch" { "signature" "CObjectTeleporter::FindMatch" "callconv" "thiscall" "return" "cbaseentity" "this" "entity" } "CTFPlayer::FinishedObject" { "signature" "CTFPlayer::FinishedObject" "callconv" "thiscall" "return" "void" "this" "entity" "arguments" { "object" { "type" "cbaseentity" } } } "CTFPlayer::RemoveObject" { "signature" "CTFPlayer::RemoveObject" "callconv" "thiscall" "return" "void" "this" "entity" "arguments" { "object" { "type" "cbaseentity" } } } "CTFPlayer::BuildObservableEntityList" { "signature" "CTFPlayer::BuildObservableEntityList" "callconv" "thiscall" "return" "void" "this" "entity" } "CTFPlayer::TryToPickupBuilding" { "signature" "CTFPlayer::TryToPickupBuilding" "callconv" "thiscall" "return" "bool" "this" "entity" } "CTFPlayer::GetObject" { "signature" "CTFPlayer::GetObject" "callconv" "thiscall" "return" "cbaseentity" "this" "entity" "arguments" { "index" { "type" "int" } } } "CTFPlayer::GetObjectCount" { "signature" "CTFPlayer::GetObjectCount" "callconv" "thiscall" "return" "int" "this" "entity" } } "Addresses" { "CTFGameStats" { "signature" "CTFPlayer::FinishedObject" "linux" { "read" "38" } "windows" { "read" "19" } } } "Signatures" { "CSniperDot::Update" { "library" "server" "windows" "\x55\x8B\xEC\x56\xFF\x75\x0C\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x8B\x45\x10" "linux" "@_ZN10CSniperDot6UpdateEP11CBaseEntityRK6VectorS4_" } "CBaseEntity::CalcAbsolutePosition" { "library" "server" "windows" "\x55\x8B\xEC\x81\xEC\x80\x00\x00\x00\x56\x8B\xF1\x8B\x86\x2A\x01\x00\x00" "linux" "@_ZN11CBaseEntity20CalcAbsolutePositionEv" } "CCollisionProperty::SetSolid" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x18\x53\x56\x8B\xF1\x8A\x4E\x41" "linux" "@_ZN18CCollisionProperty8SetSolidE11SolidType_t" } "CTFLaserPointer::DestroyLaserDot" { "library" "server" "windows" "\x56\x57\x8B\xF9\xE8\x2A\x2A\x2A\x2A\x8B\xF0\x85\xF6\x74\x2A\x8B\x16\x8B\xCE\x8B\x92\x48\x01\x00\x00\xFF\xD2\x84\xC0\x74\x2A\x6A\x00\x68\x2A\x2A\x2A\x2A" "linux" "@_ZN15CTFLaserPointer15DestroyLaserDotEv" } "CTFLaserPointer::UpdateLaserDot" { "library" "server" "windows" "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\xF0\x83\xC4\x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\x81\xEC\xF8\x00\x00\x00\x56\x8B\xC1" "linux" "@_ZN15CTFLaserPointer14UpdateLaserDotEv" } "CTFPlayer::TFPlayerThink" { "library" "server" "windows" "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\xF0\x83\xC4\x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\x81\xEC\x78\x01\x00\x00\x56\x57\x8B\xF9\x89\x7D\xEC" "linux" "@_ZN9CTFPlayer13TFPlayerThinkEv" } "CTFPlayer::RemoveAllObjects" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x08\x8B\xC1\x56\x89\x45\xF8" "linux" "@_ZN9CTFPlayer16RemoveAllObjectsEb" } "CObjectTeleporter::FindMatch" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x0C\x53\x8B\xD9\x56\x8B\x03" "linux" "@_ZN17CObjectTeleporter9FindMatchEv" } // CTFPlayer::AddObject is inlined on Windows, sad "CTFPlayer::FinishedObject" { "library" "server" "windows" "\x55\x8B\xEC\x56\x57\x8B\x7D\x08\x8B\xF1\x57\xE8\x2A\x2A\x2A\x2A\x57" "linux" "@_ZN9CTFPlayer14FinishedObjectEP11CBaseObject" } "CTFPlayer::RemoveObject" { "library" "server" "windows" "\x55\x8B\xEC\x56\x8B\xF1\x57\x8B\xBE\x2A\x23\x00\x00" "linux" "@_ZN9CTFPlayer12RemoveObjectEP11CBaseObject" } "CTFPlayer::BuildObservableEntityList" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x14\x53\x56\x8B\xF1\x57\x8D\xBE\x2A\x2A\x00\x00" "linux" "@_ZN9CTFPlayer25BuildObservableEntityListEv" } "CTFPlayer::TFPlayerThink_Patch" { "library" "server" "windows" "\x80\xBF\x2A\x2A\x2A\x2A\x00\x0F\x85\x2A\x2A\x2A\x2A\x8D\x87\x2A\x2A\x2A\x2A" "linux" "\x80\xBE\x2A\x2A\x2A\x2A\x00\x75\x2A\x83\xBE\x2A\x2A\x2A\x2A\x09" } "CTFGameStats::Event_PlayerCreatedBuilding" { "library" "server" "windows" "\x55\x8B\xEC\x57\x6A\x00\x68\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\x6A\x00\xFF\x75\x0C\x8B\xF9\xE8\x2A\x2A\x2A\x2A\x83\xC4\x14\x85\xC0\x75\x2A\x6A\x01\x6A\x13" "linux" "@_ZN12CTFGameStats27Event_PlayerCreatedBuildingEP9CTFPlayerP11CBaseObject" } "CTFPlayer::TryToPickupBuilding" { "library" "server" "windows" "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\xF0\x83\xC4\x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\x81\xEC\x2A\x2A\x00\x00\x56\x57\x8B\xF9\x80\xBF\x2A\x2A\x00\x00\x00\x0F\x85\x2A\x2A\x2A\x2A\x6A\x07" "linux" "@_ZN9CTFPlayer19TryToPickupBuildingEv" } // Not a good Windows sig, will probs break in the future "CTFPlayer::GetObject" { "library" "server" "windows" "\x55\x8B\xEC\x8B\x89\x38\x23\x00\x00" "linux" "@_ZNK9CTFPlayer9GetObjectEi" } // Also not a good Windows sig, how does this not get inlined lmao "CTFPlayer::GetObjectCount" { "library" "server" "windows" "\x8B\x81\x44\x23\x00\x00" "linux" "@_ZNK9CTFPlayer14GetObjectCountEv" } } "Offsets" { "CTFLaserPointer::CanAttack" { "windows" "425" "linux" "432" } "CTFWeaponBase::SendWeaponAnim" { "windows" "249" "linux" "255" } "CTFLaserPointer::PrimaryAttack" { "windows" "286" "linux" "292" } "CTFLaserPointer::SecondaryAttack" { "windows" "287" "linux" "293" } } } }