Данная работа предназначена в основном для начинающих модмейкеров! Не надо мне говорить, что это нужно сделать через SDK или ACDC.
Когда я начинал заниматься модмейкерством, то передо мной, как и перед всеми начинающими модмейкерами наверно, встало много проблем, которые решались различными методами, иногда эти методы были, откровенно говоря костылями по принципу лишь бы работало. Одной из таких проблем было создание новой логики для персонажей. Большинство схем логики требуют наличия точек путей расставляемых в SDK или средствами ACDC. Заниматься конвертированием локаций, расстановкой элементов с последующей перекомпиляцией ИИ, представлялось как страшный сон, спавн точек путей через ACDC был легче, но были свои отрицательные нюансы с их настройкой. Поэтому во всю шли костыли начиная от повсеместного использования "всеми любимой" схемы remark, со своими "плюсами" заканчивая использованием схемы follower, а в качестве лидера спавнился мертвый NPC с сидом, прозрачной 3D моделью и без шейпов, жуткое извращение, но результат давало в виде привязанного к точке сталкера, даже с задаваемыми анимками. Тогда я решил, раз точки пути нужны для определения координат или направления, то почему бы нам не забыть про эти точки (ведь главное координаты - цифры), и найти другой способ передать координаты. Покопавшись с скриптах схем логики и ничего толком не поняв, но как говорит один из моих преподавателей в ВУЗе: "Интуитивно понятно", и кое что для себя я наметил: почему бы не передавать координаты прямо из файла с логикой NPC? Но попытки что то сделать были тщетны, единственное я смог на основе схемы follower сделать свою схему для следования NPC за Актером. Прошло много лет, я окончил техникум, армия, в ВУЗ-е я поднатаскал себя в программировании и вернулся к задаче с логикой, в результате я представлю Вам две схемы логики, которые не требуют точек путей, а по функциональности не уступают остальным.
Первая схема поведения - это pointer В этой схеме NPC стремится к точке (левел вертексу) по достижении оной проигрывает задаваемую анимацию или анимацию "idle" (просто стоит). Если сталкер отойдет по какой то причине (бой?) далеко от точки, то он возвратится в неё и снова начнет отыгрывать анимацию. Схема сделана на основе follower'а. Описание полей секции логики: lv - Это левел вертекс (точка) где должен стоять NPC, брать из позиции. -- Это Обязательный параметр!!! Остальные могут не назначатся.
extns - Это допуск или точность. По сути радиус вокруг точки внутри которого NPC будет считатся достигшим точки. (Если не установлен или его значение меньше 0.7, то будет установлено 1.4)
formation_line - если установлено значение true, то NPC будет идти как бы сбоку к точке, иначе будет идти сзади. По умолчанию - false.
anim_walk - анимация, из ходячего состояния, которая будет отыгрываться, когда NPC будет чем 5 метров до точки. По умолч (patrol).
anim_run - анимация, из ходячего состояния, которая будет отыгрываться, когда NPC будет бежать, если до точки 20 метров. По умолч (run). Сигнал end передаётся когда NPC достигает точки. anim_sprint - анимация, из ходячего состояния, которая будет отыгрываться, когда NPC будет бежать, если до точки будет больше 20 метров. По умолч (sprint). Всё бы хорошо, но можно заметить, что в схеме выше, кроме анимации ни чего не настроишь. Весьма привлекательна в этом смысле схема remark, в которой можно что угодно настроить (поворот, звук, синхронизацию анимации и звука и тд.). Именно для этого была сделана схема stander - сочетает ф-ции pointer'а и remark'а. Описание полей секции логики: Все поля для схемы remark. Можно посмотреть тут Плюс поля из схемы pointer. В схемах логики могут быть небольшие баги с анимациями. Сигналы использовать только для переходов на другие схемы.
Я доделал схему 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 будет останавливаться, попадая в эту точку и проигрывать анимацию wayt (стоит). Третий элемент - это имя анимации которую будет проигрывать NPC простаивая под таймером в этой точке. Если Вы не зададите таймер, то NPC будет просто ходить от точки к точке без остановок.
P.S. Если NPC неистово тупит в точках - увеличите\создайте число в поле extns~ 3 - 5 Ссылка
Добавлено (14.07.2016, 02:12) --------------------------------------------- Приму любую помощь от опытных скриптеров. В данный момент работаю над полностью скриптовыми подобиями смарт_террейнов.
Сообщение отредактировал Graff46 - Четверг, 14.07.2016, 02:58
В конифег all.spawn'а (не известно почему) задаются, по сути, лишь входные параметры.
Смарты унаследованы от спейсзон, как ретрикторы, по этому смарт-террейн это спавн обект. Я делаю полностью скриптовую систему.
Добавлено (03.08.2016, 01:40) --------------------------------------------- Вчера 02.08.2016 был написан рабочий скрип набора работ (скриптового смарт-террейна) и исправлены мои схемы. Скрипт набора работ основную ф-цию выполняет, но часть дополнительных плюшек закомментировано т. к. требуют доводки, требуется организация кода сохранения в сейв состояний набора работ.
Давно не заходил, яко официльный форум по данным работам на форуме соседнего сайта (догадайтесь на каком...), найти не сложно, кому сложно вбейте в поисковик эту тему. Я создал два репозитория для схем логики и скриптовых смартов. Ссылки: Смарты Схемы логики
Сообщение отредактировал Graff46 - Пятница, 06.04.2018, 01:13