DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PlantBase.c
См. документацию.
9
10class PlantBase extends ItemBase
11{
12 private float m_SprayUsage; // How much spray is needed to stop infestation of plant
13
14 private float m_InfestationChance;
15
16 private int m_GrowthStagesCount;
17 private int m_CropsCount;
18 private bool m_HasCrops;
19 private string m_CropsType;
21
22 private int m_PlantStateIndex;
25
26 private bool m_IsInfested;
27 private float m_SprayQuantity;
28 bool m_MarkForDeletion = false;
29
30 int m_DeleteDryPlantTime; // For how long in seconds can an unwatered plant exist before it disappears
31 int m_SpoiledRemoveTime; // For how long in seconds a spoiled plant will exist
32 int m_FullMaturityTime; // How much time needs plant to be full grown in seconds
33 int m_SpoilAfterFullMaturityTime; // How long in seconds it takes for plant to be spoiled after it is full grown
34 float m_StateChangeTime; // For how long in seconds will plant stay in one state before its going to next state
35
36 protected ref Timer m_TimeTicker;
37 protected float m_TimeTracker;
38
39 private GardenBase m_GardenBase = NULL;
40 private ref Slot m_Slot = NULL;
41
42 private PluginHorticulture m_ModuleHorticulture;
43
44 private const float SPOIL_AFTER_MATURITY_TIME = 14400.0; //The time it takes for a fully grown plant to spoil, in seconds (4 hours)
45 private const int TICK_FREQUENCY = 1; // seconds
46
47 // debug
49 static int m_DebugSpoilTime;
53
54 void PlantBase()
55 {
56 m_ModuleHorticulture = PluginHorticulture.Cast( GetPlugin( PluginHorticulture ) );
57
58 m_SprayUsage = 5;
59 m_DeleteDryPlantTime = (60 * 10) + Math.RandomInt(0, 60 * 2);
60 m_SpoiledRemoveTime = (60 * 20) + Math.RandomInt(0, 60 * 5);
61
62 string plant_type = this.GetType();
63 m_GrowthStagesCount = GetGame().ConfigGetInt( "cfgVehicles " + plant_type + " Horticulture GrowthStagesCount" );
64 m_CropsCount = GetGame().ConfigGetInt( "cfgVehicles " + plant_type + " Horticulture CropsCount" );
65 GetGame().ConfigGetText( "cfgVehicles " + plant_type + " Horticulture CropsType", m_CropsType );
66
67 if (m_GrowthStagesCount == 0)
69
70 m_InfestationChance = 0.2 / m_GrowthStagesCount; //Must be between 0 and 1
71
74 m_IsInfested = false;
75 m_SprayQuantity = 0.0;
76 m_HasCrops = true;
77
78 SetTakeable( false );
79
80 RegisterNetSyncVariableBool("m_HasCrops");
81 RegisterNetSyncVariableInt("m_PlantState");
82 RegisterNetSyncVariableInt("m_PlantStateIndex");
83
84 if (GetGame().IsServer())
85 {
87 m_TimeTicker.Run(TICK_FREQUENCY, this, "Tick", NULL, true);
88 }
89 }
90
92 {
93 if (m_TimeTicker)
94 m_TimeTicker.Stop();
95
97 {
99 }
100 }
101
102 void Init( GardenBase garden_base, float fertility, float harvesting_efficiency, float water )
103 {
104 m_GardenBase = garden_base;
105
108 else
110
111 if (m_DebugSpoilTime != 0)
113 else
115
116 if (m_DebugSpoilRemoveTime != 0)
118
119 if (m_DebugDeleteDryTime != 0)
121
123
124 float count = m_CropsCount * fertility * harvesting_efficiency;
125 m_CropsCount = (int)Math.Ceil( count );
126
127 m_PlantMaterialMultiplier = 0.1 * harvesting_efficiency;
128
129 float rain_intensity = GetGame().GetWeather().GetRain().GetActual();
130
131 if (m_PlantState < EPlantState.MATURE && !NeedsWater())
132 {
133 SetPlantState(EPlantState.GROWING);
134 GrowthTimerTick(); // first tick happens straight away
135 }
136
137 if (rain_intensity <= 0.0)
138 {
139 if (NeedsWater())
141 }
142 }
143
144 void Tick()
145 {
147
148 switch (m_PlantState)
149 {
150 case (EPlantState.GROWING):
153
154 break;
155
156 case (EPlantState.MATURE):
158 SetSpoiled();
159
160 break;
161
162 case (EPlantState.SPOILED):
164 RemoveSlot();
165
166 break;
167
168 case (EPlantState.DRY):
170 RemoveSlot();
171
172 break;
173 }
174
175 }
176
177 override bool OnStoreLoad( ParamsReadContext ctx, int version )
178 {
179 if ( !super.OnStoreLoad( ctx, version ) )
180 return false;
181
182 GardenBase garden = GardenBase.Cast( GetHierarchyParent() );
183
184 int slot_index = -1;
185 if (!ctx.Read(slot_index))
186 return false;
187
188 Slot slot = garden.GetSlotByIndex(slot_index);
189
190 SetSlot(slot);
191
192 if ( !OnStoreLoadCustom( ctx, version ) )
193 return false;
194
195 return true;
196 }
197
198 override void OnStoreSave( ParamsWriteContext ctx )
199 {
200 super.OnStoreSave( ctx );
201
202 Slot slot = GetSlot();
203
204 if (slot)
205 {
206 int slot_index = slot.GetSlotIndex();
207 slot.SetPlant(this); // hack
208
209 ctx.Write( slot_index );
210
211 OnStoreSaveCustom( ctx );
212 }
213 else
214 {
215 ErrorEx("[Warning] A plant existed without a garden. Therefore it was deleted from the world to prevent issues! Position: " + GetPosition(), ErrorExSeverity.INFO);
216 GetGame().ObjectDelete(this); // Plants that exist without a garden must be deleted. Otherwise they might cause problems.
217 }
218 }
219
221 {
222 return m_CropsType;
223 }
224
226 {
227 if (!ctx.Read(m_SprayUsage))
228 return false;
229
230 if (!ctx.Read(m_DeleteDryPlantTime))
231 return false;
232
233 if (!ctx.Read(m_SpoiledRemoveTime))
234 return false;
235
236 if (!ctx.Read(m_FullMaturityTime))
237 return false;
238
240 return false;
241
242 if (!ctx.Read(m_StateChangeTime))
243 return false;
244
245 if (!ctx.Read(m_InfestationChance))
246 return false;
247
248 if (!ctx.Read(m_GrowthStagesCount))
249 return false;
250
251 if (!ctx.Read(m_CropsCount))
252 return false;
253
254 if (!ctx.Read(m_CropsType))
255 return false;
256
258 return false;
259
260 if (!ctx.Read(m_PlantState))
261 return false;
262
263 if (!ctx.Read(m_PlantStateIndex))
264 return false;
265
267 return false;
268
269 if (!ctx.Read(m_IsInfested))
270 return false;
271
272 if (!ctx.Read(m_SprayQuantity))
273 return false;
274
275 bool loadBool; // deprec
276 if (!ctx.Read(loadBool))
277 return false;
278
279 float loadFloat = 0.0;
280 if (!ctx.Read(loadFloat)) // deprec
281 return false;
282
283 loadFloat = 0.0;
284 if (ctx.Read(loadFloat))
285 {
286 if (loadFloat > 0.0)
287 m_TimeTracker = loadFloat; // spoil
288 }
289 else
290 {
291 return false;
292 }
293
294 loadFloat = 0.0;
295 if (ctx.Read(loadFloat))
296 {
297 if (loadFloat > 0.0)
298 m_TimeTracker = loadFloat; // spoil delete
299 }
300 else
301 {
302 return false;
303 }
304
305 loadFloat = 0.0;
306 if (ctx.Read(loadFloat))
307 {
308 if ( loadFloat > 0.0 )
309 m_TimeTracker = loadFloat; // dry delete
310 }
311 else
312 {
313 return false;
314 }
315
317 {
319 ErrorEx("[Warning] A plant loaded from storage had a corrupted state change time. Time was now adjusted! Position: " + GetPosition(), ErrorExSeverity.INFO);
320 }
321
322 if (version >= 142)
323 {
324 if (!ctx.Read(m_HasCrops))
325 return false;
326 }
327
328 UpdatePlant();
329 return true;
330 }
331
333 {
334 ctx.Write(m_SprayUsage);
342 ctx.Write(m_CropsCount);
343 ctx.Write(m_CropsType);
345 ctx.Write(m_PlantState);
348 ctx.Write(m_IsInfested);
350
351 bool saveBool = false; // deprec
352 ctx.Write( saveBool );
353
354 float saveFloat = 0.0; // deprec
355 ctx.Write( saveFloat );
356
357 saveFloat = 0.0;
358 if (m_PlantState == EPlantState.MATURE)
359 {
360 saveFloat = m_TimeTracker;
361 }
362 ctx.Write( saveFloat );
363
364 saveFloat = 0.0;
365 if (m_PlantState == EPlantState.SPOILED)
366 {
367 saveFloat = m_TimeTracker;
368 }
369 ctx.Write( saveFloat );
370
371 saveFloat = 0.0;
372 if (m_PlantState == EPlantState.DRY)
373 {
374 saveFloat = m_TimeTracker;
375 }
376 ctx.Write( saveFloat );
377
378 ctx.Write(m_HasCrops);
379 }
380
382 {
383 Print("PRINT ALL VALUES OF PLANT...");
384 Print(this);
385
388 Print(typename.EnumToString(EPlantState, m_PlantState));
393 Print(m_Slot);
399 Print("----------------------------------------------------------");
400 }
401
402 override bool CanPutInCargo( EntityAI parent )
403 {
404 return super.CanPutInCargo(parent);
405 }
406
407 override bool CanPutIntoHands( EntityAI parent )
408 {
409 return super.CanPutIntoHands(parent);
410 }
411
412 override bool CanRemoveFromHands( EntityAI parent )
413 {
414 return false;
415 }
416
417 void ChangeInfestation( bool is_infested )
418 {
419 m_IsInfested = is_infested;
420
421 string plant_type = GetType();
422 PlantMaterialHealth material = m_ModuleHorticulture.GetPlantMaterial( plant_type );
423
424 if ( m_IsInfested )
425 {
426 if ( material.m_InfestedTex != "" )
427 {
428 SetObjectTexture( 0, material.m_InfestedTex );
429 }
430 if ( material.m_InfestedMat != "" )
431 {
432 SetObjectMaterial( 0, material.m_InfestedMat );
433 }
434 }
435 else
436 {
437 if ( material.m_HealthyTex != "" )
438 {
439 SetObjectTexture( 0, material.m_HealthyTex );
440 }
441 if ( material.m_HealthyMat != "" )
442 {
443 SetObjectMaterial( 0, material.m_HealthyMat );
444 }
445 }
446 }
447
449 {
450 if ( m_PlantStateIndex > 0 )
451 {
452 string plant_state_index = m_PlantStateIndex.ToStringLen(2);
453 string prev_plant_state_index = ( m_PlantStateIndex - 1 ).ToStringLen( 2 );
454
455 // HIDING PREVIOUS PLANT STATE AND SHOWING THE CURRENT ONE
456 ShowSelection( "plantStage_" + plant_state_index ); // SHOW!
457 HideSelection( "plantStage_" + prev_plant_state_index ); // HIDE!
458
459 // HIDING PREVIOUS CROPS STATE AND SHOWING THE CURRENT ONE
460
461 if ( HasCrops() )
462 {
463 ShowSelection( "plantStage_" + plant_state_index + "_crops" ); // SHOW!
464 HideSelection( "plantStage_" + prev_plant_state_index + "_crops" ); // HIDE!
465 }
466 else
467 {
468 HideSelection( "plantStage_" + plant_state_index + "_crops" ); // HIDE!
469 HideSelection( "plantStage_" + prev_plant_state_index + "_crops" ); // HIDE!
470 }
471
472 // HIDING PREVIOUS SHADOW STATE AND SHOWING THE CURRENT ONE
473 ShowSelection( "plantStage_" + plant_state_index + "_shadow" ); // SHOW!
474 HideSelection( "plantStage_" + prev_plant_state_index + "_shadow" ); // HIDE!
475 }
476
477 float float_plant_state_index = (float)m_PlantStateIndex;
479 }
480
482 {
483 m_TimeTracker = 0;
484
486 {
488 UpdatePlant();
489 SetSynchDirty();
490
491 float infestation_rnd = Math.RandomFloat01();
492 if ( m_InfestationChance > infestation_rnd )
493 ChangeInfestation(true);
494
496 {
497 if (m_IsInfested)
498 SetDry();
499 else
501 }
502 }
503 }
504
506 {
507 if (m_PlantState != EPlantState.SPOILED)
508 {
510 UpdatePlant();
511 SetPlantState(EPlantState.SPOILED);
512 }
513 }
514
515 void SetDry()
516 {
517 if (m_PlantState != EPlantState.DRY)
518 {
520 UpdatePlant();
522 }
523 }
524
525 //NEW METHOD FOR PLANT SPRAYING
526 void SprayPlant( float consumed_quantity )
527 {
528 //Rework this to have something smooth
529 m_SprayQuantity += consumed_quantity;
530
532 {
533 m_IsInfested = false;
535
536 ChangeInfestation( false );
537 UpdatePlant();
538 }
539 }
540
542 {
543 if ( GetGame() && GetGame().IsServer() )
544 {
546
548 {
549 ItemBase item = ItemBase.Cast( GetGame().CreateObjectEx( "PlantMaterial", pos, ECE_PLACE_ON_SURFACE ) );
551 }
552
553 RemoveSlot();
554 }
555 }
556
558 {
559 if ( GetGame() && GetGame().IsServer() )
560 {
562
563 RemoveSlot();
564 }
565 }
566
567 void Harvest( PlayerBase player )
568 {
569 if (IsHarvestable())
570 {
571 for ( int i = 0; i < m_CropsCount; i++ )
572 {
573 vector pos = player.GetPosition();
574 ItemBase item = ItemBase.Cast( GetGame().CreateObjectEx( m_CropsType, pos, ECE_PLACE_ON_SURFACE ) );
575 item.SetQuantity( item.GetQuantityMax() );
576 }
577 }
578
579 m_HasCrops = false;
580
581 SetSynchDirty();
582
583 UpdatePlant();
584 m_GardenBase.SyncSlots();
585 }
586
587 void SetPlantState(int state)
588 {
589 m_PlantState = state;
590 m_TimeTracker = 0;
591 SetSynchDirty();
592 }
593
595 {
596 return m_PlantState;
597 }
598
600 {
601 return m_PlantStateIndex;
602 }
603
604 float GetWater()
605 {
606 if ( GetSlot() )
607 return GetSlot().GetWater();
608
609 return 0;
610 }
611
613 {
614 if ( GetSlot() )
615 return GetSlot().GetWaterUsage();
616
617 return 0;
618 }
619
621 {
622 Slot slotPlant = m_Slot;
623
624 if ( m_PlantState == EPlantState.PAUSED && slotPlant && slotPlant.GetWater() < slotPlant.GetWaterUsage() )
625 return true;
626
627 return false;
628 }
629
631 {
632 return m_SprayQuantity;
633 }
634
636 {
637 return m_SprayUsage;
638 }
639
641 {
642 GardenBase garden = GardenBase.Cast( GetHierarchyParent() );
643
644 if ( garden )
645 garden.RemoveSlotPlant( this );
646 }
647
648 void SetSlot(Slot slot)
649 {
650 if ( slot )
651 {
652 m_Slot = slot;
653 }
654 }
655
656 Slot GetSlot()
657 {
658 return m_Slot;
659 }
660
661 void SetGarden(GardenBase gardenBase)
662 {
663 m_GardenBase = gardenBase;
664 }
665
667 {
668 return m_GardenBase;
669 }
670
672 {
674 return true;
675
676 return false;
677 }
678
680 {
681 if (m_PlantState == EPlantState.MATURE && m_HasCrops)
682 return true;
683
684 return false;
685 }
686
687 bool HasCrops()
688 {
689 return m_HasCrops;
690 }
691
692 override void SetActions()
693 {
694 super.SetActions();
695
698 }
699
700 void DebugSetTimes(int maturity, int spoil, int spoilRemove, int dryDelete)
701 {
702 if (maturity != 0)
703 {
704 m_FullMaturityTime = maturity;
706 }
707
708 if (spoil != 0)
710
711 if (spoilRemove != 0)
712 m_SpoiledRemoveTime = spoilRemove;
713
714 if (dryDelete != 0)
715 m_DeleteDryPlantTime = dryDelete;
716 }
717
718 static void DebugSetGlobalTimes(int maturity, int spoil, int spoilRemove, int dryDelete)
719 {
720 m_DebugFullMaturityTime = maturity;
721 m_DebugSpoilTime = spoil;
722 m_DebugSpoilRemoveTime = spoilRemove;
723 m_DebugDeleteDryTime = dryDelete;
724 }
725
726 static void DebugSetTickSpeedMultiplier(float multiplier)
727 {
728 m_DebugTickSpeedMultiplier = multiplier;
729 }
730
731 // DEPRECATED
732 static const int STATE_DRY = 0;
733 static const int STATE_GROWING = 1;
734 static const int STATE_MATURE = 2;
735 static const int STATE_SPOILED = 3;
736
742
747 bool IsMature();
748 bool IsSpoiled();
749 bool IsDry();
750 bool IsGrowing();
753 string StopInfestation( float consumed_quantity )
754 {
755 return "";
756 }
757}
Param3 int
@ DRY
Определения 3_Game/Entities/EntityAI.c:3
eBleedingSourceType GetType()
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
void SetActions()
Определения AdvancedCommunication.c:213
const int ECE_PLACE_ON_SURFACE
Определения CentralEconomy.c:37
override void Tick()
Определения ContaminatedArea_Dynamic.c:106
override Widget Init()
Определения DayZGame.c:127
string ToStringLen(int len)
Integer to string with fixed length, padded with zeroes.
Определения EnConvert.c:59
override bool CanPutInCargo(EntityAI parent)
Определения ExplosivesBase.c:277
override bool CanPutIntoHands(EntityAI parent)
Определения ExplosivesBase.c:287
override bool CanRemoveFromHands(EntityAI parent)
Определения ExplosivesBase.c:297
override void SetTakeable(bool pState)
Определения ItemBase.c:9184
void UnlockFromParent()
Unlocks this item from its attachment slot of its parent.
Определения ItemBase.c:5695
void OnStoreSave(ParamsWriteContext ctx)
Определения ModifiersManager.c:229
bool OnStoreLoad(ParamsReadContext ctx, int version)
Определения ModifiersManager.c:265
bool IsGrowing()
void SetDry()
Определения PlantBase.c:515
ref Timer m_GrowthTimer
Определения PlantBase.c:740
bool NeedsWater()
Определения PlantBase.c:620
string GetCropsType()
Определения PlantBase.c:220
static const int STATE_GROWING
Определения PlantBase.c:733
void SetGarden(GardenBase gardenBase)
Определения PlantBase.c:661
void OnStoreSaveCustom(ParamsWriteContext ctx)
Определения PlantBase.c:332
Slot GetSlot()
Определения PlantBase.c:656
PluginHorticulture m_ModuleHorticulture
Определения PlantBase.c:42
float m_TimeTracker
Определения PlantBase.c:37
bool IsMature()
bool IsSpoiled()
void InfestationTimerTick()
ref Timer m_InfestationTimer
Определения PlantBase.c:741
float m_InfestationChance
Определения PlantBase.c:14
ref Timer m_TimeTicker
Определения PlantBase.c:36
GardenBase m_GardenBase
Определения PlantBase.c:39
int m_PlantStateIndex
Определения PlantBase.c:22
bool IsDry()
enum EPlantState m_SprayUsage
int GetPlantStateIndex()
Определения PlantBase.c:599
void PrintValues()
Определения PlantBase.c:381
bool m_HasCrops
Определения PlantBase.c:18
void SprayPlant(float consumed_quantity)
Определения PlantBase.c:526
void DestroyPlant()
Определения PlantBase.c:557
void ChangeInfestation(bool is_infested)
Определения PlantBase.c:417
float m_PlantMaterialMultiplier
Определения PlantBase.c:20
GardenBase GetGarden()
Определения PlantBase.c:666
static int m_DebugFullMaturityTime
Определения PlantBase.c:48
void DebugSetTimes(int maturity, int spoil, int spoilRemove, int dryDelete)
Определения PlantBase.c:700
EPlantState m_PlantState
Определения PlantBase.c:24
const float SPOIL_AFTER_MATURITY_TIME
Определения PlantBase.c:44
void ~PlantBase()
Определения PlantBase.c:91
ref Timer m_SpoiledRemoveTimer
Определения PlantBase.c:737
float GetSprayUsage()
Определения PlantBase.c:635
float m_StateChangeTime
Определения PlantBase.c:34
EPlantState
Определения PlantBase.c:2
@ MATURE
Определения PlantBase.c:5
@ SPOILED
Определения PlantBase.c:6
@ GROWING
Определения PlantBase.c:4
void CheckWater()
static int m_DebugDeleteDryTime
Определения PlantBase.c:51
int m_CropsCount
Определения PlantBase.c:17
int m_SpoiledRemoveTime
Определения PlantBase.c:31
bool m_MarkForDeletion
Определения PlantBase.c:28
ref Timer m_DeleteDryPlantTimer
Определения PlantBase.c:738
void SpoiledRemoveTimerTick()
float m_SprayQuantity
Определения PlantBase.c:27
bool IsHarvestable()
Определения PlantBase.c:679
void RemovePlantEx(vector pos)
Определения PlantBase.c:541
void RemoveSlot()
Определения PlantBase.c:640
bool HasCrops()
Определения PlantBase.c:687
bool IsSprayable()
Определения PlantBase.c:671
static int m_DebugSpoilTime
Определения PlantBase.c:49
static void DebugSetTickSpeedMultiplier(float multiplier)
Определения PlantBase.c:726
static const int STATE_SPOILED
Определения PlantBase.c:735
float GetWaterMax()
Определения PlantBase.c:612
static void DebugSetGlobalTimes(int maturity, int spoil, int spoilRemove, int dryDelete)
Определения PlantBase.c:718
bool NeedsSpraying()
EPlantState GetPlantState()
Определения PlantBase.c:594
static float m_DebugTickSpeedMultiplier
Определения PlantBase.c:52
int m_GrowthStagesCount
Определения PlantBase.c:16
static int m_DebugSpoilRemoveTime
Определения PlantBase.c:50
void PlantBase()
Определения PlantBase.c:54
void GrowthTimerTick()
Определения PlantBase.c:481
ref Slot m_Slot
Определения PlantBase.c:40
float m_CurrentPlantMaterialQuantity
Определения PlantBase.c:23
float GetWater()
Определения PlantBase.c:604
static const int STATE_DRY
Определения PlantBase.c:732
void SetSpoiled()
Определения PlantBase.c:505
void RemovePlant()
ref Timer m_SpoilAfterFullMaturityTimer
Определения PlantBase.c:739
string m_CropsType
Определения PlantBase.c:19
void SetSlot(Slot slot)
Определения PlantBase.c:648
bool m_IsInfested
Определения PlantBase.c:26
static const int STATE_MATURE
Определения PlantBase.c:734
void UpdatePlant()
Определения PlantBase.c:448
void DeleteDryPlantTick()
int m_DeleteDryPlantTime
Определения PlantBase.c:30
bool OnStoreLoadCustom(ParamsReadContext ctx, int version)
Определения PlantBase.c:225
int m_SpoilAfterFullMaturityTime
Определения PlantBase.c:33
void SetPlantState(int state)
Определения PlantBase.c:587
void Harvest(PlayerBase player)
Определения PlantBase.c:567
float GetSprayQuantity()
Определения PlantBase.c:630
const int TICK_FREQUENCY
Определения PlantBase.c:45
int m_FullMaturityTime
Определения PlantBase.c:32
string StopInfestation(float consumed_quantity)
Определения PlantBase.c:753
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:316
proto native int ConfigGetInt(string path)
Get int value from config on path.
proto bool ConfigGetText(string path, out string value)
Get string value from config on path.
proto native Weather GetWeather()
Returns weather controller object.
proto native void ObjectDelete(Object obj)
Определения GardenPlot.c:2
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfWoodenPlanks.c:88
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
Определения DayZPlayerImplement.c:63
proto native Rain GetRain()
Returns a rain phenomenon object.
proto native float GetActual()
Определения EnConvert.c:97
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
ErrorExSeverity
Определения EnDebug.c:62
proto void Print(void var)
Prints content of variable to console/log.
enum ShapeType ErrorEx
bool IsPendingDeletion()
Get whether the Effect is queued up for being cleaned up.
Определения Effect.c:260
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
Определения EnMath.c:126
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
static proto float Ceil(float f)
Returns ceil of value.
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9
const int CALL_CATEGORY_SYSTEM
Определения 3_Game/tools/tools.c:8
@ PAUSED
The video is paused.
Определения EnWidgets.c:523