Как заставить работать Java скрипт с Гитхаба
Делала я тут мод на Fallout 4 с динамическим изменением телосложения персонажа на манер GTA San Andreas (просто захотелось), и мне потребовался очень специфический инструмент для работы скрипта. Пришлось сильно закопаться и, чтобы процесс не потерялся, зафиксирую его здесь.
ДОПХЭШТЕГИ: Fallout 4 script RegisterForAnimationEvent OnAnimationEvent Animation Event List Sprint SprintAnimation StartSprint StopSprint скрипт список тэгов анимаций спринт HKXpack туториал
Предисловие
В общем, захотелось мне попробовать сделать такой мод просто так без особого смысла и цели. Считайте это зарядкой для мозга. Персонаж игрока в Fallout 4 имеет три параметра: мускулистость, толстота и худоба. Они могут иметь значение от 0 до 1, но сумма всех трех не может превышать 1.
В базе все было просто. Едите много - толстеете, сражаетесь - качаете мышцы, не делаете ни первого ни второго - худеете. Потом я усложнила систему и подошла к моменту, когда решила добавить в уравнение спринт как дополнительный способ похудеть. И тут начались проблемы.
К спринту надо цепляться, чтобы понимать какую дистанцию пробежал персонаж и трансформировать ее в конкретное число потери жира. Проблема в том, как именно цепляться. Единственный рабочий вариант - через событие проигрывание конкретной внутриигровой анимации персонажа.
В скрипте она проверяется через внутренний тэг, вшитый в нетиповой файл анимации в формате .hkx. Вариантов для чтения его внутрянки я не нашла, а в списках тэгов от моддеров в инете тэга спринта нигде нет. Единственный выход - это утилита HKXpack, состоящая из двух jason файлов, для запуска которых придется постараться.
Как запустить Ясона в космос
Переходим на сайт проекта. В нем можно скачать эти самые два файла, увидеть инструкцию по применению, но очень туманные наводки, как все это запустить. Просит Джаву младшего 8-го, обновляем, затем пытаемся всеми правдами и неправдами заставить код работать, но не выходит.
Изначально я пыталась добавить код из инструкции как приписку в конце ярлыка на исполняемый файл, но это не срабатывало. Максимум, на мгновение появлялось окно командной строки, когда я пробовала разные вариации команды. Вписывала туда адреса на файлы, игралась с первым слово java и т.п.
И нет, это не шиза. По такому принципу работает декомпилятор скриптов игры в читаемый формат в другой программе на коленке.
Тут до меня начало доходить, что все куда сложнее. Я прошерстила пару статей, что вообще такое гитхаб и как с ним работать, наткнулась на ту, что мне в итоге помогла. Оказывается, для работы явы проектов с гита надо установить себе среду разработки Maven. А для его работы нужен Java Development Kit.
Качаем обе проги не меньше 8 версии в соответствии с требованиями проекта в гитхабе. И согласно статье про Maven настраиваем пути к ним.
Если все будет правильно, то при вбивании в командной строке команды mvn -version вы увидите корректную запись.
Если запись иная, то вы что-то сделали не так. Я к примеру поначалу установила не Java Development Kit, а Java Runtime Environment. На сайте куча ссылок и версий, можно запутаться. Соответственно, после переустановки нужно было и поменять ссылки на папки, как указано на скринах выше.
Фиговы айтишники
Ладно, я еще понимаю, что Гитхаб для продвинутых юзеров в принципе. Но неужели так сложно написать в разделе запуска чуть больше чем это:
А самое забавное, что консольная команда еще и не работает. Чтобы ее запустить, недостаточно вбить в командную строку команду из инструкции:
Нет, это не сработало. Я уж думала, мне придется запускать Maven или Java DK и собирать проект самой. Но благо, я заметила промелькнувшую командную строку, сопоставила это с попытками запуска через ярлык, и запас модерского опыта подсказал внести изменения в команду и вставить ссылки на расположение файлов:
Вот в таком виде все сработало. Неужели было так трудно сразу это описать? Большая блин проблема, ленивые засаленные черти?!
Что делать дальше
Ладно, я это все преодолела, за пару дней разбирательств. Дальше все просто. На выходе скрипта команды получаем читаемый текстовыми редакторами файл в формате .xml.
Сначала конвертируем файл анимации, тэг которого нам известен. В моем случае это был любой файл атаки оружием ближнего боя с тэгом "weaponSwing". Затем ищем это же место в конвертированном файле анимации спринта.
Вставляем это чудо в свой код и, наконец-то, все работает как надо. Код стабильно фиксирует срабатывание анимации 2 раза в 1 секунду, с чем уже можно играться.
Статейка может пригодиться другим модерам, потому как в поисках списка тэгов я увидела немало обсуждений и вопросов по теме.