bool CCarCtrlHack::initialise() { // reinit firetruck/ambulance timer (SilentPatch) InjectHook(0x004A489B, &CCarCtrlHack::ReInitHack); // CCarCtrl::MapCouldMoveInThisArea Patch<float>(0x00687028, -342.2f + OFFSETX); Patch<float>(0x0068702C, -219.2f + OFFSETX); return true; }
void envmaphooks(void) { InjectHook(0x536BCE, &CEntity::GetIsOnScreen); // CEntity::IsVisible InjectHook(0x5540AD, &CEntity::GetIsOnScreen); // CRenderer::SetupMapEntityVisibility InjectHook(0x554174, &CEntity::GetIsOnScreen); // CRenderer::SetupMapEntityVisibility InjectHook(0x5543C2, &CEntity::GetIsOnScreen); // CRenderer::SetupEntityVisibility InjectHook(0x554504, &CEntity::GetIsOnScreen); // CRenderer::SetupEntityVisibility InjectHook(0x55495E, &CEntity::GetIsOnScreen); // CRenderer::ScanSectorList InjectHook(0x409870, &CEntity::GetIsOnScreen); // CStreaming::DeleteLeastUsedEntityRwObject // InjectHook(0x71FAE0, &CEntity::IsEntityOccluded, PATCH_JUMP); // InjectHook(0x420C40, madness, PATCH_JUMP); InterceptCall(&CRenderer__ConstructRenderList, RenderSphereReflections, 0x53E9F9); }
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: InjectHook(); break; case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
bool CBridgeHack::initialise() { ReadCall(0x004A4EF6, CallInit); InjectHook(0x004A4EF6, &CBridgeHack::Init); // CGame::Initialise ReadCall(0x004A4620, CallUpdate); InjectHook(0x004A4620, &CBridgeHack::Update); // CGame::Process InjectHook(0x004BD7A1, &CBridgeHack::ThisIsABridgeObjectMovingUp); // CPlayerInfo::Process InjectHook(0x005418CD, &CBridgeHack::ShouldLightsBeFlashing); // CEntity::ProcessLightsForEntity InjectHook(0x005418E4, &CBridgeHack::ShouldLightsBeFlashing); // CEntity::ProcessLightsForEntity // workaround for vehicles to stop at lift bridge InjectHook(0x00463F80, &ShouldCarStopForBridge, PATCH_JUMP); return true; }