Graff46 598 Опубликовано 3 Августа 2016 (изменено) Я представляю скриптовую систему организации логики поведения персонажей, которая может быть использована вместо системы смарт-террейнов и гулагов. Данную систему буду называть набором работ. В Сталкере смарты являются спавн объектами наследованными от зон (как рестрикторы), их код достаточно объёмен и сложен, плюс есть свои нюансы с расположением работ Неигровых Персонажей и настройкой всей системы. Идея сделать скритовую систему для решения задач заселения и организации логики НП возникла когда я делал схемы поведения без надобности установки точек путей. Данная фитча является кодом в чистом виде, она не использует игровые объекты, тем более спавн-объекты, это просто код который организовывает логику НП исходя из входных параметров и условий. Для использования системы набора работ, нужно будет создать внутри папки config\ файл с логикой и оформить файл кастом_дэйт'ы персонажа определенным образом. Считаем, что Вы создали текстовой файл с логикой для набора и у Вас установлены все скрипты. 1. В файле логики (кастом_дэйта) НП пишите стандартно логику, совершенно любую, когда Вам нужно будет перевести НП в набор работ Вы должны активировать переход на схему workmen c полями name и old_section.name - имя набора работ в который пойдет НПold_section - имя секции в которую уйдет НП, если по каким либо условиям набор работ его не примет, НП будет в этой секции логики пока набор работ его не примет, т. е. НП в любой момент может соскочить с этой секции в набор работ. Секция эта должна быть прописана в том файле где секция worker из которой она и вызывается.Эти секции обязательны к заполнению!Если Вы хотите вывести НП из набора, то в файле логики набора работ, а не НП нужно сделать любой переход (on_info, on_timer и т. д.) c эффектом exit_from_setjobs(тут путь до файла с логикой, можно указать старую кастом_дэйту). Пример:on_timer = 5000| %=exit_from_setjobs(scripts\logika.ltx)% Если хотите сразу отправит НП в набор, ни что не мешает сделать [logic] active = workmen workmen - это обычная секция и работать с ней можно как с другими секциями, только не ставьте переключатели (on_info, on_timer и т. д.) в этой (workmen) схеме!*************************************************************************************************************************************Настройка скрипта:В файле set_jobs_manager.script есть таблица tbl - это основная таблица работ. В неё мы добавляем ключ - имя будущего Набора работ, а значением этого ключа будут безымянные массивы с секциями работ, сколько работ - столько и массивов, каждый массив состоит из секций.Пример:local tbl = { -- основная таблица ferm = { -- ferm -ключ т. е. имя набора { file = "misc\\set_jobs\\one.ltx", -- путь до файла с логикой для этой работы section = "logic@esc", -- секция логики в файле prior = 2, -- приоритет данной работы state = {0,2,1}, -- состояния набора работ, при которых работа будет активна (04.08.16 не доделано) predicate = function(npc) -- ф-ция условие для прёма НП в работу, если условия нет, то пишем predicate = true return npc:name() == "esc_blokpost_commander" end }, -- таких работ может быть сколь угодно. { file = "misc\\set_jobs\\one.ltx", section = "logic@2esc", prior = 1, state = {0,2,1}, predicate = true } } } [logic@esc] active = beggar combat_ignore = combat_ignore [beggar] name_way = w loop = false extns = 5 anim = hands_up target = nil [logic@2esc] active = remark@vip combat_ignore = combat_ignore [remark@vip] anim = hands_up target = actor on_timer = 5000|remark@to combat_ignore_keep_when_attacked = true combat_ignore_cond = always [remark@to] anim = eat_vodka target = actor combat_ignore_keep_when_attacked = true combat_ignore_cond = always [combat_ignore] Ссылка Изменено 29 Ноября 2016 пользователем Kirgudu 2 Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 29 Ноября 2016 Новая ссылка. Прошу в шапку. @Kirgudu, Вместо имеющейся. Исправлены ошибки в новой версии. Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 19 Августа 2017 (изменено) Репозиторий со скриптами http://mytest.royal-webhost.tk/main.html#urlrepo=d/542lmtpa3M9rGd Изменено 19 Августа 2017 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 15 Декабря 2017 Новая ссылка на репозиторий http://sikver.ml/main.html#myrepo=[Сталкер ТЧ]Скриптовые смарттерейны и схемы логики на вертексах&frlen=863?prfx=3 Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 18 Декабря 2017 (изменено) Доработы скриптовые смарты: НПСы в наборе не переинсталируют свою логику каждый раз переходя в онлайн из оффлайна + сохранение состояний НПС в наборе при загрузке\сохранении игры. Ссылка в шапке и тут. Изменено 18 Декабря 2017 пользователем Graff46 1 Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 23 Февраля 2018 (изменено) Доработан портал "СиКВер", функционирует на вполне приемлемом уровне. Репозиторий скриптовых смартов и скриптовых схем логики разбит на два репозитория (в старом репозитории размещены ссылки на новые репозитории). Выложены новые версии репозитория скриптовых смартов. В новой версии устранены критические ошибки и добавлены новые ф-ции для внешнего вызова, комментарии внутри. Но есть проблемы в быстродействии кода, предлагаю опытных программистов помочь в этом вопросе. Ссылка на репозиторий. Изменено 23 Февраля 2018 пользователем Graff46 Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 4 Ноября 2018 СКВ упала. Вот прямая ссылка *В шапку бы... Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 27 Ноября 2019 @_Sk8_AsTeR_, Можно Поделиться этим сообщением Ссылка на сообщение
Graff46 598 Опубликовано 9 Декабря 2019 @Zander_driver, Последнюю версию можно взять из последних модов серии Новое Время 1 Поделиться этим сообщением Ссылка на сообщение