|
Вторник, 24.01.2012, 18:35:00 |
Ранг: Разведчик
Сообщений: 270
Награды: 15
Репутация: 236
Регистрация: 13.03.2011
Город: Москва
|
Respawn NPC.
Для создания респавна NPC, понадобится два файла: all.spawn и spawn_section.ltx. Это минимальный набор. Для полной настройки респавнера, нужны ещё character_desc_simulation.xml и npc_profile.xml.
___________________________________________________________________________
1. В all.spawn создаём секцию респавнера:
Code [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 [color=gray]; cse_shape properties[/color] 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"; меняем имя объекта, координаты, и в окошке "скрипт" прописываем:
Code [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, создаём респавн-секции:
Code [esc_urody_respawn_1]:stalker $spawn = "[color=green]respawn\esc_urody_respawn_1[/color]" character_profile = sim_urody_novice spec_rank = novice community = bandit [esc_urody_respawn_2]:stalker $spawn = "[color=green]respawn\esc_urody_respawn_2[/color]" 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 Code <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 = < [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 (дополнил и переоформил)
Сообщение отредактировал PRYZRAK - Вторник, 24.01.2012, 22:20:37
| |
|
Вторник, 24.01.2012, 19:33:04 |
Ранг: Знаток Зоны
Сообщений: 726
Награды: 22
Репутация: 296
Регистрация: 02.03.2009
Город: Миасс
|
PRYZRAK, убери из кодов изменения цветов. Кого-то это будет затруднять
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
| |