Вернуться   Форум команды Magic Team > Создание модов > Модостроение к Gothic

Важная информация

Модостроение к Gothic Как делаются моды к Готике...

Ответ
 
Опции темы Опции просмотра
Старый 01.02.2014, 13:54   #1
Новичок
 
Аватар для kazus23
 
Регистрация: 30.01.2011
Адрес: Санкт-Петербург
Сообщений: 33
Сказал(а) спасибо: 70
Поблагодарили 3 раз(а) в 3 сообщениях
По умолчанию IKARUS: Обсуждение

Не знаю в какой теме можно отписаться, но хотелось бы подробнее узнать о компиляции скриптового пакета Икарус. Икарус добавляет новые функции в игру, и мне допустим нужно собрать просто Gothic.dat и OU.BIN. Скорее всего в проекте будут ошибки, поэтому придеться создавать решение в Соусере. Но при декомпиляции Соусер сам создает некоторые ошибки. Вопрос, не будут ли эти ошибки как-либо влиять и на сам пакет, что для его восстановления потребует прописывать массу строчек скриптов (иногда может быть удален комментарий, а иногда и больше)? Ну и естсественно главный вопрос, поскольку скрипт-пакет создает новые функции и папки в решении проекта, нужно ли что-то знать дополнительное об их исправлении?
kazus23 вне форума   Ответить с цитированием
Старый 02.02.2014, 15:52   #2
Профессор скриптологии
Ученик
 
Аватар для НастасьСанна
 
Регистрация: 10.12.2012
Адрес: Самара
Сообщений: 233
Сказал(а) спасибо: 366
Поблагодарили 326 раз(а) в 135 сообщениях
Отправить сообщение для НастасьСанна с помощью ICQ
По умолчанию Re: IKARUS: скрипт-пакет

Я не совсем поняла формулировку вопроса, поэтому просто опишу, как я компилирую скрипты, содержащие Икарус (и ЛеГо).

Во-первых, получить 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:
_Intern\Constants.d
_Intern\Classes.d
Ikarus\EngineClasses_G2_Rus\Misk_Rus.d
Ikarus\EngineClasses_G2_Rus\oCAiHuman_Rus.d
Ikarus\EngineClasses_G2_Rus\oCGame_Rus.d
Ikarus\EngineClasses_G2_Rus\oCInfoManager_Rus.d
Ikarus\EngineClasses_G2_Rus\oCItem_Rus.d
Ikarus\EngineClasses_G2_Rus\oCMob_Rus.d
Ikarus\EngineClasses_G2_Rus\oCNpc_Rus.d
Ikarus\EngineClasses_G2_Rus\oCZoneMusic_Rus.d
Ikarus\EngineClasses_G2_Rus\zCCamera_Rus.d
Ikarus\EngineClasses_G2_Rus\zCConsole_Rus.d
Ikarus\EngineClasses_G2_Rus\zCMenu_Rus.d
Ikarus\EngineClasses_G2_Rus\zCMesh_Rus.d
Ikarus\EngineClasses_G2_Rus\zCOption_Rus.d
Ikarus\EngineClasses_G2_Rus\zCParser_Rus.d
Ikarus\EngineClasses_G2_Rus\zCSkyController_Rus.d
Ikarus\EngineClasses_G2_Rus\zCTexture_Rus.d
Ikarus\EngineClasses_G2_Rus\zCTrigger_Rus.d
Ikarus\EngineClasses_G2_Rus\zCWaynet_Rus.d
Ikarus\EngineClasses_G2_Rus\zCWorld_Rus.d
Ikarus\EngineClasses_G2_Rus\zCZoneZFog_Rus.d
Ikarus\Ikarus_Const_G2_Rus.d
Ikarus\Ikarus_Rus.d
Ikarus\float_Rus.d

...

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:
Код:
@echo off

::путь к Готике и к GS
set pG2="E:\Gothic Mod\Gothic II Addon\_work\data\Scripts"
set pGS="E:\Gothic MOD\GothicSourcer V3.14\Gothic Projects\SolMyProject\PrjGothic"

::удаляем DMP-файлы
DEL /F /Q %p%..\..\..\..\*.DMP

::копируем скрипты, только обновившиеся и не спрашивая подтверждения на замену
xcopy %pGS%"\_Intern"	%pG2%"\Content\_Intern" 	/d /s /e /y
xcopy %pGS%"\Ikarus"	%pG2%"\Content\Ikarus" 	/d /s /e /y
xcopy %pGS%"\AI"	%pG2%"\Content\AI" 	/d /s /e /y
xcopy %pGS%"\Items"	%pG2%"\Content\Items" 	/d /s /e /y
xcopy %pGS%"\Story"	%pG2%"\Content\Story" 	/d /s /e /y
::копируем SRC
copy %pGS%"\gothic.src"	%pG2%"\Content\gothic.src" /y

pause


При запуске этого файла появится окно командной строки, в котором будут перечислены все скопированные файлы.
Если есть желание, можно, чтобы файл скриптов назывался не 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.
НастасьСанна вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
DRom (02.02.2014), Hell9999 (02.02.2014), kazus23 (02.02.2014), redleha (03.02.2014), Tarokl (02.02.2014), Tolgetmen (04.02.2014)
Старый 20.06.2014, 18:40   #3
Legacy Team
Адепт
 
Аватар для Sonet
 
Регистрация: 13.12.2007
Адрес: г.Минск
Сообщений: 679
Сказал(а) спасибо: 2
Поблагодарили 30 раз(а) в 11 сообщениях
Отправить сообщение для Sonet с помощью ICQ
По умолчанию Re: IKARUS: скрипт-пакет

Вопрос по спискам: есть ли список всех мобов в игре? можно ли самому создавать списки?
Sonet вне форума   Ответить с цитированием
Старый 20.06.2014, 20:58   #4
Профессор скриптологии
Ученик
 
Аватар для НастасьСанна
 
Регистрация: 10.12.2012
Адрес: Самара
Сообщений: 233
Сказал(а) спасибо: 366
Поблагодарили 326 раз(а) в 135 сообщениях
Отправить сообщение для НастасьСанна с помощью ICQ
По умолчанию Re: IKARUS: скрипт-пакет

Списка 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'а.
__________________
Сколько всего не сделано. Сколько всего предстоит не сделать!
НастасьСанна вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
DRom (21.06.2014), redleha (21.06.2014), Sonet (22.06.2014), Tolgetmen (21.06.2014)
Старый 22.06.2014, 16:09   #5
Legacy Team
Адепт
 
Аватар для Sonet
 
Регистрация: 13.12.2007
Адрес: г.Минск
Сообщений: 679
Сказал(а) спасибо: 2
Поблагодарили 30 раз(а) в 11 сообщениях
Отправить сообщение для Sonet с помощью ICQ
По умолчанию Re: IKARUS: скрипт-пакет

Цитата:
Сообщение от НастасьСанна Посмотреть сообщение
Списка 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'а.
Да, имел в виду монстров (в Уроке 1 говорится, что есть список всех НПЦ). В принципе все логично, игра про новые списки и ноыве структуры то ничего не знает.

Про AIVAR'ы честно говоря не знаю или не помню. Но суть ясна, спасибо.

Последний раз редактировалось Sonet; 22.06.2014 в 16:14.
Sonet вне форума   Ответить с цитированием
Старый 30.11.2014, 09:36   #6
Готоман
Новичок
 
Аватар для Saturas
 
Регистрация: 29.12.2011
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию Re: IKARUS: скрипт-пакет

PHP код:
            int voblist;            //zCListSort<zCVob>*
            
int voblist_npcs;       //zCListSort<oCNpc>*
            
int voblist_items;      //zCListSort<oCItem>* 
Это к слову о спике, вобов, нпс и предметов, они есть как в карусе так и в ексте, и лично я ими очень активно пользуюсь, так что не думаю что разумно потрошить zCTree на наличие нпс, хотябы по той причине что эти 3 списка уже есть.

Последний раз редактировалось Saturas; 30.11.2014 в 09:50.
Saturas вне форума   Ответить с цитированием
Старый 11.05.2016, 12:17   #7
Новичок
 
Аватар для Neromont
 
Регистрация: 05.12.2012
Адрес: Магнитогорск
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 1 сообщении
По умолчанию Re: IKARUS: Обсуждение

1. Такое огромное количество функций в Ikarus, и что их все можно использовать начиная от MEM_CheckVersion?

2. Я так понял Ikarus работает напрямую с движком?

Последний раз редактировалось Neromont; 11.05.2016 в 12:36.
Neromont вне форума   Ответить с цитированием
Старый 11.05.2016, 13:15   #8
Администратор
Мастер
 
Аватар для redleha
 
Регистрация: 28.02.2008
Адрес: г.Новокуйбышевск Самарская обл.
Сообщений: 1,363
Сказал(а) спасибо: 477
Поблагодарили 405 раз(а) в 176 сообщениях
Отправить сообщение для redleha с помощью ICQ Отправить сообщение для redleha с помощью Skype™
По умолчанию Re: IKARUS: Обсуждение

Все можешь использовать.
С движком работает косвенно, но по сути да.
__________________
redleha вне форума   Ответить с цитированием
Старый 11.05.2016, 14:27   #9
Новичок
 
Аватар для Neromont
 
Регистрация: 05.12.2012
Адрес: Магнитогорск
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 1 сообщении
По умолчанию Re: IKARUS: Обсуждение

Цитата:
Сообщение от redleha Посмотреть сообщение
Все можешь использовать.
С движком работает косвенно, но по сути да.
Я тут просмотрел LEGO http://lego.worldofplayers.de/?, я так понял его разрабатывали те же самые люди, что трудились над Ikarus. Я не понял LEGO идет как дополнение к Ikarus или как отдельный продукт.
Neromont вне форума   Ответить с цитированием
Старый 11.05.2016, 15:01   #10
Профессор скриптологии
Ученик
 
Аватар для НастасьСанна
 
Регистрация: 10.12.2012
Адрес: Самара
Сообщений: 233
Сказал(а) спасибо: 366
Поблагодарили 326 раз(а) в 135 сообщениях
Отправить сообщение для НастасьСанна с помощью ICQ
По умолчанию Re: IKARUS: Обсуждение

Цитата:
Сообщение от Neromont Посмотреть сообщение
Я тут просмотрел LEGO http://lego.worldofplayers.de/?, я так понял его разрабатывали те же самые люди, что трудились над Ikarus. Я не понял LEGO идет как дополнение к Ikarus или как отдельный продукт.
LeGo - это отдельный пакет, основанный на возможностях Ikarus, т.е. для LeGo нужен Ikarus, но Ikarus можно использовать и отдельно.

Ikarus сам по себе дает в основном доступ к разным фишкам и возможностям, как то: запуск любых встроенных в движок функций, доступ к глобальным объектам - экрану, игровой сессии и т.п., полноценную работу с массивами, строками, вещественными числами, и даже возможность писать и запускать ASM-код прямо из скриптов, и еще много чего.

LeGo можно рассматривать как коллекцию решений прикладных задач с помощью Ikarus. Например: диалог с несколькими NPC, зацикленные функции без триггера, навешивание хуков на функции, вывод изображений и текста на экран и др.

И, да, Ikarus разрабатывал Sektenspinner, а LeGo - детище Lehona и Gottfried.
__________________
Сколько всего не сделано. Сколько всего предстоит не сделать!
НастасьСанна вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IKARUS: скрипт-пакет redleha Модостроение к Gothic 10 06.10.2016 18:21
IKARUS: перевод документации НастасьСанна Модостроение к Gothic 5 21.07.2013 22:44


Текущее время: 00:42. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Magic Team© 2006-2013, The development and modification