DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PluginConfigScene.c
См. документацию.
1class PluginConfigScene extends PluginConfigHandler
2{
3 protected string FILE_ROOT = "$saves:";
4 protected const string FILE_ROOT_SCENES = "scenes";
5
6 protected const string PARAM_MISSION = "Mission";
7 protected const string PARAM_TIME = "InitTime";
8 protected const string PARAM_YEAR = "InitYear";
9 protected const string PARAM_MONTH = "InitMonth";
10 protected const string PARAM_DAY = "InitDay";
11 protected const string PARAM_HOUR = "InitHour";
12 protected const string PARAM_MINUTE = "InitMinute";
13 protected const string PARAM_OVERCAST = "WeatherInitOvercast";
14 protected const string PARAM_RAIN = "WeatherInitRain";
15 protected const string PARAM_FOG = "WeatherInitFog";
16 protected const string PARAM_WIND_F = "WeatherInitWindForce";
17 protected const string PARAM_PLAYER = "Player";
18 protected const string PARAM_OBJ_COUNT = "SceneObjectsCount";
19 protected const string PARAM_OBJ_NAME = "SceneObject";
20 protected const string PARAM_OBJ_ATT = "Att";
21 protected const string PARAM_OBJ_LNK = "Lnk";
22 protected const string PARAM_OBJ_TYPE = "type";
23 protected const string PARAM_OBJ_POS = "position";
24 protected const string PARAM_OBJ_ROT = "rotation";
25 protected const string PARAM_OBJ_DMG = "damage";
26 protected const string PARAM_OBJ_HLT = "health";
27 protected const string PARAM_OBJ_ISCR = "init_script";
28
30
31 protected string m_FileSceneName;
32
33 //========================================
34 // OnInit
35 //========================================
36 override void OnInit()
37 {
38 //super.OnInit();
39
40 FILE_ROOT = g_Game.GetMissionFolderPath();
41 }
42
43 //========================================
44 // GetPathScenes
45 //========================================
47 {
48 return FILE_ROOT+"\\"+FILE_ROOT_SCENES;
49 }
50
51 //========================================
52 // GetFileName
53 //========================================
54 override string GetFileName()
55 {
56 return GetPathScenes()+"\\"+m_FileSceneName;
57 }
58
59 //========================================
60 // SceneRename
61 //========================================
62 void SceneRename(string scene_name, string scene_name_new)
63 {
64 string file_path = GetPathScenes()+"\\"+scene_name+"."+PluginSceneManager.SCENE_SUFIX;
65 string file_path_new = GetPathScenes()+"\\"+scene_name_new+"."+PluginSceneManager.SCENE_SUFIX;
66 PluginFileHandler.FileRename(file_path, file_path_new);
67 }
68
69 //========================================
70 // SceneDelete
71 //========================================
72 void SceneDelete(string scene_name)
73 {
74 string file_path = GetPathScenes()+"\\"+scene_name+"."+PluginSceneManager.SCENE_SUFIX;
75 PluginFileHandler.FileDelete(file_path);
76 }
77
78 //========================================
79 // SceneDuplicate
80 //========================================
81 void SceneDuplicate(string scene_name)
82 {
83 string file_path = GetPathScenes()+"\\"+scene_name+"."+PluginSceneManager.SCENE_SUFIX;
84 string file_path_new = file_path;
85
86 int i = 0;
87 while ( FileExist(file_path_new) )
88 {
89 file_path_new = GetPathScenes()+"\\"+scene_name+"_copy"+i.ToString()+"."+PluginSceneManager.SCENE_SUFIX;
90 i++;
91 }
92
93 PluginFileHandler.FileDuplicate(file_path, file_path_new);
94 }
95
96 //========================================
97 // GetSceneList
98 //========================================
100 {
101 if ( !FileExist( GetPathScenes() ) )
102 {
104 }
105
106 string file_name;
107 int file_attr;
108 int flags;
109 TStringArray list = new TStringArray;
110
111 string path_find_pattern = GetPathScenes()+"/*."+PluginSceneManager.SCENE_SUFIX; //*/
112 FindFileHandle file_handler = FindFile(path_find_pattern, file_name, file_attr, flags);
113
114 bool found = true;
115 while ( found )
116 {
117 int pos = file_name.IndexOf(".");
118
119 if ( pos > -1 )
120 {
121 list.Insert( file_name.Substring(0, pos) );
122 }
123
124 found = FindNextFile(file_handler, file_name, file_attr);
125 }
126
127 return list;
128 }
129
130 //========================================
131 // EncodeInitScript
132 //========================================
133 string EncodeInitScript( string script )
134 {
135 script.Replace( "\"", "^" );
136 script.Replace( "\n", "$" );
137 return script;
138 }
139
140 //========================================
141 // DecodeInitScript
142 //========================================
143 string DecodeInitScript( string script )
144 {
145 script.Replace( "^", "\"" );
146 script.Replace( "$", "\n" );
147 return script;
148 }
149
150//=====================================================================================
151//=====================================================================================
152// SAVE SCENE
153//=====================================================================================
154//=====================================================================================
155
156 //========================================
157 // SceneSave
158 //========================================
160 {
161 PluginSceneManager module_scene_editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
162
163 EntityAI player = PluginSceneManager.PLAYER;
164
165 // Log("Saving started....")
166 m_FileSceneName = scene.GetNameScene()+"."+PluginSceneManager.SCENE_SUFIX;
167
168 // Save Settings
169 SaveSceneSettings(scene);
170
171 // Save Weater
172 SaveSceneWeather(scene);
173
174 // Save Players
175 SaveScenePlayer(scene);
176
177 // Save Objects
178 SaveSceneObjects(scene);
179
180 // Save To File
181 SaveConfigToFile();
182 }
183
184
185 //=============================================
186 // SAVE: SaveSceneSettings (Mission Name, Time, Year, Month, Day, Hour, Minute)
187 //=============================================
189 {
190 // Save Mission Name
191 CfgParamString cfg_mission = CfgParamString.Cast( GetParamByName(PARAM_MISSION, CFG_TYPE_STRING) );
192 cfg_mission.SetValue(scene.GetNameMission());
193
194 // Save Time
195 CfgParamFloat cfg_time = CfgParamFloat.Cast( GetParamByName(PARAM_TIME, CFG_TYPE_FLOAT) );
196 cfg_time.SetValue(scene.GetInitTime());
197
198 // Save Year
199 CfgParamInt cfg_year = CfgParamInt.Cast( GetParamByName(PARAM_YEAR, CFG_TYPE_INT) );
200 cfg_year.SetValue(scene.GetInitYear());
201
202 // Save Month
203 CfgParamInt cfg_month = CfgParamInt.Cast( GetParamByName(PARAM_MONTH, CFG_TYPE_INT) );
204 cfg_month.SetValue(scene.GetInitMonth());
205
206 // Save Day
207 CfgParamInt cfg_day = CfgParamInt.Cast( GetParamByName(PARAM_DAY, CFG_TYPE_INT) );
208 cfg_day.SetValue(scene.GetInitDay());
209
210 // Save Hour
211 CfgParamInt cfg_hour = CfgParamInt.Cast( GetParamByName(PARAM_HOUR, CFG_TYPE_INT) );
212 cfg_hour.SetValue(scene.GetInitHour());
213
214 // Save Minute
215 CfgParamInt cfg_minute = CfgParamInt.Cast( GetParamByName(PARAM_MINUTE, CFG_TYPE_INT) );
216 cfg_minute.SetValue(scene.GetInitMinute());
217 }
218
219 //=============================================
220 // SAVE: SaveSceneWeather (Overcast, Rain, Fog, Wind Force)
221 //=============================================
223 {
224 // Save Weather Overcast
225 CfgParamFloat cfg_overcast = CfgParamFloat.Cast( GetParamByName(PARAM_OVERCAST, CFG_TYPE_FLOAT) );
226 cfg_overcast.SetValue(scene.GetInitOvercast());
227
228 // Save Weather Rain
229 CfgParamFloat cfg_rain = CfgParamFloat.Cast( GetParamByName(PARAM_RAIN, CFG_TYPE_FLOAT) );
230 cfg_rain.SetValue(scene.GetInitRain());
231
232 // Save Weather Fog
233 CfgParamFloat cfg_fog = CfgParamFloat.Cast( GetParamByName(PARAM_FOG, CFG_TYPE_FLOAT) );
234 cfg_fog.SetValue(scene.GetInitFog());
235
236 // Save Weather Wind Force
237 CfgParamFloat cfg_wind_force = CfgParamFloat.Cast( GetParamByName(PARAM_WIND_F, CFG_TYPE_FLOAT) );
238 cfg_wind_force.SetValue(scene.GetInitWindForce());
239 }
240
241 //=============================================
242 // SAVE: SaveScenePlayer (position, rotation, health, script)
243 //=============================================
245 {
246 array<ref ScenePlayer> players = scene.GetScenePlayers();
247
248 if ( players.Count() > 0 )
249 {
250 ScenePlayer plyr = players.Get(0);
251
252 // Save Player
253 CfgParamArray cfg_param_player = CfgParamArray.Cast( GetParamByName(PARAM_PLAYER, CFG_TYPE_ARRAY) );
254
255 // Obj Position
256 CfgParamString cfg_param_player_pos = CfgParamString.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
257 cfg_param_player_pos.SetValue(plyr.GetPositionAsString());
258
259 // Obj Rotation
260 CfgParamFloat cfg_param_player_rot = CfgParamFloat.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
261 cfg_param_player_rot.SetValue(plyr.GetRotation());
262
263 // Obj Health
264 CfgParamFloat cfg_param_player_hlt = CfgParamFloat.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
265 cfg_param_player_hlt.SetValue(plyr.GetHealth());
266
267 // Obj Init Script
268 CfgParamString cfg_param_player_iscr = CfgParamString.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
269 cfg_param_player_iscr.SetValue( EncodeInitScript(plyr.GetInitScript()) );
270 }
271 }
272
273 //=============================================
274 // SAVE: SaveSceneObjects (position, rotation, health, script, scripted links)
275 //=============================================
277 {
278 array<ref SceneObject> objects = scene.GetSceneObjects();
279
280 // Save Objects
281 for ( int i = 0; i < objects.Count(); ++i )
282 {
283 SceneObject obj = objects.Get(i);
284
285 string param_name;
286
287 param_name = PARAM_OBJ_NAME+"_"+i.ToString();
288
289 // Save Scene Object
290 CfgParamArray cfg_param_obj = CfgParamArray.Cast( GetParamByName(param_name, CFG_TYPE_ARRAY) );
291
292 // Obj Type Name
293 CfgParamString cfg_param_obj_type = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_TYPE, CFG_TYPE_STRING) );
294 cfg_param_obj_type.SetValue(obj.GetTypeName());
295
296 // Obj Position
297 CfgParamString cfg_param_obj_pos = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
298 cfg_param_obj_pos.SetValue(obj.GetPositionAsString());
299
300 // Obj Rotation
301 CfgParamFloat cfg_param_obj_rot = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
302 cfg_param_obj_rot.SetValue(obj.GetRotation());
303
304 // Obj Health
305 CfgParamFloat cfg_param_obj_hlt = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
306 cfg_param_obj_hlt.SetValue(obj.GetHealth());
307
308 // Obj Init Script
309 CfgParamString cfg_param_obj_iscr = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
310 cfg_param_obj_iscr.SetValue( EncodeInitScript(obj.GetInitScript()) );
311
312 EntityAI e_obj = obj.GetObject();
313
314 int attcount = e_obj.GetInventory().AttachmentCount();
315
316 if ( attcount > 0 )
317 {
318 string param_name_att = param_name+"_"+PARAM_OBJ_ATT;
319 CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att, CFG_TYPE_ARRAY) );
320 cfg_param_att.Clear();
321
322 for (int att = 0; att < attcount; att++)
323 {
324 EntityAI attachment = e_obj.GetInventory().GetAttachmentFromIndex(att);
325
326 CfgParamString cfg_param_att_str = new CfgParamString("");
327 cfg_param_att_str.SetValue( attachment.GetType() );
328 cfg_param_att.InsertValue( cfg_param_att_str );
329 }
330 }
331
332 array<SceneObject> linked_scene_objects = obj.GetLinkedSceneObjects();
333 if ( linked_scene_objects.Count() > 0 )
334 {
335 string param_name_lnk = param_name + "_" + PARAM_OBJ_LNK;
336 CfgParamArray cfg_param_lnk = CfgParamArray.Cast( GetParamByName( param_name_lnk, CFG_TYPE_ARRAY ) );
337 cfg_param_lnk.Clear();
338
339 for ( int lnk = 0; lnk < linked_scene_objects.Count(); lnk++ )
340 {
341 CfgParamInt cfg_param_lnk_int = new CfgParamInt("");
342
343 int index = objects.Find( linked_scene_objects.Get(lnk) );
344
345 if ( index >= 0 )
346 {
347 cfg_param_lnk_int.SetValue( index );
348 cfg_param_lnk.InsertValue( cfg_param_lnk_int );
349 }
350 }
351 }
352 }
353
354 // Save Count Of objects
355 CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT, CFG_TYPE_INT) );
356 cfg_obj_count.SetValue(objects.Count());
357 }
358
359//=====================================================================================
360//=====================================================================================
361// LOAD SCENE
362//=====================================================================================
363//=====================================================================================
364
365 //=============================================
366 // LOAD: SceneDataLoad (Settings, Weather, Player, Objects)
367 //=============================================
368 SceneData SceneDataLoad(string scene_name)
369 {
370 m_FileSceneName = scene_name+"."+PluginSceneManager.SCENE_SUFIX;
371
372//PrintString("Loading scene: "+ scene_name);
373
374 LoadConfigFile();
375
376 // Load Scene name
377 SceneData scene = new SceneData;
378 scene.SetNameScene(scene_name);
379
380 // Load Scene settings
381 LoadSceneSettings(scene);
382
383 // Load Scene Weather
384 LoadSceneWeather(scene);
385
386 // Load Scene Player
387 LoadScenePlayer(scene);
388
389 // Load Scene Objects
390 LoadSceneObjects(scene);
391
392 if ( !FileExist(GetFileName()) )
393 {
394 SceneDataSave(scene);
395 }
396
397 return scene;
398 }
399
400 //=============================================
401 // LOAD: LoadSceneSettings (Mission Name, Time, Year, Month, Day, Hour, Minute)
402 //=============================================
404 {
405 // Load Mission Name
406 CfgParamString cfg_mission = CfgParamString.Cast( GetParamByName(PARAM_MISSION, CFG_TYPE_STRING) );
407 scene.SetNameMission(cfg_mission.GetValue());
408
409 // Load Time
410 CfgParamFloat cfg_time = CfgParamFloat.Cast( GetParamByName(PARAM_TIME, CFG_TYPE_FLOAT) );
411 scene.SetInitTime(cfg_time.GetValue());
412
413 int year, month, day, hour, minute;
414 GetGame().GetWorld().GetDate( year, month, day, hour, minute );
415
416 // Load Year
417 if ( ParamExist(PARAM_YEAR) )
418 {
419 CfgParamInt cfg_year = CfgParamInt.Cast( GetParamByName( PARAM_YEAR, CFG_TYPE_INT ) );
420 scene.SetInitYear( cfg_year.GetValue() );
421 }
422 else
423 {
424 scene.SetInitYear( year );
425 }
426
427 // Load Month
428 if ( ParamExist(PARAM_MONTH) )
429 {
430 CfgParamInt cfg_month = CfgParamInt.Cast( GetParamByName( PARAM_MONTH, CFG_TYPE_INT ) );
431 scene.SetInitMonth( cfg_month.GetValue() );
432 }
433 else
434 {
435 scene.SetInitMonth( month );
436 }
437
438 // Load Day
439 if ( ParamExist(PARAM_DAY) )
440 {
441 CfgParamInt cfg_day = CfgParamInt.Cast( GetParamByName( PARAM_DAY, CFG_TYPE_INT ) );
442 scene.SetInitDay( cfg_day.GetValue() );
443 }
444 else
445 {
446 scene.SetInitDay( day );
447 }
448
449 // Load Hour
450 if ( ParamExist(PARAM_HOUR) )
451 {
452 CfgParamInt cfg_hour = CfgParamInt.Cast( GetParamByName( PARAM_HOUR, CFG_TYPE_INT ) );
453 scene.SetInitHour( cfg_hour.GetValue() );
454 }
455 else
456 {
457 scene.SetInitHour( hour );
458 }
459
460 // Load Minute
461 if ( ParamExist(PARAM_MINUTE) )
462 {
463 CfgParamInt cfg_minute = CfgParamInt.Cast( GetParamByName( PARAM_MINUTE, CFG_TYPE_INT ) );
464 scene.SetInitMinute( cfg_minute.GetValue() );
465 }
466 else
467 {
468 scene.SetInitMinute( minute );
469 }
470 }
471
472 //=============================================
473 // LOAD: LoadSceneWeather (Overcast, Rain, Fog, Wind Force)
474 //=============================================
476 {
477 //Load Weather Overcast
478 if ( ParamExist(PARAM_OVERCAST) )
479 {
480 CfgParamFloat cfg_overcast = CfgParamFloat.Cast( GetParamByName(PARAM_OVERCAST, CFG_TYPE_FLOAT) );
481 scene.SetInitOvercast(cfg_overcast.GetValue());
482 }
483
484 //Load Weather Rain
485 if ( ParamExist(PARAM_RAIN) )
486 {
487 CfgParamFloat cfg_rain = CfgParamFloat.Cast( GetParamByName(PARAM_RAIN, CFG_TYPE_FLOAT) );
488 scene.SetInitRain(cfg_rain.GetValue());
489 }
490
491 //Load Weather Fog
492 if ( ParamExist(PARAM_FOG) )
493 {
494 CfgParamFloat cfg_fog = CfgParamFloat.Cast( GetParamByName(PARAM_FOG, CFG_TYPE_FLOAT) );
495 scene.SetInitFog(cfg_fog.GetValue());
496 }
497
498 //Load Weather Wind Force
499 if ( ParamExist(PARAM_WIND_F) )
500 {
501 CfgParamFloat cfg_wind_force = CfgParamFloat.Cast( GetParamByName(PARAM_WIND_F, CFG_TYPE_FLOAT) );
502 scene.SetInitWindForce(cfg_wind_force.GetValue());
503 }
504 }
505
506 //=============================================
507 // LOAD: LoadScenePlayer (position, rotation, health, script)
508 //=============================================
510 {
511 // Only in local game (without server, (GetGame.GetPlayer is null on server! -> by design)
512 if ( GetGame().GetPlayer() != NULL )
513 {
514 CfgParamArray cfg_player = CfgParamArray.Cast( GetParamByName(PARAM_PLAYER, CFG_TYPE_ARRAY) );
515 CfgParamString cfg_ply_pos = CfgParamString.Cast( cfg_player.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
516 CfgParamFloat cfg_ply_rot = CfgParamFloat.Cast( cfg_player.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
517 CfgParamFloat cfg_ply_hlt = CfgParamFloat.Cast( cfg_player.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
518 CfgParamString cfg_ply_iscr = CfgParamString.Cast( cfg_player.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
519
520 ScenePlayer scn_player = scene.CreateScenePlayer();
521 scn_player.LinkEntityAI(GetGame().GetPlayer());
522
523 if ( PluginSceneManager.GetInstance().GetLoadPlayerPos() )
524 {
525 // start scene position
526 vector start_pos = cfg_ply_pos.GetValue().ToVector();
527
528 if ( start_pos != vector.Zero )
529 {
530 // Set Position
531 scn_player.SetPosition(cfg_ply_pos.GetValue().ToVector());
532
533 // Set Rotation
534 scn_player.SetRotation(cfg_ply_rot.GetValue());
535 }
536 }
537
538 // Set Health
539 // Health check. Do not spawn player character as dead. He can still be spawned as injured.
540 float health2 = cfg_ply_hlt.GetValue();
541 if (health2 <= 0)
542 health2 = scn_player.GetMaxHealth();
543
544 scn_player.SetHealth(health2);
545
546 // Exe Script
547 scn_player.SetInitScript( DecodeInitScript(cfg_ply_iscr.GetValue()) );
548 }
549//PrintString("LoadScenePlayer.. Finished");
550 }
551
552 //=============================================
553 // LOAD: LoadSceneObjects (position, rotation, health, script, scripted links)
554 //=============================================
556 {
557 CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT, CFG_TYPE_INT) );
558 int obj_count = cfg_obj_count.GetValue();
559
560 for ( int i = 0; i < obj_count; ++i )
561 {
562 string param_name = PARAM_OBJ_NAME+"_"+i.ToString();
563
564 // Load scene object name
565 CfgParamArray cfg_obj = CfgParamArray.Cast( GetParamByName(param_name, CFG_TYPE_ARRAY) );
566
567 CfgParamString cfg_obj_type = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_TYPE, CFG_TYPE_STRING) );
568 CfgParamString cfg_obj_pos = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
569 CfgParamFloat cfg_obj_rot = CfgParamFloat.Cast( cfg_obj.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
570 CfgParamFloat cfg_obj_hlt = CfgParamFloat.Cast( cfg_obj.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
571 CfgParamString cfg_obj_iscr = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
572
573//PrintString(itoa(i)+ " Loading param_name: "+ param_name+ " => object type: "+ cfg_obj_type.GetValue());
574
575 // Create Scene Object + position
576 SceneObject scn_obj = scene.CreateSceneObject(cfg_obj_type.GetValue(), cfg_obj_pos.GetValue().ToVector());
577
578 // Setup rotation
579 scn_obj.SetRotation(cfg_obj_rot.GetValue());
580 // Setup health
581 scn_obj.SetHealth(cfg_obj_hlt.GetValue());
582 // Setup init script
583 scn_obj.SetInitScript( DecodeInitScript(cfg_obj_iscr.GetValue()) );
584
585 // Setup indices for linked objects
586 CfgParamArray cfg_obj_param_links = CfgParamArray.Cast( GetParamByName(param_name + "_" + PARAM_OBJ_LNK, CFG_TYPE_ARRAY) );
587 array<ref CfgParam> cfg_obj_links = cfg_obj_param_links.GetValues();
588
589 for ( int lnko = 0; lnko < cfg_obj_links.Count(); lnko++ )
590 {
591 CfgParamInt cfg_obj_param_lnk_int = CfgParamInt.Cast( cfg_obj_links.Get(lnko) );
592 scn_obj.m_LinkedSceneObjectsIndices.Insert( cfg_obj_param_lnk_int.GetValue() );
593 }
594
595 string param_name_att = param_name +"_"+ PARAM_OBJ_ATT;
596
597 if ( ParamExist(param_name_att) )
598 {
599 CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att, CFG_TYPE_ARRAY) );
600
601 array<ref CfgParam> cfg_param_attachments = cfg_param_att.GetValues();
602
603 for ( int j = 0; j < cfg_param_attachments.Count(); ++j )
604 {
605 CfgParamString cfg_param_att_str = CfgParamString.Cast( cfg_param_attachments.Get(j) );
606 scn_obj.GetObject().GetInventory().CreateAttachment( cfg_param_att_str.GetValue() );
607 }
608 }
609 }
610 }
611}
const int CFG_TYPE_ARRAY
Определения CfgParam.c:5
const int CFG_TYPE_INT
Определения CfgParam.c:2
const int CFG_TYPE_STRING
Определения CfgParam.c:1
const int CFG_TYPE_FLOAT
Определения CfgParam.c:3
DayZGame g_Game
Определения DayZGame.c:3868
PlayerBase GetPlayer()
Определения ModifierBase.c:51
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:316
proto native World GetWorld()
Определения Building.c:6
const string PARAM_RAIN
Определения PluginConfigScene.c:14
const string PARAM_TIME
Определения PluginConfigScene.c:7
const string PARAM_OBJ_ISCR
Определения PluginConfigScene.c:27
const string PARAM_PLAYER
Определения PluginConfigScene.c:17
const string PARAM_OBJ_LNK
Определения PluginConfigScene.c:21
override string GetFileName()
Определения PluginConfigScene.c:54
void LoadSceneWeather(SceneData scene)
Определения PluginConfigScene.c:475
TStringArray m_CfgTemplate
Определения PluginConfigScene.c:29
string m_FileSceneName
Определения PluginConfigScene.c:31
override void OnInit()
Определения PluginConfigScene.c:36
void SceneRename(string scene_name, string scene_name_new)
Определения PluginConfigScene.c:62
string EncodeInitScript(string script)
Определения PluginConfigScene.c:133
void LoadSceneSettings(SceneData scene)
Определения PluginConfigScene.c:403
const string PARAM_HOUR
Определения PluginConfigScene.c:11
void SaveSceneWeather(SceneData scene)
Определения PluginConfigScene.c:222
TStringArray GetSceneList()
Определения PluginConfigScene.c:99
void SceneDelete(string scene_name)
Определения PluginConfigScene.c:72
const string PARAM_OBJ_ATT
Определения PluginConfigScene.c:20
const string PARAM_MINUTE
Определения PluginConfigScene.c:12
const string PARAM_DAY
Определения PluginConfigScene.c:10
const string PARAM_OBJ_TYPE
Определения PluginConfigScene.c:22
const string PARAM_OVERCAST
Определения PluginConfigScene.c:13
void LoadSceneObjects(SceneData scene)
Определения PluginConfigScene.c:555
const string PARAM_WIND_F
Определения PluginConfigScene.c:16
void SaveScenePlayer(SceneData scene)
Определения PluginConfigScene.c:244
const string PARAM_YEAR
Определения PluginConfigScene.c:8
SceneData SceneDataLoad(string scene_name)
Определения PluginConfigScene.c:368
const string PARAM_OBJ_ROT
Определения PluginConfigScene.c:24
void SceneDataSave(SceneData scene)
Определения PluginConfigScene.c:159
const string PARAM_OBJ_HLT
Определения PluginConfigScene.c:26
void LoadScenePlayer(SceneData scene)
Определения PluginConfigScene.c:509
const string PARAM_OBJ_POS
Определения PluginConfigScene.c:23
string DecodeInitScript(string script)
Определения PluginConfigScene.c:143
const string FILE_ROOT_SCENES
Определения PluginConfigScene.c:4
void SceneDuplicate(string scene_name)
Определения PluginConfigScene.c:81
const string PARAM_OBJ_DMG
Определения PluginConfigScene.c:25
const string PARAM_MISSION
Определения PluginConfigScene.c:6
void SaveSceneSettings(SceneData scene)
Определения PluginConfigScene.c:188
const string PARAM_OBJ_NAME
Определения PluginConfigScene.c:19
const string PARAM_MONTH
Определения PluginConfigScene.c:9
void SaveSceneObjects(SceneData scene)
Определения PluginConfigScene.c:276
const string PARAM_FOG
Определения PluginConfigScene.c:15
string FILE_ROOT
Определения PluginConfigScene.c:3
string GetPathScenes()
Определения PluginConfigScene.c:46
const string PARAM_OBJ_COUNT
Определения PluginConfigScene.c:18
int GetInitMinute()
Определения SceneData.c:191
float GetInitRain()
Определения SceneData.c:225
int GetInitYear()
Определения SceneData.c:123
void SetInitRain(float value)
Определения SceneData.c:233
float GetInitOvercast()
Определения SceneData.c:208
void SetNameScene(string name)
Определения SceneData.c:82
string GetNameMission()
Определения SceneData.c:90
void SetInitFog(float value)
Определения SceneData.c:250
array< ref SceneObject > GetSceneObjects()
Определения SceneData.c:33
void SetInitHour(int value)
Определения SceneData.c:182
int GetInitMonth()
Определения SceneData.c:140
ScenePlayer CreateScenePlayer()
Определения SceneData.c:303
void SetInitMonth(int value)
Определения SceneData.c:148
float GetInitTime()
Определения SceneData.c:106
float GetInitWindForce()
Определения SceneData.c:259
void SetInitMinute(int value)
Определения SceneData.c:199
void SetInitOvercast(float value)
Определения SceneData.c:216
int GetInitDay()
Определения SceneData.c:157
void SetInitWindForce(float value)
Определения SceneData.c:267
float GetInitFog()
Определения SceneData.c:242
SceneObject CreateSceneObject(string obj_name, vector pos)
Определения SceneData.c:285
void SetInitDay(int value)
Определения SceneData.c:165
string GetNameScene()
Определения SceneData.c:74
void SetInitYear(int value)
Определения SceneData.c:131
array< ref ScenePlayer > GetScenePlayers()
Определения SceneData.c:41
void SetInitTime(float time)
Определения SceneData.c:114
void SetNameMission(string name)
Определения SceneData.c:98
int GetInitHour()
Определения SceneData.c:174
Определения SceneData.c:2
array< SceneObject > GetLinkedSceneObjects()
Определения SceneObject.c:324
float GetHealth()
Определения SceneObject.c:433
void SetInitScript(string init_script)
Определения SceneObject.c:91
void SetRotation(float rot)
Определения SceneObject.c:504
string GetTypeName()
Определения SceneObject.c:375
ref array< int > m_LinkedSceneObjectsIndices
Определения SceneObject.c:15
void SetHealth(float value)
Определения SceneObject.c:453
float GetRotation()
Определения SceneObject.c:490
string GetPositionAsString()
Определения SceneObject.c:472
string GetInitScript()
Определения SceneObject.c:83
EntityAI GetObject()
Определения SceneObject.c:59
Определения SceneObject.c:2
proto void GetDate(out int year, out int month, out int day, out int hour, out int minute)
Get actual ingame world time.
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106
proto native CGame GetGame()
array< string > TStringArray
Определения EnScript.c:685
proto native bool MakeDirectory(string name)
Makes a directory.
enum FindFileFlags FindFile(string pattern, out string fileName, out FileAttr fileAttributes, FindFileFlags flags)
proto bool FindNextFile(FindFileHandle handle, out string fileName, out FileAttr fileAttributes)
int[] FindFileHandle
Определения EnSystem.c:503
proto bool FileExist(string name)
Check existence of file.
proto int Replace(string sample, string replace)
Replace all occurrances of 'sample' in 'str' by 'replace'.
proto string Substring(int start, int len)
Substring of 'str' from 'start' position 'len' number of characters.
proto native int IndexOf(string sample)
Finds 'sample' in 'str'. Returns -1 when not found.