mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 06:50:00 +00:00
fixed some replay bugs
This commit is contained in:
parent
82c40b73ca
commit
01c95378e1
|
@ -251,4 +251,7 @@ private:
|
||||||
|
|
||||||
friend class cAudioManager;
|
friend class cAudioManager;
|
||||||
friend class CGarage;
|
friend class CGarage;
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
friend class CReplay;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
#include "DMAudio.h"
|
#include "DMAudio.h"
|
||||||
#include "Draw.h"
|
#include "Draw.h"
|
||||||
#include "FileMgr.h"
|
#include "FileMgr.h"
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
#include "Fire.h"
|
||||||
|
#include "Garages.h"
|
||||||
|
#endif
|
||||||
#include "Heli.h"
|
#include "Heli.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "Matrix.h"
|
#include "Matrix.h"
|
||||||
|
@ -22,6 +26,10 @@
|
||||||
#include "Plane.h"
|
#include "Plane.h"
|
||||||
#include "Pools.h"
|
#include "Pools.h"
|
||||||
#include "Population.h"
|
#include "Population.h"
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
#include "Projectile.h"
|
||||||
|
#include "ProjectileInfo.h"
|
||||||
|
#endif
|
||||||
#include "Replay.h"
|
#include "Replay.h"
|
||||||
#include "References.h"
|
#include "References.h"
|
||||||
#include "Pools.h"
|
#include "Pools.h"
|
||||||
|
@ -102,6 +110,11 @@ float CReplay::fDistanceLookAroundCam;
|
||||||
float CReplay::fBetaAngleLookAroundCam;
|
float CReplay::fBetaAngleLookAroundCam;
|
||||||
float CReplay::fAlphaAngleLookAroundCam;
|
float CReplay::fAlphaAngleLookAroundCam;
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
|
uint8* CReplay::pGarages;
|
||||||
|
CFire* CReplay::FireArray;
|
||||||
|
uint32 CReplay::NumOfFires;
|
||||||
|
uint8* CReplay::paProjectileInfo;
|
||||||
|
uint8* CReplay::paProjectiles;
|
||||||
int CReplay::nHandleOfPlayerPed[NUMPLAYERS];
|
int CReplay::nHandleOfPlayerPed[NUMPLAYERS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1156,6 +1169,17 @@ void CReplay::StoreStuffInMem(void)
|
||||||
if (ped)
|
if (ped)
|
||||||
StoreDetailedPedAnimation(ped, &pPedAnims[i]);
|
StoreDetailedPedAnimation(ped, &pPedAnims[i]);
|
||||||
}
|
}
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
pGarages = new uint8[sizeof(CGarages::aGarages)];
|
||||||
|
memcpy(pGarages, CGarages::aGarages, sizeof(CGarages::aGarages));
|
||||||
|
FireArray = new CFire[NUM_FIRES];
|
||||||
|
memcpy(FireArray, gFireManager.m_aFires, sizeof(gFireManager.m_aFires));
|
||||||
|
NumOfFires = gFireManager.m_nTotalFires;
|
||||||
|
paProjectileInfo = new uint8[sizeof(gaProjectileInfo)];
|
||||||
|
memcpy(paProjectileInfo, gaProjectileInfo, sizeof(gaProjectileInfo));
|
||||||
|
paProjectiles = new uint8[sizeof(CProjectileInfo::ms_apProjectile)];
|
||||||
|
memcpy(paProjectiles, CProjectileInfo::ms_apProjectile, sizeof(CProjectileInfo::ms_apProjectile));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CReplay::RestoreStuffFromMem(void)
|
void CReplay::RestoreStuffFromMem(void)
|
||||||
|
@ -1206,7 +1230,7 @@ void CReplay::RestoreStuffFromMem(void)
|
||||||
ped->m_rwObject = nil;
|
ped->m_rwObject = nil;
|
||||||
ped->m_modelIndex = -1;
|
ped->m_modelIndex = -1;
|
||||||
ped->SetModelIndex(mi);
|
ped->SetModelIndex(mi);
|
||||||
ped->m_pVehicleAnim = 0;
|
ped->m_pVehicleAnim = nil;
|
||||||
ped->m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, ped);
|
ped->m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, ped);
|
||||||
DMAudio.SetEntityStatus(ped->m_audioEntityId, true);
|
DMAudio.SetEntityStatus(ped->m_audioEntityId, true);
|
||||||
CPopulation::UpdatePedCount((ePedType)ped->m_nPedType, false);
|
CPopulation::UpdatePedCount((ePedType)ped->m_nPedType, false);
|
||||||
|
@ -1322,6 +1346,22 @@ void CReplay::RestoreStuffFromMem(void)
|
||||||
}
|
}
|
||||||
delete[] pPedAnims;
|
delete[] pPedAnims;
|
||||||
pPedAnims = nil;
|
pPedAnims = nil;
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
memcpy(CGarages::aGarages, pGarages, sizeof(CGarages::aGarages));
|
||||||
|
delete[] pGarages;
|
||||||
|
pGarages = nil;
|
||||||
|
memcpy(gFireManager.m_aFires, FireArray, sizeof(gFireManager.m_aFires));
|
||||||
|
delete[] FireArray;
|
||||||
|
FireArray = nil;
|
||||||
|
gFireManager.m_nTotalFires = NumOfFires;
|
||||||
|
memcpy(gaProjectileInfo, paProjectileInfo, sizeof(gaProjectileInfo));
|
||||||
|
delete[] paProjectileInfo;
|
||||||
|
paProjectileInfo = nil;
|
||||||
|
memcpy(CProjectileInfo::ms_apProjectile, paProjectiles, sizeof(CProjectileInfo::ms_apProjectile));
|
||||||
|
delete[] paProjectiles;
|
||||||
|
paProjectiles = nil;
|
||||||
|
//CExplosion::ClearAllExplosions(); not in III
|
||||||
|
#endif
|
||||||
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
|
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
|
||||||
DMAudio.SetRadioInCar(OldRadioStation);
|
DMAudio.SetRadioInCar(OldRadioStation);
|
||||||
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
|
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
|
||||||
|
|
|
@ -275,6 +275,11 @@ private:
|
||||||
static float fAlphaAngleLookAroundCam;
|
static float fAlphaAngleLookAroundCam;
|
||||||
static float fBetaAngleLookAroundCam;
|
static float fBetaAngleLookAroundCam;
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
|
static uint8* pGarages;
|
||||||
|
static CFire* FireArray;
|
||||||
|
static uint32 NumOfFires;
|
||||||
|
static uint8* paProjectileInfo;
|
||||||
|
static uint8* paProjectiles;
|
||||||
static int nHandleOfPlayerPed[NUMPLAYERS];
|
static int nHandleOfPlayerPed[NUMPLAYERS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,11 @@ CFire::ProcessFire(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!FindPlayerVehicle() && !FindPlayerPed()->m_pFire && !(FindPlayerPed()->bFireProof)
|
if (!FindPlayerVehicle() &&
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
FindPlayerPed() &&
|
||||||
|
#endif
|
||||||
|
!FindPlayerPed()->m_pFire && !(FindPlayerPed()->bFireProof)
|
||||||
&& ((FindPlayerPed()->GetPosition() - m_vecPos).MagnitudeSqr() < 2.0f)) {
|
&& ((FindPlayerPed()->GetPosition() - m_vecPos).MagnitudeSqr() < 2.0f)) {
|
||||||
FindPlayerPed()->DoStuffToGoOnFire();
|
FindPlayerPed()->DoStuffToGoOnFire();
|
||||||
gFireManager.StartFire(FindPlayerPed(), m_pSource, 0.8f, 1);
|
gFireManager.StartFire(FindPlayerPed(), m_pSource, 0.8f, 1);
|
||||||
|
|
|
@ -2990,9 +2990,15 @@ CPed::PedAnimStepOutCarCB(CAnimBlendAssociation* animAssoc, void* arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ped->bFleeAfterExitingCar || ped->bGonnaKillTheCarJacker) {
|
if (ped->bFleeAfterExitingCar || ped->bGonnaKillTheCarJacker) {
|
||||||
// POTENTIAL BUG? Why DOOR_FRONT_LEFT instead of door variable? or vice versa?
|
#ifdef FIX_BUGS
|
||||||
|
if (!veh->IsDoorMissing(door))
|
||||||
|
((CAutomobile*)veh)->Damage.SetDoorStatus(door, DOOR_STATUS_SWINGING);
|
||||||
|
PedSetOutCarCB(nil, ped);
|
||||||
|
return;
|
||||||
|
#else
|
||||||
if (!veh->IsDoorMissing(door))
|
if (!veh->IsDoorMissing(door))
|
||||||
((CAutomobile*)veh)->Damage.SetDoorStatus(DOOR_FRONT_LEFT, DOOR_STATUS_SWINGING);
|
((CAutomobile*)veh)->Damage.SetDoorStatus(DOOR_FRONT_LEFT, DOOR_STATUS_SWINGING);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
switch (door) {
|
switch (door) {
|
||||||
case DOOR_FRONT_LEFT:
|
case DOOR_FRONT_LEFT:
|
||||||
|
|
Loading…
Reference in a new issue