mirror of
https://github.com/dashr9230/SA-MP.git
synced 2024-12-22 14:37:29 +08:00
Merge pull request #11 from Tornamic/main
[saco] rename and implement some hooked functions
This commit is contained in:
commit
28d6559378
Binary file not shown.
@ -8,6 +8,7 @@ extern CNetGame *pNetGame;
|
||||
extern GAME_SETTINGS tSettings;
|
||||
|
||||
extern bool bShowDebugLabels;
|
||||
extern bool bHudScaleFix;
|
||||
|
||||
void cmdDefaultCmdProc(PCHAR szCmd)
|
||||
{
|
||||
@ -69,7 +70,17 @@ void cmdLogUrls(PCHAR szCmd)
|
||||
|
||||
void cmdHudScaleFix(PCHAR szCmd)
|
||||
{
|
||||
// TODO: cmdHudScaleFix .text:10068870
|
||||
if(bHudScaleFix)
|
||||
{
|
||||
bHudScaleFix = false;
|
||||
// uncomment after finishing CConfig class
|
||||
//CConfig::SetIntVariable(pConfig, "nohudscalefix", 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
bHudScaleFix = 1;
|
||||
//CConfig::SetIntVariable(pConfig, "nohudscalefix", 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void cmdMem(PCHAR szCmd)
|
||||
|
@ -92,9 +92,11 @@ typedef struct _ENTITY_TYPE
|
||||
char _gap1C[6];
|
||||
|
||||
WORD nModelIndex; // 34-36
|
||||
|
||||
char _gap24[32];
|
||||
|
||||
char _gap24[18];
|
||||
BYTE nControlFlags; // 54-55
|
||||
char _gap37[11];
|
||||
BYTE byteImmunities; // 66-67
|
||||
BYTE byteUnkEntFlags; // 67-68
|
||||
VECTOR vecMoveSpeed; // 68-80
|
||||
VECTOR vecTurnSpeed; // 80-92
|
||||
|
||||
|
@ -1,5 +1,9 @@
|
||||
|
||||
#include "../main.h"
|
||||
#include "game.h"
|
||||
#include "util.h"
|
||||
#include "keystuff.h"
|
||||
#include "aimstuff.h"
|
||||
|
||||
extern int iGtaVersion;
|
||||
|
||||
@ -7,16 +11,19 @@ extern DWORD dwGraphicsLoop; // Used for the external dll game loop.
|
||||
|
||||
#define NUDE void _declspec(naked)
|
||||
|
||||
BYTE byteSavedCameraMode;
|
||||
BYTE *pbyteCameraMode = (BYTE *)0xB6F1A8;
|
||||
BYTE *pbyteCurrentPlayer = (BYTE *)0xB7CD74;
|
||||
|
||||
int iRadarColor1=0;
|
||||
|
||||
float fFarClip=1400.0f;
|
||||
|
||||
DWORD unnamed_101516D4;
|
||||
|
||||
WORD wLastRendObj=0;
|
||||
|
||||
BYTE Unk1_JmpCode[] = {0xFF,25,0xD1,0xBE,53,0x00};
|
||||
BYTE Unk1_JmpCode[] = {0xFF,0x19,0xD1,0xBE,0x35,0x00};
|
||||
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};
|
||||
@ -34,90 +41,337 @@ BYTE CWeapon__Satchel__Activate_HookJmpCode[] = {0xFF,0x25,0x5B,0x88,0x73,0x00};
|
||||
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};
|
||||
BYTE HOOK_7_JmpCode[] = {0xFF,0x25,0x34,0x39,0x4D,0x00,0x90,0x90,0x90,0x90};
|
||||
BYTE HOOK_8_JmpCode[] = {0xFF,0x25,0x09,0x46,0x4D,0x00,0x90};
|
||||
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};
|
||||
BYTE Unk10_JmpCode[] = {0xFF,0x25,0xE5,0x42,0x4D,0x00,0x90};
|
||||
BYTE Unk11_JmpCode[] = {0xFF,0x25,0x29,0x3B,0x4D,0x00};
|
||||
BYTE HOOK_36_JmpCode[] = {0xFF,0x25,0x21,0xC7,0x59,0x00};
|
||||
BYTE HOOK_40_JmpCode[] = {0xFF,0x25,0x84,0x80,0x53,0x00,0x90};
|
||||
BYTE HOOK_48_JmpCode[] = {0xFF,0x25,0xA6,0x34,0x55,0x00,0x90,0x90,0x90};
|
||||
BYTE HOOK_50_JmpCode[] = {0xFF,0x25,0x33,0x34,0x4B,0x00};
|
||||
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};
|
||||
BYTE Unk12_JmpCode[] = {0xFF,0x25,0xC6,0x84,0x6D,0x00,0x90,0x90};
|
||||
BYTE HOOK_61_JmpCode[] = {0xFF,0x25,0xD7,0x87,0x40,0x00};
|
||||
BYTE HOOK_60_JmpCode[] = {0xFF,0x25,0xDB,0x74,0x56,0x00};
|
||||
BYTE CStreaming__RequestModel_HookJmpCode[] = {0xFF,0x25,0xD7,0x87,0x40,0x00};
|
||||
BYTE CWorld__ProcessVerticalLine_HookJmpCode[] = {0xFF,0x25,0xDB,0x74,0x56,0x00};
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
|
||||
// TODO: HOOK_*() functions
|
||||
NUDE HOOK_1() {}
|
||||
NUDE HOOK_2() {}
|
||||
NUDE HOOK_3() {}
|
||||
NUDE HOOK_4() {}
|
||||
// TODO: implement functions
|
||||
|
||||
// radar scale/shape fix
|
||||
|
||||
DWORD dwHudScaleX = 0;
|
||||
DWORD dwHudScaleY = 0;
|
||||
bool bSomeHudScaleFixFlag = false;
|
||||
float* CRadar__radarHeight = (float*)0x866B74;
|
||||
float* CRadar__radarWidth = (float*)0x866B78;
|
||||
|
||||
void ProcessHudScaleFix()
|
||||
{
|
||||
if ( bHudScaleFix )
|
||||
{
|
||||
dwHudScaleX = *(DWORD*)0x859520;
|
||||
dwHudScaleY = *(DWORD*)0x859524;
|
||||
|
||||
float fMaximumWidth = *(float*)0xC17044;
|
||||
float fMaximumHeight = *(float*)0xC17048;
|
||||
|
||||
if ( fMaximumWidth > 0 && fMaximumHeight > 0 )
|
||||
{
|
||||
if ( fMaximumWidth / fMaximumHeight < 1.6 )
|
||||
{
|
||||
*CRadar__radarHeight = 76.0;
|
||||
*CRadar__radarWidth = 94.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*CRadar__radarHeight = 82.0;
|
||||
*CRadar__radarWidth = 96.0;
|
||||
*(float*)0x859524 = 0.00242;
|
||||
*(float*)0x859520 = 0.00222 / (fMaximumWidth / fMaximumHeight);
|
||||
bSomeHudScaleFixFlag = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NUDE CHud__DrawRadar_Hook()
|
||||
{
|
||||
__asm pushad
|
||||
ProcessHudScaleFix();
|
||||
|
||||
__asm
|
||||
{
|
||||
popad
|
||||
|
||||
// call original CHud::DrawRadar
|
||||
mov edx, 0x58A330
|
||||
call edx
|
||||
|
||||
pushad
|
||||
}
|
||||
|
||||
if(bHudScaleFix)
|
||||
{
|
||||
*(DWORD*)0x859520 = dwHudScaleX;
|
||||
*(DWORD*)0x859524 = dwHudScaleY;
|
||||
*CRadar__radarHeight = 76.0;
|
||||
*CRadar__radarWidth = 94.0;
|
||||
bHudScaleFix = false;
|
||||
}
|
||||
|
||||
__asm
|
||||
{
|
||||
popad
|
||||
retn
|
||||
}
|
||||
}
|
||||
|
||||
bool bSomeFlag = false;
|
||||
BYTE bytePlayerNumber = 0;
|
||||
NUDE CHud__DrawCrossHairs_Hook()
|
||||
{
|
||||
__asm pushad
|
||||
|
||||
bSomeFlag = false;
|
||||
if ( pGame && pGame->FindPlayerPed() )
|
||||
{
|
||||
bytePlayerNumber = pGame->FindPlayerPed()->m_bytePlayerNumber;
|
||||
byteSavedCameraMode = bytePlayerNumber ? GameGetPlayerCameraMode(bytePlayerNumber) : GameGetLocalPlayerCameraMode();
|
||||
if ( byteSavedCameraMode == 53 )
|
||||
{
|
||||
ProcessHudScaleFix();
|
||||
bSomeFlag = true;
|
||||
}
|
||||
}
|
||||
|
||||
__asm
|
||||
{
|
||||
popad
|
||||
|
||||
// call original CHud::DrawCrossHairs
|
||||
mov edx, 0x58E020
|
||||
call edx
|
||||
|
||||
pushad
|
||||
}
|
||||
|
||||
if (bSomeFlag)
|
||||
{
|
||||
if (bHudScaleFix)
|
||||
{
|
||||
*(DWORD*)0x859520 = dwHudScaleX;
|
||||
*(DWORD*)0x859524 = dwHudScaleY;
|
||||
*CRadar__radarHeight = 76.0;
|
||||
*CRadar__radarWidth = 94.0;
|
||||
bHudScaleFix = 0;
|
||||
bHudScaleFix = false;
|
||||
}
|
||||
bSomeFlag = false;
|
||||
}
|
||||
|
||||
__asm
|
||||
{
|
||||
popad
|
||||
retn
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NUDE CCamera__Process_Hook() {}
|
||||
NUDE CGame__Process_Hook() {}
|
||||
NUDE CPed_Render_Hook() {}
|
||||
NUDE HOOK_7() {}
|
||||
NUDE HOOK_8() {}
|
||||
NUDE CAnimManager__AddAnimation_Hook() {}
|
||||
NUDE CAnimManager__BlendAnimation_Hook() {}
|
||||
NUDE CPlayerPed_ProcessControl_Hook() {}
|
||||
NUDE HOOK_10() {}
|
||||
NUDE CCivillianPed__ProcessControl_Hook() {}
|
||||
NUDE TaskUseGun_Hook() {}
|
||||
NUDE HOOK_12() {}
|
||||
NUDE HOOK_14() {}
|
||||
NUDE HOOK_15() {}
|
||||
NUDE WeaponRender__GetWeaponSkill_Hook() {}
|
||||
NUDE CWorld__ProcessAttachedEntities_Hook() {}
|
||||
NUDE CWorld__ProcessPedsAfterPreRender_Hook() {}
|
||||
NUDE AllVehicles_ProcessControl_Hook() {}
|
||||
NUDE HOOK_17() {}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
// fix horn processing
|
||||
VEHICLE_TYPE *_pHornVehicle;
|
||||
int _iHasSetHornHookFix = 0;
|
||||
BYTE _byteSavedControlFlags = 0;
|
||||
DWORD _dwVehicleParams = 0;
|
||||
DWORD _dwAudioClass = 0;
|
||||
|
||||
NUDE VehicleHorn_Hook()
|
||||
{
|
||||
_asm mov _dwAudioClass, ecx
|
||||
|
||||
_asm mov edx, [esp+4]
|
||||
_asm mov _dwVehicleParams, edx
|
||||
|
||||
_asm mov eax, [edx+16]
|
||||
_asm mov _pHornVehicle, eax
|
||||
|
||||
if( _pHornVehicle && _pHornVehicle->pDriver &&
|
||||
IN_VEHICLE(_pHornVehicle->pDriver) &&
|
||||
_pHornVehicle->pDriver->dwPedType == 4 )
|
||||
{
|
||||
_byteSavedControlFlags = _pHornVehicle->entity.nControlFlags;
|
||||
_pHornVehicle->entity.nControlFlags = 0x02;
|
||||
_iHasSetHornHookFix = 1;
|
||||
} else {
|
||||
_iHasSetHornHookFix = 0;
|
||||
}
|
||||
|
||||
_asm push _dwVehicleParams
|
||||
_asm mov ecx, _dwAudioClass
|
||||
_asm mov edx, 0x5002C0
|
||||
_asm call edx
|
||||
|
||||
if(_iHasSetHornHookFix) {
|
||||
_pHornVehicle->entity.nControlFlags = _byteSavedControlFlags;
|
||||
}
|
||||
|
||||
_asm retn 4
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
NUDE ZoneOverlay_Hook() {}
|
||||
NUDE PlayerWalk_Hook() {}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
NUDE PlayerWalk_Hook()
|
||||
{
|
||||
_asm pushad
|
||||
|
||||
if (pNetGame && pNetGame->GetWalkStyle())
|
||||
{
|
||||
_asm popad
|
||||
_asm mov [esi + 0x4D4], eax
|
||||
}
|
||||
else
|
||||
{
|
||||
_asm popad
|
||||
}
|
||||
_asm ret
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
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() {}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
// disable cheat code processing
|
||||
NUDE CheatProcessorHook()
|
||||
{
|
||||
__asm
|
||||
{
|
||||
pushad
|
||||
|
||||
// CCheat::m_bHasPlayerCheated = true
|
||||
mov edx, 0x96918C
|
||||
mov byte ptr [edx], 1
|
||||
|
||||
popad
|
||||
|
||||
// dont process cheat
|
||||
mov edx, 0x438581
|
||||
cmp eax, 0
|
||||
jmp edx
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
NUDE RadarTranslateColor()
|
||||
{
|
||||
_asm mov eax, [esp+4]
|
||||
_asm mov iRadarColor1, eax
|
||||
TranslateColorCodeToRGBA(iRadarColor1); // return will still be in eax.
|
||||
_asm ret
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// We use this to trap and exit the game
|
||||
|
||||
DWORD dwShutDownTick;
|
||||
void QuitGame(); // todo: implement `QuitGame`
|
||||
|
||||
NUDE CGameShutdownHook()
|
||||
{
|
||||
dwShutDownTick = GetTickCount() + 2000;
|
||||
QuitGame();
|
||||
|
||||
while(GetTickCount() < dwShutDownTick) {
|
||||
Sleep(100);
|
||||
}
|
||||
|
||||
ExitProcess(0);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
NUDE PedDamage_Hook() {}
|
||||
NUDE AnimCrashFixHook() {}
|
||||
NUDE HOOK_31() {}
|
||||
NUDE PoliceScannerAudio_FindPlayerPed_Hook() {}
|
||||
NUDE CProjectile_Update_Hook() {}
|
||||
NUDE CWeapon__Satchel__Activate_Hook() {}
|
||||
NUDE GetText_Hook() {}
|
||||
NUDE HOOK_35() {}
|
||||
NUDE HOOK_36() {}
|
||||
NUDE HOOK_37() {}
|
||||
NUDE HOOK_38() {}
|
||||
NUDE HOOK_39() {}
|
||||
NUDE HOOK_40() {}
|
||||
NUDE HOOK_41() {}
|
||||
NUDE HOOK_42() {}
|
||||
NUDE HOOK_43() {}
|
||||
NUDE HOOK_44() {}
|
||||
NUDE HOOK_45() {}
|
||||
NUDE HOOK_46() {}
|
||||
NUDE HOOK_47() {}
|
||||
NUDE HOOK_48() {}
|
||||
NUDE HOOK_49() {}
|
||||
NUDE HOOK_50() {}
|
||||
NUDE HOOK_51() {}
|
||||
NUDE HOOK_52() {}
|
||||
NUDE HOOK_53() {}
|
||||
NUDE HOOK_54() {}
|
||||
NUDE HOOK_55() {}
|
||||
NUDE HOOK_56() {}
|
||||
NUDE HOOK_57() {}
|
||||
NUDE HOOK_58() {}
|
||||
NUDE HOOK_59() {}
|
||||
NUDE HOOK_60() {}
|
||||
NUDE HOOK_61() {}
|
||||
NUDE HOOK_62() {}
|
||||
NUDE HOOK_63() {}
|
||||
NUDE HOOK_64() {}
|
||||
NUDE HOOK_65() {}
|
||||
NUDE HOOK_66() {}
|
||||
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 HOOK_6()
|
||||
NUDE CTimer__GetCurrentTimeInCycles_Hook()
|
||||
{
|
||||
Sleep(1);
|
||||
|
||||
@ -253,13 +507,13 @@ void InstallGameAndGraphicsLoopHooks()
|
||||
UnFuck(0x53EB13,4);
|
||||
*(int *)0x53EB13 = dwGraphicsLoop - 0x53EB12 - 5; // relative addr
|
||||
|
||||
InstallCallHook(0x58FC53,(DWORD)HOOK_1);
|
||||
InstallCallHook(0x58FC53,(DWORD)CHud__DrawRadar_Hook);
|
||||
|
||||
InstallCallHook(0x58FBBF,(DWORD)HOOK_2);
|
||||
InstallCallHook(0x58FBBF,(DWORD)CHud__DrawCrossHairs_Hook);
|
||||
|
||||
InstallCallHook(0x53C104,(DWORD)HOOK_3);
|
||||
InstallCallHook(0x53C104,(DWORD)CCamera__Process_Hook);
|
||||
|
||||
InstallCallHook(0x53E981,(DWORD)HOOK_4);
|
||||
InstallCallHook(0x53E981,(DWORD)CGame__Process_Hook);
|
||||
|
||||
// For fixing fogging issues (needed for both debug and net)
|
||||
InstallMethodHook(0x86D1B0,(DWORD)CPed_Render_Hook); // This is PlayerPed
|
||||
@ -268,7 +522,7 @@ void InstallGameAndGraphicsLoopHooks()
|
||||
InstallMethodHook(0x86C248,(DWORD)CPed_Render_Hook);
|
||||
InstallMethodHook(0x86C3A0,(DWORD)CPed_Render_Hook);
|
||||
|
||||
InstallCallHook(0x53E930,(DWORD)HOOK_6);
|
||||
InstallCallHook(0x53E930,(DWORD)CTimer__GetCurrentTimeInCycles_Hook);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
@ -277,23 +531,23 @@ void GameInstallHooks()
|
||||
{
|
||||
InstallGameAndGraphicsLoopHooks();
|
||||
|
||||
InstallHook(0x4D3AA0,(DWORD)HOOK_7,0x4D3934,HOOK_7_JmpCode,sizeof(HOOK_7_JmpCode));
|
||||
InstallHook(0x4D3AA0,(DWORD)CAnimManager__AddAnimation_Hook,0x4D3934,CAnimManager__AddAnimation_Hook_HookJmpCode,sizeof(CAnimManager__AddAnimation_Hook_HookJmpCode));
|
||||
|
||||
InstallHook(0x4D4610,(DWORD)HOOK_8,0x4D4609,HOOK_8_JmpCode,sizeof(HOOK_8_JmpCode));
|
||||
InstallHook(0x4D4610,(DWORD)CAnimManager__BlendAnimation_Hook,0x4D4609,CAnimManager__BlendAnimation_HookJmpCode,sizeof(CAnimManager__BlendAnimation_HookJmpCode));
|
||||
|
||||
InstallMethodHook(0x86D190,(DWORD)CPlayerPed_ProcessControl_Hook);
|
||||
|
||||
InstallMethodHook(0x86C0D0,(DWORD)HOOK_10);
|
||||
InstallMethodHook(0x86C0D0,(DWORD)CCivillianPed__ProcessControl_Hook);
|
||||
|
||||
InstallMethodHook(0x86D744,(DWORD)TaskUseGun_Hook);
|
||||
|
||||
InstallCallHook(0x7330A2,(DWORD)HOOK_12);
|
||||
InstallCallHook(0x7330A2,(DWORD)WeaponRender__GetWeaponSkill_Hook);
|
||||
|
||||
InstallMethodHook(0x86D194,(DWORD)CPlayerPed_ProcessCollision_Hook);
|
||||
|
||||
InstallCallHook(0x5689FD,(DWORD)HOOK_14);
|
||||
InstallCallHook(0x5689FD,(DWORD)CWorld__ProcessAttachedEntities_Hook);
|
||||
|
||||
InstallCallHook(0x53EA03,(DWORD)HOOK_15);
|
||||
InstallCallHook(0x53EA03,(DWORD)CWorld__ProcessPedsAfterPreRender_Hook);
|
||||
|
||||
InstallMethodHook(0x871148,(DWORD)AllVehicles_ProcessControl_Hook); // Automobile
|
||||
InstallMethodHook(0x8721C8,(DWORD)AllVehicles_ProcessControl_Hook); // boat
|
||||
@ -306,11 +560,11 @@ void GameInstallHooks()
|
||||
InstallMethodHook(0x872398,(DWORD)AllVehicles_ProcessControl_Hook); // train
|
||||
InstallMethodHook(0x871C50,(DWORD)AllVehicles_ProcessControl_Hook);
|
||||
|
||||
InstallCallHook(0x501B1D,(DWORD)HOOK_17);
|
||||
InstallCallHook(0x501B42,(DWORD)HOOK_17);
|
||||
InstallCallHook(0x501FC2,(DWORD)HOOK_17);
|
||||
InstallCallHook(0x502067,(DWORD)HOOK_17);
|
||||
InstallCallHook(0x5021AE,(DWORD)HOOK_17);
|
||||
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);
|
||||
|
||||
// Radar and map hooks for gang zones
|
||||
InstallCallHook(0x5869BF,(DWORD)ZoneOverlay_Hook);
|
||||
@ -347,7 +601,7 @@ void GameInstallHooks()
|
||||
// Fix for 0x004D41C5 crash
|
||||
InstallCallHook(0x4D41C0, (DWORD)AnimCrashFixHook, 0xE9);
|
||||
|
||||
InstallCallHook(0x4E7427,(DWORD)HOOK_31);
|
||||
InstallCallHook(0x4E7427,(DWORD)PoliceScannerAudio_FindPlayerPed_Hook);
|
||||
|
||||
// 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));
|
||||
@ -356,108 +610,108 @@ void GameInstallHooks()
|
||||
|
||||
InstallHook(0x6A0050, (DWORD)GetText_Hook, 0x6A0043, GetText_HookJmpCode, sizeof (GetText_HookJmpCode));
|
||||
|
||||
InstallCallHook(0x6FDED6,(DWORD)HOOK_35);
|
||||
InstallCallHook(0x6FDED6,(DWORD)CCustomCarPlateMgr__CreatePlateTexture__RwRasterCreate_Hook);
|
||||
|
||||
if(iGtaVersion == GTASA_VERSION_USA10)
|
||||
{
|
||||
InstallHook(0x7FB020,(DWORD)HOOK_36,0x59C721,HOOK_36_JmpCode,sizeof(HOOK_36_JmpCode));
|
||||
InstallHook(0x7FB020,(DWORD)RwRasterDestroy_Hook,0x59C721,RwRasterDestroy_HookJmpCode,sizeof(RwRasterDestroy_HookJmpCode));
|
||||
unnamed_101516D4 = 0x7FB026;
|
||||
}
|
||||
else
|
||||
{
|
||||
InstallHook(0x7FB060,(DWORD)HOOK_36,0x59C721,HOOK_36_JmpCode,sizeof(HOOK_36_JmpCode));
|
||||
InstallHook(0x7FB060,(DWORD)RwRasterDestroy_Hook,0x59C721,RwRasterDestroy_HookJmpCode,sizeof(RwRasterDestroy_HookJmpCode));
|
||||
unnamed_101516D4 = 0x7FB066;
|
||||
}
|
||||
|
||||
InstallCallHook(0x6D0E7E,(DWORD)HOOK_37);
|
||||
InstallCallHook(0x6D0E7E,(DWORD)CVehicle__Render_Hook);
|
||||
|
||||
InstallMethodHook(0x866FA8,(DWORD)HOOK_38);
|
||||
InstallMethodHook(0x866FA8,(DWORD)CObject__Render_Hook);
|
||||
|
||||
InstallCallHook(0x586C0A,(DWORD)HOOK_39);
|
||||
InstallCallHook(0x586C0A,(DWORD)CRadar__DrawMap__FindPlayerSpeed_Hook);
|
||||
|
||||
InstallHook(0x538090,(DWORD)HOOK_40,0x538084,HOOK_40_JmpCode,sizeof(HOOK_40_JmpCode));
|
||||
InstallHook(0x538090,(DWORD)CFileLoader__LoadObjectInstance_Hook,0x538084,CFileLoader__LoadObjectInstance_HookJmpCode,sizeof(CFileLoader__LoadObjectInstance_HookJmpCode));
|
||||
|
||||
InstallCallHook(0x718599,(DWORD)HOOK_41);
|
||||
InstallCallHook(0x718599,(DWORD)CEscalator__Update_Hook);
|
||||
|
||||
InstallMethodHook(0x866F7C,(DWORD)HOOK_42);
|
||||
InstallMethodHook(0x866F7C,(DWORD)CObject__CreateRwObject_Hook);
|
||||
|
||||
InstallMethodHook(0x866F80,(DWORD)HOOK_43);
|
||||
InstallMethodHook(0x8585E8,(DWORD)HOOK_43);
|
||||
InstallMethodHook(0x866F80,(DWORD)CEntity__DeleteRwObject_Hook);
|
||||
InstallMethodHook(0x8585E8,(DWORD)CEntity__DeleteRwObject_Hook);
|
||||
|
||||
InstallMethodHook(0x871218,(DWORD)HOOK_44);
|
||||
InstallMethodHook(0x871778,(DWORD)HOOK_44);
|
||||
InstallMethodHook(0x8718D0,(DWORD)HOOK_44);
|
||||
InstallMethodHook(0x871A40,(DWORD)HOOK_44);
|
||||
InstallMethodHook(0x871BE0,(DWORD)HOOK_44);
|
||||
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);
|
||||
|
||||
InstallCallHook(0x5648D3,(DWORD)HOOK_45);
|
||||
InstallCallHook(0x5648D3,(DWORD)CWorld__ProcessAttachedEntities__PositionAttachedEntity_Hook);
|
||||
|
||||
InstallCallHook(0x53DFDD,(DWORD)HOOK_46);
|
||||
InstallCallHook(0x53DFDD,(DWORD)CRenderer__RenderEverythingBarRoads_Hook);
|
||||
|
||||
InstallCallHook(0x53E019,(DWORD)HOOK_47);
|
||||
InstallCallHook(0x53E019,(DWORD)CRenderer__RenderFadingInEntities_Hook);
|
||||
|
||||
InstallHook(0x5534B0,(DWORD)HOOK_48,0x5534A6,HOOK_48_JmpCode,sizeof(HOOK_48_JmpCode));
|
||||
InstallHook(0x5534B0,(DWORD)CRenderer__AddEntityToRenderList_Hook,0x5534A6,CRenderer__AddEntityToRenderList_HookJmpCode,sizeof(CRenderer__AddEntityToRenderList_HookJmpCode));
|
||||
|
||||
InstallCallHook(0x5342F9,(DWORD)HOOK_49);
|
||||
InstallCallHook(0x5342F9,(DWORD)CEntity__RenderEffects__RenderRoadsignAtomic_Hook);
|
||||
|
||||
InstallHook(0x4B35A0,(DWORD)HOOK_50,0x4B3433,HOOK_50_JmpCode,sizeof(HOOK_50_JmpCode));
|
||||
InstallHook(0x4B35A0,(DWORD)CEventDamage__AffectsPed_Hook,0x4B3433,CEventDamage__AffectsPed_HookJmpCode,sizeof(CEventDamage__AffectsPed_HookJmpCode));
|
||||
|
||||
InstallCallHook(0x41B02E,(DWORD)HOOK_51);
|
||||
InstallCallHook(0x41B02E,(DWORD)CCollision__BuildCacheOfCameraCollision_Hook);
|
||||
|
||||
InstallCallHook(0x41AF80,(DWORD)HOOK_52);
|
||||
InstallCallHook(0x41AF80,(DWORD)CCollision__CheckCameraCollisionVehicles_Hook);
|
||||
|
||||
InstallCallHook(0x41AB78,(DWORD)HOOK_53);
|
||||
InstallCallHook(0x41AB78,(DWORD)CWorld__CameraToIgnoreThisObject_Hook);
|
||||
|
||||
InstallMethodHook(0x871178,(DWORD)HOOK_54);
|
||||
InstallMethodHook(0x8716D8,(DWORD)HOOK_54);
|
||||
InstallMethodHook(0x8719A0,(DWORD)HOOK_54);
|
||||
InstallMethodHook(0x871B40,(DWORD)HOOK_54);
|
||||
InstallMethodHook(0x871178,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
||||
InstallMethodHook(0x8716D8,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
||||
InstallMethodHook(0x8719A0,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
||||
InstallMethodHook(0x871B40,(DWORD)CAutomobile__ProcessEntityCollision_Hook);
|
||||
|
||||
InstallMethodHook(0x8713B8,(DWORD)HOOK_55);
|
||||
InstallMethodHook(0x871580,(DWORD)HOOK_55);
|
||||
InstallMethodHook(0x8713B8,(DWORD)CBike__ProcessEntityCollision_Hook);
|
||||
InstallMethodHook(0x871580,(DWORD)CBike__ProcessEntityCollision_Hook);
|
||||
|
||||
InstallMethodHook(0x871830,(DWORD)HOOK_56);
|
||||
InstallMethodHook(0x871830,(DWORD)CMonsterTruck__ProcessEntityCollision_Hook);
|
||||
|
||||
InstallMethodHook(0x8721F8,(DWORD)HOOK_57);
|
||||
InstallMethodHook(0x8721F8,(DWORD)CPhysical__ProcessEntityCollision_Hook);
|
||||
|
||||
InstallCallHook(0x6E0954,(DWORD)HOOK_58);
|
||||
InstallCallHook(0x6B2BCB,(DWORD)HOOK_58);
|
||||
InstallCallHook(0x4F77DA,(DWORD)HOOK_58);
|
||||
InstallCallHook(0x6E0954,(DWORD)CVehicle__UsesSiren_Hook);
|
||||
InstallCallHook(0x6B2BCB,(DWORD)CVehicle__UsesSiren_Hook);
|
||||
InstallCallHook(0x4F77DA,(DWORD)CVehicle__UsesSiren_Hook);
|
||||
|
||||
InstallMethodHook(0x872A74,(DWORD)HOOK_59);
|
||||
InstallMethodHook(0x872A74,(DWORD)CAEWeatherAudioEntity__UpdateParameters_Hook);
|
||||
|
||||
InstallHook(0x5674E0,(DWORD)HOOK_60,0x5674DB,HOOK_60_JmpCode,sizeof(HOOK_60_JmpCode));
|
||||
InstallHook(0x5674E0,(DWORD)CWorld__ProcessVerticalLine_Hook,0x5674DB,CWorld__ProcessVerticalLine_HookJmpCode,sizeof(CWorld__ProcessVerticalLine_HookJmpCode));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
void unnamed_100A6FF0()
|
||||
void InstallModelInfoHackHooks()
|
||||
{
|
||||
InstallHook(0x4087EA,(DWORD)HOOK_61,0x4087D7,HOOK_61_JmpCode,sizeof(HOOK_61_JmpCode));
|
||||
InstallHook(0x4087EA,(DWORD)CStreaming__RequestModel_Hook,0x4087D7,CStreaming__RequestModel_HookJmpCode,sizeof(CStreaming__RequestModel_HookJmpCode));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
void unnamed_100A7010()
|
||||
void InstallShotSyncHooks()
|
||||
{
|
||||
InstallCallHook(0x742495,(DWORD)HOOK_62);
|
||||
InstallCallHook(0x7424EC,(DWORD)HOOK_62);
|
||||
InstallCallHook(0x742548,(DWORD)HOOK_62);
|
||||
InstallCallHook(0x742495,(DWORD)CWeapon__FireInstantHit_Hook);
|
||||
InstallCallHook(0x7424EC,(DWORD)CWeapon__FireInstantHit_Hook);
|
||||
InstallCallHook(0x742548,(DWORD)CWeapon__FireInstantHit_Hook);
|
||||
|
||||
InstallCallHook(0x740721,(DWORD)HOOK_63);
|
||||
InstallCallHook(0x740B69,(DWORD)HOOK_63);
|
||||
InstallCallHook(0x736247,(DWORD)HOOK_63);
|
||||
InstallCallHook(0x740721,(DWORD)CWorld__ProcessLineOfSight_Hook);
|
||||
InstallCallHook(0x740B69,(DWORD)CWorld__ProcessLineOfSight_Hook);
|
||||
InstallCallHook(0x736247,(DWORD)CWorld__ProcessLineOfSight_Hook);
|
||||
|
||||
InstallCallHook(0x7424CB,(DWORD)HOOK_64);
|
||||
InstallCallHook(0x7424CB,(DWORD)CWeapon__FireSniper_Hook);
|
||||
|
||||
InstallCallHook(0x73AC4B,(DWORD)HOOK_65);
|
||||
InstallCallHook(0x73AC4B,(DWORD)CBulletInfo__AddBullet_Hook);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
void unnamed_100A71C0()
|
||||
void InstallVehicleFriendyFireHooks()
|
||||
{
|
||||
InstallCallHook(0x6D7C90,(DWORD)HOOK_66,0xE9);
|
||||
InstallCallHook(0x6D7C90,(DWORD)CVehicle__InflictDamage_Hook,0xE9);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user