..::STALKER.BY::..
http://stalker.by/forum/

Респавн НПС и мутантов
http://stalker.by/forum/viewtopic.php?f=534&t=2587
Страница 1 из 1

Автор:  DiGGeR225 [ 05 мар 2011, 13:41 ]
Заголовок сообщения:  Респавн НПС и мутантов

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

этот метод подходит для ТЧ

--------------------------------------------------------------------------------

-------------------------------------------------- ------------------------------
RESPAWN 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
shape0type = sphere
shape0offset = 0,0,0
shape0radius = 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 = respawnesc_urody_respawn_1
character_profile = sim_urody_novice
spec_rank = novice
community = bandit

[esc_urody_respawn_2]stalker
$spawn = respawnesc_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
classsim_urody_regularclass
character

character id=sim_urody_novice
classsim_urody_noviceclass
character
--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

----------------------------------------------- --- ------------------------------
ОБЩИЕ НАСТРОЙКИ--------------------------------------------------------------------------------
Обязательные условия респавна

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

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

3. На каждом уровне, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле miscsmart_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 ITEMS-------------------------------------------------------------------------------
Респавн инвентаря в инвентарных ящиках, несколько отличается от способа респавна неписей.

--------------------------------------------------------------------------------

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 = equipmentsitem_box_01
--------------------------------------------------------------------------------

2. Затем, в файле game_story_id.ltx регистрируем 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
shape0type = box
shape0axis_x = 0.5,0,0 (ширина зоны респавнера, по X)
shape0axis_y = 0,0.5,0 (высота зоны респавнера)
shape0axis_z = 0,0,1 (ширина зоны респавнера, по Z)
shape0offset = 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 = ай-ди инвентарного ящика, в котором производить респавн вещей.

item_spawn = (truefalse) возможность включения и отключения респавна. Можно задавать условия.

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

--------------------------------------------------------------------------------

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

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

Страница 1 из 1 Часовой пояс: UTC + 2 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/