DayZ 1.30
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,
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);
147 AddModifier(new SandstormExposureDynamicMdfr);
150 AddModifier(new HeatStrokePhase1Mdfr);
152 AddModifier(new HeatStrokePhase3Mdfr);
154 }
155
156 void SetModifiers(bool enable)
157 {
158 if (m_AllowModifierTick == enable)
159 return;
160
161 m_AllowModifierTick = enable;
162
163 #ifdef DIAG_DEVELOPER
164 #ifndef SERVER
165 DiagMenu.SetValue(DiagMenuIDs.CHEATS_MODIFIERS, enable);
166 #endif
167 #endif
168
169 if (!enable)
170 {
171 for (int i = 0; i < m_ModifierList.Count(); i++)
172 {
173 m_ModifierList.GetElement(i).ResetLastTickTime();
174 }
175 }
176 }
177
179 {
180 return STORAGE_VERSION;
181 }
182
184 {
185 return m_AllowModifierTick;
186 }
187
189 {
190 modifier.InitBase(m_Player, this);
191 int id = modifier.GetModifierID();
192
193 if (id < 1)
194 ErrorEx("modifiers ID must be 1 or higher(for debugging reasons)", ErrorExSeverity.WARNING);
195
196 if (m_ModifierListArray.Find(modifier) == -1)
197 {
198 m_ModifierList.Insert(id, modifier);
199 m_ModifierListArray.Insert(modifier);
200 }
201 else
202 {
203 ErrorEx(string.Format("Modifier '%1' is already registered", modifier.GetName()), ErrorExSeverity.WARNING);
204 }
205 }
206
207 bool IsModifierActive(eModifiers modifier_id)
208 {
209 return m_ModifierList.Get(modifier_id).IsActive();
210 }
211
212 void OnScheduledTick(float delta_time)
213 {
215 return;
216
217 foreach (ModifierBase modifier : m_ModifierListArray)
218 modifier.Tick(delta_time);
219 }
220
222 {
223 foreach (ModifierBase modifier : m_ModifierListArray)
224 modifier.Deactivate();
225 }
226
227 void ActivateModifier(int modifier_id, bool triggerEvent = EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
228 {
229 m_ModifierList.Get(modifier_id).ActivateRequest(triggerEvent);
230 }
231
232 void DeactivateModifier(int modifier_id, bool triggerEvent = true)
233 {
234 m_ModifierList.Get(modifier_id).Deactivate(triggerEvent);
235 }
236
238 {
240
241 int modifierCount;
242 foreach (ModifierBase modifier : m_ModifierListArray)
243 {
244 if (modifier.IsActive() && modifier.IsPersistent())
245 {
246 modifierCount++;
247 //save the modifier id
248 CachedObjectsArrays.ARRAY_INT.Insert(modifier.GetModifierID());
249 if (modifier.IsTrackAttachedTime())
250 {
251 //save the overall attached time
252 CachedObjectsArrays.ARRAY_INT.Insert(modifier.GetAttachedTime());
253 }
254 }
255 }
256
257 ctx.Write(modifierCount);
258
259 //write the individual modifiers and respective attached times
260 for (int i = 0; i < CachedObjectsArrays.ARRAY_INT.Count(); i++)
261 {
262 int item = CachedObjectsArrays.ARRAY_INT.Get(i);
263 ctx.Write(item);
264 }
265
266 for (int z = 0; z < m_ParamList.Count(); z++)
267 {
268 m_ParamList.Get(z).Serialize(ctx);
269 }
270
271 }
272
273 bool OnStoreLoad(ParamsReadContext ctx, int version)
274 {
275 int modifierCount;
276 if (!ctx.Read(modifierCount))
277 return false;
278
279 for (int i = 0; i < modifierCount; i++)
280 {
281 int modifierId;
282 if (!ctx.Read(modifierId))
283 return false;
284
285 ModifierBase modifier = GetModifier(modifierId);
286 if (modifier)
287 {
288 if (modifier.IsTrackAttachedTime())
289 {
290 int time;
291 if (!ctx.Read(time))//get the attached time
292 return false;
293
294 modifier.SetAttachedTime(time);
295 }
296
297 ActivateModifier(modifierId, EActivationType.TRIGGER_EVENT_ON_CONNECT);
298 }
299 else
300 {
301 Debug.LogError("DB loading: non-existent modifier with id:"+modifierId.ToString());
302 }
303 }
304
305 for (int x = 0; x < m_ParamList.Count(); x++)
306 {
307 if (!m_ParamList.Get(x).Deserializer(ctx))
308 return false;
309 }
310
311 return true;
312 }
313
314 ModifierBase GetModifier(int modifier_id)
315 {
316 return m_ModifierList.Get(modifier_id);
317 }
318
320 {
321 return m_Player;
322 }
323
324 void SetModifierLock(int modifier_id, bool state)
325 {
326 m_ModifierList.Get(modifier_id).SetLock(state);
327 }
328
329 bool GetModifierLock(int modifier_id)
330 {
331 return m_ModifierList.Get(modifier_id).IsLocked();
332 }
333
335 {
336 modifiers.Clear();
337 for (int i = 1;i < eModifiers.COUNT; i++)
338 {
339 if (m_ModifierList.Contains(i))
340 {
341 ModifierBase modifier = m_ModifierList.Get(i);
342
343 int modifierId = modifier.GetModifierID();
344 bool isLocked = modifier.IsLocked();
345 bool active = modifier.IsActive();
346
347 string modifierName = modifier.GetName();
348 string debugText = modifier.GetDebugTextSimple();
349
350 if (active && debugText != "")
351 modifierName += " | " + debugText;
352
353 ModifierDebugObj obj = new ModifierDebugObj(modifierId, modifierName, active, isLocked);
354
355 modifiers.Insert(obj);
356 }
357 }
358 }
359
360 void ResetAll()
361 {
362 bool hasAreaExposureModifier = IsModifierActive(eModifiers.MDF_AREAEXPOSURE);
363 bool hasMaksModifier = IsModifierActive(eModifiers.MDF_MASK);
364
366
367 if (hasAreaExposureModifier)
368 ActivateModifier(eModifiers.MDF_AREAEXPOSURE);
369
370 if (hasMaksModifier)
372 }
373}
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
bool OnStoreLoad(ParamsReadContext ctx, int version)
Определения CodeLockComponent.c:264
void OnStoreSave(ParamsWriteContext ctx)
Определения CodeLockComponent.c:257
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
bool m_AllowModifierTick
Определения ModifiersManager.c:72
int GetStorageVersion()
Определения ModifiersManager.c:178
void DeactivateModifier(int modifier_id, bool triggerEvent=true)
Определения ModifiersManager.c:232
ModifierBase GetModifier(int modifier_id)
Определения ModifiersManager.c:314
void DeactivateAllModifiers()
Определения ModifiersManager.c:221
bool IsModifiersEnable()
Определения ModifiersManager.c:183
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_PARTICLE_EYES
Определения ModifiersManager.c:11
@ 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
@ MODIFIER_SYNC_HEAT_STROKE
Определения ModifiersManager.c:12
enum eModifierSyncIDs TRIGGER_EVENT_OFF
void ActivateModifier(int modifier_id, bool triggerEvent=EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
Определения ModifiersManager.c:227
void DbgGetModifiers(array< ref ModifierDebugObj > modifiers)
Определения ModifiersManager.c:334
bool GetModifierLock(int modifier_id)
Определения ModifiersManager.c:329
class ModifierDebugObj STORAGE_VERSION
const int DEFAULT_TICK_TIME_INACTIVE
Определения ModifiersManager.c:29
void ModifiersManager(PlayerBase player)
Определения ModifiersManager.c:80
const int DEFAULT_TICK_TIME_ACTIVE_SHORT
Определения ModifiersManager.c:28
void AddModifier(ModifierBase modifier)
Определения ModifiersManager.c:188
void SetModifierLock(int modifier_id, bool state)
Определения ModifiersManager.c:324
ref array< ref Param > m_ParamList
Определения ModifiersManager.c:78
void ResetAll()
Определения ModifiersManager.c:360
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:303
Определения 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.
Определения 3_Game/DayZ/tools/Debug.c:318
Определения 3_Game/DayZ/tools/Debug.c:2
Определения EnDebug.c:241
Определения 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
Определения Silicosis.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.
Определения Transport.c:70
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