Последнее на форуме

Вопросы и ответы (Моды) (736)
Ответил sal777 17:57:03

Досчитай до 10000 [v.4.0] (3743)
Ответил Letopisec 18:32:57

Бар «100 рентген» v.28 (3107)
Ответил Фенрир 15:07:44

Чистое небо. Вопросы и ответы (1728)
Ответил myjayl 12:26:52

Школа модинга (1176)
Ответил sal777 18:42:36

Люди говорят

kir_420 ответил в Подборка лучших фильмов про Постапокалипсис (20:26:00)
Дорога, письма мертвого человека.... гдье?

PUPS2 ответил в Вещи погибшего (13:00:55)
Блин, полгода ждал продолжения. Просто немного коротковато, для того что бы оценить по достоинству. Определённо интригует, есть "изюминка". Так что там дальше? Или уже "запал" прошёл? Зря. "Накидывая" расказы, мы можем натолкнуть режиссёров на очень интересный сюжет, который в свою очередь, может заставить ("свербить") талантливых людей сварганить С2.
Желаю удачи.

thestrelok220 ответил в Военный корреспондент 2: Зов Донбасса (15:52:58)
ЩА заценим)

geek580 ответил в Remake (15:02:35)
Ссылка нерабочая, пишет, что нет такой папки.

Oshiro ответил в Смерти Вопреки. В паутине лжи. (00:09:54)
Отличная игра. Создателям огромное спасибо!
Жаль нельзя было прокачать M4 и HK416 я так и не встретил.

Страница 1 из 11
Архив - только для чтения
Модератор форума: FAN, V@Dik008 
Форум настоящего сталкера » Техническая поддержка » Свалка » respawn (многократнй спавн кого либо)
respawn
# 1
Вторник, 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
# 2
Вторник, 24.01.2012, 19:33:04

Ранг: Знаток Зоны
Сообщений: 726
Награды: 22
Репутация: 296 Регистрация: 02.03.2009 Город: Челябинск    

PRYZRAK, убери из кодов изменения цветов. Кого-то это будет затруднять :)


Истинный путь MOD ver. 1.3.0 (ТЧ) готов!
Истинный путь 2: Пролог в разработке...
# 3
Вторник, 24.01.2012, 19:38:49

 

Тема закрыта
Форум настоящего сталкера » Техническая поддержка » Свалка » respawn (многократнй спавн кого либо)
Страница 1 из 11
Поиск:
Вверх