mirror of
https://github.com/CookiePLMonster/SilentPatch.git
synced 2024-11-22 13:32:36 +01:00
Purple Nines Glitch fix revised
This commit is contained in:
parent
e3fe830843
commit
54264b5cc4
@ -44,7 +44,6 @@ struct RwV2d
|
|||||||
static void (*DrawRect)(const CRect&,const CRGBA&);
|
static void (*DrawRect)(const CRect&,const CRGBA&);
|
||||||
static void (*SetScale)(float,float);
|
static void (*SetScale)(float,float);
|
||||||
static int* InstantHitsFiredByPlayer;
|
static int* InstantHitsFiredByPlayer;
|
||||||
static signed char* pGangModelOverrides;
|
|
||||||
static const void* HeadlightsFix_JumpBack;
|
static const void* HeadlightsFix_JumpBack;
|
||||||
|
|
||||||
|
|
||||||
@ -94,10 +93,21 @@ void SetScaleProperly(float fX, float fY)
|
|||||||
SetScale(fX * GetWidthMult() * RsGlobal->MaximumWidth, fY * GetHeightMult() * RsGlobal->MaximumHeight);
|
SetScale(fX * GetWidthMult() * RsGlobal->MaximumWidth, fY * GetHeightMult() * RsGlobal->MaximumHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CGang
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int32_t m_vehicleModel;
|
||||||
|
int8_t m_gangModelOverride;
|
||||||
|
int32_t m_gangWeapons[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
static_assert(sizeof(CGang) == 0x10, "Wrong size: CGang");
|
||||||
|
|
||||||
|
static CGang* const Gangs = *hook::get_pattern<CGang*>( "0F BF 4C 24 04 8B 44 24 08 C1 E1 04 89 81", -0x60 + 2 );
|
||||||
void PurpleNinesGlitchFix()
|
void PurpleNinesGlitchFix()
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < 9; ++i )
|
for ( size_t i = 0; i < 9; ++i )
|
||||||
pGangModelOverrides[i * 16] = -1;
|
Gangs[i].m_gangModelOverride = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool bGameInFocus = true;
|
static bool bGameInFocus = true;
|
||||||
@ -347,7 +357,6 @@ void Patch_III_10(const RECT& desktop)
|
|||||||
PrintString = (void(*)(float,float,const wchar_t*))0x500F50;
|
PrintString = (void(*)(float,float,const wchar_t*))0x500F50;
|
||||||
|
|
||||||
InstantHitsFiredByPlayer = *(int**)0x482C8F;
|
InstantHitsFiredByPlayer = *(int**)0x482C8F;
|
||||||
pGangModelOverrides = *(signed char**)0x4C405E;
|
|
||||||
bWantsToDrawHud = *(bool**)0x4A5877;
|
bWantsToDrawHud = *(bool**)0x4A5877;
|
||||||
bCamCheck = *(bool**)0x4A588C;
|
bCamCheck = *(bool**)0x4A588C;
|
||||||
RsGlobal = *(RsGlobalType**)0x584C42;
|
RsGlobal = *(RsGlobalType**)0x584C42;
|
||||||
@ -368,8 +377,6 @@ void Patch_III_10(const RECT& desktop)
|
|||||||
Patch<WORD>(0x5382BF, 0x0EEB);
|
Patch<WORD>(0x5382BF, 0x0EEB);
|
||||||
InjectHook(0x5382EC, HeadlightsFix, PATCH_JUMP);
|
InjectHook(0x5382EC, HeadlightsFix, PATCH_JUMP);
|
||||||
|
|
||||||
InjectHook(0x4C4004, PurpleNinesGlitchFix, PATCH_JUMP);
|
|
||||||
|
|
||||||
InjectHook(0x4A5870, ShowRadarTrace, PATCH_JUMP);
|
InjectHook(0x4A5870, ShowRadarTrace, PATCH_JUMP);
|
||||||
InjectHook(0x4209A7, SetScaleProperly);
|
InjectHook(0x4209A7, SetScaleProperly);
|
||||||
InjectHook(0x420A1F, SetScaleProperly);
|
InjectHook(0x420A1F, SetScaleProperly);
|
||||||
@ -511,7 +518,6 @@ void Patch_III_11(const RECT& desktop)
|
|||||||
PrintString = (void(*)(float,float,const wchar_t*))0x501030;
|
PrintString = (void(*)(float,float,const wchar_t*))0x501030;
|
||||||
|
|
||||||
InstantHitsFiredByPlayer = *(int**)0x482D5F;
|
InstantHitsFiredByPlayer = *(int**)0x482D5F;
|
||||||
pGangModelOverrides = *(signed char**)0x4C40FE;
|
|
||||||
bWantsToDrawHud = *(bool**)0x4A5967;
|
bWantsToDrawHud = *(bool**)0x4A5967;
|
||||||
bCamCheck = *(bool**)0x4A597C;
|
bCamCheck = *(bool**)0x4A597C;
|
||||||
RsGlobal = *(RsGlobalType**)0x584F82;
|
RsGlobal = *(RsGlobalType**)0x584F82;
|
||||||
@ -532,8 +538,6 @@ void Patch_III_11(const RECT& desktop)
|
|||||||
Patch<WORD>(0x5384FF, 0x0EEB);
|
Patch<WORD>(0x5384FF, 0x0EEB);
|
||||||
InjectHook(0x53852C, HeadlightsFix, PATCH_JUMP);
|
InjectHook(0x53852C, HeadlightsFix, PATCH_JUMP);
|
||||||
|
|
||||||
InjectHook(0x4C40A4, PurpleNinesGlitchFix, PATCH_JUMP);
|
|
||||||
|
|
||||||
InjectHook(0x4A5960, ShowRadarTrace, PATCH_JUMP);
|
InjectHook(0x4A5960, ShowRadarTrace, PATCH_JUMP);
|
||||||
InjectHook(0x4209A7, SetScaleProperly);
|
InjectHook(0x4209A7, SetScaleProperly);
|
||||||
InjectHook(0x420A1F, SetScaleProperly);
|
InjectHook(0x420A1F, SetScaleProperly);
|
||||||
@ -654,7 +658,6 @@ void Patch_III_Steam(const RECT& desktop)
|
|||||||
PrintString = (void(*)(float,float,const wchar_t*))0x500FC0;
|
PrintString = (void(*)(float,float,const wchar_t*))0x500FC0;
|
||||||
|
|
||||||
InstantHitsFiredByPlayer = *(int**)0x482D5F;
|
InstantHitsFiredByPlayer = *(int**)0x482D5F;
|
||||||
pGangModelOverrides = *(signed char**)0x4C408E;
|
|
||||||
bWantsToDrawHud = *(bool**)0x4A58F7;
|
bWantsToDrawHud = *(bool**)0x4A58F7;
|
||||||
bCamCheck = *(bool**)0x4A590C;
|
bCamCheck = *(bool**)0x4A590C;
|
||||||
RsGlobal = *(RsGlobalType**)0x584E72;
|
RsGlobal = *(RsGlobalType**)0x584E72;
|
||||||
@ -671,8 +674,6 @@ void Patch_III_Steam(const RECT& desktop)
|
|||||||
|
|
||||||
Patch<BYTE>(0x544C94, 127);
|
Patch<BYTE>(0x544C94, 127);
|
||||||
|
|
||||||
InjectHook(0x4C4034, PurpleNinesGlitchFix, PATCH_JUMP);
|
|
||||||
|
|
||||||
InjectHook(0x4A58F0, ShowRadarTrace, PATCH_JUMP);
|
InjectHook(0x4A58F0, ShowRadarTrace, PATCH_JUMP);
|
||||||
InjectHook(0x4209A7, SetScaleProperly);
|
InjectHook(0x4209A7, SetScaleProperly);
|
||||||
InjectHook(0x420A1F, SetScaleProperly);
|
InjectHook(0x420A1F, SetScaleProperly);
|
||||||
@ -780,6 +781,12 @@ void Patch_III_Common()
|
|||||||
using namespace Memory;
|
using namespace Memory;
|
||||||
using namespace hook;
|
using namespace hook;
|
||||||
|
|
||||||
|
// Purple Nines Glitch fix
|
||||||
|
{
|
||||||
|
auto addr = get_pattern( "0F BF 4C 24 04 8B 44 24 08 C1 E1 04 89 81", -0xC );
|
||||||
|
InjectHook( addr, PurpleNinesGlitchFix, PATCH_JUMP );
|
||||||
|
}
|
||||||
|
|
||||||
// New timers fix
|
// New timers fix
|
||||||
{
|
{
|
||||||
auto hookPoint = pattern( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08" ).get_one();
|
auto hookPoint = pattern( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08" ).get_one();
|
||||||
|
Loading…
Reference in New Issue
Block a user