================================================================================ TeamX представляет "Fallout2: Самоделкин" v1.1 ================================================================================ "Самоделкин" - это скорее аддон, чем мод, который добавляет в игру возможность собственноручной сборки предметов. Если ещё точнее, это даже и не аддон. Это инструмент, который позволит Вам не только самостоятельно придумывать и добавлять в список сборки различные комбинации предметов, но и легко использовать идею сборки в собственном моде. О том как это делается рассказано ниже. Содержание: 0. Изменения по сравнению с v1.0 1. Описание 2. Установка 3. Совместимость с другими модами 4. Формат данных 5. Интеграция 6. Известные проблемы 7. О команде 8. Благодарности -------------------------------------------------------------------------------- 0. Изменения по сравнению с v1.0 -------------------------------------------------------------------------------- В версии 1.1 перерисован интерфейс (за что спасибо $py) и немного изменены некоторые алгоритмы. В режиме выбора предмета из списка в левом окошке теперь отображается заставочная картинка (w_idle.pcx). -------------------------------------------------------------------------------- 1. Описание -------------------------------------------------------------------------------- "Самоделкин" - это маленький инструментарий, который всегда с собой. Точнее, с Избранным. Мы долго думали над тем, как оформить его вызов, и в конце концов решили "подвесить" "Самоделкина" на описание. Вы просто выбираете "бинокль" на Избранном, и открывается интерфейсное окно "Самоделкина". Окно состоит из трёх частей: информация о предмете (слева), текущие сообщения (вверху справа) и опции (внизу справа). Пока Вы не выбрали ни один предмет, окно описания будет пустым. Как только вы выберите что-нибудь из списка в окне опций, в окне описания появится изображение предмета, список всего того, что необходимо для его сборки/разборки, а также время, которое Вы затратите, собирая/разбирая один экземпляр. В окне сообщений при этом отобразится описание предмета. Список необходимых для сборки/разборки вещей разделён на три секции: "Инструменты", "Навыки" и "Компоненты". С "навыками" всё ясно: здесь указываются необходимые навыки (они же "скиллы") и их минимальный уровень. В секции "Инструменты" указываются необходимые инструменты. Инструменты используются при сборке/разборке и не исчезают после неё (вы же не хотите, чтобы ваши плоскогубцы постоянно испарялись, нет?). В секции "компонентов" указываются составляющие, объединение которых и даёт Вам новый предмет, и их количество, необходимое для сборки одного экземпляра. Они-то как раз и исчезают после сборки и возвращаются при разборке предмета на части. За один раз можно собрать/разобрать один предмет или, если в инвентаре имеется нужное число компонент, наибольшее возможное количество предметов. При этом, как можно догадаться, потраченное время будет равняться времени, необходимому на сборку/разборку одного экземпляра, помноженному на количество экземпляров. Не все предметы возможно разобрать: разорвать куртку на шкуры ещё можно, но вот "расточить" заточенное копьё не получится. В списке на сборку/разборку могут отображаться не все предметы. Предмет отображается только в том случае, если Ваш персонаж "знает", как его собрать. Для совместимости в данную версию мода не были включены подобные предметы, но Вам следует знать, что такая возможность существует, и управление ею осуществляется через глобальные переменные. Используемые в аддоне сборные предметы являются просто примерами. Обогащение списка новыми комбинациями целиком Ваша задача ;). -------------------------------------------------------------------------------- 2. Установка -------------------------------------------------------------------------------- Поскольку "Самоделкин" "привязан" к Избранному (его скрипту), в первую очередь Вам придётся в некотором смысле избавиться от patch000.dat. НЕ ЗАБУДЬТЕ СДЕЛАТЬ РЕЗЕРВНЫЕ КОПИИ ФАЙЛА PATCH000.DAT И ПАПКИ DATA!!! Если Вы пользуетесь dat2 и он интегрирован с FAR, просто откройте patch000.dat и удалите следующий файл: patch000.dat\SCRIPTS/obj_dude.int. Затем скопируйте содержимое папки MRFIXIT из данного архива в папку DATA и запускайте Fallout2. Начинать новую игру не потребуется. Если же Вы не используете dat2 + FAR, то Вам придётся пойти несколько более долгим путём: 1. Скачайте распаковщик dat-файлов: http://www.teamx.ru/utils/dat_explorer.rar 2. Распакуйте содержимое файла patch000.dat в папку DATA. 3. Удалите файл patch000.dat. 4. Скопируйте содержимое папки MRFIXIT из данного архива в папку DATA (с заменой файлов). 5. Убедитесь, что все файлы *.pro имеют атрибут "только чтение"!!! 6. Запускайте Fallout2, начинать новую игру не потребуется. Если у Вас возникли проблемы, загляните в раздел 6 - "Известные проблемы". -------------------------------------------------------------------------------- 3. Совместимость с другими модами -------------------------------------------------------------------------------- "Самоделкин" совместим со всеми модами, которые не изменяют файлы obj_dude.int и test0.msg. Некоторые моды, например, "Новый Взгляд" включают в себя патч 1.02d, в котором присутствует файл obj_dude.int. Чтобы проверить, был ли изменён файл obj_dude.int, распакуйте obj_dude.int из patch000.dat версии 1.02d и сравните с obj_dude.int из мода (например, при помощи fc). Примечание: в моде "Новый Взгляд" файл obj_dude.int *не изменялся*. Если Вы желаете интегрировать "Самоделкина" с модом, в котором есть изменённый obj_dude.int, обратитесь к разделу 5 - "Интеграция". -------------------------------------------------------------------------------- 4. Формат данных -------------------------------------------------------------------------------- Все необходимые для работы "Самоделкина" данные находятся в файле test0.msg. Это вторая по счёту запись, которая присутствует в любой версии scripts.lst Fallout2 и не используется в игре. Как Вы уже догадались, это сделано ради совместимости. ВНИМАНИЕ! Во избежание усложенения (и замедления работы) алгортмов обработки, в "Самоделкине" не предусмотрена защита от ошибок! Если Вы неверно ввели данные, Fallout, скорее всего, слетит либо сглючит каким-либо другим образом. Чтобы этого не произошло, внимательно прочитайте данный раздел и всегда тщательно проверяйте свои записи перед запуском игры. ВАЖНО! Не изменяйте строки с 19 по 36! Это может привести к неправильной работе скрипта! Основные правила: Описания предметов начинаются с 500 строки, на каждый предмет отводится максимум 25 строк. Номера строк внутри описания должны идти подряд! Номера первых строк секций тоже должны идти строго через 25 строк, без пропусков! Пробелы в описании недопустимы! Наличие секций [TOOLS], [SKILLS] и [COMPONENTS] обязательно. Эти секции не могут содержать пустых строк. Формат записи: {500}{}{[ITEM]} # маркер начала описания предмета {501}{}{999} # PID предмета {502}{}{pcx/items/mola.pcx} # путь к картинке (относительно папки DATA) {503}{}{100010} # размер картинки = w * 1000 + h (max = 150 * 1000 + 60) {504}{}{999} # номер GVAR, отвечающей за возможность сборки (или пусто) {505}{}{999} # время на сборку/разборку в игровых тиках {506}{}{YES} # можно разобрать? (YES/NO) {507}{}{[TOOLS]} # маркер секции инструментов {508}{}{999} # PID необходимого инструмента {509}{}{999|998|997} # PID1|PID2|PID3 (или PID1, или PID2, или PID3) {510}{}{[SKILLS]} # маркер секции навыков {511}{}{SKILL_REPAIR:30} # skill:уровень {512}{}{SKILL_THROWING:20} # skill:уровень {513}{}{SKILL_TRAPS:10} # skill:уровень {514}{}{[COMPONENTS]} # маркер секции компонентов {515}{}{999:9} # PID:количество {516}{}{999:9} # PID:количество {517}{}{999:9} # PID:количество Примеры можно найти в файле test0.msg. Пояснения: 1. PID (идентификатор прототипа предмета) можно узнать используя маппер или заголовочный файл itempid.h. 2. Одна секунда равна десяти игровым тикам. 3. Пишите "YES" и "NO" заглавными английскими буквами. Использование строчных букв приведёт к ошибке. 4. Если какая-то из секций пуста (не используется для данного предмета), то её маркер должен присутствовать, и сразу за ним должен идти маркер следующей секции. Например: {507}{}{[TOOLS]} # маркер секции инструментов {508}{}{[SKILLS]} # маркер секции навыков {509}{}{SKILL_REPAIR:30} 5. Объединение инструментов с помощью символа '|' позволяет задавать ситуации, когда вам нужен любой из перечисленных инструментов. Наличие хотя бы одного из них будет означать, что сборка возможна (при выполнении остальных условий, разумеется). Пример: {508}{}{4|45|236} # PID_KNIFE|PID_THROWING_KNIFE|PID_COMBAT_KNIFE Данная запись означает, что может быть использован любой из этих предметов. 6. Имена навыков для секции [SKILLS] берутся из таблички в строках с 19 по 36. Запись SKILL_REPAIR:30 означает, что уровень навыка "ремонт" должен быть больше или равен 30. -------------------------------------------------------------------------------- 5. Интеграция -------------------------------------------------------------------------------- Вы можете свободно использовать код "Самоделкина", распространять и изменять его при условии сохранения авторства. Если Вы хотите использовать "Самоделкина" в своём моде или интегрировать его в существующий мод, Вам понадобятся: 1. Заголовочные файлы BIS (можно скачать с нашего сайта www.teamx.ru). 2. Компилятор ssl. 3. Исходники из данного архива. Файлы исходников: atoi2.ssl, custstr2.ssl - "библиотеки" для работы со строками, test0.ssl - основной код "Самоделкина", obj_dude.ssl - изменённый скрипт главного героя. Основными являются файлы atoi2.ssl, custstr2.ssl и test0.ssl. Пример использования приведён в obj_dude.ssl: 1. Скопировать основные файлы в папку с Вашим скриптом. 2. Подключить из Вашего скрипта файл test0.ssl: #include "test0.ssl" 3. Вызвать инициализатор сборщика предметов batch_init: procedure description_p_proc begin if (not(combat_is_initialized)) then begin script_overrides; call batch_init; end end Здесь проверка if (not(combat_is_initialized)) необходима, чтобы отключить вызов сборщика во время боя, script_overrides переопределяет процедуру description_p_proc, а batch_init инициализирует и запускает сборщик. Таким же образом можно "повесить" сборщик, например, на верстак: procedure use_p_proc begin if (not(combat_is_initialized)) then begin script_overrides; call batch_init; end end Картинки предметов и фоны интерфейсных окон располагаются в папке PCX. В "Самоделкине" используется так называемый "интерфейсный" режим, в котором отображается только графика в формате pcx. Если у Вас возникли вопросы непосредственно по коду "Самоделкина", обращайтесь к Wasteland Ghost (wasteland_ghost@mail.ru) или Raven (raven-umr-@mail.ru). -------------------------------------------------------------------------------- 6. Известные проблемы -------------------------------------------------------------------------------- Поскольку "Самоделкин" использует так называемые "интерфейсные" или "низкоуровневые" функции движка, которые очень "капризны" в поведении, нам не удалось устранить некоторые ограничения и проблемы. А именно: 1. Картинки должны быть в формате pcx, с другими движок в этом режиме работать отказывается. 2. Строки, которые выводятся в окно информации о предмете (левое окошко) не должны выходить за диапазон окна, это приведёт к вылету игры. Поэтому используйте слишком длинные названия и не указывайте слишком много инструментов/навыков/компонентов! -------------------------------------------------------------------------------- 7. О команде -------------------------------------------------------------------------------- Наш адрес: www.teamx.ru По вопросам пишите Wasteland Ghost: wasteland_ghost@mail.ru Сообщения о найденных багах направляйте сюда же или оставляйте на форуме TeamX. Если у Вас возникли вопросы непосредственно по коду "Самоделкина", обращайтесь к Wasteland Ghost (wasteland_ghost@mail.ru) или Raven (raven-umr-@mail.ru). -------------------------------------------------------------------------------- 8. Благодарности -------------------------------------------------------------------------------- - Refiler'у - за брошенный вызов :) - Anchorite - за компилятор/декомпилятор - Raven'у - за функции обработки строк и упорство - SpyBomb - за картинки и советы - $py - за новый интерфейс, картинки и ценные замечания - Strongholder'у - за тестирование - Alan Killenger - за универсальный шрифт - Izuken'у - за то, что пытался ;) - Всему нынешнему составу TeamX, а также всему fallout-сообществу - за поддержку - И, конечно, BlackIsle - за отличную игру! Ну вот и все. Надеемся, что и эта встреча тоже не последняя ;). Удачи Вам на просторах Пустоши! ---- Wasteland Ghost, TeamX 23.09.2005