Редактор части ресурсов для Проклятых Земель. Версия 1.8.2 Crafted by Sagrer Copyright © 2002-2007 Gipat Group Программа распространяется на условиях Gipat Group's opened EI-editor-utility license ver. 1.0. ____________________________________________________________________ "Проклятые земли" Copyright 2000 Nival Interactive, Copyright 2000 АОЗТ 1С. Все права защищены. "Проклятые земли" - товарный знак Nival Interactive. ____________________________________________________________________ ВНИМАНИЕ!!!!!!!!!!!!!!! Данная версия программы содержит известную нам ошибку в коде редактора acks.db. Мы знаем о ошибке но поскольку в данный момент непосредственной необходимости работать с acks.db у нас нет - её исправление отложено "на потом". Не пытайтесь редактировать эту часть базы данных этой версией программы! Почти наверняка acks.db после такого редактирования прийдет в негодность - редактор по прежнему будет его открывать но правильная информация в этом файле будет утеряна, соответственно и игра скорее всего просто вылетит при попытке использовать database.res с этим файлом... а если и не вылетит то глюки будут ужасны! %). ____________________________________________________________________ Обращение аффтара к юзверям. Если после попыток использования программы вы предложите аффтару пойти выпить йаду - будете совершенно правы %). Тогда, в далеком 2001-2002 - это была моя первая что-то реально делающая программа %). Ну если не считать всяких HelloWorld или задачек на паскале по информатике. Даже файлы та версия читала через Readln а писала через Writeln % ))). Прям как в каком-нить "паскале 3.0 для IBM PC" % ))). Да, с тех пор код несколько раз тотально чистился, один раз вообще большая часть нутра была разобрана на отдельные несовместимые друг с другом куски и собрана заново, но, увы, чтобы написать хорошую программу - её надо как минимум 1-2 раза переписать с нуля. Эта программа пока ни разу не переписывалась с тех самых пор. Единственное за что мне не слишком стыдно - редактор текстов который был заново переписан относительно недавно. "Редактор базы" ожидает такой же полной замены - то что есть способно редактировать базу, но наворочать что-то более сложное (вроде автобалансигна) на том коде нереально. Оно там все привязано к интерфейсу. Код там страшный, да %). Уникальным прогу делает только одно - она способна практически напрямую работать с бинарной базой ПЗ а не с текстовыми её исходниками. В общем, если что - я вас предупредил %). ____________________________________________________________________ Итак что тут есть (типа содержания) : 1. Бредисловие. 2. По поводу этой версии. 3. Чего прога умеет. 4. Использование резбилда. 5. Редактирование текстов. 6. Редактирование баз. 7. Баллада о чейнджлоге. 8. Координаты аффтароф. 9. Как можно помочь разработке. ____________________________________________________________________ 1. Бредисловие Собственно, тут хочу только сказать, что файл (ридми), как и сама прога изначально были предназначены исключительно "для своих" - тоесть для использования участниками Gipat Group, тоесть таким людям, которые хотябы поверхностно знакомы с внутренней структурой ПЗ, и с gipat.org-овским ПЗ-шным жаргоном (если не знаете что такое ПЗ - значит точно не знакомы ;) ). К чему это говорю - не буду я обьяснять что такое например "резбилд", где его брать и как юзать, и для чего он вообще нужен. Не для того этот ридми. В кранем случае, если что непонятно - можно спросить на форуме. ___________________________________________________________________ 2. Обращение по поводу этой версии. В этом разделе буду обращать внимание на что следует обратить внимание при переходе с прошлой версии на эту. Версия 1.8.2 По сравнению с 1.8.1 ничего принципиально нового нету кроме того что исходник программы и трекер теперь опубликованы. ___________________________________________________________________ 3. Чего прога умеет. Итак, умеет: * ГЛЮЧИТЬ! * Портить файлы ПЗ Хоть я и стараюсь уменьшить влияние первых двух пунктов но всеже - делайте резервные копии. * Редактировать всякие разные текстовые файлы, ну и RTF заодно (хотя и хз насколько оно безопасно и не портит формат). * Редактировать содержимое database.res (часть таких файлов есть в databaselmp.res). * Юзать резбилд без командной строки (выбирать какой файл распаковать или какую папку запаковать). + оптимизация :). ____________________________________________________________________ 4. Использование резбилда. В принципе - можно пользоваться EiEdit-ом в как оболочкой для ResBuild. Есть 2 способа - первый описан здесь, второй - см. ниже в описании текстового редактора. Итак, резбилд. На панели инструментов есть кнопка на которой нарисовано "RES", её дублирует в меню ФАЙЛ пункт "Запаковка\распакова ресурсов...". Если туда нажмать, то вылезет окно. В окне что-то похожее на таблицу, только вместо ячеек кнопки. Кнопки, находящиеся на одной строчке выполняют какое-либо действие над тем резом, имя которого написно в начале сточки. Действие которое выполняет кнопка написано в заголовке столбика кнопок. В общем там должно быть понятно по виду. Запаковка - запаковывает, распаковка - как ни странно, распаковывает ;). При распаковке все файлы распаковываются в папку с именем файла, если у файла есть расширение - то после имени файла в папку приписывается символ "_", а после него - символы из расширения. Если файл без расширения - к папке припишется "_noext". Папка ложится туда же где лежит файл с резом. Если до этого в папке, куда ложатся файлы что-то было, то все там предварительно стирается (предупреждение прога выдает). При запаковке, файлы для запоковки берутся из папки с именем полученным как написано выше. Если кнопка блеклая - значит нечего распаковывать\запаковывать. НО все эти кнопки работают только если имена к файлам ресурсов прописаны в настройки проги ("пути к ресурсным файлам"). Всегда работают только 2 кнопки, на которых написано "другой". Одна - для запаковки, другая - для распаковки (странно, не правда ли?). По нажатию вылезет окно, где надо выбрать что распаковывать или запаковывать. Если распаковывать - то надо будет открыть в окне рез-файл. Если запаковывать - то выбрать папку с пакуемыми файлами. После чего появится окно в котором можно точно указать чего и как резбилдить, если предложенное прогой чем-то не нравится. Есть еще кнопка оптимизации - по нажанию надо выбрать файл который оптимизировать. Еще есть чекбокс - если его включить - то после запаковки "стандартные" ресурсы будут оптимизироваться. __________________________________________________________________________ 5. Редактирование текста. Итак. Вызывается редактор соответствующей кнопкой на панели инструментов, либо из меню ФАЙЛ. Дальше - чего он умеет. * Открывать обычные текстовики * Открывать файлы *.rtf. * Правильно сейвить все это дело. * Включать\выключать перенос строк по словам * Встроенная навигация по диску компа - этакий файловый менеджер-уродец. * Встроена возможность распаковывать\запаковывать архивы резбилда * Можно удалять файлы\папки прям в редакторе. Как это работает. В окне редактора есть поле - список файлов\папок текущей папки. Значки там не совсем стандартные но по внешнему виду должно быть понятно чего они означают. Соответствуют типу элемента файловой системы - файл (и его тип)\папка\ссылка\неизвестный. Обзор начинается с того пути, который задан в настройках текстового редактора. Лежат эти настройки в меню ПАРАМЕТРЫ\Параметры для редактора текстов. Как перемещаться по папкам.... Нортон-командира или его клоны юзали? ;). Так вот - тыркаем 2 раза грызуном по папке - попадаем туды. Тыркаем по элементу с двумя точками вместо имени - попадаем уровнем выше. И еще - вверху есть поле ввода под путь - туда тоже можно ввести путь и нажать ентер или кнопочку со стрелкой возле поля ввода - удобно например скопировать путь из окна explorer или еще откуда - в принципе это самый быстрый способ перемещения на случай когда где-то этот путь уже открыт. Еще, оно умеет удалять файлы\папки. Выделите что нужно и нажмите DEL. Прога ессно запросит подтверждение, т.к. корзину не юзит. Если сделать 2 клик на архиве резбилда - будет предложено распаковать этот ресурс, а после распаковки - прога автоматически влезет в папку с распакованными файлами. Дальше - справа - поле под текст. Обычный текстовый редактор типа "BLAKNOT" :). Там все стандартно. Ниже него - чекбокс для включения\выключения переноса строк - может понадобиться чтоб понять где кончается абзац. Еще ниже - переключатель между RTF-TXT. Вообще он переключается автоматически в зависимости от типа файла. Но если вы вдруг хотите засейвить свой обычный текстовик как rtf - можно вручную сменить переключатель и нажать на батон сохранения. Аналогично можно превратить rtf в обычный текстовик. Справа от переключателя - кнопка сейва. Есть вопросы? ;). Только скажу что файл сейвится в текущую папку (ту что отображена в левом поле). А имя - используется то что написано выше окна редактора. Если имя сменить, и\или перейти в другую папку (или все вместе) и нажать на сейв - то создастся новый файл (либо перезапишется уже существующий но другой - в зависимости от того что ввели и куда перешли) - иногда удобный способ быстро "перекопировать" какой-то файлик. Как уже сказал - вверху от редактора строка под имя файла. Кстати даже если ни разу файл еще не открывался - можно ввести имя файла и текст в редактор и сохранить - создастся файл. Так. ну дальше - под списком файлов - выпадающий список под фильтры. Ну короче маски это. Маски файлов. Звездочка (*) - любое число любых символов, знак вопроса (?) - 1 любой символ. Надеюсь тоже все с етим делом знакомы. В общем фильтры используются чтоб просмотреть в списке файлов только те которые удовлетворяют маске. Фильтры там разные, я их уже понаделал на все виды текстовых ресурсов в ПЗ. Можно убить любой фильтр соотв. кнопкой справа от списка фильтров. И можно новый фильтр добавить - тоже кнопка для этого есть, там же. В появившемся окне - ввести саму маску и описание фильтра (любой текст). Дальше. Чекбокс "открывать 1 щелчком (выделением)". В общем текстовые файлы - (а текстовыми файлами считаются все неизвестные файлы ;) ) если чекбокс врубить - то открываться такие файлы будут 1 щелчком (надо его выделить). Можно просто двигать выделение стрелками на клаве - файлы будут открываться. Это можно йузать для быстрого просмотра кучи файлов. Ниже вышеописанного чекбокса засел другой чекбокс - если он врублен, то текстовые файлы размером большим, чем введено в поле ввода правее чекбокса - открываться не будут. Ниже списка фильтров - кнопки запаковки и распаковки. Если выделить папку и нажать запаковать - будет предложено запаковать папку в архив резбилда. Ну а кнопка распаковки действует аналогично 2 клику на архиве резбилда. Только ессно надо сначала этот файл выделить. В общем в сегодняшнем состоянии редактор должен быть способен на без использования другого софта редактировать outro.res и *.mq-шки :). Ну и содержимое какого-нибудь texts.res естественно. Кстати о редактировании texts.res - в оригинальной игре и в подавляющем большинстве модов абсолютно все тексты лежат в одном файлике texts.res. Ориентироваться там достаточно сложно. В модах под стартер можно конечно раскидать содержимое по нескольким ресурсам, но такие вещи встречаются в любом случае не всегда. Так вот - для того чтобы не листать весь огромный список - существуют фильтры. Выпадающий список с этими фильтрами расположен под списком файлов. Фильры представляют из себя обычные маски, которые часто используют при работе с файловой системой, например при выделении файлов по маске в Far. Для тех кто в прожил свою жизнь в бронетранспортере и не в курсе как эти маски работают - краткая справка - * заменяет любое количество любых символов, ? заменяет один любой символ - итого примеры: *.txt - означает все файлы с расширением txt. *test*.txt - все файлы в имени которого где-то посередине есть test и расширение у которого txt. ???test.txt - все файлы заканчивающиеся на test.txt у которых впереди еще 3 символа. * - вообще ВСЕ файлы, в том числе без расширения. *.* - все файлы у которых есть расширение итд итп. Добавить новые фильтры можно соответствующими кнопками. Удалить - аналогично. ___________________________________________________________________________ 6. Редактирование баз Во первых - надо показать проге где лежат *.res -файлы баз. Это можно сделать либо через окно настроек путей ко всем ресурсам проги, либо через меню Параметры\Параметры для баз. В верхние 2 поля можно вручную или кнопкой обзора прописать пути к нераспакованным резбилдом базам (database.res и databaselmp.res). В том же окне в 3 и 4 полях - показать папки, где будут лежать "исходники баз" - папки с файлами, которые использует редактор, распакованная (точнее мелко нарезанная) база. В этой папке не должно быть папок с именами acks, items, levers, perks, prints, quests, spells, units - такие имена будут у папок в составе исходника, лучше если это вообще пустая папка. По умолчанию, прога вообще пишет там путь к специальной папке для этого, которая лежит в папке проги. Теперь надо распаковать базы. Меню Базы\Исходники... Там в окне 2 раздела - для сингл и для мульт базы. Для каждой 6 кнопок. [Распаковать резбилдом] - разрезбилдить *.res файл базы. Запаковать - ессно обратный процесс (распакованные файлы появляются в папке с именем файла базы в той же папке где и *.res - файл базы) - эти кнопки просто распаковывают резбилдом. [Сгенерировать исходник] - это уже собсно "распаковка" разрезбилднутых баз - получение "исходника", который пишется в ранее уже указанную папку (для исходника). [Сгенерировать базы] - из "исходника" получаются файлы баз (например units.udb), которые пишутся туда, где была резбилдовская распаковка базы. После чего их можно опять зарезбилдить в *.res файл сответствующей кнопкой. [Запаковать резбилдом] - по смыслу - запаковывает уже сгенеренные базы. Потом оптимизирует. [Полная распаковка] - Распаковывает базу резбилдом, и сразу же делает из нее исходник (как бы 2 кнопки в одной). [Полная запаковка] - аналогично. Только обратное действие. 2 кнопки в одной. В принципе 2-х последних типов кнопок для работы достаточно. Остальные остались из прошлого, убирать не стал - вдруг понадобятся... Собственно редактирование - редактируется "исходник". Рекомендую залезть в папку с исходником и поизучать (с привлечением HEX-редактора), чтоб лучше понимать что это такое, но это не обязательно. Если кратко, то каждая строка в ниваловском текстовике (ну тот, который "утилита для создания модов в мультиплеере" или чтото вроде того) - так вот, каждая строка в том текстовике соответствует 1 файлу в "исходнике" этой проги. Фактически эти файлы - результат мелкой нарезки собсно базы (ну там еще и структура самой базы убрана та которая не нужна), так чтобы в 1 файле было по 1 строке ("по научному" ;) - записи) базы. Во всех окнах редактирования есть : 1. два выпадающий списка - правый с именами редактируемых файлов исходника, а левый - с "масками". "Маска" - так я назвал первое поле записей баз, которое везде текстового типа, и всегда уникально - обычно это поле называется Name. Ясен пень, что по имени легче найти нужную запись, чем по имени файла типа "0000057.zap". Оба этих списка "синхронизированны" - нужный файл можно выбрать и там и там, состояние другого списка поменяется автоматом. 2. Таблица с полями записи - о том какие есть поля см. ниже. 3. Кнопки: * [Зашаблонить] - создать новый шабон или переписать старый. О шаблонах см. ниже. * [Сохранить] - сохранить запись. * [Закрыть] - закрыть окно, БЕЗ сохранения. * [Создать] - создать запись по шаблону. * [Удалить] - удалить запись. Про типы полей: 1. TEXT - какой-либо текст. Будте внимательней к регистру, есть подозрения, что нивальские тулсы для баз исправляют слова в неправильном регистре (например, делают все буквы маленькими), я точно не во всех местах в этом уверен, поэтому у меня тексты сохраняются так как вы их ввели. В общем смотрите по аналогии. 2. UnsLong. - целочисленное число. Только цифры и знак минуса. 3. FLOAT. - дробное число. Можно писать без запятой если оно без дробной части. Визуально от UnsLong можно отличить тем, что при открытии записи все FLOAT-числа имеют запятую, даже если дробная часть равна нулу (например 1,0). Писать можно - только цифры, знак минус и запятая. 4. ShopInfo - через запятую список номеров магазинов, где продается предмет. Запятые нельзя в начале и в конце строчки, писать их надо только между цифрами. 5. LIST - список строковых (текстовых) значений. Через запятую. Писать по тем же правилам, что и ShopInfo. 6. Неизвестное с кнопкой. Тем неизвестным (Unknown*) полям, у которых формат неясен, приписывается кнопка (ее видно при выделении поля). Нажав на кнопку, можно сохранить внутреннее представление поля в файле, или загрузить из файла. 7. Другие поля - они бывают разные, их там много всяких... то что выше - это я основные упомянул. Обычно они выглядят как обычные и никакой разницы в их редактировании нет. А если разница и есть, то прога по любому перед сохранением проверит, чего ей там понаписали, и если чего неправильно - выведет диалог с сообщением об ошибке и краткой инструкцией, чего можно, а чего нельзя писать в данное поле. 8. "Поля" с кнопкой, но не "неизвестные" - обычно кнопка ставится, если для редактирования поля нужно вызвать дополнительный диалог (например в Acks.db), либо если нажатие кнопки позволяет отредактировать поле быстрее. Например, у многие поля ID (ID есть в названии поля) - это целочисленные числа, но определенным значениям поля может соответствовать слово (например 00 = sword, 01 = axe)... В общем, такие поля выглядят примерно так (квадратные скопки не считайте ;) ): [ 1 | AXE ] Тоесть стоит цифра, потом прямая черта, потом слово. В принципе, в таком поле можно "руками" написать цифру (прога воспримет только то, что написано с начала строки, все что стоит после первого пробела (и сам пробел) - игнорируется). Но можно нажать на кнопку в этом поле и выбрать нужную цифру из списка (при этом видно, что означает каждая из цифр). Про шаблоны. Шаблоны - заготовки записей. У каждого типа базы (и у каждого ее раздела) они разные и содержатся в разных папках. Чтобы создать шаблон, надо открыть (или создать) запись, на основе которой будет сделан шаблон, выставить нужные значения и нажать [Зашаблонить]. В появившемся окне или ввести новое имя, или выбрать из списка уже существующий шаблон. Ну и нажать OK. Все. Чтоб создать запись, надо после нажатия [Создать] ввести правильное имя записи (чтоб оно было уникальным), а потом выбрать нужный шаблон. Все. ___________________________________________________________ 7. Баллада о чейнджлоге. Когда-то 7-й пункт содержал в себе что-то вроде "списка нововведений". Теперь примерно такой список лежит в файле ChangeLog.txt и его можно увидеть при также при запуске инсталляции. Отсюда оно убрано. Ибо нефиг. ___________________________________________________________ 8. Координаты аффтароф. Утилита разработана командой Gipat Group которые иногда обитают по адресу www.GipatGroup.org. Там есть форум где можно обсудить программу. Собственно разработка программы ведется на трекере по адресу http://svn.gipat.org/trac/EiEdit - здесь вы можете ознакомиться со статусом разработки, посмотреть на дальнейшие планы, списки багов, скачать саму прогу и исходник (в т.ч. текущую версию из svn) итд итп. ___________________________________________________________ 9. Как можно помочь разработке. Если вы нашли в программе баг - заходите на трекер, ищете по багам - не сообщали ли уже о такой ошибке. Если сообщений нет - создаете New Ticket в котором подробно описываете сущность ошибки, если программа выдает какое-то сообщение о ошибке - желательно прикрепить скриншот с этого сообщения. В настройках создаваемого тикета не забывайте указывать что тип тикета - баг, что компонент - тоже баг, указывайте номер версии программы, которой вы пользуетесь. Если вы хотите предложить что-то улучшить в программе - аналогично создайте новый тикет, указав тип тикета - "предложение", компонент - выберите тот компонент, к которому по вашему мнению относится улучшение (можно выбрать "другое") и опишите предлагаемое улучшение. Версию - выберите вашу текущую, которой пользуетесь. Milestone - выбрать "предложения". Если вы сами сделали какое-то улучшение в исходнике - сделайте patch от текущей версии svn - и пришлите патч опять же в виде Ticket-а. Тип тикета - выбрать патч, компонент - патчи, присоедините сам файл патча к тикету, опишите сделанное вами улучшение, в тексте обязательно укажите номер ревизии на которую нужно накладывать патч. Если вы хотите принять участие в разработке - сообщите о своем намерении разработчикам (например через форум), затем выберите любую незанятую задачу, реализуйте её и пришлите в виде патча - если сумеете доказать что можете писать вменяемый код - получите постоянный доступ к svn на запись.