![]() |
#1 |
Готоман
Новичок
Регистрация: 30.01.2011
Адрес: Санкт-Петербург
Сообщений: 37
Сказал(а) спасибо: 70
Поблагодарили 11 раз(а) в 5 сообщениях
|
![]()
Не знаю в какой теме можно отписаться, но хотелось бы подробнее узнать о компиляции скриптового пакета Икарус. Икарус добавляет новые функции в игру, и мне допустим нужно собрать просто Gothic.dat и OU.BIN. Скорее всего в проекте будут ошибки, поэтому придеться создавать решение в Соусере. Но при декомпиляции Соусер сам создает некоторые ошибки. Вопрос, не будут ли эти ошибки как-либо влиять и на сам пакет, что для его восстановления потребует прописывать массу строчек скриптов (иногда может быть удален комментарий, а иногда и больше)? Ну и естсественно главный вопрос, поскольку скрипт-пакет создает новые функции и папки в решении проекта, нужно ли что-то знать дополнительное об их исправлении?
|
![]() |
![]() |
![]() |
#2 |
Профессор скриптологии
Посвященный
Регистрация: 10.12.2012
Адрес: Самара
Сообщений: 358
Сказал(а) спасибо: 399
Поблагодарили 442 раз(а) в 181 сообщениях
|
![]()
Я не совсем поняла формулировку вопроса, поэтому просто опишу, как я компилирую скрипты, содержащие Икарус (и ЛеГо).
Во-первых, получить GOTHIC.DAT и OU.BIN с помощью GothicSourcer (GS) больше не получится. Декомпилировать скрипты с Икарусом тоже не получится. Там используется много конструкций, которые GS не понимает и считает ошибками, хотя они реально работают. Компилировать будем Спейсером или самой игрой. Я предпочитаю последнее, т.к. написанный скрипт сразу можно протестировать. GS будем использовать для отлавливания хотя бы части ошибок и просто из-за удобства. ![]() Добавляем Икарус в проект Итак, предположим, что у нас уже есть какие-то скрипты, в которые мы хотим добавить Икарус. Уже есть проект в GS и он не содержит ошибок, нормально компилируется. Назовем этот проект MyProject. Уже есть INI-файл для запуска мода. В общем, есть заготовка, которая без Икаруса работает. 1. GS должен быть закрыт. По крайней мере, должен быть закрыт MyProject. 2. Находим папку, в которой лежат скрипты нашего проекта: %путь_к_GS%/GothicProjects/SolMyProject/PrjGothic 3. Создаем в PrjGothic папку Ikarus и копируем туда скрипты Икаруса (Ikarus_Const_G2_Rus.d, Ikarus_Rus.d, float_Rus.d, папку EngineClasses_G2_Rus (если не русифицированные, то без _Rus)). 4. Из PrjGothic открываем Gothic.src Блокнотом. Дописываем выделенные строчки, сохраняем и закрываем: Spoiler:
5. Открываем проект в GS. В него уже добавится все, что мы дописали в Gothic.src. 6. Чтобы Икарус работал, его необходимо инициализировать при каждом запуске игры. Для этого в начало файла Startup.d в функции startup_global и init_global необходимо добавить строчку: MEM_InitAll(); Все, дальше можно делать, что нам нужно. Но, если попытаться скомпилировать проект, GS этого сделать не сможет. Он выдаст много (у меня 108) ошибок, но процесс компиляции не прервется, он пройдет все скрипты до конца. При использовании функций Икаруса будут появляться и другие "ошибки", но это правило остается. Это позволяет отлавливать критические ошибки до того, как мы запихнем скрипты в игру. Также помогает пункт "Проверка скрипта на ошибки" во всплывающем меню - как только изменили какой-то файл, сразу проверяем его. Дальнейшие действия можно разбить на 2 части - копирование скриптов из GS в папку Готики и саму компиляцию. Копирование скриптов Нам нужно перенести скрипты из папки GS (%путь_к_GS%/GothicProjects/SolMyProject/PrjGothic) в папку Готики (%путь _к_Готике2%\_work\Data\Scripts\Content). Я использую для этого вот такой BAT-файл: Spoiler:
При запуске этого файла появится окно командной строки, в котором будут перечислены все скопированные файлы. Если есть желание, можно, чтобы файл скриптов назывался не GOTIC.DAT (Gothic.src), а, например, MyMod.DAT (MyMod.src). Тогда пишем copy %pGS%"\gothic.src" %pG2%"\Content\MyMod.src" /y А в INI-файле нашего мода указываем Game=Content\MyMod Компиляция скриптов Здесь меня, возможно, поправят, но OU.BIN мне игрой скомпилить не удалось, это я делаю только Спейсером. С другой стороны, пока не меняются реплики персонажей, OU-шник можно и не трогать. Компиляция игрой (.DAT) Запускаем GothicStarter для модостроителей. Ставим галочку "Scripte parsen" (компилировать скрипты). Также рекомендую поставить "Festernmodus" (запуск в окне), ползунок "zSpy-Nachrichten" на normal (в серединку), а в поле "Parameter" вписать "-devmode" (включает Марвина). Запускаем игру кнопкой "Spiel starten". До запуска Готики откроется zSpy. В процессе компиляции там отображается перечень компилируемых файлов. Если возникнет ошибка компиляции, то будем знать, где именно. Иногда в сообщении об ошибке указывается и номер строки в скрипте. Это сообщение тоже добавится в zSpy. Еще в zSpy удобно выводить отладочную информацию с помощью функции MEM_Debug. Если все сделали правильно, игра запустится. В начале новой игры или при загрузке сохранений, в zSpy можно найти такую строчку: 01:54 Info: 0 Q: Ikarus log functions now print in colour with prefix 'Q:'. Это признак того, что Икарус нормально инициализовался, сработала MEM_InitAll(). Компиляция Спейсером (.DAT и OU.BIN) Запускаем Спейсер кнопкой "Editor starten". Никакой мир открывать не нужно. Перекомпилировать DAT можно через меню World->Reparse Script..., выбираем наш SRC-файл, который лежит в папке с Готикой. К сожалению, здесь процесс компиляции в zSpy не показывается, только ошибки. Для компиляции OUшника используем окошко Output-Units. Если оно не отображается, нажмите на панели инструментов левую из двух активных кнопок (Toggles OutputUnits-Window). Нажимаем кнопку Update - он прогонит OUINFO.INF, появившийся при компиляции скриптов, и выведет список всех фраз в это окошко (довольно долго, но по zSpy можно увидеть, что процесс не завис). Дальше можно нажать Refresh для удаления дубликатов, хотя не обязательно. Последним нажимаем Save. Готовые файлы лежат в _work\Data\Scripts\_compiled\Gothic.DAT и _work\Data\Scripts\Content\Cutscene\OU.BIN. Их нужно будет добавить в MOD-файл. Файлы OUINFO.INF и OU.CSL промежуточные, они в готовом моде не нужны. Кажется, все. Также рекомендую установить полный gmdk, чтобы при каждом запуске игры не монтировать виртуальную файловую систему. Дело пойдет заметно быстрее. Можно запуск Готики/Спейсера дописать в тот же BATник, тогда вся, кроме OUшника, компиляция будет выполняться запуском этого файла. Удачи в модострое!
__________________
Сколько всего не сделано. Сколько всего предстоит не сделать! Последний раз редактировалось НастасьСанна; 09.02.2014 в 00:28. |
![]() |
![]() |
![]() |
#3 |
Legacy Team
Адепт
Регистрация: 13.12.2007
Адрес: г.Минск
Сообщений: 679
Сказал(а) спасибо: 2
Поблагодарили 30 раз(а) в 11 сообщениях
|
![]()
Вопрос по спискам: есть ли список всех мобов в игре? можно ли самому создавать списки?
|
![]() |
![]() |
![]() |
#4 |
Профессор скриптологии
Посвященный
Регистрация: 10.12.2012
Адрес: Самара
Сообщений: 358
Сказал(а) спасибо: 399
Поблагодарили 442 раз(а) в 181 сообщениях
|
![]()
Списка MOB'ов отдельно нет. Есть дерево всех VOB'ов MEM_Vobtree(zCTree), из которого можно выцепить MOB'ы с помощью функции Hlp_Is_oCMob.
Если имелись в виду NPC, то оно тоже должны быть в VOBTree и можно попытать MEM_SpawnManager (oCSpawnManager), который содержит список oTSpawnNode, которые содержат ссылки на NPC. Но я не уверена, там все NPC или те, которых нужно заспаунить. Списки создавать можно, для них даже есть кое-какие готовые скрипты на WOP.de. Проблемы могут быть, если списки нужно записывать в сейвы. Оно вроде бы можно, но нужно копать глубже. И по поводу наследования классов - Дедалус его принципиально не поддерживает. Можно создать свой класс, в который копипастом запихнуть описание oCNpc + свои поля, но что с ним делать дальше?.. Но если нужно что-то еще сохранить для NPC, неужели AIVAR'ов мало? Их еще можно сильно утрамбовать, если превратить булевы переменные в флаги и запихнуть все в 1-2 aivar'а.
__________________
Сколько всего не сделано. Сколько всего предстоит не сделать! |
![]() |
![]() |
![]() |
#5 | |
Legacy Team
Адепт
Регистрация: 13.12.2007
Адрес: г.Минск
Сообщений: 679
Сказал(а) спасибо: 2
Поблагодарили 30 раз(а) в 11 сообщениях
|
![]() Цитата:
Про AIVAR'ы честно говоря не знаю или не помню. Но суть ясна, спасибо. Последний раз редактировалось Sonet; 22.06.2014 в 16:14. |
|
![]() |
![]() |
![]() |
#6 |
Готоман
Новичок
Регистрация: 29.12.2011
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
![]() PHP код:
Последний раз редактировалось Saturas; 30.11.2014 в 09:50. |
![]() |
![]() |
![]() |
#7 |
Готоман
Новичок
Регистрация: 05.12.2012
Адрес: Магнитогорск
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 1 сообщении
|
![]()
1. Такое огромное количество функций в Ikarus, и что их все можно использовать начиная от MEM_CheckVersion?
2. Я так понял Ikarus работает напрямую с движком? Последний раз редактировалось Neromont; 11.05.2016 в 12:36. |
![]() |
![]() |
![]() |
#8 |
Администратор
Мастер
Регистрация: 28.02.2008
Адрес: г.Новокуйбышевск Самарская обл.
Сообщений: 1,456
Сказал(а) спасибо: 538
Поблагодарили 419 раз(а) в 183 сообщениях
|
![]()
Все можешь использовать.
С движком работает косвенно, но по сути да. |
![]() |
![]() |
![]() |
#9 |
Готоман
Новичок
Регистрация: 05.12.2012
Адрес: Магнитогорск
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 1 сообщении
|
![]()
Я тут просмотрел LEGO http://lego.worldofplayers.de/?, я так понял его разрабатывали те же самые люди, что трудились над Ikarus. Я не понял LEGO идет как дополнение к Ikarus или как отдельный продукт.
|
![]() |
![]() |
![]() |
#10 | |
Профессор скриптологии
Посвященный
Регистрация: 10.12.2012
Адрес: Самара
Сообщений: 358
Сказал(а) спасибо: 399
Поблагодарили 442 раз(а) в 181 сообщениях
|
![]() Цитата:
Ikarus сам по себе дает в основном доступ к разным фишкам и возможностям, как то: запуск любых встроенных в движок функций, доступ к глобальным объектам - экрану, игровой сессии и т.п., полноценную работу с массивами, строками, вещественными числами, и даже возможность писать и запускать ASM-код прямо из скриптов, и еще много чего. LeGo можно рассматривать как коллекцию решений прикладных задач с помощью Ikarus. Например: диалог с несколькими NPC, зацикленные функции без триггера, навешивание хуков на функции, вывод изображений и текста на экран и др. И, да, Ikarus разрабатывал Sektenspinner, а LeGo - детище Lehona и Gottfried.
__________________
Сколько всего не сделано. Сколько всего предстоит не сделать! |
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
IKARUS: скрипт-пакет | redleha | Модостроение к Gothic | 12 | 01.09.2018 00:11 |
IKARUS: перевод документации | НастасьСанна | Модостроение к Gothic | 5 | 21.07.2013 22:44 |