DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
CfgGameplayHandler.c
См. документацию.
2{
3 private static string m_Path = "$mission:cfggameplay.json";
5
7
8 //---------------------------------------------------------------------------------------
9 static void RegisterItem(ITEM_DataBase item)
10 {
11 m_Items.Insert(item);
12 }
13 //---------------------------------------------------------------------------------------
14 private static void ValidateItems()
15 {
16 foreach (ITEM_DataBase item : m_Items)
17 {
18 if (!item.ValidateServer())
19 {
20 string itemName = item.Type().ToString();
21 itemName.Replace("ITEM_", "");
22 PrintToRPT("Validation failed during loading of 'cfggameplay.json' for " + itemName);
23 item.InitServer();
24 }
25 }
26 }
27
28 //---------------------------------------------------------------------------------------
29 private static void InitData()
30 {
31 foreach (ITEM_DataBase item:m_Items)
32 {
33 item.InitServer();
34 }
35 }
36 #ifdef DEVELOPER
37 //---------------------------------------------------------------------------------------
38 static void Output()
39 {
40 Print(m_Items.Count());
41 }
42 #endif
43 //---------------------------------------------------------------------------------------
44 static bool LoadData()
45 {
46 if (!FileExist(m_Path))
47 {
48 m_Path = "";
49 g_Game.GetWorldName(m_Path);
50 m_Path = string.Format("dz/worlds/%1/ce/cfggameplay.json", m_Path);
51 }
52
53 bool cfgGameplayFileEnabled = g_Game.ServerConfigGetInt( "enableCfgGameplayFile" );
54
55 #ifdef DIAG_DEVELOPER
56 if (!g_Game.IsDedicatedServer())
57 {
58 cfgGameplayFileEnabled = true;
59 }
60 #endif
61
62 if (!cfgGameplayFileEnabled || !FileExist(m_Path))
63 {
64 m_Data.InitServer();//legacy call
65 InitData();
66 OnLoaded();
67 return false;
68 }
69
70 string errorMessage;
71 if (!JsonFileLoader<CfgGameplayJson>.LoadFile(m_Path, m_Data, errorMessage))
72 ErrorEx(errorMessage);
73
75 OnLoaded();
76
77 return true;
78 }
79
80 //---------------------------------------------------------------------------------------
81 static void OnLoaded()
82 {
83 g_Game.GetMission().OnGameplayDataHandlerLoad();
84 DayZGame.Cast(g_Game).OnGameplayDataHandlerLoad();
85 }
86
87 //---------------------------------------------------------------------------------------
88 static void SyncDataSend(notnull Man player)
89 {
90 g_Game.RPCSingleParam(player, ERPCs.RPC_CFG_GAMEPLAY_SYNC, new Param1<CfgGameplayJson>(m_Data), true, player.GetIdentity());
91 }
92
93 //---------------------------------------------------------------------------------------
94 static void SyncDataSendEx(notnull PlayerIdentity identity)
95 {
96 //Debug.Log("SyncDataSendEx");
97 g_Game.RPCSingleParam(null, ERPCs.RPC_CFG_GAMEPLAY_SYNC, new Param1<CfgGameplayJson>(m_Data), true, identity);
98 }
99
100 //---------------------------------------------------------------------------------------
101
102 static void OnRPC(Man player, ParamsReadContext ctx)
103 {
104 Param1<CfgGameplayJson> data = new Param1<CfgGameplayJson>(null);
105
106 if ( ctx.Read(data) )
107 {
108 m_Data = data.param1;
109 }
110 else
111 {
112 ErrorEx("CfgGameplayHandler - client failed to read incoming data");
113 }
114 }
115
116
117 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
121 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
122
123 //========================
124 // !!! ONLY GETTERS BELLOW
125 //========================
126
127
128 //----------------------------------------------------------------------------------
130 {
131 return m_Data.PlayerData.disablePersonalLight;
132 }
133 //----------------------------------------------------------------------------------
134
135 //------------------------------- WorldsData -----------------------------------
136 static int GetLightingConfig()
137 {
138 return m_Data.WorldsData.lightingConfig;
139 }
140
142 {
143 return m_Data.WorldsData.bunkerBroadcastEnabled;
144 }
145
147 {
148 return m_Data.WorldsData.objectSpawnersArr;
149 }
150
152 {
153 return m_Data.WorldsData.environmentMinTemps;
154 }
155
157 {
158 return m_Data.WorldsData.environmentMaxTemps;
159 }
161 {
162 return m_Data.WorldsData.wetnessWeightModifiers;
163 }
164 //----------------------------------------------------------------------------------
165
166
168 {
169 return m_Data.GeneralData.disableBaseDamage;
170 }
171
173 {
174 return m_Data.GeneralData.disableBaseDecay;
175 }
176 //----------------------------------------------------------------------------------
177
179 {
180 return m_Data.GeneralData.disableContainerDamage;
181 }
182 //----------------------------------------------------------------------------------
184 {
185 return m_Data.GeneralData.disableRespawnDialog;
186 }
187 //----------------------------------------------------------------------------------
189 {
190 return m_Data.GeneralData.disableRespawnInUnconsciousness;
191 }
192 //----------------------------------------------------------------------------------
194 {
195 return m_Data.PlayerData.StaminaData.sprintStaminaModifierErc;
196 }
197 //----------------------------------------------------------------------------------
199 {
200 return m_Data.PlayerData.StaminaData.sprintStaminaModifierCro;
201 }
202 //----------------------------------------------------------------------------------
204 {
205 return m_Data.PlayerData.StaminaData.sprintSwimmingStaminaModifier;
206 }//----------------------------------------------------------------------------------
208 {
209 return m_Data.PlayerData.StaminaData.sprintLadderStaminaModifier;
210 }
211 //----------------------------------------------------------------------------------
213 {
214 return m_Data.PlayerData.StaminaData.staminaWeightLimitThreshold;
215 }
216 //----------------------------------------------------------------------------------
217 static float GetStaminaMax()
218 {
219 return m_Data.PlayerData.StaminaData.staminaMax;
220 }
221 //----------------------------------------------------------------------------------
223 {
224 return m_Data.PlayerData.StaminaData.staminaKgToStaminaPercentPenalty;
225 }
226 //----------------------------------------------------------------------------------
227 static float GetStaminaMinCap()
228 {
229 return m_Data.PlayerData.StaminaData.staminaMinCap;
230 }
231 //----------------------------------------------------------------------------------
233 {
234 return m_Data.PlayerData.StaminaData.meleeStaminaModifier;
235 }
236 //----------------------------------------------------------------------------------
238 {
239 return m_Data.PlayerData.StaminaData.obstacleTraversalStaminaModifier;
240 }
241 //----------------------------------------------------------------------------------
243 {
244 return m_Data.PlayerData.StaminaData.holdBreathStaminaModifier;
245 }
246 //----------------------------------------------------------------------------------
248 {
249 return Math.Max(0.01, m_Data.PlayerData.MovementData.timeToStrafeJog);
250 }
251 //----------------------------------------------------------------------------------
253 {
254 return Math.Max(0.01, m_Data.PlayerData.MovementData.timeToSprint);
255 }
256 //----------------------------------------------------------------------------------
258 {
259 return Math.Max(0.01, m_Data.PlayerData.MovementData.timeToStrafeSprint);
260 }
261 //----------------------------------------------------------------------------------
263 {
264 return Math.Max(0.01, m_Data.PlayerData.MovementData.rotationSpeedJog);
265 }
266 //----------------------------------------------------------------------------------
268 {
269 return Math.Max(0.01, m_Data.PlayerData.MovementData.rotationSpeedSprint);
270 }
271 //----------------------------------------------------------------------------------
273 {
274 return m_Data.PlayerData.WeaponObstructionData.staticMode;
275 }
276 //----------------------------------------------------------------------------------
278 {
279 return m_Data.PlayerData.WeaponObstructionData.dynamicMode;
280 }
281 //----------------------------------------------------------------------------------
282 static bool GetDisable2dMap()
283 {
284 return m_Data.PlayerData.disable2dMap;
285 }
286 //----------------------------------------------------------------------------------
288 {
289 return m_Data.BaseBuildingData.HologramData.disableIsCollidingBBoxCheck;
290 }
291 //----------------------------------------------------------------------------------
293 {
294 return m_Data.BaseBuildingData.HologramData.disableIsCollidingPlayerCheck;
295 }
296 //----------------------------------------------------------------------------------
298 {
299 return m_Data.BaseBuildingData.HologramData.disableIsClippingRoofCheck;
300 }
301 //----------------------------------------------------------------------------------
303 {
304 return m_Data.BaseBuildingData.HologramData.disableIsBaseViableCheck;
305 }
306 //----------------------------------------------------------------------------------
308 {
309 return m_Data.BaseBuildingData.HologramData.disableIsInTerrainCheck;
310 }
311 //----------------------------------------------------------------------------------
313 {
314 return m_Data.BaseBuildingData.HologramData.disableIsUnderwaterCheck;
315 }
316 //----------------------------------------------------------------------------------
318 {
319 return m_Data.BaseBuildingData.HologramData.disableHeightPlacementCheck;
320 }
321 //----------------------------------------------------------------------------------
323 {
324 return m_Data.BaseBuildingData.HologramData.disableIsPlacementPermittedCheck;
325 }
326 //----------------------------------------------------------------------------------
328 {
329 return m_Data.BaseBuildingData.HologramData.disableIsCollidingAngleCheck;
330 }
331 //----------------------------------------------------------------------------------
333 {
334 return m_Data.BaseBuildingData.HologramData.disableIsCollidingGPlotCheck;
335 }
336 //----------------------------------------------------------------------------------
338 {
339 return m_Data.BaseBuildingData.ConstructionData.disableIsCollidingCheck;
340 }
341 //----------------------------------------------------------------------------------
343 {
344 return m_Data.BaseBuildingData.ConstructionData.disablePerformRoofCheck;
345 }
346 //----------------------------------------------------------------------------------
348 {
349 return m_Data.BaseBuildingData.ConstructionData.disableDistanceCheck;
350 }
351 //----------------------------------------------------------------------------------
353 {
354 return m_Data.BaseBuildingData.ConstructionData.disableItemFalling;
355 }
356 //----------------------------------------------------------------------------------
358 {
359 return m_Data.BaseBuildingData.ConstructionData.disableDropAttachmentsOnFall;
360 }
361 //----------------------------------------------------------------------------------
363 {
364 return m_Data.BaseBuildingData.ConstructionData.disableRefundMaterialsOnFall;
365 }
366 //----------------------------------------------------------------------------------
368 {
369 return m_Data.BaseBuildingData.HologramData.disableColdAreaPlacementCheck;
370 }
371 //----------------------------------------------------------------------------------
373 {
374 return m_Data.BaseBuildingData.HologramData.disallowedTypesInUnderground;
375 }
376 //----------------------------------------------------------------------------------
377 static bool GetHitIndicationOverrideEnabled() //TODO - ?
378 {
379 return m_Data.UIData.HitIndicationData.hitDirectionOverrideEnabled;
380 }
381 //----------------------------------------------------------------------------------
383 {
384 return m_Data.UIData.HitIndicationData.hitDirectionBehaviour;
385 }
386 //----------------------------------------------------------------------------------
388 {
389 return m_Data.UIData.HitIndicationData.hitDirectionStyle;
390 }
391 //----------------------------------------------------------------------------------
393 {
394 return m_Data.UIData.HitIndicationData.hitDirectionIndicatorColorStr.HexToInt();
395 }
396 //----------------------------------------------------------------------------------
398 {
399 return m_Data.UIData.HitIndicationData.hitDirectionMaxDuration;
400 }
401 //----------------------------------------------------------------------------------
403 {
404 return m_Data.UIData.HitIndicationData.hitDirectionBreakPointRelative;
405 }
406 //----------------------------------------------------------------------------------
408 {
409 return m_Data.UIData.HitIndicationData.hitDirectionScatter;
410 }
411 //----------------------------------------------------------------------------------
413 {
414 return m_Data.UIData.HitIndicationData.hitIndicationPostProcessEnabled;
415 }
416 //----------------------------------------------------------------------------------
417 static bool GetUse3DMap()
418 {
419 return m_Data.UIData.use3DMap;
420 }
421 //----------------------------------------------------------------------------------
423 {
424 return m_Data.PlayerData.ShockHandlingData.shockRefillSpeedConscious;
425 }
426 //----------------------------------------------------------------------------------
428 {
429 return m_Data.PlayerData.ShockHandlingData.shockRefillSpeedUnconscious;
430 }
431 //----------------------------------------------------------------------------------
433 {
434 return m_Data.PlayerData.ShockHandlingData.allowRefillSpeedModifier;
435 }
436
437 //--- MapData ----------------------------------------------------------------------
439 {
440 return m_Data.MapData.ignoreMapOwnership;
441 }
442 //----------------------------------------------------------------------------------
444 {
445 return m_Data.MapData.ignoreNavItemsOwnership;
446 }
447 //----------------------------------------------------------------------------------
449 {
450 return m_Data.MapData.displayPlayerPosition;
451 }
452 //----------------------------------------------------------------------------------
454 {
455 return m_Data.MapData.displayNavInfo;
456 }
457 //----------------------------------------------------------------------------------
459 {
460 return m_Data.PlayerData.DrowningData.staminaDepletionSpeed;
461 }
462 //----------------------------------------------------------------------------------
464 {
465 return m_Data.PlayerData.DrowningData.healthDepletionSpeed;
466 }
467 //----------------------------------------------------------------------------------
469 {
470 return m_Data.PlayerData.DrowningData.shockDepletionSpeed;
471 }
472 //----------------------------------------------------------------------------------
474 {
475 return m_Data.PlayerData.MovementData.allowStaminaAffectInertia;
476 }
477 //----------------------------------------------------------------------------------
479 {
480 return m_Data.PlayerData.spawnGearPresetFiles;
481 }
482 //----------------------------------------------------------------------------------
484 {
485 return m_Data.WorldsData.playerRestrictedAreaFiles;
486 }
487 //----------------------------------------------------------------------------------
489 {
490 return m_Data.VehicleData.boatDecayMultiplier;
491 }
492 //----------------------------------------------------------------------------------
494 {
495 return m_Data.VehicleData.canDetachAttachedCarWheels;
496 }
497 //----------------------------------------------------------------------------------
499 {
500 return m_Data.VehicleData.canDamageAttachedCarWheels;
501 }
502 //----------------------------------------------------------------------------------
504 {
505 return m_Data.VehicleData.canDetachAttachedBikeWheels;
506 }
507 //----------------------------------------------------------------------------------
509 {
510 return m_Data.VehicleData.canDamageAttachedBikeWheels;
511 }
512 //----------------------------------------------------------------------------------
514 {
515 return m_Data.ExternalLockData.protectionTime;
516 }
517 //----------------------------------------------------------------------------------
519 {
520 return m_Data.ExternalLockData.protectionResetTime;
521 }
522 //----------------------------------------------------------------------------------
524 {
525 return m_Data.ExternalLockData.protectionCountStageOne;
526 }
527 //----------------------------------------------------------------------------------
529 {
530 return m_Data.ExternalLockData.protectionCountStageTwo;
531 }
532 //----------------------------------------------------------------------------------
534 {
535 return m_Data.SandstormData.sandstormFrequency;
536 }
537}
EWeaponObstructionMode
Определения CfgGameplayDataJson.c:376
DayZGame g_Game
Определения DayZGame.c:4074
ERPCs
Определения ERPCs.c:2
ItemBase m_Items[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:28
static bool GetDisableRefundMaterialsOnFall()
Определения CfgGameplayHandler.c:362
static void InitData()
Определения CfgGameplayHandler.c:29
static ref CfgGameplayJson m_Data
Определения CfgGameplayHandler.c:6
static bool GetHitIndicationOverrideEnabled()
Определения CfgGameplayHandler.c:377
static float GetExternalLockProtectionResetTime()
Определения CfgGameplayHandler.c:518
static float GetSandstormFrequency()
Определения CfgGameplayHandler.c:533
static bool GetDisablePersonalLight()
Определения CfgGameplayHandler.c:129
static float GetHoldBreathStaminaModifier()
Определения CfgGameplayHandler.c:242
static float GetSprintLadderStaminaModifier()
Определения CfgGameplayHandler.c:207
static bool GetUse3DMap()
Определения CfgGameplayHandler.c:417
static bool GetDisable2dMap()
Определения CfgGameplayHandler.c:282
static void OnLoaded()
Определения CfgGameplayHandler.c:81
static void RegisterItem(ITEM_DataBase item)
Определения CfgGameplayHandler.c:9
static float GetMovementTimeToStrafeSprint()
Определения CfgGameplayHandler.c:257
static bool GetCanDetachAttachedBikeWheels()
Определения CfgGameplayHandler.c:503
static string m_Path
Определения CfgGameplayHandler.c:3
static int GetHitIndicationIndicatorColor()
Определения CfgGameplayHandler.c:392
static TStringArray GetObjectSpawnersArr()
Определения CfgGameplayHandler.c:146
static float GetExternalLockProtectionCountStageTwo()
Определения CfgGameplayHandler.c:528
static float GetShockRefillSpeedUnconscious()
Определения CfgGameplayHandler.c:427
static bool GetAllowRefillSpeedModifier()
Определения CfgGameplayHandler.c:432
static bool GetDisableBaseDecay()
Определения CfgGameplayHandler.c:172
static TStringArray GetPlayerRestrictedAreaFiles()
Определения CfgGameplayHandler.c:483
static bool GetDisableIsInTerrainCheck()
Определения CfgGameplayHandler.c:307
static bool GetDisablePerformRoofCheck()
Определения CfgGameplayHandler.c:342
static array< float > GetEnvironmentMaxTemps()
Определения CfgGameplayHandler.c:156
static float GetMovementTimeToSprint()
Определения CfgGameplayHandler.c:252
static int GetLightingConfig()
Определения CfgGameplayHandler.c:136
static bool GetDisableIsClippingRoofCheck()
Определения CfgGameplayHandler.c:297
static float GetStaminaKgToStaminaPercentPenalty()
Определения CfgGameplayHandler.c:222
static float GetMovementTimeToStrafeJog()
Определения CfgGameplayHandler.c:247
static bool GetDisableBaseDamage()
Определения CfgGameplayHandler.c:167
static EWeaponObstructionMode GetWeaponObstructionModeStatic()
Определения CfgGameplayHandler.c:272
static int GetHitIndicationMode()
Определения CfgGameplayHandler.c:382
static bool GetDisableIsUnderwaterCheck()
Определения CfgGameplayHandler.c:312
static void OnRPC(Man player, ParamsReadContext ctx)
Определения CfgGameplayHandler.c:102
static bool GetDisableDropAttachmentsOnFall()
Определения CfgGameplayHandler.c:357
static bool GetDisableColdAreaPlacementCheck()
Определения CfgGameplayHandler.c:367
static bool GetDisableIsCollidingBBoxCheck()
Определения CfgGameplayHandler.c:287
static float GetShockDepletionSpeed()
Определения CfgGameplayHandler.c:468
static bool GetAllowStaminaAffectInertia()
Определения CfgGameplayHandler.c:473
static void ValidateItems()
Определения CfgGameplayHandler.c:14
static float GetStaminaMinCap()
Определения CfgGameplayHandler.c:227
static float GetSprintStaminaModifierCro()
Определения CfgGameplayHandler.c:198
static float GetSprintStaminaModifierErc()
Определения CfgGameplayHandler.c:193
static bool GetDisableRespawnInUnconsciousness()
Определения CfgGameplayHandler.c:188
static bool GetDisableHeightPlacementCheck()
Определения CfgGameplayHandler.c:317
static bool GetCanDamageAttachedCarWheels()
Определения CfgGameplayHandler.c:498
static bool GetCanDetachAttachedCarWheels()
Определения CfgGameplayHandler.c:493
static bool GetHitIndicationPPEEnabled()
Определения CfgGameplayHandler.c:412
static bool LoadData()
Определения CfgGameplayHandler.c:44
static float GetHealthDepletionSpeed()
Определения CfgGameplayHandler.c:463
static float GetObstacleTraversalStaminaModifier()
Определения CfgGameplayHandler.c:237
static bool GetDisableIsPlacementPermittedCheck()
Определения CfgGameplayHandler.c:322
static float GetHitIndicationMaxDuration()
Определения CfgGameplayHandler.c:397
static bool GetMapDisplayPlayerPosition()
Определения CfgGameplayHandler.c:448
static bool GetMapDisplayNavigationInfo()
Определения CfgGameplayHandler.c:453
static float GetStaminaMax()
Определения CfgGameplayHandler.c:217
static TStringSet GetDisallowedTypesInUnderground()
Определения CfgGameplayHandler.c:372
static bool GetDisableDistanceCheck()
Определения CfgGameplayHandler.c:347
static int GetHitIndicationTypeID()
Определения CfgGameplayHandler.c:387
static TStringArray GetPlayerSpawnGearPresetFiles()
Определения CfgGameplayHandler.c:478
static bool GetDisableItemFalling()
Определения CfgGameplayHandler.c:352
static bool GetDisableIsCollidingPlayerCheck()
Определения CfgGameplayHandler.c:292
static ref array< ref ITEM_DataBase > m_Items
Определения CfgGameplayHandler.c:4
static bool GetDisableContainerDamage()
Определения CfgGameplayHandler.c:178
static float GetMovementRotationSpeedJog()
Определения CfgGameplayHandler.c:262
static float GetMeleeStaminaModifier()
Определения CfgGameplayHandler.c:232
static float GetExternalLockProtectionTime()
Определения CfgGameplayHandler.c:513
static int GetBunkerBroadcastEnabled()
Определения CfgGameplayHandler.c:141
static bool GetCanDamageAttachedBikeWheels()
Определения CfgGameplayHandler.c:508
static bool GetDisableIsCollidingGPlotCheck()
Определения CfgGameplayHandler.c:332
static bool GetDisableRespawnDialog()
Определения CfgGameplayHandler.c:183
static float GetStaminaDepletionSpeed()
Определения CfgGameplayHandler.c:458
static bool GetDisableIsCollidingAngleCheck()
Определения CfgGameplayHandler.c:327
static bool GetMapIgnoreMapOwnership()
Определения CfgGameplayHandler.c:438
static float GetSprintSwimmingStaminaModifier()
Определения CfgGameplayHandler.c:203
static float GetMovementRotationSpeedSprint()
Определения CfgGameplayHandler.c:267
static bool GetMapIgnoreNavItemsOwnership()
Определения CfgGameplayHandler.c:443
static bool GetDisableIsCollidingCheck()
Определения CfgGameplayHandler.c:337
static float GetBoatDecayMultiplier()
Определения CfgGameplayHandler.c:488
static array< float > GetEnvironmentMinTemps()
Определения CfgGameplayHandler.c:151
static float GetStaminaWeightLimitThreshold()
Определения CfgGameplayHandler.c:212
static bool GetDisableIsBaseViableCheck()
Определения CfgGameplayHandler.c:302
static float GetExternalLockProtectionCountStageOne()
Определения CfgGameplayHandler.c:523
static EWeaponObstructionMode GetWeaponObstructionModeDynamic()
Определения CfgGameplayHandler.c:277
static float GetHitIndicationBreakPoint()
Определения CfgGameplayHandler.c:402
static array< float > GetWetnessWeightModifiers()
Определения CfgGameplayHandler.c:160
static float GetShockRefillSpeedConscious()
Определения CfgGameplayHandler.c:422
static void SyncDataSendEx(notnull PlayerIdentity identity)
Определения CfgGameplayHandler.c:94
static void SyncDataSend(notnull Man player)
Определения CfgGameplayHandler.c:88
static float GetHitIndicationScatter()
Определения CfgGameplayHandler.c:407
contents of this class will be transfered to client upon connecting, with the variables in either ini...
Определения CfgGameplayDataJson.c:3
Определения EnMath.c:7
The class that will be instanced (moddable)
Определения gameplay.c:389
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Serializer ParamsReadContext
Определения gameplay.c:15
proto void Print(void var)
Prints content of variable to console/log.
proto void PrintToRPT(void var)
Prints content of variable to RPT file (performance warning - each write means fflush!...
enum ShapeType ErrorEx
class array< Class T > TStringArray
set< string > TStringSet
Определения EnScript.c:821
proto bool FileExist(string name)
Check existence of file.
static proto float Max(float x, float y)
Returns bigger of two given values.
proto int Replace(string sample, string replace)
Replace all occurrances of 'sample' in 'str' by 'replace'.