Skip to content

Commit 1729b5c

Browse files
Merge pull request #280 from Adi23041999/master
III Zones fix wrong address & add more functions
2 parents 80aceab + 1453a2b commit 1729b5c

File tree

2 files changed

+88
-1
lines changed

2 files changed

+88
-1
lines changed

plugin_III/game_III/CTheZones.cpp

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@
66
*/
77
#include "CTheZones.h"
88

9+
CZone* CTheZones::GetZone(unsigned short i) {
10+
return plugin::CallAndReturn<CZone*, 0x4B6FA0, unsigned short>(i);
11+
}
12+
13+
bool CTheZones::ZoneIsEntirelyContainedWithinOtherZone(CZone* z1, CZone* z2) {
14+
return plugin::CallAndReturn<bool, 0x4B65F0, CZone*, CZone*>(z1, z2);
15+
}
16+
17+
bool CTheZones::PointLiesWithinZone(const CVector* point, CZone* zone) {
18+
return plugin::CallAndReturn<bool, 0x4B6710, const CVector*, CZone*>(point, zone);
19+
}
20+
921
CZone* CTheZones::FindSmallestZonePosition(CVector const& pos) {
1022
return plugin::CallAndReturn<CZone*, 0x4B69B0, CVector const&>(pos);
1123
}
@@ -14,14 +26,68 @@ CZone* CTheZones::FindSmallestZonePositionType(CVector const& pos, int type) {
1426
return plugin::CallAndReturn<CZone*, 0x4B6790, CVector const&, int>(pos, type);
1527
}
1628

29+
CZone* CTheZones::FindSmallestZonePositionILN(CVector const& pos) {
30+
return plugin::CallAndReturn<CZone*, 0x4B6890, CVector const&>(pos);
31+
}
32+
33+
unsigned short CTheZones::FindZoneByLabelAndReturnIndex(char* name) {
34+
return plugin::CallAndReturn<unsigned short, 0x4B6800, char*>(name);
35+
}
36+
1737
CZoneInfo* CTheZones::GetZoneInfo(CVector const& pos, bool day) {
1838
return plugin::CallAndReturn<CZoneInfo*, 0x4B6A10, CVector const&, char>(pos, day);
1939
}
2040

2141
void CTheZones::GetZoneInfoForTimeOfDay(const CVector* pos, CZoneInfo* info) {
22-
plugin::Call<0x4B69B0, const CVector*, CZoneInfo*>(pos, info);
42+
plugin::Call<0x4B6FB0, const CVector*, CZoneInfo*>(pos, info);
2343
}
2444

2545
int32_t CTheZones::GetLevelFromPosition(CVector const& pos) {
2646
return plugin::CallAndReturn<int32_t, 0x4B6910, CVector const&>(pos);
2747
}
48+
49+
void CTheZones::SetZoneCarInfo(int zoneid, unsigned char day, short carDensity,
50+
short gang0Num, short gang1Num, short gang2Num,
51+
short gang3Num, short gang4Num, short gang5Num,
52+
short gang6Num, short gang7Num, short gang8Num,
53+
short copNum,
54+
short car0Num, short car1Num, short car2Num,
55+
short car3Num, short car4Num, short car5Num)
56+
{
57+
return plugin::Call<0x4B6A50, int, unsigned char, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short>
58+
(
59+
zoneid, day, carDensity,
60+
gang0Num, gang1Num, gang2Num,
61+
gang3Num, gang4Num, gang5Num,
62+
gang6Num, gang7Num, gang8Num,
63+
copNum,
64+
car0Num, car1Num, car2Num,
65+
car3Num, car4Num, car5Num
66+
);
67+
}
68+
69+
void CTheZones::SetZonePedInfo(int zoneid, char day, short pedDensity,
70+
short gang0Density, short gang1Density, short gang2Density, short gang3Density,
71+
short gang4Density, short gang5Density, short gang6Density, short gang7Density,
72+
short gang8Density, short copDensity)
73+
{
74+
return plugin::Call<0x4B6DC0, int, char, short, short, short, short, short, short, short, short, short, short, short>
75+
(
76+
zoneid, day, pedDensity,
77+
gang0Density, gang1Density, gang2Density, gang3Density,
78+
gang4Density, gang5Density, gang6Density, gang7Density,
79+
gang8Density, copDensity
80+
);
81+
}
82+
83+
void CTheZones::SetCarDensity(unsigned short zoneid, unsigned char day, unsigned short cardensity) {
84+
return plugin::Call<0x4B6EB0, unsigned short, unsigned char, unsigned short>(zoneid, day, cardensity);
85+
}
86+
87+
void CTheZones::SetPedDensity(unsigned short zoneid, unsigned char day, unsigned short peddensity) {
88+
return plugin::Call<0x4B6F00, unsigned short, unsigned char, unsigned short>(zoneid, day, peddensity);
89+
}
90+
91+
eLevelName CTheZones::FindZoneForPoint(const CVector& pos) {
92+
return plugin::CallAndReturn<eLevelName, 0x4B8430, const CVector&>(pos);
93+
}

plugin_III/game_III/CTheZones.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,30 @@
1313

1414
class PLUGIN_API CTheZones {
1515
public:
16+
static CZone* GetZone(unsigned short i);
17+
static bool ZoneIsEntirelyContainedWithinOtherZone(CZone* z1, CZone* z2);
18+
static bool PointLiesWithinZone(const CVector* point, CZone* zone);
1619
static CZone* FindSmallestZonePosition(CVector const& pos);
1720
static CZone* FindSmallestZonePositionType(CVector const& pos, int type);
21+
static CZone* FindSmallestZonePositionILN(CVector const& pos);
22+
static unsigned short FindZoneByLabelAndReturnIndex(char* name);
1823
static CZoneInfo* GetZoneInfo(CVector const& pos, bool day);
1924
static void GetZoneInfoForTimeOfDay(const CVector* pos, CZoneInfo* info);
2025
static int32_t GetLevelFromPosition(CVector const& pos);
26+
static void SetZoneCarInfo(int zoneid, unsigned char day, short carDensity,
27+
short gang0Num, short gang1Num, short gang2Num,
28+
short gang3Num, short gang4Num, short gang5Num,
29+
short gang6Num, short gang7Num, short gang8Num,
30+
short copNum,
31+
short car0Num, short car1Num, short car2Num,
32+
short car3Num, short car4Num, short car5Num);
33+
static void SetZonePedInfo(int zoneid, char day, short pedDensity,
34+
short gang0Density, short gang1Density, short gang2Density, short gang3Density,
35+
short gang4Density, short gang5Density, short gang6Density, short gang7Density,
36+
short gang8Density, short copDensity);
37+
static void SetCarDensity(unsigned short zoneid, unsigned char day, unsigned short cardensity);
38+
static void SetPedDensity(unsigned short zoneid, unsigned char day, unsigned short peddensity);
39+
static void SetPedGroup(unsigned short zoneid, unsigned char day, unsigned short pedgroup);
40+
static short FindAudioZone(CVector* pos);
41+
static eLevelName FindZoneForPoint(const CVector& pos);
2142
};

0 commit comments

Comments
 (0)