Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
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
7}
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
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
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 = g_Game.ConfigGetFloat(string.Format(GRID_SIZE_CFG_PATH, g_Game.GetWorldName()));
128 int gridX, gridZ;
129 g_Game.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] > g_Game.GetWorld().GetWorldSize() || worldPos[2] < 0 || worldPos[2] > g_Game.GetWorld().GetWorldSize())
185 {
186 return true;
187 }
188
189 return false;
190 }
191}
map m_Player
Definition enmath.c:7
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3942
const int INDEX_NOT_FOUND
Definition gameplay.c:13
@ ALL
Mask of all events.
Definition enentity.c:110
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:54
static proto int AbsInt(int i)
Returns absolute value.
proto native int ToInt()
Converts string to integer.
proto string Get(int index)
Gets n-th character from string.
proto native int Length()
Returns length of string.
proto native float GetWorldTime()
vector GetPositionRandomized()
EMapNavigationType m_NavigationType
int m_RandomPositionDeviationZ
void OnItemNotInPlayerPossession(EntityAI item)
static const string GRID_SIZE_CFG_PATH
void SetNavigationType(EMapNavigationType pType)
int m_RandomPositionDeviationX
float RandomizedDeviation()
static array< int > OrderedPositionNumbersFromGridCoords(EntityAI pEntity)
void RandomizePosition()
void UnsetNavigationType(EMapNavigationType pType)
static bool IsOutOfMap(EntityAI pEntity)
static array< int > OrderedAltitudeNumbersPosition(EntityAI pEntity)
void OnItemInPlayerPossession(EntityAI item)
ref array< EntityAI > m_GPSInPossessionArr
vector GetPositionReal()
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
const int RANDOM_DEVIATION_MAX
EMapNavigationType GetNavigationType()
ref array< EntityAI > m_CompassInPossessionArr