From 5e77e9d0ea10e783985be42cf67f29cd2f3876df Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 27 Oct 2019 12:51:09 +0300 Subject: script 600-699 --- src/core/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/config.h b/src/core/config.h index 12cb7be8..ae9e2ea4 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -162,6 +162,6 @@ enum Config { // Peds #define ANIMATE_PED_COL_MODEL -#define VC_PED_PORTS +//#define VC_PED_PORTS #define NEW_WALK_AROUND_ALGORITHM #define CANCELLABLE_CAR_ENTER -- cgit v1.2.3 From cc9a49d061bc1231c32a6794322c9a07fd27973c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 9 Nov 2019 16:44:17 +0300 Subject: script stubs --- src/core/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/config.h b/src/core/config.h index ae9e2ea4..12cb7be8 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -162,6 +162,6 @@ enum Config { // Peds #define ANIMATE_PED_COL_MODEL -//#define VC_PED_PORTS +#define VC_PED_PORTS #define NEW_WALK_AROUND_ALGORITHM #define CANCELLABLE_CAR_ENTER -- cgit v1.2.3 From 80453d3f4ddc13f8458e14353c318a69cfe10518 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 1 Jan 2020 02:35:54 +0300 Subject: some not fully tested stuff --- src/core/Fire.cpp | 17 +++++++++++++++-- src/core/Fire.h | 9 ++++++++- src/core/Stats.cpp | 15 +++++++++++++++ src/core/Stats.h | 16 ++++++++++++++++ 4 files changed, 54 insertions(+), 3 deletions(-) (limited to 'src/core') diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp index 0317ccbe..274c06a5 100644 --- a/src/core/Fire.cpp +++ b/src/core/Fire.cpp @@ -6,6 +6,13 @@ CFireManager &gFireManager = *(CFireManager*)0x8F31D0; WRAPPER void CFire::Extinguish(void) { EAXJMP(0x479D40); } +uint32 CFireManager::GetTotalActiveFires() const +{ + return m_nTotalFires; +} + +WRAPPER void CFireManager::Update(void) { EAXJMP(0x479310); } + CFire* CFireManager::FindNearestFire(CVector vecPos, float* pDistance) { for (int i = 0; i < MAX_FIREMEN_ATTENDING; i++) { @@ -31,6 +38,12 @@ CFire* CFireManager::FindNearestFire(CVector vecPos, float* pDistance) return nil; } -WRAPPER void CFireManager::StartFire(CEntity *entityOnFire, CEntity *culprit, float, uint32) { EAXJMP(0x479590); } -WRAPPER void CFireManager::Update(void) { EAXJMP(0x479310); } WRAPPER CFire *CFireManager::FindFurthestFire_NeverMindFireMen(CVector coors, float, float) { EAXJMP(0x479430); } +WRAPPER void CFireManager::StartFire(CEntity *entityOnFire, CEntity *culprit, float, uint32) { EAXJMP(0x479590); } +WRAPPER void CFireManager::StartFire(CVector, float, uint8) { EAXJMP(0x479500); } +WRAPPER void CFireManager::ExtinguishPoint(CVector, float) { EAXJMP(0x479DB0); } +WRAPPER int32 CFireManager::StartScriptFire(const CVector& pos, CEntity* culprit, float, uint8) { EAXJMP(0x479E60); } +WRAPPER bool CFireManager::IsScriptFireExtinguish(int16) { EAXJMP(0x479FC0); } +WRAPPER void CFireManager::RemoveScriptFire(int16) { EAXJMP(0x479FE0); } +WRAPPER void CFireManager::RemoveAllScriptFires(void) { EAXJMP(0x47A000); } +WRAPPER void CFireManager::SetScriptFireAudio(int16, bool) { EAXJMP(0x47A040); } diff --git a/src/core/Fire.h b/src/core/Fire.h index c752b2a6..9d72179e 100644 --- a/src/core/Fire.h +++ b/src/core/Fire.h @@ -31,9 +31,16 @@ class CFireManager CFire m_aFires[NUM_FIRES]; public: void StartFire(CEntity *entityOnFire, CEntity *culprit, float, uint32); + void StartFire(CVector, float, uint8); void Update(void); CFire *FindFurthestFire_NeverMindFireMen(CVector coors, float, float); CFire *FindNearestFire(CVector, float*); - uint32 GetTotalActiveFires() const { return m_nTotalFires; } + uint32 GetTotalActiveFires() const; + void ExtinguishPoint(CVector, float); + int32 StartScriptFire(const CVector& pos, CEntity* culprit, float, uint8); + bool IsScriptFireExtinguish(int16); + void RemoveScriptFire(int16); + void RemoveAllScriptFires(void); + void SetScriptFireAudio(int16, bool); }; extern CFireManager &gFireManager; diff --git a/src/core/Stats.cpp b/src/core/Stats.cpp index 9641e8f0..5d2401ed 100644 --- a/src/core/Stats.cpp +++ b/src/core/Stats.cpp @@ -12,6 +12,21 @@ int32 *CStats::PedsKilledOfThisType = (int32*)0x880DBC; int32 &CStats::TimesDied = *(int32*)0x8E2BDC; int32 &CStats::TimesArrested = *(int32*)0x8E2BEC; int32 &CStats::KillsSinceLastCheckpoint = *(int32*)0x8F2C8C; +int32 &CStats::ProgressMade = *(int32*)0x8F6224; +int32 &CStats::TotalProgressInGame = *(int32*)0x885B2C; +float &CStats::MaximumJumpDistance = *(float*)0x8F2BDC; +float &CStats::MaximumJumpHeight = *(float*)0x940564; +int32 &CStats::MaximumJumpFlips = *(int32*)0x8F2524; +int32 &CStats::MaximumJumpSpins = *(int32*)0x8F29B0; +int32 &CStats::BestStuntJump = *(int32*)0x885B50; +int32 &CStats::NumberOfUniqueJumpsFound = *(int32*)0x885B74; +int32 &CStats::TotalNumberOfUniqueJumps = *(int32*)0x8E2DC0; +int32 &CStats::PassengersDroppedOffWithTaxi = *(int32*)0x940724; +int32 &CStats::MoneyMadeWithTaxi = *(int32*)0x941544; +int32 &CStats::MissionsGiven = *(int32*)0x9430E8; +int32 &CStats::MissionsPassed = *(int32*)0x940768; +char(&CStats::LastMissionPassedName)[8] = *(char(*)[8])*(uintptr*)0x70D828; +int32 &CStats::TotalLegitimateKills = *(int32*)0x8F6004; void CStats::AnotherKillFrenzyPassed() { diff --git a/src/core/Stats.h b/src/core/Stats.h index 7bae8c51..22f0c68a 100644 --- a/src/core/Stats.h +++ b/src/core/Stats.h @@ -14,8 +14,24 @@ public: static int32 &TimesDied; static int32 &TimesArrested; static int32 &KillsSinceLastCheckpoint; + static int32 &ProgressMade; + static int32 &TotalProgressInGame; + static float &MaximumJumpDistance; + static float &MaximumJumpHeight; + static int32 &MaximumJumpFlips; + static int32 &MaximumJumpSpins; + static int32 &BestStuntJump; + static int32 &NumberOfUniqueJumpsFound; + static int32 &TotalNumberOfUniqueJumps; + static int32 &PassengersDroppedOffWithTaxi; + static int32 &MoneyMadeWithTaxi; + static int32 &MissionsGiven; + static int32 &MissionsPassed; + static char (&LastMissionPassedName)[8]; + static int32 &TotalLegitimateKills; public: static void AnotherKillFrenzyPassed(); static void CheckPointReachedUnsuccessfully() { KillsSinceLastCheckpoint = 0; }; + static void CheckPointReachedSuccessfully() { TotalLegitimateKills += KillsSinceLastCheckpoint; KillsSinceLastCheckpoint = 0; }; }; \ No newline at end of file -- cgit v1.2.3 From 90233baffe1d394b2c9ab5203c828b2e3bf151e9 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 1 Jan 2020 02:44:13 +0300 Subject: fix merge --- src/core/Fire.h | 1 - 1 file changed, 1 deletion(-) (limited to 'src/core') diff --git a/src/core/Fire.h b/src/core/Fire.h index cd6de90c..f74ddabe 100644 --- a/src/core/Fire.h +++ b/src/core/Fire.h @@ -42,6 +42,5 @@ public: void RemoveScriptFire(int16); void RemoveAllScriptFires(void); void SetScriptFireAudio(int16, bool); - void ExtinguishPoint(CVector, float); }; extern CFireManager &gFireManager; -- cgit v1.2.3 From 402ecd63052cd3f9c4987d896d6c11e926a6f485 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 1 Jan 2020 02:55:00 +0300 Subject: fix merge with upstream --- src/core/Fire.cpp | 4 ---- src/core/Fire.h | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) (limited to 'src/core') diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp index 5c777eab..f83ad2c8 100644 --- a/src/core/Fire.cpp +++ b/src/core/Fire.cpp @@ -5,7 +5,6 @@ CFireManager &gFireManager = *(CFireManager*)0x8F31D0; WRAPPER void CFire::Extinguish(void) { EAXJMP(0x479D40); } -WRAPPER void CFireManager::StartFire(CEntity* entityOnFire, CEntity* culprit, float, uint32) { EAXJMP(0x479590); } WRAPPER void CFireManager::Update(void) { EAXJMP(0x479310); } WRAPPER CFire* CFireManager::FindFurthestFire_NeverMindFireMen(CVector coors, float, float) { EAXJMP(0x479430); } @@ -14,8 +13,6 @@ uint32 CFireManager::GetTotalActiveFires() const return m_nTotalFires; } -WRAPPER void CFireManager::Update(void) { EAXJMP(0x479310); } - CFire* CFireManager::FindNearestFire(CVector vecPos, float* pDistance) { for (int i = 0; i < MAX_FIREMEN_ATTENDING; i++) { @@ -52,7 +49,6 @@ CFireManager::ExtinguishPoint(CVector point, float range) } } -WRAPPER CFire *CFireManager::FindFurthestFire_NeverMindFireMen(CVector coors, float, float) { EAXJMP(0x479430); } WRAPPER void CFireManager::StartFire(CEntity *entityOnFire, CEntity *culprit, float, uint32) { EAXJMP(0x479590); } WRAPPER void CFireManager::StartFire(CVector, float, uint8) { EAXJMP(0x479500); } WRAPPER int32 CFireManager::StartScriptFire(const CVector& pos, CEntity* culprit, float, uint8) { EAXJMP(0x479E60); } diff --git a/src/core/Fire.h b/src/core/Fire.h index f74ddabe..9d72179e 100644 --- a/src/core/Fire.h +++ b/src/core/Fire.h @@ -35,7 +35,7 @@ public: void Update(void); CFire *FindFurthestFire_NeverMindFireMen(CVector coors, float, float); CFire *FindNearestFire(CVector, float*); - uint32 GetTotalActiveFires() const { return m_nTotalFires; } + uint32 GetTotalActiveFires() const; void ExtinguishPoint(CVector, float); int32 StartScriptFire(const CVector& pos, CEntity* culprit, float, uint8); bool IsScriptFireExtinguish(int16); -- cgit v1.2.3 From 42ff0f7c586b6700dea7729e9f4e1fa5bd42fc96 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 1 Jan 2020 23:55:01 +0300 Subject: bug fixes --- src/core/ZoneCull.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/core') diff --git a/src/core/ZoneCull.cpp b/src/core/ZoneCull.cpp index 6d33a1cf..6b04c213 100644 --- a/src/core/ZoneCull.cpp +++ b/src/core/ZoneCull.cpp @@ -134,14 +134,16 @@ CCullZones::FindAttributesForCoors(CVector coors, int32 *wantedLevel) int i; int32 attribs; + if (wantedLevel) + *wantedLevel = 0; attribs = 0; for(i = 0; i < NumAttributeZones; i++) if(coors.x >= aAttributeZones[i].minx && coors.x <= aAttributeZones[i].maxx && coors.y >= aAttributeZones[i].miny && coors.y <= aAttributeZones[i].maxy && coors.z >= aAttributeZones[i].minz && coors.z <= aAttributeZones[i].maxz){ attribs |= aAttributeZones[i].attributes; - if(wantedLevel && *wantedLevel <= aAttributeZones[i].wantedLevel) - *wantedLevel = aAttributeZones[i].wantedLevel; + if(wantedLevel) + *wantedLevel = max(*wantedLevel, aAttributeZones[i].wantedLevel); } return attribs; } -- cgit v1.2.3 From 0723dade768ad6118db00c7bb908f39949fb7970 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 3 Jan 2020 19:48:13 +0300 Subject: script 800-899 --- src/core/Camera.cpp | 10 ++++++++++ src/core/Camera.h | 3 +++ src/core/Explosion.cpp | 1 + src/core/Explosion.h | 1 + src/core/Stats.cpp | 1 + src/core/Stats.h | 1 + src/core/World.cpp | 8 ++++++-- src/core/World.h | 6 ++++++ src/core/config.h | 1 + 9 files changed, 30 insertions(+), 2 deletions(-) (limited to 'src/core') diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 3ab7d742..1aee4edb 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -33,6 +33,8 @@ WRAPPER void CCamera::LoadPathSplines(int file) { EAXJMP(0x46D1D0); } WRAPPER uint32 CCamera::GetCutSceneFinishTime(void) { EAXJMP(0x46B920); } WRAPPER void CCamera::FinishCutscene(void) { EAXJMP(0x46B560); } WRAPPER void CCamera::RestoreWithJumpCut(void) { EAXJMP(0x46FAE0); }; +WRAPPER void CCamera::SetZoomValueFollowPedScript(int16) { EAXJMP(0x46FF30); } +WRAPPER void CCamera::SetZoomValueCamStringScript(int16) { EAXJMP(0x46FF90); } bool CCamera::GetFading() @@ -1357,6 +1359,14 @@ void CCamera::SetCameraDirectlyInFrontForFollowPed_CamOnAString() m_PedOrientForBehindOrInFront = CGeneral::GetATanOfXY(player->GetForward().x, player->GetForward().y); } +void CCamera::SetCameraDirectlyBehindForFollowPed_CamOnAString() +{ + m_bCamDirectlyBehind = true; + CPlayerPed *player = FindPlayerPed(); + if (player) + m_PedOrientForBehindOrInFront = CGeneral::GetATanOfXY(player->GetForward().x, player->GetForward().y); +} + void CCamera::SetWideScreenOn(void) { diff --git a/src/core/Camera.h b/src/core/Camera.h index 46c25436..81eaa84f 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -491,6 +491,9 @@ int m_iModeObbeCamIsInForCar; void TakeControlWithSpline(short); void RestoreWithJumpCut(void); void SetCameraDirectlyInFrontForFollowPed_CamOnAString(void); + void SetCameraDirectlyBehindForFollowPed_CamOnAString(void); + void SetZoomValueFollowPedScript(int16); + void SetZoomValueCamStringScript(int16); void dtor(void) { this->CCamera::~CCamera(); } }; diff --git a/src/core/Explosion.cpp b/src/core/Explosion.cpp index 30809dc9..7a8878f6 100644 --- a/src/core/Explosion.cpp +++ b/src/core/Explosion.cpp @@ -4,6 +4,7 @@ WRAPPER void CExplosion::AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type, const CVector &pos, uint32) { EAXJMP(0x5591C0); } WRAPPER void CExplosion::RemoveAllExplosionsInArea(CVector, float) { EAXJMP(0x55AD40); } +WRAPPER bool CExplosion::TestForExplosionInArea(eExplosionType, float, float, float, float, float, float) { EAXJMP(0x55AC80); } WRAPPER int8 CExplosion::GetExplosionActiveCounter(uint8 id) diff --git a/src/core/Explosion.h b/src/core/Explosion.h index 0768bbe4..e85f7892 100644 --- a/src/core/Explosion.h +++ b/src/core/Explosion.h @@ -28,4 +28,5 @@ public: static uint8 GetExplosionType(uint8 id); static void ResetExplosionActiveCounter(uint8 id); static void RemoveAllExplosionsInArea(CVector, float); + static bool TestForExplosionInArea(eExplosionType, float, float, float, float, float, float); }; diff --git a/src/core/Stats.cpp b/src/core/Stats.cpp index 17c3d9d7..fd6ba602 100644 --- a/src/core/Stats.cpp +++ b/src/core/Stats.cpp @@ -5,6 +5,7 @@ int32 &CStats::DaysPassed = *(int32*)0x8F2BB8; int32 &CStats::HeadsPopped = *(int32*)0x8F647C; bool& CStats::CommercialPassed = *(bool*)0x8F4334; bool& CStats::IndustrialPassed = *(bool*)0x8E2A68; +bool& CStats::SuburbanPassed = *(bool*)0x8F2740; int32 &CStats::NumberKillFrenziesPassed = *(int32*)0x8E287C; int32 &CStats::PeopleKilledByOthers = *(int32*)0x8E2C50; int32 &CStats::HelisDestroyed = *(int32*)0x8E2A64; diff --git a/src/core/Stats.h b/src/core/Stats.h index add4320b..8feb3c13 100644 --- a/src/core/Stats.h +++ b/src/core/Stats.h @@ -7,6 +7,7 @@ public: static int32 &HeadsPopped; static bool& CommercialPassed; static bool& IndustrialPassed; + static bool& SuburbanPassed; static int32 &NumberKillFrenziesPassed; static int32 &PeopleKilledByOthers; static int32 &HelisDestroyed; diff --git a/src/core/World.cpp b/src/core/World.cpp index dac64970..0b389e42 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -44,6 +44,10 @@ WRAPPER void CWorld::RemoveStaticObjects() { EAXJMP(0x4B4D50); } WRAPPER void CWorld::RemoveReferencesToDeletedObject(CEntity*) { EAXJMP(0x4B3BF0); } WRAPPER void CWorld::FindObjectsKindaColliding(const CVector &, float, bool, int16*, int16, CEntity **, bool, bool, bool, bool, bool){ EAXJMP(0x4B2A30); } WRAPPER void CWorld::ClearExcitingStuffFromArea(const CVector &pos, float radius, uint8) { EAXJMP(0x4B4E70) }; +WRAPPER void CWorld::FindObjectsIntersectingCube(const CVector &, const CVector &, int16*, int16, CEntity **, bool, bool, bool, bool, bool) { EAXJMP(0x4B2E70); } +WRAPPER void CWorld::FindObjectsIntersectingAngledCollisionBox(const CColBox &, const CMatrix &, const CVector &, float, float, float, float, int16*, int16, CEntity **, bool, bool, bool, bool, bool) { EAXJMP(0x4B3280); } +WRAPPER void CWorld::FindObjectsOfTypeInRange(uint32, CVector&, float, bool, short*, short, CEntity**, bool, bool, bool, bool, bool) { EAXJMP(0x4B2600); } +WRAPPER void CWorld::FindObjectsOfTypeInRangeSectorList(uint32, CPtrList&, CVector&, float, bool, short*, short, CEntity**) { EAXJMP(0x4B2960); } void CWorld::Initialise() @@ -960,7 +964,7 @@ CWorld::RemoveFallenPeds(void) for(int poolIndex = poolSize-1; poolIndex >= 0; poolIndex--) { CPed *ped = CPools::GetPedPool()->GetSlot(poolIndex); if (ped) { - if (ped->GetPosition().z < -100.0f) { + if (ped->GetPosition().z < MAP_Z_LOW_LIMIT) { if (ped->CharCreatedBy != RANDOM_CHAR || ped->IsPlayer()) { int closestNode = ThePaths.FindNodeClosestToCoors(ped->GetPosition(), PATH_PED, 999999.9f, false, false); CVector newPos = ThePaths.m_pathNodes[closestNode].pos; @@ -982,7 +986,7 @@ CWorld::RemoveFallenCars(void) for (int poolIndex = poolSize - 1; poolIndex >= 0; poolIndex--) { CVehicle* veh = CPools::GetVehiclePool()->GetSlot(poolIndex); if (veh) { - if (veh->GetPosition().z < -100.0f) { + if (veh->GetPosition().z < MAP_Z_LOW_LIMIT) { if (veh->VehicleCreatedBy == MISSION_VEHICLE || veh == FindPlayerVehicle() || (veh->pDriver && veh->pDriver->IsPlayer())) { int closestNode = ThePaths.FindNodeClosestToCoors(veh->GetPosition(), PATH_CAR, 999999.9f, false, false); CVector newPos = ThePaths.m_pathNodes[closestNode].pos; diff --git a/src/core/World.h b/src/core/World.h index 119c6324..61a44ea0 100644 --- a/src/core/World.h +++ b/src/core/World.h @@ -22,6 +22,8 @@ #define WORLD_MAX_X (WORLD_MIN_X + WORLD_SIZE_X) #define WORLD_MAX_Y (WORLD_MIN_Y + WORLD_SIZE_Y) +#define MAP_Z_LOW_LIMIT -100.0f + enum { ENTITYLIST_BUILDINGS, @@ -103,11 +105,15 @@ public: static CEntity *TestSphereAgainstSectorList(CPtrList&, CVector, float, CEntity*, bool); static void FindObjectsInRangeSectorList(CPtrList&, CVector&, float, bool, short*, short, CEntity**); static void FindObjectsInRange(CVector&, float, bool, short*, short, CEntity**, bool, bool, bool, bool, bool); + static void FindObjectsOfTypeInRangeSectorList(uint32, CPtrList&, CVector&, float, bool, short*, short, CEntity**); + static void FindObjectsOfTypeInRange(uint32, CVector&, float, bool, short*, short, CEntity**, bool, bool, bool, bool, bool); static float FindGroundZForCoord(float x, float y); static float FindGroundZFor3DCoord(float x, float y, float z, bool *found); static float FindRoofZFor3DCoord(float x, float y, float z, bool *found); static void RemoveReferencesToDeletedObject(CEntity*); static void FindObjectsKindaColliding(const CVector &, float, bool, int16*, int16, CEntity **, bool, bool, bool, bool, bool); + static void FindObjectsIntersectingCube(const CVector &, const CVector &, int16*, int16, CEntity **, bool, bool, bool, bool, bool); + static void FindObjectsIntersectingAngledCollisionBox(const CColBox &, const CMatrix &, const CVector &, float, float, float, float, int16*, int16, CEntity **, bool, bool, bool, bool, bool); static float GetSectorX(float f) { return ((f - WORLD_MIN_X)/SECTOR_SIZE_X); } static float GetSectorY(float f) { return ((f - WORLD_MIN_Y)/SECTOR_SIZE_Y); } diff --git a/src/core/config.h b/src/core/config.h index 166c2a68..80176fca 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -85,6 +85,7 @@ enum Config { NUM_ACCIDENTS = 20, NUM_FIRES = 40, + NUM_GARAGES = 32, NUMPEDROUTES = 200, NUMPHONES = 50, -- cgit v1.2.3