Оцените мой сайт
Всего ответов: 12


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Респавн ч.1

Респаун 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. 



 



Респаун мутантов





В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно упрощает. Вся настройка респавна мутантов, ограничивается секцией в файле 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. 





Респаун предметов



 

Респавн инвентаря в инвентарных ящиках, несколько отличается от способа респавна 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 = 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 = имя респавнера И респавн будет производиться, при каждом пополнении нпс, под данным смартом. 

Категория: Респавн | Добавил: Alexthunder (06.03.2020)
Просмотров: 381 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar

  • Alexthunder|Репутация: 0
  • stop177mailru|Репутация: 0
  • kulakovskyzheka|Репутация: 0
  • tureskiye|Репутация: 0
  • kirillloskarev77|Репутация: 0
  • Тем на форуме: 30
    Новостей: 11
    Файлов: 17
    Статей: 16

    Работа со звуками [1]
    Респавн [1]
    Работа с текстурами [2]
    Работа со скриптами [9]
    По вопросам сотрудничества обращаться к Администрации

    uCoz By gsc-mod