DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
MapNavigationBehaviour.c
Go to the documentation of this file.
2{
3 BASIC = 0,
4 COMPASS = 1,
5 GPS = 2,
6 ALL = 4
8
10{
11 const int RANDOM_DEVIATION_MIN = 4;
12 const int RANDOM_DEVIATION_MAX = 15;
13
15 static const int DISPLAY_ALT_MAX_CHARS_COUNT = 4;
16
17 protected static const string GRID_SIZE_CFG_PATH = "CfgWorlds %1 Grid Zoom1 stepX";
18
23
26
28 {
29 m_Player = pPlayer;
30 m_NavigationType = pNavigationType;
31
34 }
35
37 {
39 }
40
42 {
44 }
45
47 {
48 return m_NavigationType;
49 }
50
52 {
53 if (item.IsInherited(ItemGPS))
54 {
55 if (m_GPSInPossessionArr.Find(item) == INDEX_NOT_FOUND)
56 {
57 m_GPSInPossessionArr.Insert(item);
59 }
60 }
61
62 if (item.IsInherited(ItemCompass))
63 {
65 {
66 m_CompassInPossessionArr.Insert(item);
68 }
69 }
70 }
71
73 {
74 if (item.IsInherited(ItemGPS))
75 {
76 m_GPSInPossessionArr.RemoveItem(item);
77 if (m_GPSInPossessionArr.Count() == 0)
78 {
80 }
81 }
82
83 if (item.IsInherited(ItemCompass))
84 {
85 m_CompassInPossessionArr.RemoveItem(item);
86 if (m_CompassInPossessionArr.Count() == 0)
87 {
89 }
90 }
91 }
92
94 {
97 }
98
99 protected float RandomizedDeviation()
100 {
102 if ((Math.RandomIntInclusive(0, 10) % 2) == 0)
103 {
105 }
106 else
107 {
109 }
110 }
111
113 {
114 vector realPosition = m_Player.GetPosition();
115 vector randomizedPosition = Vector(realPosition[0] + m_RandomPositionDeviationX, realPosition[1], realPosition[2] + m_RandomPositionDeviationZ);
116
117 return randomizedPosition;
118 }
119
121 {
122 return m_Player.GetPosition();
123 }
124
126 {
127 float gridSize = GetGame().ConfigGetFloat(string.Format(GRID_SIZE_CFG_PATH, GetGame().GetWorldName()));
128 int gridX, gridZ;
129 GetGame().GetWorld().GetGridCoords(pEntity.GetPosition(), gridSize, gridX, gridZ);
130
131 gridX = Math.AbsInt(gridX);
132 gridZ = Math.AbsInt(gridZ);
133
134 array<int> positions = new array<int>();
135 string gridXStr = gridX.ToStringLen(DISPLAY_GRID_POS_MAX_CHARS_COUNT);
136 string gridZStr = gridZ.ToStringLen(DISPLAY_GRID_POS_MAX_CHARS_COUNT);
137
138 int i = 0;
139 int gridCoordNumber;
140 for (i = 0; i < gridXStr.Length(); ++i)
141 {
142 gridCoordNumber = gridXStr.Get(i).ToInt();
143 if (IsOutOfMap(pEntity))
144 {
145 gridCoordNumber = -1;
146 }
147
148 positions.Insert(gridCoordNumber);
149 }
150
151 for (i = 0; i < gridZStr.Length(); ++i)
152 {
153 gridCoordNumber = gridZStr.Get(i).ToInt();
154 if (IsOutOfMap(pEntity))
155 {
156 gridCoordNumber = -1;
157 }
158
159 positions.Insert(gridCoordNumber);
160 }
161
162 return positions;
163 }
164
166 {
167 array<int> altArray = new array<int>();
168 float altF = pEntity.GetPosition()[1];
169 int altI = Math.Round(altF);
170 string altString = altI.ToStringLen(DISPLAY_ALT_MAX_CHARS_COUNT);
171
172 for (int i = 0; i < altString.Length(); ++i)
173 {
174 altArray.Insert(altString.Get(i).ToInt());
175 }
176
177 return altArray;
178 }
179
180 static bool IsOutOfMap(EntityAI pEntity)
181 {
182 vector worldPos = pEntity.GetPosition();
183
184 if (worldPos[0] < 0 || worldPos[0] > GetGame().GetWorld().GetWorldSize() || worldPos[2] < 0 || worldPos[2] > GetGame().GetWorld().GetWorldSize())
185 {
186 return true;
187 }
188
189 return false;
190 }
191}
DayZPlayer m_Player
Definition Hand_Events.c:42
vector GetPositionRandomized()
protected int m_RandomPositionDeviationX
void OnItemNotInPlayerPossession(EntityAI item)
protected void SetNavigationType(EMapNavigationType pType)
static array< int > OrderedPositionNumbersFromGridCoords(EntityAI pEntity)
protected int m_RandomPositionDeviationZ
void RandomizePosition()
protected float RandomizedDeviation()
static bool IsOutOfMap(EntityAI pEntity)
protected ref array< EntityAI > m_GPSInPossessionArr
protected EMapNavigationType m_NavigationType
static array< int > OrderedAltitudeNumbersPosition(EntityAI pEntity)
void OnItemInPlayerPossession(EntityAI item)
vector GetPositionReal()
static protected const string GRID_SIZE_CFG_PATH
void MapNavigationBehaviour(PlayerBase pPlayer, EMapNavigationType pNavigationType=EMapNavigationType.BASIC)
static const int DISPLAY_GRID_POS_MAX_CHARS_COUNT
enum EMapNavigationType RANDOM_DEVIATION_MIN
static const int DISPLAY_ALT_MAX_CHARS_COUNT
protected ref array< EntityAI > m_CompassInPossessionArr
protected void UnsetNavigationType(EMapNavigationType pType)
const int RANDOM_DEVIATION_MAX
EMapNavigationType GetNavigationType()
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native World GetWorld()
Definition EnMath.c:7
proto void GetGridCoords(vector pos, float gridSize, out int gridX, out int gridZ)
Translates world coordinates to a grid coordinates(map grid)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
const int INDEX_NOT_FOUND
Definition gameplay.c:13
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto int Randomize(int seed)
Sets the seed for the random number generator.
static proto float Round(float f)
Returns mathematical round of value.
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Definition EnMath.c:53
static proto int AbsInt(int i)
Returns absolute value.
proto native int ToInt()
Converts string to integer.
string Get(int index)
Gets n-th character from string.
Definition EnString.c:434
proto native int Length()
Returns length of string.
proto native float GetWorldTime()