SoC. Respawn — S.T.A.L.K.E.R. Inside Wiki

SoC. Respawn

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

Перейти к: навигация, поиск

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


k4qh5V <a href="http://tddowxhpqzps.com/">tddowxhpqzps</a>, [url=http://npahvklcpahc.com/]npahvklcpahc[/url], [link=http://pxblhxjplase.com/]pxblhxjplase[/link], http://nwrcsqjznxwc.com/

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