Создание default_squadна новых локациях для ЗП с использованием приложения X-RaySDK0.7

создаём default_squad для smart_terrain В СДК создать smart_terrain <Префикс-имя-локации>_<имя смарта> «esc_polyna» В custom_data прописать:

1
[smart_terrain] cfg = scripts\escape\smart\esc_polyna.ltx(соответственно поэтому адресу создать файл)

Назначить тип рестиктора : «NOTARestictor» Расставить way point и присвоить правильное имя.(Количество по желанию) <Префикс-имя-локации>_<имя смарта>_<имя -работы>_<номер-работы>_<работа>

  1. «esc_polyna _walker_1_walk» «esc_polyna _walker_1_look»
  2. «esc_polyna _walker_2_walk»«esc_polyna _walker_2_look»
  3. «esc_polyna _walker_3_walk»«esc_polyna _walker_3_look»
  4. «esc_polyna _guard_1_walk»  «esc_polyna _ guard_1_look»
  5. «esc_polyna _guard_2_walk»  «esc_polyna _ guard_2_look»

В итоге получился смарт с участием 5 НПС.


·         gamedata\configs\scripts\escape\smart\esc_polyna.ltx(прописать в созданный файл)

1
2
3
[smart_terrain]; esc_polyna
squad_id = 1 (Номер ID &ndash; будем считать что это первый смарт на новой локации)
max_population = 3

gamedata\configs\misc\simulation_object_props.ltx

1
2
[esc_polyna]: default_squad
sim_avail = false

gamedata\configs\misc\smart_terrain_masks.ltx

1
2
[esc_polyna]
255,255,255,152

gamedata\configs\misc\squad_descr.ltx

1
#include &quot;squad_descr_ escape.ltx&quot;

По адресу «gamedata\configs\misc» создать файл с именем «squad_descr_ escape.ltx»

1
2
3
4
5
6
7
8
; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.
 
[esc_polyna _stalker_squad]:online_offline_group
faction = stalker(Группировка НПС)
npc = sim_default_stalker_1, sim_default_stalker_2, sim_default_stalker_2, sim_default_stalker_3, sim_default_stalker_4 (участие 5 НПС)
target_smart = esc_polyna (Принадлежность отряда к этому смарту)
;spawn_point = esc_polyna_spawn_point(по желанию можно поставить way point)
story_id = esc_polyna _stalker_squad(ID отряда)

gmedata\configs\misc\simulation.ltx

1
2
3
4
;;;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;;
 
[start_position_ escape]
esc_polyna _stalker_squad = esc_polyna

 


Зарегистрировать нашу локацию в скриптах

·

gamedata\scripts\sim_board.script

1
2
3
4
5
6
7
8
9
squad_ltx = system_ini()
setting_ini = ini_file(&quot;misc\\simulation.ltx&quot;)
 
local group_id_by_levels = {zaton = 1,
							pripyat = 2,
							jupiter = 3,
							labx8 = 4,
							jupiter_underground = 5,
							escape = 6}

gamedata\scripts\smart_terrain.script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function surge_stats()
	local sim_obj_registry = simulation_objects.get_sim_obj_registry().objects
	local sim_squads = {
						["zaton"] = {},
						["jupiter"] = {},
						["pripyat"] = {},
						["escape"] = {}
		}
	local sim_smarts = {
						["zaton"] = {},
						["jupiter"] = {},
						["pripyat"] = {},
						["escape"] = {}
		}

gamedata\scripts\surge_manager.script

1
2
3
4
function CSurgeManager:initialize()
	self.ini = ini_file(&quot;misc\\surge_manager.ltx&quot;)
 
	self.levels_respawn = {zaton = false, jupiter = false, pripyat = false, escape = false}
1
2
3
4
5
6
7
	if(self.started) then
		utils.w_CTime(packet, self.inited_time)
 
		packet:w_bool(self.levels_respawn.zaton)
		packet:w_bool(self.levels_respawn.jupiter)
		packet:w_bool(self.levels_respawn.pripyat)
		packet:w_bool(self.levels_respawn.escape)
1
2
3
4
5
6
7
	if(self.started) then
		self.inited_time = utils.r_CTime(packet)
 
		self.levels_respawn.zaton = packet:r_bool()
		self.levels_respawn.jupiter = packet:r_bool()
		self.levels_respawn.pripyat = packet:r_bool()		
		self.levels_respawn.escape = packet:r_bool()
1
2
3
4
5
6
7
8
function CSurgeManager:skip_surge()
	local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
	Y, M, D, h, m, s, ms = self.inited_time:get(Y, M, D, h, m, s, ms)
	self.last_surge_time:set(Y, M, D, h, m, s + self.surge_time, ms)
 
	self.started 			= false
	self.finished 			= true
	self.levels_respawn 	= {zaton = true, jupiter = true, pripyat = true, escape = true}
1
2
3
4
function CSurgeManager:end_surge(manual)
	self.started 			= false
	self.finished 			= true
	self.levels_respawn 	= {zaton = true, jupiter = true, pripyat = true, escape = true}
1
2
3
4
5
6
7
8
9
10
11
if(diff_sec&gt;=self.surge_time) then
			if(level) then
				if(level.name()==&quot;zaton&quot;) then
					xr_sound.set_sound_play(db.actor:id(), &quot;zat_a2_stalker_barmen_after_surge&quot;)
				elseif(level.name()==&quot;jupiter&quot;) then
					xr_sound.set_sound_play(db.actor:id(), &quot;jup_a6_stalker_medik_after_surge&quot;)
				elseif(level.name()==&quot;escape&quot;) then
					xr_sound.set_sound_play(db.actor:id(), &quot;zat_a2_stalker_barmen_after_surge&quot;);прописать свою схему 
				elseif not has_alife_info(&quot;pri_b305_fifth_cam_end&quot;) then
					xr_sound.set_sound_play(db.actor:id(), &quot;pri_a17_kovalsky_after_surge&quot;)
				end
1
2
3
4
5
6
7
8
9
10
				if(level) then
					if(level.name()==&quot;zaton&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;zat_a2_stalker_barmen_surge_phase_2&quot;)
					elseif(level.name()==&quot;jupiter&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;jup_a6_stalker_medik_phase_2&quot;)
					elseif(level.name()==&quot;escape&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;zat_a2_stalker_barmen_surge_phase_2&quot;);прописать свою схему
					elseif not has_alife_info(&quot;pri_b305_fifth_cam_end&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;pri_a17_kovalsky_surge_phase_2&quot;)
					end
1
2
3
4
5
6
7
8
9
10
				if(level) then
					if(level.name()==&quot;zaton&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;zat_a2_stalker_barmen_surge_phase_1&quot;)
					elseif(level.name()==&quot;jupiter&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;jup_a6_stalker_medik_phase_1&quot;)
					elseif(level.name()==&quot;scape&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;zat_a2_stalker_barmen_surge_phase_2&quot;);прописать свою схему
					elseif not has_alife_info(&quot;pri_b305_fifth_cam_end&quot;) then
						xr_sound.set_sound_play(db.actor:id(), &quot;pri_a17_kovalsky_surge_phase_1&quot;)
					end

Добавление в smart_terrain camp_zone(посиделки у костра). Дополнение к предыдущему разделу

В СДК создать camp_zone вокруг костра недалеко от smart_terrain <Префикс-имя-локации>_<имя смарта>_<камп-зона> «esc_polyna_camp» если ещё один камп то «esc_polyna_camp1» и т.д. В custom_data прописать:

1
2
[camp]
cfg = scripts\camp.ltx

Назначить тип рестиктора : «NOTARestictor» Рассадить вокруг костра НПС с именем:

1
2
3
4
5
esc_polyna _animpoint_1
 
esc_polyna _animpoint_2
 
esc_polyna _animpoint_3

В итоге получился смарт с участием 5+3=8 НПС. По адресу «gamedata\configs\misc» создать файл с именем «squad_descr_ escape.ltx»

1
2
3
4
5
6
7
; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.
[esc_polyna _stalker_squad]:online_offline_group
faction = stalker(Группировка НПС)
npc = sim_default_stalker_1, sim_default_stalker_2, sim_default_stalker_2, sim_default_stalker_3, sim_default_stalker_4, sim_default_stalker_3, sim_default_stalker_4 (участие 8 НПС)
target_smart = esc_polyna(Принадлежность отряда к этому смарту)
;spawn_point = esc_polyna_spawn_point(по желанию можно поставить way point)
story_id = esc_polyna _stalker_squad(ID отряда)