DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ModifiersManager.c
См. документацию.
1//max 32 synced modifiers supported
3{
6 MODIFIER_SYNC_CONTAMINATION = 0x00000004,//stage1
7 MODIFIER_SYNC_CONTAMINATION2 = 0x00000008,//stage2 and stage3 share the same sync id
10 MODIFIER_SYNC_FEVER = 0x00000040,
11 //0x00000080,
12 //0x00000100,
13 //0x00000200,
14 //0x00000400,
15 //0x00000800,
16 //0x00001000,
18}
19
20enum EActivationType
21{
24 TRIGGER_EVENT_ON_CONNECT
25}
26
31
33{
34 string m_Name;
35 int m_ID;
38
39 void ModifierDebugObj(int id, string name, bool active, bool locked)
40 {
41 m_Name = name;
42 m_ID = id;
43 m_IsActive = active;
44 m_IsLocked = locked;
45 }
46
47 string GetName()
48 {
49 return m_Name;
50 }
51
52 int GetID()
53 {
54 return m_ID;
55 }
56
57 bool IsActive()
58 {
59 return m_IsActive;
60 }
61
62 bool IsLocked()
63 {
64 return m_IsLocked;
65 }
66}
67
69{
70 const int STORAGE_VERSION = 121;
71
73
75
79
89
90 void Init()
91 {
92 #ifdef DEVELOPER
94 #endif
119 AddModifier(new WetMdfr);
123 AddModifier(new BreathVapourMdfr);
125 AddModifier(new WoundInfectStage1Mdfr);
141 AddModifier(new HeavyMetalPhase1Mdfr);
143 AddModifier(new HeavyMetalPhase3Mdfr);
146 }
147
148 void SetModifiers(bool enable)
149 {
150 if (m_AllowModifierTick == enable)
151 return;
152
153 m_AllowModifierTick = enable;
154
155 #ifdef DIAG_DEVELOPER
156 #ifndef SERVER
157 DiagMenu.SetValue(DiagMenuIDs.CHEATS_MODIFIERS, enable);
158 #endif
159 #endif
160
161 if (!enable)
162 {
163 for (int i = 0; i < m_ModifierList.Count(); i++)
164 {
165 m_ModifierList.GetElement(i).ResetLastTickTime();
166 }
167 }
168 }
169
171 {
172 return STORAGE_VERSION;
173 }
174
176 {
177 return m_AllowModifierTick;
178 }
179
181 {
182 modifier.InitBase(m_Player, this);
183 int id = modifier.GetModifierID();
184
185 if (id < 1)
186 ErrorEx("modifiers ID must be 1 or higher(for debugging reasons)", ErrorExSeverity.WARNING);
187
188 if (m_ModifierListArray.Find(modifier) == -1)
189 {
190 m_ModifierList.Insert(id, modifier);
191 m_ModifierListArray.Insert(modifier);
192 }
193 else
194 {
195 ErrorEx(string.Format("Modifier '%1' is already registered", modifier.GetName()), ErrorExSeverity.WARNING);
196 }
197 }
198
199 bool IsModifierActive(eModifiers modifier_id)
200 {
201 return m_ModifierList.Get(modifier_id).IsActive();
202 }
203
204 void OnScheduledTick(float delta_time)
205 {
207 return;
208
209 foreach (ModifierBase modifier : m_ModifierListArray)
210 modifier.Tick(delta_time);
211 }
212
214 {
215 foreach (ModifierBase modifier : m_ModifierList)
216 modifier.Deactivate();
217 }
218
219 void ActivateModifier(int modifier_id, bool triggerEvent = EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
220 {
221 m_ModifierList.Get(modifier_id).ActivateRequest(triggerEvent);
222 }
223
224 void DeactivateModifier(int modifier_id, bool triggerEvent = true)
225 {
226 m_ModifierList.Get(modifier_id).Deactivate(triggerEvent);
227 }
228
230 {
232
233 int modifierCount;
234 foreach (ModifierBase modifier : m_ModifierList)
235 {
236 if (modifier.IsActive() && modifier.IsPersistent())
237 {
238 modifierCount++;
239 //save the modifier id
240 CachedObjectsArrays.ARRAY_INT.Insert(modifier.GetModifierID());
241 if (modifier.IsTrackAttachedTime())
242 {
243 //save the overall attached time
244 CachedObjectsArrays.ARRAY_INT.Insert(modifier.GetAttachedTime());
245 }
246 }
247 }
248
249 ctx.Write(modifierCount);
250
251 //write the individual modifiers and respective attached times
252 for (int i = 0; i < CachedObjectsArrays.ARRAY_INT.Count(); i++)
253 {
254 int item = CachedObjectsArrays.ARRAY_INT.Get(i);
255 ctx.Write(item);
256 }
257
258 for (int z = 0; z < m_ParamList.Count(); z++)
259 {
260 m_ParamList.Get(z).Serialize(ctx);
261 }
262
263 }
264
265 bool OnStoreLoad(ParamsReadContext ctx, int version)
266 {
267 int modifierCount;
268 if (!ctx.Read(modifierCount))
269 return false;
270
271 for (int i = 0; i < modifierCount; i++)
272 {
273 int modifierId;
274 if (!ctx.Read(modifierId))
275 return false;
276
277 ModifierBase modifier = GetModifier(modifierId);
278 if (modifier)
279 {
280 if (modifier.IsTrackAttachedTime())
281 {
282 int time;
283 if (!ctx.Read(time))//get the attached time
284 return false;
285
286 modifier.SetAttachedTime(time);
287 }
288
289 ActivateModifier(modifierId, EActivationType.TRIGGER_EVENT_ON_CONNECT);
290 }
291 else
292 {
293 Debug.LogError("DB loading: non-existent modifier with id:"+modifierId.ToString());
294 }
295 }
296
297 for (int x = 0; x < m_ParamList.Count(); x++)
298 {
299 if (!m_ParamList.Get(x).Deserializer(ctx))
300 return false;
301 }
302
303 return true;
304 }
305
306 ModifierBase GetModifier(int modifier_id)
307 {
308 return m_ModifierList.Get(modifier_id);
309 }
310
312 {
313 return m_Player;
314 }
315
316 void SetModifierLock(int modifier_id, bool state)
317 {
318 m_ModifierList.Get(modifier_id).SetLock(state);
319 }
320
321 bool GetModifierLock(int modifier_id)
322 {
323 return m_ModifierList.Get(modifier_id).IsLocked();
324 }
325
327 {
328 modifiers.Clear();
329 for (int i = 1;i < eModifiers.COUNT; i++)
330 {
331 if (m_ModifierList.Contains(i))
332 {
333 ModifierBase modifier = m_ModifierList.Get(i);
334
335 int modifierId = modifier.GetModifierID();
336 bool isLocked = modifier.IsLocked();
337 bool active = modifier.IsActive();
338
339 string modifierName = modifier.GetName();
340 string debugText = modifier.GetDebugTextSimple();
341
342 if (active && debugText != "")
343 modifierName += " | " + debugText;
344
345 ModifierDebugObj obj = new ModifierDebugObj(modifierId, modifierName, active, isLocked);
346
347 modifiers.Insert(obj);
348 }
349 }
350 }
351
352 void ResetAll()
353 {
354 bool hasAreaExposureModifier = IsModifierActive(eModifiers.MDF_AREAEXPOSURE);
355 bool hasMaksModifier = IsModifierActive(eModifiers.MDF_MASK);
356
358
359 if (hasAreaExposureModifier)
360 ActivateModifier(eModifiers.MDF_AREAEXPOSURE);
361
362 if (hasMaksModifier)
364 }
365}
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
map
Определения ControlsXboxNew.c:4
override Widget Init()
Определения DayZGame.c:127
DiagMenuIDs
Определения EDiagMenuIDs.c:2
DayZPlayer m_Player
Определения Hand_Events.c:42
void SetModifiers()
Определения HudDebugWinCharModifiers.c:160
Icon x
PlayerBase GetPlayer()
Определения ModifierBase.c:51
void OnStoreSave(ParamsWriteContext ctx)
Определения ModifiersManager.c:229
bool m_AllowModifierTick
Определения ModifiersManager.c:72
int GetStorageVersion()
Определения ModifiersManager.c:170
void DeactivateModifier(int modifier_id, bool triggerEvent=true)
Определения ModifiersManager.c:224
ModifierBase GetModifier(int modifier_id)
Определения ModifiersManager.c:306
void DeactivateAllModifiers()
Определения ModifiersManager.c:213
bool IsModifiersEnable()
Определения ModifiersManager.c:175
eModifierSyncIDs
Определения ModifiersManager.c:3
@ MODIFIER_SYNC_FEVER
Определения ModifiersManager.c:10
@ MODIFIER_SYNC_CONTAMINATION2
Определения ModifiersManager.c:7
@ MODIFIER_SYNC_WOUND_INFECT_1
Определения ModifiersManager.c:4
@ LAST_INDEX
Определения ModifiersManager.c:17
@ MODIFIER_SYNC_ZONE_EXPOSURE
Определения ModifiersManager.c:8
@ MODIFIER_SYNC_WOUND_INFECT_2
Определения ModifiersManager.c:5
@ MODIFIER_SYNC_DROWNING
Определения ModifiersManager.c:9
@ MODIFIER_SYNC_CONTAMINATION
Определения ModifiersManager.c:6
enum eModifierSyncIDs TRIGGER_EVENT_OFF
void ActivateModifier(int modifier_id, bool triggerEvent=EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
Определения ModifiersManager.c:219
void DbgGetModifiers(array< ref ModifierDebugObj > modifiers)
Определения ModifiersManager.c:326
bool GetModifierLock(int modifier_id)
Определения ModifiersManager.c:321
class ModifierDebugObj STORAGE_VERSION
const int DEFAULT_TICK_TIME_INACTIVE
Определения ModifiersManager.c:29
bool OnStoreLoad(ParamsReadContext ctx, int version)
Определения ModifiersManager.c:265
void ModifiersManager(PlayerBase player)
Определения ModifiersManager.c:80
const int DEFAULT_TICK_TIME_ACTIVE_SHORT
Определения ModifiersManager.c:28
void AddModifier(ModifierBase modifier)
Определения ModifiersManager.c:180
void SetModifierLock(int modifier_id, bool state)
Определения ModifiersManager.c:316
ref array< ref Param > m_ParamList
Определения ModifiersManager.c:78
void ResetAll()
Определения ModifiersManager.c:352
ref map< int, ref ModifierBase > m_ModifierList
Определения ModifiersManager.c:76
ref array< ref ModifierBase > m_ModifierListArray
Определения ModifiersManager.c:77
enum eModifierSyncIDs DEFAULT_TICK_TIME_ACTIVE
enum eModifierSyncIDs TRIGGER_EVENT_ON_ACTIVATION
const int DEFAULT_TICK_TIME_INACTIVE_LONG
Определения ModifiersManager.c:30
void OnScheduledTick()
Определения NotifiersManager.c:97
Определения Antibiotics.c:2
Определения AreaExposure.c:2
Определения Bleeding.c:3
Определения BloodRegen.c:2
Определения BrainDisease.c:2
Определения BrokenLegs.c:2
Определения Burning.c:2
static ref TIntArray ARRAY_INT
Определения UtilityClasses.c:51
Определения CharcoalMdfr.c:2
Определения Chelation.c:2
Определения Cholera.c:2
Определения CommonCold.c:2
static void LogError(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message as error message.
Определения Debug.c:245
Определения Debug.c:2
Определения EnDebug.c:233
Определения DisinfectMdfr.c:2
Определения Drowning.c:2
Определения EpinephrineMdfr.c:2
Определения Fatigue.c:2
Определения Fever.c:2
Определения Flies.c:2
Определения HealthRegen.c:2
Определения HeartAttack.c:2
Определения HeatBuffer.c:2
Определения HeatComfortMdfr.c:2
Определения Hunger.c:2
Определения ImmuneSystem.c:2
Определения ImmunityBoost.c:2
Определения Influenza.c:2
Определения Mask.c:2
override string GetDebugTextSimple()
Определения BreathVapourMdfr.c:35
Определения BreathVapourMdfr.c:4
bool m_IsLocked
Определения ModifiersManager.c:37
void ModifierDebugObj(int id, string name, bool active, bool locked)
Определения ModifiersManager.c:39
string GetName()
Определения ModifiersManager.c:47
int GetID()
Определения ModifiersManager.c:52
string m_Name
Определения ModifiersManager.c:34
int m_ID
Определения ModifiersManager.c:35
bool IsLocked()
Определения ModifiersManager.c:62
bool m_IsActive
Определения ModifiersManager.c:36
bool IsActive()
Определения ModifiersManager.c:57
Определения MorphineMdfr.c:2
Определения PainKillersMdfr.c:2
Определения PlayerBaseClient.c:2
Определения Pneumonia.c:2
Определения Poisoning.c:2
Определения Saline.c:2
Определения Salmonella.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
Определения ShockDamage.c:2
Определения Shock.c:2
Определения Stomach.c:2
Определения TestDisease.c:2
Определения Thirst.c:2
Определения Toxicity.c:2
Определения VomitStuffed.c:2
Определения Wet.c:2
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
eModifiers
Определения eModifiers.c:2
Serializer ParamsReadContext
Определения gameplay.c:15
Serializer ParamsWriteContext
Определения gameplay.c:16
ErrorExSeverity
Определения EnDebug.c:62
enum ShapeType ErrorEx
static proto void SetValue(int id, int value)
Set value at the given script id.
proto native bool IsModifierActive()
is modifier active