РЕ спавн Shadow of Chernobyl (Respawn SoC) - Работа со скриптами - Тени Чернобыля - Каталог статей - S.T.A.L.K.E.R - комната модов
Главная | Регистрация | Вход | Приветствую Вас | Гость| RSS















Меню
Категории раздела
Работа со скриптами [32]
Самые разные полезные статьи по скриптам игры S.T.A.L.K.E.R
Работа с конфигами [13]
Всякие полезные материалы по работе со Сталкером ТЧ.
Базовые знания [6]
Основы для тех кто хочет заниматься модами.
Для тех кто чуть больше чем новичок :) [7]
Работа с ACDC, all.spawn , скрипты...
SDK [3]
Все о работе в официальном SDK.
Прохождения модов ТЧ. [20]
Здесь выкладываем различные прохождения кучи различных модов для ТЧ.
Свежий хабар






Главная » Статьи » Тени Чернобыля » Работа со скриптами

РЕ спавн Shadow of Chernobyl (Respawn SoC)

SoC. Respawn

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

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

Содержание

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 = regularcommunity = 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 = имя респавнера  

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

Категория: Работа со скриптами | Добавил: drweb66 (04.07.2011)
Просмотров: 4676 | Рейтинг: 1.0/1
Всего комментариев: 0
avatar
PDA
Поиск
Как вы думаете,
Верите ли вы что СТАЛКЕР 2 выйдет?
Всего ответов: 2100
Сообщения
Разное
AP production - видео обзоры модов для игры S.T.A.L.K.E.R.

На территории Зоны: 3
Отмычек: 3
Опытных ходоков: 0


Design by:
Guenplenтм, with the participation of Orlenok Design Studio ®
Правообладателям
2016