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] (бессрочно)))
 
(не показаны 5 промежуточные версии 3 участников)
Строка 62: Строка 62:
 
<br>'''respawn_section =''' id респавн-секций из файла '''spawn_section.ltx'''. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.
 
<br>'''respawn_section =''' id респавн-секций из файла '''spawn_section.ltx'''. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.
 
<br>
 
<br>
<br>'''max_count =''' колличество респавн-запросов за период времени, пока ГГ находится на уровне. При переходе на другой уровень, счётчик '''max_count''' сбрасывается. (ставить не обязательно)
+
<br>'''max_count =''' колличество респавн-запросов за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик '''max_count''' сбрасывается. (ставить не обязательно)
 
<br>
 
<br>
 
<br>'''min_count =''' минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)
 
<br>'''min_count =''' минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)
Строка 121: Строка 121:
 
Обязательные условия респавна:
 
Обязательные условия респавна:
  
'''1.''' На уровне обязательно должен быть хоть один гулаг для респавнящихся NPC и мутантов. Так как количество NPC для респавна, ориентируется по доступным местам в гулагах.
+
'''1.''' На локации обязательно должен быть хоть один гулаг для респавнящихся NPC и мутантов, так как количество NPC для респавна, ориентируется по доступным местам в гулагах.
  
 
'''2.''' Респавн производится, только если под гулагами есть доступные работы.
 
'''2.''' Респавн производится, только если под гулагами есть доступные работы.
  
'''3.''' На каждом уровне, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле '''misc\smart_terrain_presets.ltx'''. Чтобы сделать возможным респавн неписей, не предусмотренных на данном уровне. Надо в секции нужного уровня, дописать требуемые типы неписей.
+
'''3.''' На каждой локации, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле '''misc\smart_terrain_presets.ltx'''. Чтобы сделать возможным респавн неписей, не предусмотренных на данной локации. Надо в указанном файле, в секции нужной локации, дописать требуемые типы неписей.
  
 
--------------------------------------------------------------------------
 
--------------------------------------------------------------------------
Строка 226: Строка 226:
 
<br>'''item_spawn =''' (true\false) возможность включения и отключения респавна. Можно задавать условия, например инфопоршнем или функцией (разумеется прописанной в xr_conditions.script).
 
<br>'''item_spawn =''' (true\false) возможность включения и отключения респавна. Можно задавать условия, например инфопоршнем или функцией (разумеется прописанной в xr_conditions.script).
 
<br>
 
<br>
<br>'''max_count =''' количество респав-циклов за определённый период времени. (Пока ГГ находится на уровне. После перехода ГГ на другой уровень, счётчик сбрасывается).
+
<br>'''max_count =''' количество респав-циклов за определённый период времени. (Пока ГГ находится на локации. После перехода ГГ на другую локацию, счётчик сбрасывается).
 
<br>
 
<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