Это популярное сообщение. Graff46 598 Опубликовано 9 Июля 2016 Это популярное сообщение. Поделиться Опубликовано 9 Июля 2016 Данные схемы не являются законченной работой, в них есть недостатки и упущения, которые появляются в большей степени из-за моего не самого лучшего понимания механики организации логики и приемов её программирования, я лишь задал идею и призываю всех модостроителей развивать данную работу и не жадничать делая для себя, а делится со всеми. Данная работа предназначена в основном для начинающих модмейкеров! Не надо мне говорить, что это нужно сделать через SDK или ACDC. Когда я начинал заниматься модмейкерством, то передо мной, как и перед всеми начинающими модмейкерами наверно, встало много проблем, которые решались различными методами, иногда эти методы были, откровенно говоря костылями по принципу лишь бы работало. Одной из таких проблем было создание новой логики для персонажей. Большинство схем логики требуют наличия точек путей расставляемых в SDK или средствами ACDC. Заниматься конвертированием локаций, расстановкой элементов с последующей перекомпиляцией ИИ, представлялось как страшный сон, спавн точек путей через ACDC был легче, но были свои отрицательные нюансы с их настройкой. Поэтому вовсю шли костыли начиная от повсеместного использования "всеми любимой" схемы remark, со своими "плюсами" заканчивая использованием схемы follower, а в качестве лидера спавнился мертвый NPC с сидом, прозрачной 3D моделью и без шейпов, жуткое извращение, но результат давало в виде привязанного к точке сталкера, даже с задаваемыми анимками. Тогда я решил, раз точки пути нужны для определения координат или направления, то почему бы нам не забыть про эти точки (ведь главное координаты - цифры), и найти другой способ передать координаты. Покопавшись с скриптах схем логики и ничего толком не поняв, но как говорит один из моих преподавателей в ВУЗе: "Интуитивно понятно", и кое что для себя я наметил: почему бы не передавать координаты прямо из файла с логикой NPC? Но попытки что то сделать были тщетны, единственное я смог на основе схемы follower сделать свою схему для следования NPC за Актером. Прошло много лет, я окончил техникум, армия, в ВУЗ-е я поднатаскал себя в программировании и вернулся к задаче с логикой, в результате я представлю Вам две схемы логики, которые не требуют точек путей, а по функциональности не уступают остальным. Схемы логики на вертексах Описание: Данные схемы были созданы для того, что бы создавать сложные схемы поведения НПС без необходимости редактирования all.spawn. Нужно учесть, что эти схемы созданы из схемы remark, поэтому они не корректно себя ведут в качестве работ в гулагах (но хорошо ведут себя в скриптовых смартах). Данные схемы вполне самодостаточны и применимы, но имеют ряд недостатков нуждающихся в правках и улучшениях; например эти схемы работают только в пределах локации. Список схем с коротким описанием: stander -- НПС стоит на заданном месте, может играть анимацию или набор анимаций, pointer -- старый аналог stander'а, не рекомендуется к использованию, выложен для просмотра кода, workman -- Схема для работы НПС в скриптовых смарт-террейнах, описан в разделе скриптовых смарт-террейнов, sputnik -- НПС следует за другим игровым объектом, в том числе ГГ + доп. ф-ции, beggar -- НПС передвигается по пути состощему из вертексов + масса ф-ций; remark -- Добавлен параметр "cell" в котором указываем координаты точки в которую будет смотреть НПС, не используй вместе с target Поля схем: stander: Переделан из remark'a и follower'a (xr_attendant.script) [stander] lv = ; Левел вертекс в который стремится НПС (обязателен) extns = ;радиус в котором точка считается достигнутой по дефолту 1.4 snd_anim_sync = ; смотри в remark anim_walk = ; anim_run = ; anim_sprint = ; смотри в Схеме follower snd = ;смотри в remark anim = ;смотри в remark, НЕ ПРИМЕНЯТЬ ВМЕСТЕ С ANIM_SET anim_set = sit_ass(120),hello_wpn, eat_bread(80);НЕ ПРИМЕНЯТЬ ВМЕСТЕ С ANIM, задает набор анимаций для проигрования в виде "имяАнимации(времяАнимацииВСек),...", время в скобках можно не указывать, тогда оно будет = 60сек, работает в цикле по кругу. tips = ;смотри в remark tips_sender = ;смотри в remark anim_reset = ;смотри в remark target = ;смотри в remark + можно писать sstor НПС'а (см. скрипт nt.script),НЕ ПРИМЕНЯТЬ ВМЕСТЕ С CELL cell = 123.67,567.98,456,000 ; координаты точки (x,y,z) куда смотреть НПС'у, НЕ ПРИМЕНЯТЬ ВМЕСТЕ С TARGET first_run = true ; true\false Будет ли НПС бысро бежать к точке работы при 1-й загрузке схемы. По умолчанию - true sputnik: Переделан из follower (xr_attendant.script) [sputnik] anim_walk = ; anim_run = ; anim_sprint = ; formation_line = ; distance = ; snd = ; tips = ; tips_sender = ; ; все предыдущие поля смотри в схеме follower target = ; задаётся аналогично как в stander, только это объект к которому будет стремится НПС (ОБЯЗАТЕЛЬНЫЙ параметр) anim = ; аналогично remark, как только будет с лидером (не бежать за ним) anim_set = ; аналогично stander, как только будет с лидером (не бежать за ним) anim_reset = ; аналогично remark, как только будет с лидером (не бежать за ним) cell = ; аналогично stander, как только будет с лидером (не бежать за ним) beggar: Переделан из follower (xr_attendant.script) и remark'a Задаём пути из левел-вертексов для beggar'а: В файле array_ways.script создаём (объявляем) локальную таблицу (переменную с приравненной таблицей) (имя таблице лучше дать осмысленное но не длинное). В таблице делаем вложенные безымянные массивы, столько - сколько у Вас вертексов в пути, каждый массив заполняем так: -й элемент - сам левел вертекс, -й элемент - время в секундах которое НПС будет "удержан" в вертексе, прежде чем пойдёт в следующий, -й элемент - анимация в вертексе (когда НПС "удержан"); Теперь важен только 1-й пареметр (левел вертекс), остальные по требованию. Пример: //-- Массивы с левел вертаксами для путей. Graff46. local tst = { {402917, 2, "eat_vodka"}, {432591, 2, "eat_vodka"} } local zab_kill_pat_sm = { {446046, 0, "wait"}, {445985, 0, "wait"}, {362295, 0, "wait"}, {355863, 0, "wait"} } Поля схемы: [beggar] snd_anim_sync = ; snd = ; anim = ; tips = ; tips_sender = ; target = ; ;Всё что выше аналогично remark'у name_way = ; имя таблицы из array_ways.script, в которой нужный путь loop = true\false; идти ли в 1-й вертекс по оконнчании пути anim_walk = ; аналогично follower'у anim_run = ; аналогично follower'у anim_sprint = ; аналогично follower'у formation_line = ; аналогично follower'у distance = ; аналогично stander'у cell = ; аналогично stander'у first_run = false ; true\false Будет ли НПС бысро бежать к точке работы при 1-й загрузке схемы. По умолчанию - false. Включать рекомендую для патрульных неспеша ходящих по лагерю. near_lv = true ; true\false Будет ли НПС идти не в 1-ю точку пути, а в ближайшую точку пути от места где находится НПС. По умолчанию true. Настройка логики от Икстрима: https://yadi.sk/d/hq6qthWt9m2RC *Скрипты логики нужно подключить в modules.script !!! Ссылка на репозиторий моей СКВ (может глючить) Новая ссыль - https://yadi.sk/d/zZq-Y9K3eq1VoA 1 1 7 Ссылка на комментарий
Zander_driver 10 334 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 в основном для начинающих модмейкеров! А вот тут я между прочим не соглашусь. Считаю что у этой работы есть большое будущее. Гулаги в которых все работы создаются и назначаются динамически и не нуждаются в прибитой гвоздями монстрятине из аллспавна. Что может быть привлекательнее для модмейкера? 3 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Fagot. 400 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 (изменено) Что-то я не догоняю... Расставляется куча точек, каждая прописывается в отдельной секции логики сталкера, и он ходит между ними? Или одна точка, которая двигается (как, куда?), а сталкер топает за ней? А-а, всё понял! Да, здравая мысль... Изменено 13 Июля 2016 пользователем Fagot. С.Т.А.Л.К.Е.Р. - Равновесие-2 Проект виртуальной реконструкции г.Припять. Ссылка на комментарий
Graff46 598 Опубликовано 13 Июля 2016 Автор Поделиться Опубликовано 13 Июля 2016 (изменено) Я доделал схему 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 СсылкаПриму любую помощь от опытных скриптеров. В данный момент работаю над полностью скриптовыми подобиями смарт_террейнов.Прошу в шапку данное. Изменено 13 Июля 2016 пользователем Graff46 1 2 Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 26 Июля 2016 Поделиться Опубликовано 26 Июля 2016 Однако, интересные задумки... Но, наверное, у нас с автором разные понимания о надобности таких схем) Для, допустим, Судьбы Зоны - хорошие схемы, подходят для её общего подхода - абсолютной динамике в Зоне. Мне лично хватает walker-а, и да, для меня ACDC - самое большое, что нужно для all.spawn. За старание огромный +, развивай свои схемы, у них определенно есть правильный вектор развития! Не соответствует правилам. Ссылка на комментарий
Kondr48 314 Опубликовано 2 Августа 2016 Поделиться Опубликовано 2 Августа 2016 Graff46, можно чуть подробнее? Так и не довелось подступиться к смарт террейнам. В чем преимущество по сравнению с оригинальными методами? Ссылка на комментарий
Graff46 598 Опубликовано 2 Августа 2016 Автор Поделиться Опубликовано 2 Августа 2016 (изменено) В чем преимущество по сравнению с оригинальными методами? Смарт террайн в Сталкере это объект наследованный от зон, как рестриктор и смарт это спавн объект который нужно спавнить через ACDC или СДК, и кроме смарта есть понятие как гулаг, гулаг это заселение, вообще долго объяснять, но эти конструкции достаточно сложны. Скриптовый смарт это вообще не объект игрового мира, это некий код который организует логику неписей исходя из условий, он объединил в себе ф-ции смарт-террейнов и гулагов при этом упростив собственный код. Смарты и гулаги решают некую задачу в игре, скриптовый смарт также решает эту задачу гораздо проще и без ограничений на позицию НПС. Это прошу в шапку (в конец, самый низ) Изменено 2 Августа 2016 пользователем Graff46 Добавлено HellRatz, 3 Августа 2016 В шапке. Пост скрыл. Если нужно - верну. 2 1 Ссылка на комментарий
UnLoaded 313 Опубликовано 3 Августа 2016 Поделиться Опубликовано 3 Августа 2016 Смарт террайн в Сталкере это объект наследованный от зон, как рестриктор и смарт это спавн объект который нужно спавнить через ACDC или СДК Может я не прав, но разве отменили скриптовый спавн с правкой\заполнением нет-пакета? У меня вот нормально спавнятся LC, которые ранее то-же только через all.spawn ставились... 1 Ссылка на комментарий
Max_Raf 35 Опубликовано 3 Августа 2016 Поделиться Опубликовано 3 Августа 2016 Я вот начал изучать логику и всё такое и появился такой странный вопрос по этой теме. Как я понял тут обсуждается проблема, что надо как то обходить создание вэйпоинтов в алл.спавн. Видимо уже наверняка размышляли, что можно парсить значения из конфига или написать в каком либо скрипте аналог вэйпоинта и уже использовать его в схемах? Почему отказались от этой затеи? Я предупреждаю - я нуб по части логики гулагов и прочего. ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий
Graff46 598 Опубликовано 3 Августа 2016 Автор Поделиться Опубликовано 3 Августа 2016 что можно парсить значения из конфига или написать в каком либо скрипте аналог вэйпоинта и уже использовать его в схемах?Про чтение из конфигов, я такое увидел в первый раз в работе по улучшению логики вертолетов, и то после своей работы. Запись данных прямо в секции - вот какую цель я ставил для себя, а в схеме беггар, создаются пути для движения НП из таблицы с левел вертаксами. Если кому то нравится возиться с файлами, Notepad++ и справочник по ф-ям и классам класс ini_file, и пишите код, тем более сделать передачу данных из одного места в другое возможностями Lua не сложно, но нужно ли... но разве отменили скриптовый спавн с правкой\заполнением нет-пакета Работайте с нэт-пакетами, мне удобней было, что бы дешево и сердито эффективно. Ссылка на комментарий
abramcumner 1 157 Опубликовано 4 Августа 2016 Поделиться Опубликовано 4 Августа 2016 А планируется какая-нибудь утилита для автоматического пересчета вертексов при изменении аи-сетки? А то вручную обходить кучу файлов и исправлять левел/гейм-вертексы чуток запарно. Ссылка на комментарий
_Val_ 2 225 Опубликовано 4 Августа 2016 Поделиться Опубликовано 4 Августа 2016 Насколько я понял, это типа костыля для ленивых. Причем костыль несколько корявый, ибо я не вижу, как можно использовать такую логику для создания более-менее реальных схем поведения неписей. Ну будет непись шляться по вертексам и отыгрывать прописанные анимки. А дальше то что? Опять волкера с ремарками писать? Ссылка на комментарий
Graff46 598 Опубликовано 4 Августа 2016 Автор Поделиться Опубликовано 4 Августа 2016 А планируется какая-нибудь утилита для автоматического пересчета вертексов при изменении аи-сетки?Нет не планируется, если Вы меняете АИ сетку, то наверно имеете возможность расставить вэй-поинты без труда. Насколько я понял, это типа костыля для ленивых. В шапке написано по этому поводу. Ссылка на комментарий
Graff46 598 Опубликовано 29 Ноября 2016 Автор Поделиться Опубликовано 29 Ноября 2016 Новая ссылка. Прошу в шапку. @Kirgudu, Просто новая правленная версия логики, скриптовые смарты в другой теме. Кстати информацию о скриптовых смартах из шапки можно убрать. Добавлено Kirgudu, 29 Ноября 2016 Лучше сразу давать подробности. Вместо какой из двух ссылок на скачивание, наличествующих в шапке? Или в дополнение? Добавлено Kirgudu, 29 Ноября 2016 Готово. Ссылка на комментарий
Graff46 598 Опубликовано 19 Августа 2017 Автор Поделиться Опубликовано 19 Августа 2017 Репозиторий со скриптами http://mytest.royal-webhost.tk/main.html#urlrepo=d/542lmtpa3M9rGd Ссылка на комментарий
QuestRider 2 Опубликовано 13 Сентября 2017 Поделиться Опубликовано 13 Сентября 2017 Кто знает как работает секция [game_info] в логике нпс. Вот недавно наткнулся на эту секцию, решил добавить, захожу в игру и нифига, что я не так сделал и как правильно? Скрытый текст [2070] ; cse_abstract properties section_name = stalker name = esc_melnik position = -208.551208496094, -20.0917911529541, -141.64958190918 direction = 0.0623090341687202, 0.00229393295012414, 0.0141186164692044 id = 65535 version = 118 script_version = 6 spawn_id = 99 ; cse_alife_trader_abstract properties money = 57500 character_profile = esc_stalker_melnik ; cse_alife_object properties game_vertex_id = 47 distance = 3.5 level_vertex_id = 29123 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] esc_lager = true [game_info] stories = "story_04, legend_03, legend_04" END ; cse_visual properties visual_name = actors\neytral\stalker_neytral_hood_new_5 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 dynamic_out_restrictions = dynamic_in_restrictions = ; cse_alife_monster_abstract properties equipment_preferences = 2, 2, 0, 1, 0 main_weapon_preferences = 2, 1, 2, 1 ; cse_ph_skeleton properties ; se_stalker properties upd:health = 1 upd:timestamp = 0xef20e0ec upd:creature_flags = 0xe5 upd:position = -208.551208496094, -20.0917911529541, -141.64958190918 upd:o_torso = 0.00229393295012414, 0.0623090341687202, 0 upd:g_squad = 1 upd:g_group = 5 ; cse_alife_human_stalker properties upd:start_dialog = Ссылка на комментарий
BFG 7 582 Опубликовано 13 Сентября 2017 Поделиться Опубликовано 13 Сентября 2017 @QuestRider Эта схема логики, вроде для того, чтоб НПСы травили байки у костра. Сами звуковые файлы должны быть зарегены в sound_theme.script. "Кругом зомби.....у меня кончаются патроны...." Ссылка на комментарий
Graff46 598 Опубликовано 21 Октября 2017 Автор Поделиться Опубликовано 21 Октября 2017 Ссылка на репозиторий моей СКВ (может глючить) 1 Ссылка на комментарий
Graff46 598 Опубликовано 18 Декабря 2017 Автор Поделиться Опубликовано 18 Декабря 2017 (изменено) Доработы схемы логики: Для схемы stander добавлены новые ф-ции - ключи в секциях: irst_run = true ; true\false Будет ли НПС бысро бежать к точке работы при 1-й загрузке схемы. По умолчанию - true Для схемы beggar добавлены новые ф-ции - ключи в секциях: first_run = false ; true\false Будет ли НПС бысро бежать к точке работы при 1-й загрузке схемы. По умолчанию - false. Включать рекомендую для патрульных неспеша ходящих по лагерю. near_lv = true ; true\false Будет ли НПС идти не в 1-ю точку пути, а в ближайшую точку пути от места где находится НПС (При 1-ой загрузке схемы). По умолчанию true. Ссылка в шапке и тут. Изменено 18 Декабря 2017 пользователем Graff46 2 1 Ссылка на комментарий
Graff46 598 Опубликовано 23 Февраля 2018 Автор Поделиться Опубликовано 23 Февраля 2018 Доработан портал "СиКВер", функционирует на вполне приемлемом уровне. Репозиторий скриптовых смартов и скриптовых схем логики разбит на два репозитория (в старом репозитории размещены ссылки на новые репозитории). В новой версии скриптовых схем логики исправлены ряд ошибок и проведена оптимизация кода... Несмотря на исправления проекту требуется помощь опытных программистов. Ссылка на репозиторий. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти