2023-11-01 21:24:45 +08:00
|
|
|
|
|
|
|
#include "../main.h"
|
|
|
|
|
2023-11-23 23:41:28 +08:00
|
|
|
extern int iGtaVersion;
|
|
|
|
|
|
|
|
extern DWORD dwGraphicsLoop; // Used for the external dll game loop.
|
|
|
|
|
|
|
|
#define NUDE void _declspec(naked)
|
|
|
|
|
2023-11-01 21:24:45 +08:00
|
|
|
BYTE *pbyteCameraMode = (BYTE *)0xB6F1A8;
|
2024-05-02 21:47:10 +08:00
|
|
|
BYTE *pbyteCurrentPlayer = (BYTE *)0xB7CD74;
|
2023-11-01 21:24:45 +08:00
|
|
|
|
2024-02-27 23:37:45 +08:00
|
|
|
float fFarClip=1400.0f;
|
|
|
|
|
2023-11-23 23:41:28 +08:00
|
|
|
DWORD unnamed_101516D4;
|
|
|
|
|
2023-11-08 20:10:20 +08:00
|
|
|
WORD wLastRendObj=0;
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
BYTE Unk1_JmpCode[] = {0xFF,0x19,0xD1,0xBE,0x35,0x00};
|
2024-07-19 23:33:12 +08:00
|
|
|
BYTE TaskEnterVehicleDriver_HookJmpCode[] = {0xFF,0x25,0xBB,0x19,0x69,0x00,0x90};
|
|
|
|
BYTE TaskExitVehicle_HookJmpCode[] = {0xFF,0x25,0xBA,0xB8,0x63,0x00,0x90};
|
|
|
|
BYTE RadarTranslateColor_HookJmpCode[] = {0xFF,0x25,0x79,0x4A,0x58,0x00,0x90};
|
|
|
|
BYTE CheatProcessHook_JmpCode[] = {0xFF,0x25,0xAA,0x85,0x43,0x00,0x90};
|
2023-11-23 23:41:28 +08:00
|
|
|
BYTE Unk2_JmpCode[] = {0xFF,0x25,0x33,0x14,0x42,0x00};
|
|
|
|
BYTE Unk3_JmpCode[] = {0xFF,0x25,0x61,0x36,0x53,0x00,0x90,0x90,0x90};
|
2024-07-19 23:33:12 +08:00
|
|
|
BYTE CGameShutdown_HookJmpCode[] = {0xFF,0x25,0xF1,0xC8,0x53,0x00,0x90};
|
|
|
|
BYTE PedDamage_HookJmpCode[] = {0xFF,0x25,0xBC,0x5A,0x4B,0x00};
|
2023-11-23 23:41:28 +08:00
|
|
|
BYTE Unk4_JmpCode[] = {0xFF,0x25,0x74,0x22,0x50,0x00,0x90,0x90,0x90,0x90};
|
|
|
|
BYTE Unk5_JmpCode[] = {0xFF,0x25,0x61,0x38,0x4C,0x00};
|
2024-07-19 23:33:12 +08:00
|
|
|
BYTE GetText_HookJmpCode[] = {0xFF,0x25,0x43,0x00,0x6A,0x00,0x90,0x90,0x90};
|
2023-11-23 23:41:28 +08:00
|
|
|
BYTE Unk6_JmpCode[] = {0xFF,0x25,0xD8,0xFF,0x5E,0x00,0x90};
|
2024-07-19 23:33:12 +08:00
|
|
|
BYTE CProjectileInfo_Update_HookJmpCode[] = {0xFF,0x25,0x1B,0x8B,0x73,0x00};
|
|
|
|
BYTE CWeapon__Satchel__Activate_HookJmpCode[] = {0xFF,0x25,0x5B,0x88,0x73,0x00};
|
2023-11-23 23:41:28 +08:00
|
|
|
BYTE Unk7_JmpCode[] = {0xFF,0x25,0x36,0xA0,0x63,0x00,0x90};
|
|
|
|
BYTE Unk8_JmpCode[] = {0xFF,0x25,0x77,0xAB,0x5E,0x00,0x90};
|
|
|
|
BYTE Unk9_JmpCode[] = {0xFF,0x25,0x39,0x88,0x4C,0x00,0x90,0x90};
|
2024-10-11 19:32:25 +03:00
|
|
|
BYTE CAnimManager__AddAnimation_Hook_HookJmpCode[] = {0xFF,0x25,0x34,0x39,0x4D,0x00,0x90,0x90,0x90,0x90};
|
|
|
|
BYTE CAnimManager__BlendAnimation_HookJmpCode[] = {0xFF,0x25,0x09,0x46,0x4D,0x00,0x90};
|
2023-11-23 23:41:28 +08:00
|
|
|
BYTE Unk10_JmpCode[] = {0xFF,0x25,0xE5,0x42,0x4D,0x00,0x90};
|
|
|
|
BYTE Unk11_JmpCode[] = {0xFF,0x25,0x29,0x3B,0x4D,0x00};
|
2024-10-11 19:32:25 +03:00
|
|
|
BYTE RwRasterDestroy_HookJmpCode[] = {0xFF,0x25,0x21,0xC7,0x59,0x00};
|
|
|
|
BYTE CFileLoader__LoadObjectInstance_HookJmpCode[] = {0xFF,0x25,0x84,0x80,0x53,0x00,0x90};
|
|
|
|
BYTE CRenderer__AddEntityToRenderList_HookJmpCode[] = {0xFF,0x25,0xA6,0x34,0x55,0x00,0x90,0x90,0x90};
|
|
|
|
BYTE CEventDamage__AffectsPed_HookJmpCode[] = {0xFF,0x25,0x33,0x34,0x4B,0x00};
|
2023-11-23 23:41:28 +08:00
|
|
|
BYTE Unk12_JmpCode[] = {0xFF,0x25,0xC6,0x84,0x6D,0x00,0x90,0x90};
|
2024-10-11 19:32:25 +03:00
|
|
|
BYTE CStreaming__RequestModel_HookJmpCode[] = {0xFF,0x25,0xD7,0x87,0x40,0x00};
|
|
|
|
BYTE CWorld__ProcessVerticalLine_HookJmpCode[] = {0xFF,0x25,0xDB,0x74,0x56,0x00};
|
2023-11-23 23:41:28 +08:00
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
// TODO: implement functions
|
|
|
|
NUDE CHud__DrawRadar_Hook() {}
|
|
|
|
NUDE CHud__DrawCrossHairs_Hook() {}
|
|
|
|
NUDE CCamera__Process_Hook() {}
|
|
|
|
NUDE CGame__Process_Hook() {}
|
2024-07-19 23:33:12 +08:00
|
|
|
NUDE CPed_Render_Hook() {}
|
2024-10-11 19:32:25 +03:00
|
|
|
NUDE CAnimManager__AddAnimation_Hook() {}
|
|
|
|
NUDE CAnimManager__BlendAnimation_Hook() {}
|
2024-07-19 23:33:12 +08:00
|
|
|
NUDE CPlayerPed_ProcessControl_Hook() {}
|
2024-10-11 19:32:25 +03:00
|
|
|
NUDE CCivillianPed__ProcessControl_Hook() {}
|
2024-07-19 23:33:12 +08:00
|
|
|
NUDE TaskUseGun_Hook() {}
|
2024-10-11 19:32:25 +03:00
|
|
|
NUDE WeaponRender__GetWeaponSkill_Hook() {}
|
|
|
|
NUDE CWorld__ProcessAttachedEntities_Hook() {}
|
|
|
|
NUDE CWorld__ProcessPedsAfterPreRender_Hook() {}
|
2024-07-19 23:33:12 +08:00
|
|
|
NUDE AllVehicles_ProcessControl_Hook() {}
|
2024-10-11 19:32:25 +03:00
|
|
|
NUDE VehicleHorn_Hook() {}
|
2024-07-19 23:33:12 +08:00
|
|
|
NUDE ZoneOverlay_Hook() {}
|
|
|
|
NUDE PlayerWalk_Hook() {}
|
|
|
|
NUDE PickUpPickup_Hook() {}
|
|
|
|
NUDE CWeapon_FireCamera_Hook() {}
|
|
|
|
NUDE CCameraCamShake_Sniper_Hook() {}
|
|
|
|
NUDE CTrain_ProcessControl_Derailment() {}
|
|
|
|
NUDE TaskEnterVehicleDriver_Hook() {}
|
|
|
|
NUDE TaskExitVehicle() {}
|
|
|
|
NUDE CheatProcessorHook() {}
|
|
|
|
NUDE RadarTranslateColor() {}
|
|
|
|
NUDE CGameShutdownHook() {}
|
|
|
|
NUDE PedDamage_Hook() {}
|
|
|
|
NUDE AnimCrashFixHook() {}
|
2024-10-11 19:32:25 +03:00
|
|
|
NUDE PoliceScannerAudio_FindPlayerPed_Hook() {}
|
2024-07-19 23:33:12 +08:00
|
|
|
NUDE CProjectile_Update_Hook() {}
|
|
|
|
NUDE CWeapon__Satchel__Activate_Hook() {}
|
|
|
|
NUDE GetText_Hook() {}
|
2024-10-11 19:32:25 +03:00
|
|
|
NUDE CCustomCarPlateMgr__CreatePlateTexture__RwRasterCreate_Hook() {}
|
|
|
|
NUDE RwRasterDestroy_Hook() {}
|
|
|
|
NUDE CVehicle__Render_Hook() {}
|
|
|
|
NUDE CObject__Render_Hook() {}
|
|
|
|
NUDE CRadar__DrawMap__FindPlayerSpeed_Hook() {}
|
|
|
|
NUDE CFileLoader__LoadObjectInstance_Hook() {}
|
|
|
|
NUDE CEscalator__Update_Hook() {}
|
|
|
|
NUDE CObject__CreateRwObject_Hook() {}
|
|
|
|
NUDE CEntity__DeleteRwObject_Hook() {}
|
|
|
|
NUDE CAutomobile__BreakTowLink_Hook() {}
|
|
|
|
NUDE CWorld__ProcessAttachedEntities__PositionAttachedEntity_Hook() {}
|
|
|
|
NUDE CRenderer__RenderEverythingBarRoads_Hook() {}
|
|
|
|
NUDE CRenderer__RenderFadingInEntities_Hook() {}
|
|
|
|
NUDE CRenderer__AddEntityToRenderList_Hook() {}
|
|
|
|
NUDE CEntity__RenderEffects__RenderRoadsignAtomic_Hook() {}
|
|
|
|
NUDE CEventDamage__AffectsPed_Hook() {}
|
|
|
|
NUDE CCollision__BuildCacheOfCameraCollision_Hook() {}
|
|
|
|
NUDE CCollision__CheckCameraCollisionVehicles_Hook() {}
|
|
|
|
NUDE CWorld__CameraToIgnoreThisObject_Hook() {}
|
|
|
|
NUDE CAutomobile__ProcessEntityCollision_Hook() {}
|
|
|
|
NUDE CBike__ProcessEntityCollision_Hook() {}
|
|
|
|
NUDE CMonsterTruck__ProcessEntityCollision_Hook() {}
|
|
|
|
NUDE CPhysical__ProcessEntityCollision_Hook() {}
|
|
|
|
NUDE CVehicle__UsesSiren_Hook() {}
|
|
|
|
NUDE CAEWeatherAudioEntity__UpdateParameters_Hook() {}
|
|
|
|
NUDE CWorld__ProcessVerticalLine_Hook() {}
|
|
|
|
NUDE CStreaming__RequestModel_Hook() {}
|
|
|
|
NUDE CWeapon__FireInstantHit_Hook() {}
|
|
|
|
NUDE CWorld__ProcessLineOfSight_Hook() {}
|
|
|
|
NUDE CWeapon__FireSniper_Hook() {}
|
|
|
|
NUDE CBulletInfo__AddBullet_Hook() {}
|
|
|
|
NUDE CVehicle__InflictDamage_Hook() {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NUDE CTimer__GetCurrentTimeInCycles_Hook()
|
2024-05-04 22:52:42 +08:00
|
|
|
{
|
|
|
|
Sleep(1);
|
|
|
|
|
|
|
|
_asm mov edx, 0x561A80
|
|
|
|
_asm jmp edx
|
|
|
|
}
|
|
|
|
|
2024-05-04 22:55:06 +08:00
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
DWORD dwRandCaller;
|
|
|
|
|
|
|
|
NUDE Rand_Hook()
|
|
|
|
{
|
|
|
|
_asm mov eax, [esp+0]
|
|
|
|
_asm mov dwRandCaller, eax
|
|
|
|
|
|
|
|
/*
|
|
|
|
if(dwRandCaller > 0x73FB10 && dwRandCaller < 0x74132E) {
|
|
|
|
_asm mov eax, iSyncedRandomNumber
|
|
|
|
_asm ret
|
|
|
|
}*/
|
|
|
|
|
|
|
|
rand();
|
|
|
|
_asm ret
|
|
|
|
}
|
|
|
|
|
2024-05-04 22:56:40 +08:00
|
|
|
//-----------------------------------------------------------
|
|
|
|
// We use a special bit (32) on dwProcFlags (+28) to indicate
|
|
|
|
// whether we should process gravity/collisions on this PlayerPed.
|
|
|
|
|
|
|
|
NUDE CPlayerPed_ProcessCollision_Hook()
|
|
|
|
{
|
|
|
|
_asm test ecx, ecx
|
|
|
|
_asm jnz ptr_is_ok
|
|
|
|
_asm ret
|
|
|
|
ptr_is_ok:
|
|
|
|
_asm mov eax, [ecx+28]
|
|
|
|
_asm shr eax, 31
|
|
|
|
_asm cmp eax, 1
|
|
|
|
_asm jne do_process_cols
|
|
|
|
_asm ret // we set top bit so don't process this
|
|
|
|
do_process_cols:
|
|
|
|
_asm mov edx, 0x54DFB0
|
|
|
|
_asm jmp edx
|
|
|
|
}
|
|
|
|
|
2024-05-04 22:57:30 +08:00
|
|
|
//-----------------------------------------------------------
|
|
|
|
DWORD dwMat;
|
|
|
|
DWORD dwMatEffects;
|
|
|
|
DWORD dwDataParam;
|
|
|
|
|
|
|
|
NUDE VehicleModel_SetEnvironmentMapHook()
|
|
|
|
{
|
|
|
|
_asm mov eax, [esp+4]
|
|
|
|
_asm mov dwMat, eax
|
|
|
|
_asm mov eax, [esp+8]
|
|
|
|
_asm mov dwDataParam, eax
|
|
|
|
|
|
|
|
UnFuck(0x6D64F0,1);
|
|
|
|
*(PBYTE)0x6D64F0 = 0xC3;
|
|
|
|
|
|
|
|
/*
|
|
|
|
_asm push dwMat
|
|
|
|
_asm mov edx, 0x812140 // _RpMatFXMaterialGetEffects
|
|
|
|
_asm call edx
|
|
|
|
_asm pop edx
|
|
|
|
_asm mov dwMatEffects, eax*/
|
|
|
|
|
|
|
|
_asm push 0
|
|
|
|
_asm push dwMat
|
|
|
|
_asm mov edx, 0x811C80 // _RpMatFXMaterialSetEffects
|
|
|
|
_asm call edx
|
|
|
|
_asm pop edx
|
|
|
|
_asm pop edx
|
|
|
|
|
|
|
|
//pChatWindow->AddDebugMessage("SetEnvironmentMapCB(0x%X,0x%X,%d)",dwMat,dwDataParam,dwMatEffects);
|
|
|
|
|
|
|
|
_asm mov edx, 0x4C8848
|
|
|
|
_asm cmp [esp+8], 0FFFFh
|
|
|
|
_asm jmp edx
|
|
|
|
}
|
|
|
|
|
2023-11-23 23:41:28 +08:00
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
void InstallMethodHook( DWORD dwInstallAddress,
|
|
|
|
DWORD dwHookFunction )
|
|
|
|
{
|
|
|
|
DWORD oldProt, oldProt2;
|
|
|
|
VirtualProtect((LPVOID)dwInstallAddress,4,PAGE_EXECUTE_READWRITE,&oldProt);
|
|
|
|
*(PDWORD)dwInstallAddress = (DWORD)dwHookFunction;
|
|
|
|
VirtualProtect((LPVOID)dwInstallAddress,4,oldProt,&oldProt2);
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
void InstallHook( DWORD dwInstallAddress,
|
|
|
|
DWORD dwHookFunction,
|
|
|
|
DWORD dwHookStorage,
|
|
|
|
BYTE * pbyteJmpCode,
|
|
|
|
int iJmpCodeSize )
|
|
|
|
{
|
|
|
|
DWORD oldProt, oldProt2;
|
|
|
|
|
|
|
|
// Install the pointer to procaddr.
|
|
|
|
VirtualProtect((PVOID)dwHookStorage,4,PAGE_EXECUTE_READWRITE,&oldProt);
|
|
|
|
*(PDWORD)dwHookStorage = (DWORD)dwHookFunction;
|
|
|
|
VirtualProtect((PVOID)dwHookStorage,4,oldProt,&oldProt2);
|
|
|
|
|
|
|
|
// Install the Jmp code.
|
|
|
|
VirtualProtect((PVOID)dwInstallAddress,iJmpCodeSize,PAGE_EXECUTE_READWRITE,&oldProt);
|
|
|
|
memcpy((PVOID)dwInstallAddress,pbyteJmpCode,iJmpCodeSize);
|
|
|
|
VirtualProtect((PVOID)dwInstallAddress,iJmpCodeSize,oldProt,&oldProt2);
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
void InstallCallHook(DWORD dwInstallAddress, DWORD dwHookFunction, BYTE byteJumpCode = 0xE8)
|
|
|
|
{
|
|
|
|
DWORD oldProt, oldProt2;
|
|
|
|
DWORD disp = dwHookFunction - (dwInstallAddress + 5);
|
|
|
|
|
|
|
|
VirtualProtect((LPVOID)dwInstallAddress,5,PAGE_EXECUTE_READWRITE,&oldProt);
|
|
|
|
*(PBYTE)(dwInstallAddress) = byteJumpCode;
|
|
|
|
*(PDWORD)(dwInstallAddress+1) = (DWORD)disp;
|
|
|
|
VirtualProtect((LPVOID)dwInstallAddress,5,oldProt,&oldProt2);
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
void InstallGameAndGraphicsLoopHooks()
|
|
|
|
{
|
|
|
|
UnFuck(0x53EB13,4);
|
|
|
|
*(int *)0x53EB13 = dwGraphicsLoop - 0x53EB12 - 5; // relative addr
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x58FC53,(DWORD)CHud__DrawRadar_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x58FBBF,(DWORD)CHud__DrawCrossHairs_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x53C104,(DWORD)CCamera__Process_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x53E981,(DWORD)CGame__Process_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
// For fixing fogging issues (needed for both debug and net)
|
|
|
|
InstallMethodHook(0x86D1B0,(DWORD)CPed_Render_Hook); // This is PlayerPed
|
|
|
|
InstallMethodHook(0x86C0F0,(DWORD)CPed_Render_Hook);
|
|
|
|
InstallMethodHook(0x86C168,(DWORD)CPed_Render_Hook);
|
|
|
|
InstallMethodHook(0x86C248,(DWORD)CPed_Render_Hook);
|
|
|
|
InstallMethodHook(0x86C3A0,(DWORD)CPed_Render_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x53E930,(DWORD)CTimer__GetCurrentTimeInCycles_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
|
|
|
void GameInstallHooks()
|
|
|
|
{
|
|
|
|
InstallGameAndGraphicsLoopHooks();
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x4D3AA0,(DWORD)CAnimManager__AddAnimation_Hook,0x4D3934,CAnimManager__AddAnimation_Hook_HookJmpCode,sizeof(CAnimManager__AddAnimation_Hook_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x4D4610,(DWORD)CAnimManager__BlendAnimation_Hook,0x4D4609,CAnimManager__BlendAnimation_HookJmpCode,sizeof(CAnimManager__BlendAnimation_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallMethodHook(0x86D190,(DWORD)CPlayerPed_ProcessControl_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x86C0D0,(DWORD)CCivillianPed__ProcessControl_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallMethodHook(0x86D744,(DWORD)TaskUseGun_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x7330A2,(DWORD)WeaponRender__GetWeaponSkill_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-05-04 22:56:40 +08:00
|
|
|
InstallMethodHook(0x86D194,(DWORD)CPlayerPed_ProcessCollision_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x5689FD,(DWORD)CWorld__ProcessAttachedEntities_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x53EA03,(DWORD)CWorld__ProcessPedsAfterPreRender_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallMethodHook(0x871148,(DWORD)AllVehicles_ProcessControl_Hook); // Automobile
|
|
|
|
InstallMethodHook(0x8721C8,(DWORD)AllVehicles_ProcessControl_Hook); // boat
|
|
|
|
InstallMethodHook(0x871388,(DWORD)AllVehicles_ProcessControl_Hook); // motorbike1
|
|
|
|
InstallMethodHook(0x871970,(DWORD)AllVehicles_ProcessControl_Hook); // plane
|
|
|
|
InstallMethodHook(0x8716A8,(DWORD)AllVehicles_ProcessControl_Hook); // heli
|
|
|
|
InstallMethodHook(0x871550,(DWORD)AllVehicles_ProcessControl_Hook); // pushbike
|
|
|
|
InstallMethodHook(0x871800,(DWORD)AllVehicles_ProcessControl_Hook); // truck
|
|
|
|
InstallMethodHook(0x871B10,(DWORD)AllVehicles_ProcessControl_Hook); // quad
|
|
|
|
InstallMethodHook(0x872398,(DWORD)AllVehicles_ProcessControl_Hook); // train
|
|
|
|
InstallMethodHook(0x871C50,(DWORD)AllVehicles_ProcessControl_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x501B1D,(DWORD)VehicleHorn_Hook);
|
|
|
|
InstallCallHook(0x501B42,(DWORD)VehicleHorn_Hook);
|
|
|
|
InstallCallHook(0x501FC2,(DWORD)VehicleHorn_Hook);
|
|
|
|
InstallCallHook(0x502067,(DWORD)VehicleHorn_Hook);
|
|
|
|
InstallCallHook(0x5021AE,(DWORD)VehicleHorn_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
// Radar and map hooks for gang zones
|
|
|
|
InstallCallHook(0x5869BF,(DWORD)ZoneOverlay_Hook);
|
|
|
|
InstallCallHook(0x5759E4,(DWORD)ZoneOverlay_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallCallHook(0x609A4E,(DWORD)PlayerWalk_Hook);
|
|
|
|
InstallCallHook(0x4579C6,(DWORD)PickUpPickup_Hook, 0xE9);
|
|
|
|
InstallCallHook(0x73C252,(DWORD)CWeapon_FireCamera_Hook, 0xE9);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
// Hook the call to CCamera::CamShake when called for sniper fire
|
|
|
|
InstallCallHook(0x73ACE2,(DWORD)CCameraCamShake_Sniper_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
// Hook the train derailment code
|
|
|
|
InstallCallHook(0x6F8CF8,(DWORD)CTrain_ProcessControl_Derailment);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallHook(0x6402F0,(DWORD)TaskEnterVehicleDriver_Hook,
|
|
|
|
0x6919BB,TaskEnterVehicleDriver_HookJmpCode,sizeof(TaskEnterVehicleDriver_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallHook(0x63B8C0,(DWORD)TaskExitVehicle,
|
|
|
|
0x63B8BA,TaskExitVehicle_HookJmpCode,sizeof(TaskExitVehicle_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallHook(0x438576,(DWORD)CheatProcessorHook,
|
|
|
|
0x4385AA,CheatProcessHook_JmpCode,sizeof(CheatProcessHook_JmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
InstallHook(0x584770,(DWORD)RadarTranslateColor,0x584A79,
|
|
|
|
RadarTranslateColor_HookJmpCode,sizeof(RadarTranslateColor_HookJmpCode));
|
|
|
|
|
|
|
|
InstallHook(0x53C900,(DWORD)CGameShutdownHook,0x53C8F1,
|
|
|
|
CGameShutdown_HookJmpCode,sizeof(CGameShutdown_HookJmpCode));
|
|
|
|
|
|
|
|
InstallHook(0x4B5AC0,(DWORD)PedDamage_Hook,0x4B5ABC,
|
|
|
|
PedDamage_HookJmpCode,sizeof(PedDamage_HookJmpCode));
|
|
|
|
|
|
|
|
// Fix for 0x004D41C5 crash
|
|
|
|
InstallCallHook(0x4D41C0, (DWORD)AnimCrashFixHook, 0xE9);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x4E7427,(DWORD)PoliceScannerAudio_FindPlayerPed_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-07-19 23:33:12 +08:00
|
|
|
// Fix for crash when the player who threw the satchel died
|
|
|
|
InstallHook(0x738F3A, (DWORD)CProjectile_Update_Hook, 0x738B1B, CProjectileInfo_Update_HookJmpCode, sizeof(CProjectileInfo_Update_HookJmpCode));
|
|
|
|
// Fix for all satchels blowing up when someone activated their satchel
|
|
|
|
InstallHook(0x738877, (DWORD)CWeapon__Satchel__Activate_Hook, 0x73885B, CWeapon__Satchel__Activate_HookJmpCode, sizeof(CWeapon__Satchel__Activate_HookJmpCode));
|
|
|
|
|
|
|
|
InstallHook(0x6A0050, (DWORD)GetText_Hook, 0x6A0043, GetText_HookJmpCode, sizeof (GetText_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x6FDED6,(DWORD)CCustomCarPlateMgr__CreatePlateTexture__RwRasterCreate_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
|
|
|
if(iGtaVersion == GTASA_VERSION_USA10)
|
|
|
|
{
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x7FB020,(DWORD)RwRasterDestroy_Hook,0x59C721,RwRasterDestroy_HookJmpCode,sizeof(RwRasterDestroy_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
unnamed_101516D4 = 0x7FB026;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x7FB060,(DWORD)RwRasterDestroy_Hook,0x59C721,RwRasterDestroy_HookJmpCode,sizeof(RwRasterDestroy_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
unnamed_101516D4 = 0x7FB066;
|
|
|
|
}
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x6D0E7E,(DWORD)CVehicle__Render_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x866FA8,(DWORD)CObject__Render_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x586C0A,(DWORD)CRadar__DrawMap__FindPlayerSpeed_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x538090,(DWORD)CFileLoader__LoadObjectInstance_Hook,0x538084,CFileLoader__LoadObjectInstance_HookJmpCode,sizeof(CFileLoader__LoadObjectInstance_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x718599,(DWORD)CEscalator__Update_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x866F7C,(DWORD)CObject__CreateRwObject_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x866F80,(DWORD)CEntity__DeleteRwObject_Hook);
|
|
|
|
InstallMethodHook(0x8585E8,(DWORD)CEntity__DeleteRwObject_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x871218,(DWORD)CAutomobile__BreakTowLink_Hook);
|
|
|
|
InstallMethodHook(0x871778,(DWORD)CAutomobile__BreakTowLink_Hook);
|
|
|
|
InstallMethodHook(0x8718D0,(DWORD)CAutomobile__BreakTowLink_Hook);
|
|
|
|
InstallMethodHook(0x871A40,(DWORD)CAutomobile__BreakTowLink_Hook);
|
|
|
|
InstallMethodHook(0x871BE0,(DWORD)CAutomobile__BreakTowLink_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x5648D3,(DWORD)CWorld__ProcessAttachedEntities__PositionAttachedEntity_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x53DFDD,(DWORD)CRenderer__RenderEverythingBarRoads_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x53E019,(DWORD)CRenderer__RenderFadingInEntities_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x5534B0,(DWORD)CRenderer__AddEntityToRenderList_Hook,0x5534A6,CRenderer__AddEntityToRenderList_HookJmpCode,sizeof(CRenderer__AddEntityToRenderList_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x5342F9,(DWORD)CEntity__RenderEffects__RenderRoadsignAtomic_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x4B35A0,(DWORD)CEventDamage__AffectsPed_Hook,0x4B3433,CEventDamage__AffectsPed_HookJmpCode,sizeof(CEventDamage__AffectsPed_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x41B02E,(DWORD)CCollision__BuildCacheOfCameraCollision_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x41AF80,(DWORD)CCollision__CheckCameraCollisionVehicles_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x41AB78,(DWORD)CWorld__CameraToIgnoreThisObject_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x871178,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
|
|
|
InstallMethodHook(0x8716D8,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
|
|
|
InstallMethodHook(0x8719A0,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
|
|
|
InstallMethodHook(0x871B40,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x8713B8,(DWORD)CBike__ProcessEntityCollision_Hook);
|
|
|
|
InstallMethodHook(0x871580,(DWORD)CBike__ProcessEntityCollision_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x871830,(DWORD)CMonsterTruck__ProcessEntityCollision_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x8721F8,(DWORD)CPhysical__ProcessEntityCollision_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x6E0954,(DWORD)CVehicle__UsesSiren_Hook);
|
|
|
|
InstallCallHook(0x6B2BCB,(DWORD)CVehicle__UsesSiren_Hook);
|
|
|
|
InstallCallHook(0x4F77DA,(DWORD)CVehicle__UsesSiren_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallMethodHook(0x872A74,(DWORD)CAEWeatherAudioEntity__UpdateParameters_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x5674E0,(DWORD)CWorld__ProcessVerticalLine_Hook,0x5674DB,CWorld__ProcessVerticalLine_HookJmpCode,sizeof(CWorld__ProcessVerticalLine_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
void InstallModelInfoHackHooks()
|
2023-11-23 23:41:28 +08:00
|
|
|
{
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallHook(0x4087EA,(DWORD)CStreaming__RequestModel_Hook,0x4087D7,CStreaming__RequestModel_HookJmpCode,sizeof(CStreaming__RequestModel_HookJmpCode));
|
2023-11-23 23:41:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
void InstallShotSyncHooks()
|
2023-11-23 23:41:28 +08:00
|
|
|
{
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x742495,(DWORD)CWeapon__FireInstantHit_Hook);
|
|
|
|
InstallCallHook(0x7424EC,(DWORD)CWeapon__FireInstantHit_Hook);
|
|
|
|
InstallCallHook(0x742548,(DWORD)CWeapon__FireInstantHit_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x740721,(DWORD)CWorld__ProcessLineOfSight_Hook);
|
|
|
|
InstallCallHook(0x740B69,(DWORD)CWorld__ProcessLineOfSight_Hook);
|
|
|
|
InstallCallHook(0x736247,(DWORD)CWorld__ProcessLineOfSight_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x7424CB,(DWORD)CWeapon__FireSniper_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x73AC4B,(DWORD)CBulletInfo__AddBullet_Hook);
|
2023-11-23 23:41:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
2024-10-11 19:32:25 +03:00
|
|
|
void InstallVehicleFriendyFireHooks()
|
2023-11-23 23:41:28 +08:00
|
|
|
{
|
2024-10-11 19:32:25 +03:00
|
|
|
InstallCallHook(0x6D7C90,(DWORD)CVehicle__InflictDamage_Hook,0xE9);
|
2023-11-23 23:41:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|