SoC. Respawn — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

SoC. Respawn — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
м (Защищена страница «SoC. Respawn» ([edit=autoconfirmed] (бессрочно) [move=autoconfirmed] (бессрочно)))
 
(не показаны 8 промежуточные версии 4 участников)
Строка 1: Строка 1:
 
Респаун, один из самых часто задаваемый вопросов на форумах. Вот, решил написать статью, дабы не втирать одно и тоже каждому, кто не может с этим разобраться.
 
Респаун, один из самых часто задаваемый вопросов на форумах. Вот, решил написать статью, дабы не втирать одно и тоже каждому, кто не может с этим разобраться.
  
------------------------------------------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------------------------------------------------------------------------
  
--------------------------------------------------------'''RESPAWN NPC'''-----------------------------------------------------------------------------
+
== Respawn NPC. ==
  
Для создания респавна, понадобится два файла, '''all.spawn''' и '''spawn_section.ltx'''. Это минимальный набор. Для полной настройки респавнера, нужны ещё '''character_desc_simulation.xml''' и '''npc_profile.xml'''.
+
Для создания респавна NPC, понадобится два файла: '''all.spawn''' и '''spawn_section.ltx'''.  
 +
<br>Это минимальный набор. Для полной настройки респавнера, нужны ещё '''character_desc_simulation.xml''' и '''npc_profile.xml'''.
  
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
Строка 11: Строка 12:
 
'''1.''' В '''all.spawn''' создаём секцию респавнера:
 
'''1.''' В '''all.spawn''' создаём секцию респавнера:
  
<pre>[10000]
+
<ini>
 +
[10000]
 
; cse_abstract properties
 
; cse_abstract properties
 
section_name = respawn
 
section_name = respawn
Строка 42: Строка 44:
 
restrictor_type = 0
 
restrictor_type = 0
  
; se_respawn properties</pre>
+
; se_respawn properties
 +
</ini>
  
 
Если используется программа '''XrSpawner''', то копируем любую секцию "respawn"; меняем имя объекта, координаты, и в окошке "скрипт" прописываем:
 
Если используется программа '''XrSpawner''', то копируем любую секцию "respawn"; меняем имя объекта, координаты, и в окошке "скрипт" прописываем:
  
<pre>[respawn]
+
<ini>
 +
[respawn]
 
respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9
 
respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9
 
max_count = 8
 
max_count = 8
Строка 52: Строка 56:
 
max_spawn = 2
 
max_spawn = 2
 
idle_spawn = medium
 
idle_spawn = medium
conditions = 100</pre>
+
conditions = 100
 +
</ini>
  
 
Где:
 
Где:
'''respawn_section =''' id респавн-секций из файла '''spawn_section.ltx'''. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.
+
<br>'''respawn_section =''' id респавн-секций из файла '''spawn_section.ltx'''. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.
'''max_count =''' колличество респавн-запросов за период времени, пока ГГ находится на уровне. При переходе на другой уровень, счётчик '''max_count''' сбрасывается. (ставить не обязательно)
+
<br>
'''min_count =''' минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)
+
<br>'''max_count =''' колличество респавн-запросов за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик '''max_count''' сбрасывается. (ставить не обязательно)
'''max_spawn =''' колличество нпс за один цикл респавна.
+
<br>
'''idle_spawn =''' тип спавна. Известно три типа '''medium, often, seldom'''. Обычно, используется тип '''medium'''.
+
<br>'''min_count =''' минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)
'''conditions ='''Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так:
+
<br>
'''conditions = {+инфо} 100, 0''' где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.
+
<br>'''max_spawn =''' колличество нпс за один цикл респавна.
 
+
<br>
 +
<br>'''idle_spawn =''' тип спавна. Известно три типа '''medium, often, seldom'''. Обычно, используется тип '''medium'''.
 +
<br>
 +
<br>'''conditions ='''Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так:
 +
<br>
 +
<br>'''conditions = {+инфо} 100, 0''' где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
 
+
<br>'''2.''' В файле '''spawn_section.ltx''', создаём респавн-секции:
'''2.''' В файле '''spawn_section.ltx''', создаём респавн-секции:
+
<ini>
 
+
[esc_urody_respawn_1]:stalker
<pre>[esc_urody_respawn_1]:stalker
+
 
$spawn = "respawn\esc_urody_respawn_1"
 
$spawn = "respawn\esc_urody_respawn_1"
 
character_profile = sim_urody_novice
 
character_profile = sim_urody_novice
Строка 77: Строка 86:
 
character_profile = sim_urody_regular
 
character_profile = sim_urody_regular
 
spec_rank = regular
 
spec_rank = regular
community = bandit</pre>
+
community = bandit
 
+
</ini>
 
Где:
 
Где:
'''esc_urody_respawn_1''' id респавн-секции.
+
<br>'''esc_urody_respawn_1''' id респавн-секции.
'''sim_urody_novice''' и '''sim_urody_regular''' классы профайлов нпс.
+
<br>'''sim_urody_novice''' и '''sim_urody_regular''' классы профайлов нпс.
'''novice''' и '''regular''' ранги нпс.
+
<br>'''novice''' и '''regular''' ранги нпс.
'''bandit''' группировка нпс.
+
<br>'''bandit''' группировка нпс.
 
+
<br>
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
 
 
'''3.''' В файле '''npc_profile.xml''' регистрируем классы '''sim_urody_regular''' и '''sim_urody_novice'''
 
'''3.''' В файле '''npc_profile.xml''' регистрируем классы '''sim_urody_regular''' и '''sim_urody_novice'''
 
 
<pre><character id="sim_urody_regular">
 
<pre><character id="sim_urody_regular">
 
<class>sim_urody_regular</class>
 
<class>sim_urody_regular</class>
Строка 101: Строка 108:
 
'''4.''' Создаём профили, в файле '''character_desc_simulation.xml''', с классами '''sim_urody_regular''' и '''sim_urody_novice''' и группировкой '''bandit'''.
 
'''4.''' Создаём профили, в файле '''character_desc_simulation.xml''', с классами '''sim_urody_regular''' и '''sim_urody_novice''' и группировкой '''bandit'''.
  
--------------------------------------------------------------------------------------------------------------------------------------------------------
+
== Respawn монстров. ==
 
+
---------------------------------------------------'''RESPAWN MUTANTOV'''-------------------------------------------------------------------------------
+
  
 
В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно упрощает.
 
В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно упрощает.
Строка 111: Строка 116:
 
В ней прописываем типы мутантов, из файла "se_respawn.script". Такие как '''flesh_weak, flesh_normal, dog_weak, boar_strong, и т.д.'''.
 
В ней прописываем типы мутантов, из файла "se_respawn.script". Такие как '''flesh_weak, flesh_normal, dog_weak, boar_strong, и т.д.'''.
  
--------------------------------------------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------
 
+
'''ОБЩИЕ НАСТРОЙКИ.'''
---------------------------------------------------'''ОБЩИЕ НАСТРОЙКИ'''--------------------------------------------------------------------------------
+
  
 
Обязательные условия респавна:
 
Обязательные условия респавна:
  
'''1.''' На уровне обязательно должен быть хоть один гулаг для респавнящихся нпс и мутантов. Так как колличество неписей для респавна, ориентируется по доступным местам в гулагах.
+
'''1.''' На локации обязательно должен быть хоть один гулаг для респавнящихся NPC и мутантов, так как количество NPC для респавна, ориентируется по доступным местам в гулагах.
  
 
'''2.''' Респавн производится, только если под гулагами есть доступные работы.
 
'''2.''' Респавн производится, только если под гулагами есть доступные работы.
  
'''3.''' На каждом уровне, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле '''misc\smart_terrain_presets.ltx'''. Чтобы сделать возможным респавн неписей, не предусмотренных на данном уровне. Надо в секции нужного уровня, дописать требуемые типы неписей.
+
'''3.''' На каждой локации, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле '''misc\smart_terrain_presets.ltx'''. Чтобы сделать возможным респавн неписей, не предусмотренных на данной локации. Надо в указанном файле, в секции нужной локации, дописать требуемые типы неписей.
  
--------------------------------------------------------------------------------------------------------------------------------------------------------
+
--------------------------------------------------------------------------
  
Для проверки созданного респавнера, можно не ждать когда сработает системный респавн, а вызвать принудительно респавн в нужной секции. Для этого, прописываем в любой логике, вызов функции '''%=respawner_spawn(имя респавнера)%'''. Где, "имя респавнера" - имя секции, созданой в файле all.spawn. Скобки обязательны.  
+
Для проверки созданного респавнера, можно не ждать когда сработает системный респавн, а вызвать принудительно респавн в нужной секции. Для этого, прописываем в любой логике, вызов функции '''%=respawner_spawn(имя респавнера)%'''. Где, "имя респавнера" - имя секции, созданной в файле all.spawn. Скобки обязательны.  
  
 
Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора:
 
Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора:
  
<pre>[logic]
+
<ini>
 +
[logic]
 
active = sr_idle@in
 
active = sr_idle@in
  
Строка 136: Строка 141:
  
 
[sr_idle@out]
 
[sr_idle@out]
on_actor_outside = sr_idle@in</pre>
+
on_actor_outside = sr_idle@in
 +
</ini>
  
 
Функция принудительного вызова респавна, находится в файле '''xr_effects.script'''.
 
Функция принудительного вызова респавна, находится в файле '''xr_effects.script'''.
 +
-----------------------------------------------------------------------------------------------------------------------------------
  
--------------------------------------------------------------------------------------------------------------------------------------------------------
+
== Respawn предметов. ==
 
+
------------------------------------------------------'''RESPAWN ITEMS'''-------------------------------------------------------------------------------
+
 
+
Респавн инвентаря в инвентарных ящиках, несколько отличается от способа респавна неписей.
+
  
 +
<br>Респавн предметов в инвентарных ящиках, несколько отличается от способа респавна NPC.
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
 
+
<br>
'''1.''' Первое, что нам нужно сделать, это создать инвентарный ящик в файле "all.spawn":
+
<br>'''1.''' Первое, что нам нужно сделать, это создать инвентарный ящик в файле "all.spawn":
 
+
<ini>
<pre>[10000]
+
[10000]
 
; cse_abstract properties
 
; cse_abstract properties
 
section_name = inventory_box
 
section_name = inventory_box
Строка 163: Строка 167:
 
object_flags = 0xffffffba
 
object_flags = 0xffffffba
  
story_id = ай-ди ящика
+
story_id = стори ай-ди ящика
  
 
; cse_visual properties
 
; cse_visual properties
visual_name = equipments\item_box_01</pre>
+
visual_name = equipments\item_box_01
 
+
</ini>
 +
<br>
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
 
+
'''2.''' Затем, в файле '''game_story_id.ltx''' регистрируем story_id ящика. (выбираем любое свободное число).
'''2.''' Затем, в файле '''game_story_id.ltx''' регистрируем id ящика. (выбираем любое свободное число).
+
<br>
 
+
<br>
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
 
 
'''3.''' Создаём респавнер в файле '''all.spawn'''. Координаты и размеры зоны респавнера, должны быть такими, чтоб инвентарный ящик поместился внутри зоны респавнера:
 
'''3.''' Создаём респавнер в файле '''all.spawn'''. Координаты и размеры зоны респавнера, должны быть такими, чтоб инвентарный ящик поместился внутри зоны респавнера:
  
<pre>[10001]
+
<ini>
 +
[10001]
 
; cse_abstract properties
 
; cse_abstract properties
 
section_name = respawn
 
section_name = respawn
name = имя респавнера
+
name = имя_респавнера
 
position = координаты x,y,z
 
position = координаты x,y,z
 
direction = 0,0,0
 
direction = 0,0,0
Строка 192: Строка 197:
 
respawn_section = список вещей респавна
 
respawn_section = список вещей респавна
 
idle_spawn = -1
 
idle_spawn = -1
parent = ай-ди ящика
+
parent = стори ай-ди ящика
 
item_spawn = true
 
item_spawn = true
 
max_count = 7
 
max_count = 7
Строка 200: Строка 205:
 
shapes = shape0
 
shapes = shape0
 
shape0:type = box
 
shape0:type = box
shape0:axis_x = 0.5,0,0  (ширина зоны респавнера, по X)
+
shape0:axis_x = 0.5,0,0  ;(ширина зоны респавнера, по X)
shape0:axis_y = 0,0.5,0  (высота зоны респавнера)
+
shape0:axis_y = 0,0.5,0  ;(высота зоны респавнера)
shape0:axis_z = 0,0,1    (ширина зоны респавнера, по Z)
+
shape0:axis_z = 0,0,1    ;(ширина зоны респавнера, по Z)
 
shape0:offset = 0,0,0
 
shape0:offset = 0,0,0
  
Строка 208: Строка 213:
 
restrictor_type = 3
 
restrictor_type = 3
  
; se_respawn properties</pre>
+
; se_respawn properties
 
+
</ini>
Где:
+
 
+
'''respawn_section =''' список вещей респавна. Как и в респавнерах неписей, возможна прописка соотношений между вещами. Например:
+
                      respawn_section = wpn_pm,2, vodka,2, medkit,1, energy_drink,2, ammo_9x18_fmj,3 
+
 
+
'''idle_spawn =''' тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1).
+
 
+
'''parent =''' ай-ди инвентарного ящика, в котором производить респавн вещей.
+
 
+
'''item_spawn =''' (true\false) возможность включения и отключения респавна. Можно задавать условия.
+
 
+
'''max_count =''' количество респав-циклов за определённый период времени. (Пока ГГ находится на уровне. После перехода ГГ на другой уровень, счётчик сбрасывается).
+
  
 +
Где:
 +
<br>'''respawn_section =''' список вещей респавна, в виде их спавн - секций. Как и в респавнерах неписей, возможна прописка соотношений между вещами.
 +
<br>Например: respawn_section = wpn_pm,2, vodka,2, medkit,1, energy_drink,2, ammo_9x18_fmj,3 
 +
<br>
 +
<br>'''idle_spawn =''' тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1).
 +
<br>
 +
<br>'''parent =''' Story_id инвентарного ящика (из game_story_id.ltx), в котором производить респавн вещей .
 +
<br>
 +
<br>'''item_spawn =''' (true\false) возможность включения и отключения респавна. Можно задавать условия, например инфопоршнем или функцией (разумеется прописанной в xr_conditions.script).
 +
<br>
 +
<br>'''max_count =''' количество респав-циклов за определённый период времени. (Пока ГГ находится на локации. После перехода ГГ на другую локацию, счётчик сбрасывается).
 +
<br>
 
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
  
 
'''4.''' Создаём вызов респавна. Обычно вызов производится из '''smart_terrain'''. В "custom_data" любого подходящего '''smart_terrain''', под секцией [smart_terrain], вписываем вызов респавна:
 
'''4.''' Создаём вызов респавна. Обычно вызов производится из '''smart_terrain'''. В "custom_data" любого подходящего '''smart_terrain''', под секцией [smart_terrain], вписываем вызов респавна:
 
+
<ini>
<pre>[smart_terrain]
+
[smart_terrain]
respawn = имя респавнера </pre>
+
respawn = имя респавнера
 
+
</ini>
 
И респавн будет производиться, при каждом пополнении нпс, под данным смартом.
 
И респавн будет производиться, при каждом пополнении нпс, под данным смартом.
 +
<br>
 +
-----------------------------------------------------------------------------------------------------------------------------------
  
--------------------------------------------------------------------------------------------------------------------------------------------------------
+
== Авторы статьи. ==
 
+
[[Singapur22]]
Автор статьи '''Singapur22'''.
+
<br>[[Pihan13]] (дополнил и переоформил)
 +
<br>[[Категория:скрипты]]

Текущая версия на 08:01, 26 марта 2011

Респаун, один из самых часто задаваемый вопросов на форумах. Вот, решил написать статью, дабы не втирать одно и тоже каждому, кто не может с этим разобраться.


Respawn NPC.

Для создания респавна NPC, понадобится два файла: all.spawn и spawn_section.ltx.
Это минимальный набор. Для полной настройки респавнера, нужны ещё character_desc_simulation.xml и npc_profile.xml.


1. В all.spawn создаём секцию респавнера:

 
[10000]
; cse_abstract properties
section_name = respawn
name = имя респавнера
position = координаты (x,y,z)
direction = 0,0,0
 
; cse_alife_object properties
game_vertex_id = гейм-вертекс
distance = 10
level_vertex_id = левел-вертекс
object_flags = 0xffffff3e
custom_data = <<END
[respawn]
respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9
max_count = 8
min_count = 4
max_spawn = 2
idle_spawn = medium
conditions = 100
END
 
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1
 
; cse_alife_space_restrictor properties
restrictor_type = 0
 
; se_respawn properties
 

Если используется программа XrSpawner, то копируем любую секцию "respawn"; меняем имя объекта, координаты, и в окошке "скрипт" прописываем:

 
[respawn]
respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9
max_count = 8
min_count = 4
max_spawn = 2
idle_spawn = medium
conditions = 100
 

Где:
respawn_section = id респавн-секций из файла spawn_section.ltx. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.

max_count = колличество респавн-запросов за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик max_count сбрасывается. (ставить не обязательно)

min_count = минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)

max_spawn = колличество нпс за один цикл респавна.

idle_spawn = тип спавна. Известно три типа medium, often, seldom. Обычно, используется тип medium.

conditions =Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так:

conditions = {+инфо} 100, 0 где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.



2. В файле spawn_section.ltx, создаём респавн-секции:

 
[esc_urody_respawn_1]:stalker
$spawn = "respawn\esc_urody_respawn_1"
character_profile = sim_urody_novice
spec_rank = novice
community = bandit
 
[esc_urody_respawn_2]:stalker
$spawn = "respawn\esc_urody_respawn_2"
character_profile = sim_urody_regular
spec_rank = regular
community = bandit
 

Где:
esc_urody_respawn_1 id респавн-секции.
sim_urody_novice и sim_urody_regular классы профайлов нпс.
novice и regular ранги нпс.
bandit группировка нпс.


3. В файле npc_profile.xml регистрируем классы sim_urody_regular и sim_urody_novice

<character id="sim_urody_regular">
<class>sim_urody_regular</class>
</character>

<character id="sim_urody_novice">
<class>sim_urody_novice</class>
</character>

4. Создаём профили, в файле character_desc_simulation.xml, с классами sim_urody_regular и sim_urody_novice и группировкой bandit.

Respawn монстров.

В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно упрощает. Вся настройка респавна мутантов, ограничивается секцией в файле "all.spawn". Вписываем секцию респавнера, как указано в -RESPAWN NPC-. Все настройки идентичны, кроме строки respawn_section = . В ней прописываем типы мутантов, из файла "se_respawn.script". Такие как flesh_weak, flesh_normal, dog_weak, boar_strong, и т.д..


ОБЩИЕ НАСТРОЙКИ.

Обязательные условия респавна:

1. На локации обязательно должен быть хоть один гулаг для респавнящихся NPC и мутантов, так как количество NPC для респавна, ориентируется по доступным местам в гулагах.

2. Респавн производится, только если под гулагами есть доступные работы.

3. На каждой локации, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле misc\smart_terrain_presets.ltx. Чтобы сделать возможным респавн неписей, не предусмотренных на данной локации. Надо в указанном файле, в секции нужной локации, дописать требуемые типы неписей.


Для проверки созданного респавнера, можно не ждать когда сработает системный респавн, а вызвать принудительно респавн в нужной секции. Для этого, прописываем в любой логике, вызов функции %=respawner_spawn(имя респавнера)%. Где, "имя респавнера" - имя секции, созданной в файле all.spawn. Скобки обязательны.

Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора:

 
[logic]
active = sr_idle@in
 
[sr_idle@in]
on_actor_inside = %=respawner_spawn(имя респавнера)% sr_idle@out
 
[sr_idle@out]
on_actor_outside = sr_idle@in
 

Функция принудительного вызова респавна, находится в файле xr_effects.script.


Respawn предметов.


Респавн предметов в инвентарных ящиках, несколько отличается от способа респавна NPC.




1. Первое, что нам нужно сделать, это создать инвентарный ящик в файле "all.spawn":

 
[10000]
; cse_abstract properties
section_name = inventory_box
name =  имя ящика
position = координаты x,y,z
direction = 0,0,0
 
; cse_alife_object properties
game_vertex_id = гейм-вертекс
distance = 0
level_vertex_id = левел-вертекс
object_flags = 0xffffffba
 
story_id = стори ай-ди ящика
 
; cse_visual properties
visual_name = equipments\item_box_01
 



2. Затем, в файле game_story_id.ltx регистрируем story_id ящика. (выбираем любое свободное число).


3. Создаём респавнер в файле all.spawn. Координаты и размеры зоны респавнера, должны быть такими, чтоб инвентарный ящик поместился внутри зоны респавнера:

 
[10001]
; cse_abstract properties
section_name = respawn
name = имя_респавнера
position = координаты x,y,z
direction = 0,0,0
 
; cse_alife_object properties
game_vertex_id = гейм-вертекс
distance = 2
level_vertex_id = левел-вертекс
object_flags = 0xffffff3e
custom_data = <<END
[respawn]
respawn_section = список вещей респавна
idle_spawn = -1
parent = стори ай-ди ящика
item_spawn = true
max_count = 7
END
 
; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 0.5,0,0   ;(ширина зоны респавнера, по X)
shape0:axis_y = 0,0.5,0   ;(высота зоны респавнера)
shape0:axis_z = 0,0,1     ;(ширина зоны респавнера, по Z)
shape0:offset = 0,0,0
 
; cse_alife_space_restrictor properties
restrictor_type = 3
 
; se_respawn properties
 

Где:
respawn_section = список вещей респавна, в виде их спавн - секций. Как и в респавнерах неписей, возможна прописка соотношений между вещами.
Например: respawn_section = wpn_pm,2, vodka,2, medkit,1, energy_drink,2, ammo_9x18_fmj,3

idle_spawn = тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1).

parent = Story_id инвентарного ящика (из game_story_id.ltx), в котором производить респавн вещей .

item_spawn = (true\false) возможность включения и отключения респавна. Можно задавать условия, например инфопоршнем или функцией (разумеется прописанной в xr_conditions.script).

max_count = количество респав-циклов за определённый период времени. (Пока ГГ находится на локации. После перехода ГГ на другую локацию, счётчик сбрасывается).


4. Создаём вызов респавна. Обычно вызов производится из smart_terrain. В "custom_data" любого подходящего smart_terrain, под секцией [smart_terrain], вписываем вызов респавна:

 
[smart_terrain]
respawn = имя респавнера
 

И респавн будет производиться, при каждом пополнении нпс, под данным смартом.


Авторы статьи.

Singapur22
Pihan13 (дополнил и переоформил)

Другие места
LANGUAGE