Схема mob_combat, mob_death. Работают точно также как и у сталкеров соответствующие схемы

Работают точно также как и у сталкеров соответствующие схемы.

Файлы: \gamedata\scripts\mob_combat.script, \gamedata\scripts\mob_death.script

Схема mob_jump (монстр-пружинка)

Схема mob_jump. Теперь mob_jump служит для задания прыжков монстров без каких либо проверок и ограничений (расстояние, углы и т.д.). Указывается позиция с помощью патрульного пути, смещение относительно этой позиции и физический фактор прыжка.

Пример:

[logic]

active = mob_jump

[mob_jump]

path_jump = path

ph_jump_factor =2.8

offset = 0,10,0

on_signal = jumped | nil

path_jump – путь, с помощью которого мы задаем 1 целевую точку прыжка (с нулевым индексом). Реальная точка учитывает позицию path_jump[0] + смещение, заданное с помощью offset.

offset – смещение по осям x,y,z соответственно, с помощью которого задается реальная точка в пространстве (может не находится на аи-ноде).

ph_jump_factor - влияет на время прыжка. Визуально с помощью него задается кривизна траектории полёта. Чем он больше, тем прыжок более острый, быстрый (меньше дуга). С помощью данной схемы можно делать: перепрыгивание со здания на здание, выпрыгивание из окна, перепрыгивание высоких ограждений и др. Дефолтное значение = 1,8

Примечание:

Фактически mob_jump - это не состояние, а разовое действие. При переходе в него монстр разворачивается в сторону прыжка и прыгает, поднимая сигнал jumped. Т.е. "on_signal = jumped | имя_схемы_или_nil" – является обязательным параметром в схеме, чтобы знать куда переходить дальше.

При выборе позиции используется первая точка патрульного пути (0-вой индекс)

Mob_camp

Механика:

1. Сидит на позиции, смотрит в точку

2. Можно задать несколько позиций и время смены позиции.

3. Перемещается между позициями бегом

4. При виде врага переходит под универсальную схему (комбат/паника и т.д)

5. Задаются минимальная и максимальная дистанции от врага до текущей camp-позиции

6. Если враг уходит далеко - монстр возвращается на позицию

Использование:

[logic]

active = mob_camp

[mob_camp]

path_look = way_look

path_home = way_home

time_change_point = 30000

home_min_radius = 20

home_max_radius = 50

skip_transfer_enemy – если прописать в кастом дату, то монстр не будет принимать врага от друших монстров, если его увидит (для этого нужно всех монстров в разные group разнести)

Описание параметров:

*path_home - путь, состоящий из точек, в которых будет находиться монстр

path_look - путь, состоящий из точек, в которые будет смотреть монстр

*time_change_point - время изменения текущей camp-точки (по-умолчанию10000), мс

* home_min_radius - минимальный радиус от врага до camp-точки (по-умолчанию 30), м

* home_max_radius - максимальный радиус от врага до camp-точки (по-умолчанию 40), м

Особенности:

Минимальный и максимальный радиус необходимы для игнорирования врага, если он убежал далеко и для возврата на текущую позицию. Учитывается дистанция от врага до текущей позиции. Если дистанция меньше home_min_radius - атакуем врага, пока враг не исчезнет или дистанция не будет больше home_max_radius.

Две дистанции необходимы для того, чтобы избежать ситуации, когда игрок стоит на границе радиуса действия и входит/выходит в зону и монстр бегает то в свою camp-позицию, то на врага.

Выбор текущей позиции производится случайным образом

Индексы точек пути для path_home и path_look должны совпадать (т.е. монстр сидит во второй точке path_home и смотрит во вторую точку path_look)

Единственным необходимым параметром является path_look

Если не установлен path_home, в качестве кемперской точки учитывается позиция и нода объекта на спауне.

Для того чтобы монстр смотрел в разные точки на кемпер-позиции, path_look может состоять из нескольких точек.

Обязательные требования:

home_min_radius < home_max_radius

Количество точек путей path_look и path_home должно быть равным

P.S. Mob_Camp можно использовать как альтернативу к монстрам под рестрикторами

Mob_home

Схема является ещё одним решением по замене рестрикторов. Рекомендую все следующие гулаги монстров делать на mob_home, а старые гулаги постепенно переводить на mob_home. У кого рестрикторы работают хорошо и красиво, их можно не трогать.

Пример:

[mob_home]

path_home = path1

home_min_radius = 10

home_max_radius = 30

aggressive_home - в назначенную точку path_home монстры бегут а не идут.

Описание:

Монстры держатся вокруг точек пути path_home. В атаке бросаются на врага, если враг внутри home_min радиуса, иначе прячутся в укрытия. Отсюда следует, что home_min -радиус желательно делать таким, чтобы внитри было достаточно каверов. В айдле тоже обычно расходятся по каверам. Home_max радиус сделан по принципу большого рестриктера в схеме «гнездо».

Добавлена возможность задания минимального и максимального радиусов для схемы mob_home в флагах первой точки пути (path_home). Для этого введены флаги minr и maxr. В случае, если радиусы заданы и в секции и во флагах, то значение радиуса берется из секции. Если не задано ни там, ни там, то берутся дефолтные значения 20 и 40 соответственно.

Mob_fake_death

Появилась схема mob_fake_death для зомби. Необходимо для сценок, когда игрок идёт, а вокруг него начинают подниматься зомби...

Использование:

[logic]

active = mob_fake_death

[mob_fake_death]

on_actor_dist_le = 5 | nil

При входе в схему зомби падает, при выходе из схемы встает.

3.6. Оверрайды для монстров:

actor_friendly = если true, то монстр не атакует актера, до первой атаки на него

npc_friendly = если true, то монстр не атакует сталкеров и монстров, до первой атаки на него

friendly = если true, то монстр не атакует никого до первой атаки на него

braindead = если true, то монстр игнорирует любые атаки.

Секции для монстров

[mob_death], [mob_hit]

Секция spawner

Эта секция, которая присутствует как у NPC, так и у монстров, спавнит их по определенному условию (выводит в онлайн). Для того, чтобы они появились в данной точке, им надо поставить в настройках в Level editor флажок no_move_in_offline и отключен can_switch_offline. Спавнер прописывается в кастом дату объекта перед секцией logic

Работает spawner следующим образом:

[spawner]

cond = {+info -info =func !func}

Примечание. Если условия спавна не будет выполняться, то объект не заспавниться, а если он заспавнился и условие перестает выполняться, то объект будет спавнером уведен в оффалйн.

Пример:

[spawner]

cond = {=is_day}

(объект заспавниться днем и уйдет в оффлайн ночью)

После того, как объект заспавнился, его берет под управление скрипт Logic

Наши рекомендации