Перейти к контенту

SOC Схемы поведения без необходимости установки точек путей


Рекомендуемые сообщения

Я доделал схему stander, Называется она beggar теперь NPC будет ходить от одной точки к другой, есть возможность останавливаться в точках на задаваемое кол-во времени для анимаций.

У секции появились новые дополнительные поля (ДОПОЛНИТЕЛЬНЫЕ, старые поля из 

stander ни куда не делись) и дополнительный скрипт. Начну с полей:
name_way - имя пути (пути создаются из точек, будет описано далее).
loop -  задавать false или true. Это зацикливание, приходя в последнюю точку пути дядька NPC пойдет снова к первой точке и так до бесконечности будет ходить. По умолчанию стоит false.

Я говорил про дополнительный скрипт. Это array_ways.script он нужен что бы из точек создать путь и еще пару полезных вещей.
Вот так он выглядит:

-- Массивы с левел вертаксами для путей. Graff46.

-- от сюда
local test = {
                          {72776, 20, "eat_vodka"},
                          {42603, 10, "hands_up"},
                          {29109, 15, "eat_vodka"}

                   }


-- до сюда, добавляем свои массивы путей по вертексам

local tbl = { -- сюда добавляем [имя = ваш массив]
	my_test = test
	
}

------------------------------
function main (a)
	return tbl[a]
end

У нас тут таблица и два вложенных массива. Карта вложений: (таблица tbl) содержит (массив test) содержит (3 безымянных массива) в которых по( 3 элемента). 
Добавляем свой путь:
Пляшем от таблицы tbl, создаем в ней запись ключ-значение, где ключ - это имя будущего пути (в примере это my_test), а значение - массив (или ссылка на него, как в примере), назовём его "массив точек" (в примере это test). А в  "массиве точек" создаем, как в примере (не выносим! не делаем ссылок и тд.) безымянный массивы, массивов этих должно быть столько - столько у Вас точек в пути. А теперь тут внимание, заполняем эти безымянные массивы: первый  элемент - это левел вертекс (число). Первый элемент обязательный, остальные нет. Второй элемент - это время в секундах, на которое NPC будет останавливаться, попадая в эту точку и проигрывать анимацию  (по умолч. wait (стоит) ). Третий элемент - это имя анимации которую будет проигрывать NPC простаивая под таймером в этой точке. Если Вы не зададите таймер, то NPC будет просто ходить от точки к точке без остановок.


[smart_terrains]
none = true

[logic]
active   = beggar

[beggar]
name_way		= my_test
loop				= false
extns  			= 5
anim  			= hands_up
target    		= nil 

 


P.S. Если NPC неистово тупит в точках - увеличите\создайте число в поле extns ~ 3 - 5 
Ссылка

Приму любую помощь от опытных скриптеров. В данный момент работаю над полностью скриптовыми подобиями смарт_террейнов.

Прошу в шапку данное.

Изменено пользователем Graff46
  • Спасибо 1
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение
В чем преимущество по сравнению с оригинальными методами?

Смарт террайн в Сталкере это объект наследованный от зон, как рестриктор и смарт это спавн объект который нужно спавнить через ACDC или СДК, и кроме смарта есть понятие как гулаг, гулаг это заселение, вообще долго объяснять, но эти конструкции достаточно сложны. Скриптовый смарт это вообще не объект игрового мира, это некий код который организует логику неписей исходя из условий, он объединил в себе ф-ции смарт-террейнов и гулагов при этом упростив собственный код. Смарты и гулаги решают некую задачу в игре, скриптовый смарт также решает эту задачу гораздо проще и без ограничений на позицию НПС.

Это прошу в шапку (в конец, самый низ)

Изменено пользователем Graff46
  • Спасибо 2
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

что можно парсить значения из конфига или написать в каком либо скрипте аналог вэйпоинта и уже использовать его в схемах?
Про чтение из конфигов, я такое увидел в первый раз в работе по улучшению логики вертолетов, и то после своей работы. Запись данных прямо в секции - вот какую цель я ставил для себя, а в схеме беггар, создаются пути для движения НП из таблицы с левел вертаксами. Если кому то нравится возиться с файлами, Notepad++ и справочник по ф-ям и классам класс ini_file, и пишите код, тем более сделать передачу данных из одного места в другое возможностями Lua не сложно, но нужно ли...

 

 

но разве отменили скриптовый спавн с правкой\заполнением нет-пакета
Работайте с нэт-пакетами, мне удобней было, что бы дешево и сердито эффективно.

Поделиться этим сообщением


Ссылка на сообщение

 

 

А планируется какая-нибудь утилита для автоматического пересчета вертексов при изменении аи-сетки?
Нет не планируется, если Вы меняете АИ сетку, то наверно имеете возможность расставить вэй-поинты без труда.

 

 

Насколько я понял, это типа костыля для ленивых.
В шапке написано по этому поводу.

Поделиться этим сообщением


Ссылка на сообщение

Новая ссылка. Прошу в шапку.


@Kirgudu, Просто новая правленная версия логики, скриптовые смарты в другой теме. Кстати информацию о скриптовых смартах из шапки можно убрать.

Поделиться этим сообщением


Ссылка на сообщение

Доработы схемы логики:

Для схемы stander добавлены новые ф-ции - ключи в секциях:

irst_run = true ; true\false Будет ли НПС бысро бежать к точке работы при 1 загрузке схемы. По умолчанию - true

Для схемы beggar добавлены новые ф-ции - ключи в секциях:

first_run = false ; true\false Будет ли НПС бысро бежать к точке работы при 1 загрузке схемы. По умолчанию - false. Включать рекомендую для патрульных неспеша ходящих по лагерю.
near_lv = true ; true\false Будет ли НПС идти не в 1 точку пути, а в ближайшую точку пути от места где находится НПС (При 1-ой загрузке схемы). По умолчанию true.

Ссылка в шапке и тут.

Изменено пользователем Graff46
  • Нравится 2
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

Доработан портал "СиКВер", функционирует на вполне приемлемом уровне. Репозиторий скриптовых смартов и скриптовых схем логики разбит на два репозитория (в старом репозитории размещены ссылки на новые репозитории).

В новой версии скриптовых схем логики исправлены ряд ошибок и проведена оптимизация кода... Несмотря на исправления проекту требуется помощь опытных программистов.

Ссылка на репозиторий.

Поделиться этим сообщением


Ссылка на сообщение

Исправлен\доработан скрипт схемы "Спутник".

+ Версии открыты, можно корректно скачивать...

Ссылка

Изменено пользователем Graff46

Поделиться этим сообщением


Ссылка на сообщение

Написана ф-ция позволяющая спавнить НПС в указанных точках путей (для равномерного распределения НПС на пути, что бы не толпились одной кучей в 1 точке) + доработана схема "Спутник". В ближайшее время ожидайте новую версию репозитория.

Поделиться этим сообщением


Ссылка на сообщение

Спавн НПС на пути.

При задании путей для схемы beggar, НПС часто неравномерно распределяются на пути (толпой ходят от точки к точки и тд.)... Спавн на пути позволяет спавнить НПС(ов) в каждой точке пути отдельно.

Для спавна на пути нужно написать таблицу распределения - где ключи таблицы это порядковый номер точки в пути, а значение это секция НПС, или таблица, где 1-й элемент это секция НПС, а второе значение - число: кол-во НПС которое заспавниться в данной точке.

* Нельзя делать индексы в таблице распределения превышающие длину таблицы пути (Если у вас в пути 5 точек, то индексы в таблице распределения <= 5)!

Таблицу распределения можно составить и передать в ф-цию в качестве аргумента или сделать её 7-ым элементом в таблице точки пути.  ( {1090062, 0, "wait", nil, 3198, {run='sprint', anim_sprint='sprint'}, {'esc_novice'}} )

Ф-ция спавна на пути:

array_ways.spawn_on_path(path, levelName, rtable)
--// path  это имя пути (имя таблицы)
--// levelName - Системное имя локации (указать если не заполнен 5 элемент хоть у одной таблицы точек пути)
--// rtable - Таблица распределения (указать если не заполнен 7 элемент хоть у одной таблицы точек пути)

Ссылка на новую версию репозитория

Изменено пользователем Graff46
  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...