Script stuff + bug fixes
This commit is contained in:
parent
92af18c165
commit
7fae683316
@ -20,6 +20,8 @@ bool &CCamera::m_bUseMouse3rdPerson = *(bool *)0x5F03D8;
|
|||||||
|
|
||||||
WRAPPER void CCamera::DrawBordersForWideScreen(void) { EAXJMP(0x46B430); }
|
WRAPPER void CCamera::DrawBordersForWideScreen(void) { EAXJMP(0x46B430); }
|
||||||
WRAPPER void CCamera::CalculateDerivedValues(void) { EAXJMP(0x46EEA0); }
|
WRAPPER void CCamera::CalculateDerivedValues(void) { EAXJMP(0x46EEA0); }
|
||||||
|
WRAPPER void CCamera::Restore(void) { EAXJMP(0x46F990); }
|
||||||
|
WRAPPER void CCamera::SetWidescreenOff(void) { EAXJMP(0x46FF10); }
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CCamera::IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat)
|
CCamera::IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat)
|
||||||
|
@ -459,6 +459,8 @@ int m_iModeObbeCamIsInForCar;
|
|||||||
void CalculateDerivedValues(void);
|
void CalculateDerivedValues(void);
|
||||||
|
|
||||||
void DrawBordersForWideScreen(void);
|
void DrawBordersForWideScreen(void);
|
||||||
|
void Restore(void);
|
||||||
|
void SetWidescreenOff(void);
|
||||||
|
|
||||||
void dtor(void) { this->CCamera::~CCamera(); }
|
void dtor(void) { this->CCamera::~CCamera(); }
|
||||||
};
|
};
|
||||||
|
@ -33,3 +33,4 @@ WRAPPER int32 cDMAudio::CreateEntity(int, void*) { EAXJMP(0x57C7C0); }
|
|||||||
WRAPPER void cDMAudio::SetEntityStatus(int32 id, uint8 enable) { EAXJMP(0x57C810); }
|
WRAPPER void cDMAudio::SetEntityStatus(int32 id, uint8 enable) { EAXJMP(0x57C810); }
|
||||||
WRAPPER void cDMAudio::SetRadioInCar(int32) { EAXJMP(0x57CE60); }
|
WRAPPER void cDMAudio::SetRadioInCar(int32) { EAXJMP(0x57CE60); }
|
||||||
WRAPPER void cDMAudio::DestroyEntity(int32) { EAXJMP(0x57C7F0); }
|
WRAPPER void cDMAudio::DestroyEntity(int32) { EAXJMP(0x57C7F0); }
|
||||||
|
WRAPPER void cDMAudio::ClearMissionAudio(void) { EAXJMP(0x57CE20); }
|
@ -203,5 +203,6 @@ public:
|
|||||||
void SetRadioInCar(int32);
|
void SetRadioInCar(int32);
|
||||||
uint8 IsMP3RadioChannelAvailable();
|
uint8 IsMP3RadioChannelAvailable();
|
||||||
void DestroyEntity(int32);
|
void DestroyEntity(int32);
|
||||||
|
void ClearMissionAudio(void);
|
||||||
};
|
};
|
||||||
extern cDMAudio &DMAudio;
|
extern cDMAudio &DMAudio;
|
||||||
|
@ -6,6 +6,7 @@ int &CCarCtrl::NumLawEnforcerCars = *(int*)0x8F1B38;
|
|||||||
int &CCarCtrl::NumAmbulancesOnDuty = *(int*)0x885BB0;
|
int &CCarCtrl::NumAmbulancesOnDuty = *(int*)0x885BB0;
|
||||||
int &CCarCtrl::NumFiretrucksOnDuty = *(int*)0x9411F0;
|
int &CCarCtrl::NumFiretrucksOnDuty = *(int*)0x9411F0;
|
||||||
bool &CCarCtrl::bCarsGeneratedAroundCamera = *(bool*)0x95CD8A;
|
bool &CCarCtrl::bCarsGeneratedAroundCamera = *(bool*)0x95CD8A;
|
||||||
|
float& CCarCtrl::CarDensityMultiplier = *(float*)0x5EC8B4;
|
||||||
|
|
||||||
WRAPPER void CCarCtrl::SwitchVehicleToRealPhysics(CVehicle*) { EAXJMP(0x41F7F0); }
|
WRAPPER void CCarCtrl::SwitchVehicleToRealPhysics(CVehicle*) { EAXJMP(0x41F7F0); }
|
||||||
WRAPPER void CCarCtrl::AddToCarArray(int32 id, int32 vehclass) { EAXJMP(0x4182F0); }
|
WRAPPER void CCarCtrl::AddToCarArray(int32 id, int32 vehclass) { EAXJMP(0x4182F0); }
|
||||||
|
@ -14,4 +14,5 @@ public:
|
|||||||
static int32 &NumAmbulancesOnDuty;
|
static int32 &NumAmbulancesOnDuty;
|
||||||
static int32 &NumFiretrucksOnDuty;
|
static int32 &NumFiretrucksOnDuty;
|
||||||
static bool &bCarsGeneratedAroundCamera;
|
static bool &bCarsGeneratedAroundCamera;
|
||||||
|
static float &CarDensityMultiplier;
|
||||||
};
|
};
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
PedGroup *CPopulation::ms_pPedGroups = (PedGroup*)0x6E9248;
|
PedGroup *CPopulation::ms_pPedGroups = (PedGroup*)0x6E9248;
|
||||||
bool &CPopulation::ms_bGivePedsWeapons = *(bool*)0x95CCF6;
|
bool &CPopulation::ms_bGivePedsWeapons = *(bool*)0x95CCF6;
|
||||||
|
int32 &CPopulation::m_AllRandomPedsThisType = *(int32*)0x5FA570;
|
||||||
|
float &CPopulation::PedDensityMultiplier = *(float*)0x5FA56C;
|
||||||
|
|
||||||
WRAPPER void CPopulation::UpdatePedCount(uint32, bool) { EAXJMP(0x4F5A60); }
|
WRAPPER void CPopulation::UpdatePedCount(uint32, bool) { EAXJMP(0x4F5A60); }
|
||||||
WRAPPER void CPopulation::DealWithZoneChange(eLevelName oldLevel, eLevelName newLevel, bool) { EAXJMP(0x4F6200); }
|
WRAPPER void CPopulation::DealWithZoneChange(eLevelName oldLevel, eLevelName newLevel, bool) { EAXJMP(0x4F6200); }
|
||||||
|
@ -12,6 +12,8 @@ class CPopulation
|
|||||||
public:
|
public:
|
||||||
static PedGroup *ms_pPedGroups; //[31]
|
static PedGroup *ms_pPedGroups; //[31]
|
||||||
static bool &ms_bGivePedsWeapons;
|
static bool &ms_bGivePedsWeapons;
|
||||||
|
static int32 &m_AllRandomPedsThisType;
|
||||||
|
static float &PedDensityMultiplier;
|
||||||
|
|
||||||
static void UpdatePedCount(uint32, bool);
|
static void UpdatePedCount(uint32, bool);
|
||||||
static void DealWithZoneChange(eLevelName oldLevel, eLevelName newLevel, bool);
|
static void DealWithZoneChange(eLevelName oldLevel, eLevelName newLevel, bool);
|
||||||
|
@ -1572,7 +1572,7 @@ void CReplay::Display()
|
|||||||
if (Mode == MODE_RECORD)
|
if (Mode == MODE_RECORD)
|
||||||
return;
|
return;
|
||||||
counter = (counter + 1) % 65536;
|
counter = (counter + 1) % 65536;
|
||||||
if (counter & 0x20 == 0)
|
if ((counter & 0x20) == 0)
|
||||||
return;
|
return;
|
||||||
CFont::SetPropOn();
|
CFont::SetPropOn();
|
||||||
CFont::SetBackgroundOff();
|
CFont::SetBackgroundOff();
|
||||||
|
@ -3,12 +3,161 @@
|
|||||||
|
|
||||||
#include "Script.h"
|
#include "Script.h"
|
||||||
|
|
||||||
uint8 *CTheScripts::ScriptSpace = (uint8*)0x74B248;
|
#include "Camera.h"
|
||||||
CTextLine* CTheScripts::IntroTextLines = (CTextLine*)0x70EA74;
|
#include "CarCtrl.h"
|
||||||
CScriptRectangle* CTheScripts::IntroRectangles = (CScriptRectangle*)0x72D109;
|
#include "DMAudio.h"
|
||||||
CSprite2d* CTheScripts::ScriptSprites = (CSprite2d*)0x72B090;
|
#include "Hud.h"
|
||||||
bool CTheScripts::DbgFlag = *(bool*)0x95CD87;
|
#include "ModelIndices.h"
|
||||||
uint32 CTheScripts::OnAMissionFlag = *(uint32*)0x8F1B64;
|
#include "PlayerInfo.h"
|
||||||
|
#include "PlayerPed.h"
|
||||||
|
#include "Pools.h"
|
||||||
|
#include "Population.h"
|
||||||
|
#include "Streaming.h"
|
||||||
|
#include "User.h"
|
||||||
|
#include "Weather.h"
|
||||||
|
#include "World.h"
|
||||||
|
|
||||||
|
uint8 (&CTheScripts::ScriptSpace)[160 * 1024] = *(uint8(*)[160 * 1024])*(uintptr*)0x74B248;
|
||||||
|
CTextLine (&CTheScripts::IntroTextLines)[2] = *(CTextLine (*)[2])*(uintptr*)0x70EA74;
|
||||||
|
CScriptRectangle (&CTheScripts::IntroRectangles)[16] = *(CScriptRectangle (*)[16])*(uintptr*)0x72D108;
|
||||||
|
CSprite2d (&CTheScripts::ScriptSprites)[16] = *(CSprite2d(*)[16])*(uintptr*)0x72B090;
|
||||||
|
bool &CTheScripts::DbgFlag = *(bool*)0x95CD87;
|
||||||
|
uint32 &CTheScripts::OnAMissionFlag = *(uint32*)0x8F2A24;
|
||||||
|
int32 &CTheScripts::StoreVehicleIndex = *(int32*)0x8F5F3C;
|
||||||
|
bool &CTheScripts::StoreVehicleWasRandom = *(bool*)0x95CDBC;
|
||||||
|
|
||||||
|
CMissionCleanup(&CTheScripts::MissionCleanup) = *(CMissionCleanup*)0x8F2AD8;
|
||||||
|
CUpsideDownCarCheck(&CTheScripts::UpsideDownCars) = *(CUpsideDownCarCheck*)0x6EE450;
|
||||||
|
CStuckCarCheck(&CTheScripts::StuckCars) = *(CStuckCarCheck*)0x87C588;
|
||||||
|
|
||||||
|
CMissionCleanup::CMissionCleanup()
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMissionCleanup::Init()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_CLEANUP; i++){
|
||||||
|
m_sEntities[i].type = CLEANUP_UNUSED;
|
||||||
|
m_sEntities[i].id = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CMissionCleanupEntity* CMissionCleanup::FindFree()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_CLEANUP; i++){
|
||||||
|
if (m_sEntities[i].type == CLEANUP_UNUSED)
|
||||||
|
return &m_sEntities[i];
|
||||||
|
}
|
||||||
|
assert(0);
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMissionCleanup::AddEntityToList(int32 id, uint8 type)
|
||||||
|
{
|
||||||
|
CMissionCleanupEntity* pNew = FindFree();
|
||||||
|
if (!pNew)
|
||||||
|
return;
|
||||||
|
pNew->id = id;
|
||||||
|
pNew->type = type;
|
||||||
|
m_bCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMissionCleanup::RemoveEntityFromList(int32 id, uint8 type)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_CLEANUP; i++){
|
||||||
|
if (m_sEntities[i].type == type && m_sEntities[i].id == 0){
|
||||||
|
m_sEntities[i].id = 0;
|
||||||
|
m_sEntities[i].type = CLEANUP_UNUSED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMissionCleanup::Process()
|
||||||
|
{
|
||||||
|
CPopulation::m_AllRandomPedsThisType = -1;
|
||||||
|
CPopulation::PedDensityMultiplier = 1.0f;
|
||||||
|
CCarCtrl::CarDensityMultiplier = 1.0;
|
||||||
|
FindPlayerPed()->m_pWanted->m_fCrimeSensitivity = 1.0f;
|
||||||
|
TheCamera.Restore();
|
||||||
|
TheCamera.SetWidescreenOff();
|
||||||
|
DMAudio.ClearMissionAudio();
|
||||||
|
CWeather::ReleaseWeather();
|
||||||
|
for (int i = 0; i < NUM_OF_SPECIAL_CHARS; i++)
|
||||||
|
CStreaming::SetMissionDoesntRequireSpecialChar(i);
|
||||||
|
for (int i = 0; i < NUM_OF_CUTSCENE_OBJECTS; i++)
|
||||||
|
CStreaming::SetMissionDoesntRequireModel(MI_CUTOBJ01 + i);
|
||||||
|
CStreaming::ms_disableStreaming = false;
|
||||||
|
CHud::m_ItemToFlash = -1;
|
||||||
|
CHud::SetHelpMessage(nil, false);
|
||||||
|
CUserDisplay::OnscnTimer.m_bDisabled = false;
|
||||||
|
CWorld::Players[0].m_pPed->m_pWanted->m_IsIgnoredByCops = false;
|
||||||
|
CWorld::Players[0].m_pPed->m_pWanted->m_IsIgnoredByEveryOne = false;
|
||||||
|
CWorld::Players[0].MakePlayerSafe(false);
|
||||||
|
CTheScripts::StoreVehicleIndex = -1;
|
||||||
|
CTheScripts::StoreVehicleWasRandom = true;
|
||||||
|
CTheScripts::UpsideDownCars.Init();
|
||||||
|
CTheScripts::StuckCars.Init();
|
||||||
|
for (int i = 0; i < MAX_CLEANUP; i++){
|
||||||
|
if (m_sEntities[i].type == CLEANUP_UNUSED)
|
||||||
|
continue;
|
||||||
|
switch (m_sEntities[i].type) {
|
||||||
|
case CLEANUP_CAR:
|
||||||
|
{
|
||||||
|
CVehicle* v = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
|
||||||
|
if (v)
|
||||||
|
CTheScripts::CleanUpThisVehicle(v);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CLEANUP_CHAR:
|
||||||
|
{
|
||||||
|
CPed* p = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
|
||||||
|
if (p)
|
||||||
|
CTheScripts::CleanUpThisPed(p);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CLEANUP_OBJECT:
|
||||||
|
{
|
||||||
|
CObject* o = CPools::GetObjectPool()->GetAt(m_sEntities[i].id);
|
||||||
|
if (o)
|
||||||
|
CTheScripts::CleanUpThisObject(o);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CUpsideDownCarCheck::Init()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_UPSIDEDOWN_CAR_CHECKS; i++){
|
||||||
|
m_sCars[i].m_nVehicleIndex = -1;
|
||||||
|
m_sCars[i].m_nVehicleIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CStuckCarCheck::Init()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_STUCK_CAR_CHECKS; i++) {
|
||||||
|
m_sCars[i].m_nVehicleIndex = -1;
|
||||||
|
m_sCars[i].m_vecPos = CVector(-5000.0f, -5000.0f, -5000.0f);
|
||||||
|
m_sCars[i].m_nStartTime = -1;
|
||||||
|
m_sCars[i].m_fDistance = 0.0f;
|
||||||
|
m_sCars[i].m_nStuckTime = 0;
|
||||||
|
m_sCars[i].m_bStuck = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WRAPPER void CTheScripts::CleanUpThisVehicle(CVehicle*) { EAXJMP(0x4548D0); }
|
||||||
|
WRAPPER void CTheScripts::CleanUpThisPed(CPed*) { EAXJMP(0x4547A0); }
|
||||||
|
WRAPPER void CTheScripts::CleanUpThisObject(CObject*) { EAXJMP(0x454910); }
|
||||||
WRAPPER bool CTheScripts::IsPlayerOnAMission() { EAXJMP(0x439410); }
|
WRAPPER bool CTheScripts::IsPlayerOnAMission() { EAXJMP(0x439410); }
|
||||||
WRAPPER void CTheScripts::ScriptDebugLine3D(float x1, float y1, float z1, float x2, float y2, float z2, int col, int col2) { EAXJMP(0x4534E0); }
|
WRAPPER void CTheScripts::ScriptDebugLine3D(float x1, float y1, float z1, float x2, float y2, float z2, int col, int col2) { EAXJMP(0x4534E0); }
|
||||||
|
|
||||||
|
STARTPATCHES
|
||||||
|
InjectHook(0x437AE0, &CMissionCleanup::Init, PATCH_JUMP);
|
||||||
|
InjectHook(0x437BA0, &CMissionCleanup::AddEntityToList, PATCH_JUMP);
|
||||||
|
InjectHook(0x437BD0, &CMissionCleanup::RemoveEntityFromList, PATCH_JUMP);
|
||||||
|
InjectHook(0x437C10, &CMissionCleanup::Process, PATCH_JUMP);
|
||||||
|
ENDPATCHES
|
@ -1,5 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include "Ped.h"
|
||||||
|
#include "Object.h"
|
||||||
#include "Sprite2d.h"
|
#include "Sprite2d.h"
|
||||||
|
#include "Vehicle.h"
|
||||||
|
|
||||||
struct CScriptRectangle
|
struct CScriptRectangle
|
||||||
{
|
{
|
||||||
@ -32,17 +35,111 @@ struct CTextLine
|
|||||||
wchar m_awText[500];
|
wchar m_awText[500];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct CRunningScript
|
||||||
|
{
|
||||||
|
CRunningScript *next;
|
||||||
|
CRunningScript *prev;
|
||||||
|
uint8 m_abScriptName[8];
|
||||||
|
uint32 m_nIp;
|
||||||
|
uint32 m_anStack[6];
|
||||||
|
uint16 m_nStackPointer;
|
||||||
|
void* m_anLocalVariables[18];
|
||||||
|
bool m_bCondResult;
|
||||||
|
bool m_bIsMissionThread;
|
||||||
|
bool m_bSkipWakeTime;
|
||||||
|
uint32 m_nWakeTime;
|
||||||
|
uint16 m_wIfOp;
|
||||||
|
bool m_bNotFlag;
|
||||||
|
bool m_bWBCheck;
|
||||||
|
bool m_bWastedOrBusted;
|
||||||
|
bool m_bMissionFlag;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CLEANUP_UNUSED = 0,
|
||||||
|
CLEANUP_CAR,
|
||||||
|
CLEANUP_CHAR,
|
||||||
|
CLEANUP_OBJECT
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CMissionCleanupEntity
|
||||||
|
{
|
||||||
|
uint8 type;
|
||||||
|
int32 id;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MAX_CLEANUP = 50,
|
||||||
|
MAX_UPSIDEDOWN_CAR_CHECKS = 6,
|
||||||
|
MAX_STUCK_CAR_CHECKS = 6
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMissionCleanup
|
||||||
|
{
|
||||||
|
CMissionCleanupEntity m_sEntities[MAX_CLEANUP];
|
||||||
|
uint8 m_bCount;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CMissionCleanup();
|
||||||
|
|
||||||
|
void Init();
|
||||||
|
CMissionCleanupEntity* FindFree();
|
||||||
|
void AddEntityToList(int32, uint8);
|
||||||
|
void RemoveEntityFromList(int32, uint8);
|
||||||
|
void Process();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CUpsideDownCarCheckEntry
|
||||||
|
{
|
||||||
|
int32 m_nVehicleIndex;
|
||||||
|
uint32 m_nUpsideDownTimer;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CUpsideDownCarCheck
|
||||||
|
{
|
||||||
|
CUpsideDownCarCheckEntry m_sCars[MAX_UPSIDEDOWN_CAR_CHECKS];
|
||||||
|
|
||||||
|
public:
|
||||||
|
void Init();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CStuckCarCheckEntry
|
||||||
|
{
|
||||||
|
int32 m_nVehicleIndex;
|
||||||
|
CVector m_vecPos;
|
||||||
|
int32 m_nStartTime;
|
||||||
|
float m_fDistance;
|
||||||
|
uint32 m_nStuckTime;
|
||||||
|
bool m_bStuck;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CStuckCarCheck
|
||||||
|
{
|
||||||
|
CStuckCarCheckEntry m_sCars[MAX_STUCK_CAR_CHECKS];
|
||||||
|
|
||||||
|
public:
|
||||||
|
void Init();
|
||||||
|
};
|
||||||
|
|
||||||
class CTheScripts
|
class CTheScripts
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static uint8 *ScriptSpace;//[160*1024]
|
static uint8(&ScriptSpace)[160 * 1024];
|
||||||
static CTextLine* IntroTextLines;
|
static CTextLine(&IntroTextLines)[2];
|
||||||
static CScriptRectangle* IntroRectangles;
|
static CScriptRectangle(&IntroRectangles)[16];
|
||||||
static CSprite2d* ScriptSprites;
|
static CSprite2d(&ScriptSprites)[16];
|
||||||
static bool DbgFlag;
|
static bool &DbgFlag;
|
||||||
static uint32 OnAMissionFlag;
|
static uint32 &OnAMissionFlag;
|
||||||
|
static CMissionCleanup &MissionCleanup;
|
||||||
|
static CStuckCarCheck &StuckCars;
|
||||||
|
static CUpsideDownCarCheck &UpsideDownCars;
|
||||||
|
static int32 &StoreVehicleIndex;
|
||||||
|
static bool &StoreVehicleWasRandom;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static bool IsPlayerOnAMission();
|
static bool IsPlayerOnAMission();
|
||||||
static void ScriptDebugLine3D(float x1, float y1, float z1, float x2, float y2, float z2, int col, int col2);
|
static void ScriptDebugLine3D(float x1, float y1, float z1, float x2, float y2, float z2, int col, int col2);
|
||||||
|
static void CleanUpThisVehicle(CVehicle*);
|
||||||
|
static void CleanUpThisPed(CPed*);
|
||||||
|
static void CleanUpThisObject(CObject*);
|
||||||
};
|
};
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "patcher.h"
|
#include "patcher.h"
|
||||||
#include "PlayerInfo.h"
|
#include "PlayerInfo.h"
|
||||||
|
|
||||||
|
WRAPPER void CPlayerInfo::MakePlayerSafe(bool) { EAXJMP(0x4A1400); }
|
@ -65,6 +65,8 @@ public:
|
|||||||
bool m_bGetOutOfHospitalFree;
|
bool m_bGetOutOfHospitalFree;
|
||||||
uint8 m_aSkinName[32];
|
uint8 m_aSkinName[32];
|
||||||
RwTexture *m_pSkinTexture;
|
RwTexture *m_pSkinTexture;
|
||||||
|
|
||||||
|
void MakePlayerSafe(bool);
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(sizeof(CPlayerInfo) == 0x13C, "CPlayerInfo: error");
|
static_assert(sizeof(CPlayerInfo) == 0x13C, "CPlayerInfo: error");
|
||||||
|
@ -330,6 +330,12 @@ enum
|
|||||||
MI_BOMB,
|
MI_BOMB,
|
||||||
MI_FINGERS,
|
MI_FINGERS,
|
||||||
|
|
||||||
|
MI_CUTOBJ01 = 185,
|
||||||
|
MI_CUTOBJ02,
|
||||||
|
MI_CUTOBJ03,
|
||||||
|
MI_CUTOBJ04,
|
||||||
|
MI_CUTOBJ05,
|
||||||
|
|
||||||
MI_CAR_DOOR = 190,
|
MI_CAR_DOOR = 190,
|
||||||
MI_CAR_BUMPER,
|
MI_CAR_BUMPER,
|
||||||
MI_CAR_PANEL,
|
MI_CAR_PANEL,
|
||||||
@ -345,6 +351,11 @@ enum
|
|||||||
NUM_DEFAULT_MODELS,
|
NUM_DEFAULT_MODELS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum{
|
||||||
|
NUM_OF_SPECIAL_CHARS = 4,
|
||||||
|
NUM_OF_CUTSCENE_OBJECTS = 5
|
||||||
|
};
|
||||||
|
|
||||||
void InitModelIndices(void);
|
void InitModelIndices(void);
|
||||||
void MatchModelString(const char *name, int16 id);
|
void MatchModelString(const char *name, int16 id);
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ wchar *CHud::m_PagerMessage = (wchar*)0x878840;
|
|||||||
bool &CHud::m_Wants_To_Draw_Hud = *(bool*)0x95CD89;
|
bool &CHud::m_Wants_To_Draw_Hud = *(bool*)0x95CD89;
|
||||||
bool &CHud::m_Wants_To_Draw_3dMarkers = *(bool*)0x95CD62;
|
bool &CHud::m_Wants_To_Draw_3dMarkers = *(bool*)0x95CD62;
|
||||||
wchar(*CHud::m_BigMessage)[128] = (wchar(*)[128])0x664CE0;
|
wchar(*CHud::m_BigMessage)[128] = (wchar(*)[128])0x664CE0;
|
||||||
int32 CHud::m_ItemToFlash = *(int32*)0x95CC82;
|
int32 &CHud::m_ItemToFlash = *(int32*)0x95CC82;
|
||||||
|
|
||||||
// These aren't really in CHud
|
// These aren't really in CHud
|
||||||
float CHud::BigMessageInUse[6];
|
float CHud::BigMessageInUse[6];
|
||||||
|
@ -62,7 +62,7 @@ public:
|
|||||||
static bool &m_Wants_To_Draw_Hud;
|
static bool &m_Wants_To_Draw_Hud;
|
||||||
static bool &m_Wants_To_Draw_3dMarkers;
|
static bool &m_Wants_To_Draw_3dMarkers;
|
||||||
static wchar(*m_BigMessage)[128];
|
static wchar(*m_BigMessage)[128];
|
||||||
static int32 m_ItemToFlash;
|
static int32 &m_ItemToFlash;
|
||||||
|
|
||||||
// These aren't really in CHud
|
// These aren't really in CHud
|
||||||
static float BigMessageInUse[6];
|
static float BigMessageInUse[6];
|
||||||
|
Loading…
Reference in New Issue
Block a user