___________________________________________________________ MobSurgeon редактор mob-файлов для игры Проклятые Земли Версия 0.4.0 Crafted by Sagrer, Снайпер. Copyright (c) 2005-2008 Gipat Group Программа распространяется на условиях Gipat Group's opened EI-editor-utility license ver 1.0. ___________________________________________________________ Редактор. Очередной. Каждый GG считает своим долгом написать собственный редактор мобов. Собсно вот, чтоб не выделяться значит и мне надо %). Ничего в этом редакторе нема особого окромя подсветки синтаксиса в редакторе скрипта, вкладочного интерфейса под впечатлением от Firefox, ну и массовых изменений ради которых и затевалась ета хрень. Для тех кто любит открывать файлы даблкликом (я и сам люблю). Редактор понимает переданный параметром командной строки файл и открывает его. Инсталлятор по желанию пользователя может установить ассоциацию себя с файлами *.mob ___________________________________________________________ Содержимое %). 1. Возможности редактора. 2. Редактирование скрипта. 3. Редактирование объектов. 4. Массовые изменения. 5. Функция логирования. 6. Функция бекапирования. 7. Диалог настроек. 8. Скрытые функции. 9. Координаты аффторов. 10. Как можно помочь проекту. ___________________________________________________________ 1. Возможности редактора. Умеет: 1. Редактировать скрипт. Подсветка синтаксиса, простейшие функции необходимые текстовому редактору присутствуют. Синтаксическая проверка скрипта, интегрированная справка по скрипту и что-то вроде CodeCompletion - теоретически возможны к реализации но в ближайшее время за отсутствием времени у имеющихся разработчиков - не планируются. 2. Редактировать объекты. В плане редактирования содержимого объктов - поддерживаются объекты всех известных типов, возможно редактировать любое содержимое кроме логики поведения и информации замещающей записи базы данных - эти части пока не реализованы за малой надобностью. Кроме этого пока что не реализовано прямое удаление, импорт и экспорт объектов. Реализовано визуальное редактирование ориентации объекта. 3. Делать массовые изменения - подробнее см. ниже. 4. Делать автоматический (при каждом сейве) и ручной (командой из меню) бекап хранящейся на диске копии открытого файла. Теоретически возможны к реализации (в коде и интерфейсе имеются заготовки для этих целей) следующие вещи: 1. Редактор дипломатии. 2. Редактор блоков - аналогично тому что умеет MRT но кроме этого с возможностью удаления, импорта, экспорта блоков. 3. Чисто теоретически - возможна реализация и графического редактора (т.е. с отображением рельефа и объектов) - с точки зрения интерфейса - как еще одна вкладка, возможно как замена вкладке "Объекты" т.к. весь её функционал может быть перенесен в графический редактор. ___________________________________________________________ 2. Редактирование скрипта. Скрипт редактируется на вкладке Скрипт %). Есть подсветка синтаксиса. Принцип работы собственно поля редактирования - аналогичен тому как это происходит в IDE от Borland (те же дельфи или билдер), по крайней мере в старых версиях - не выше 7. Смысл в том что в редакторе можно поставить курсор на любую позицию в строке, даже туда где нет символов - если начать туда ввод чего-либо кроме пробелов то все пространство от начала строки или последнего символа до введенного символа автоматически заполняется пробелами - это удобно для например рисования псевдографикой или комментами %). Классический для windows стиль редактирования (аля блокнот) возможен но не включен по идеологическим мотивам :) - тем кто изначально пользовался этим редактором - удобнее так как сейчас. Если очень надо - напишите патч реализующий новую опцию в диалоге настроек для переключения этого режима. При активной вкладке скрипта - активируется содержимое меню Правка - в принципе там вполне стандартный набор команд для редактирования, поиска и замены. Кроме этого имеются явно не обозначенные горячие клавиши и функционал, унаследованный от SynEdit - а именно если нажать Ctrl+Shift+любая цифра - то строка, на которой стоит курсор будет помечена этой цифрой. Если строка уже помечена этой же цифрой - то отметка будет снята. Если нажать Ctrl+цифра то курсор перепрыгнет на отмеченную этой цифрой строку. ___________________________________________________________ 3. Редактирование объектов. Объекты, как это ни странно, редактируются на вкладке "Объекты". Слева расколожено дерево объектов, отсортированное по типам и алфавиту. В центре - таблица для редактирования содержимого объектов. Справа - маленькое OpenGL-окошко с ориентатором - оно используется для визуального редактирования ориентации объектов, ибо в числовом выражении ориентация представлена в виде 4 значений кватерниона - адекватно изменять его руками мягко говоря сложновато. При выборе объекта в дереве - он загружается в таблицу, ориентатор показывает ориентацию выделенного объекта. В таблице содержимого - можно изменять любое поле, но если изменение будет сделано некорректно (например нельзя писать буквы в поля для целочисленных значений) то внесенное изменение не будет принято и исчезнет как только вы переведете фокус за пределы редактированной ячейки. Обращаю внимание что для применения изменения внесенного в ячейку - надо снять с неё фокус. Если например что-то изменить в ячейке, а после этого например сохранить файл (пока измененная ячейка еще активна) - то изменение внесенное в ячейку в файл не попадет т.к. оно еще не было закреплено. Аналогично - если после изменения ячейки вы сразу выделите другой объект - изменение также пропадет. Что касается ориентатора. Под OpenGL-окошком есть текстовое поле с кратким описанием "рычагов управления". Работать эти рычаги начинают сразу как только курсор мыши попадает в пределы окошка ориентатора - при этом фокус ввода переносится на ориентатор. Расшифрую названия некоторых действий, которые могут быть не вполне понятны: вернуть (в управлении камерой) - возвращает камеру в исходное положение, обнулить ориентацию - объект будет смотреть в направлении строго вдоль оси Y, строго перпендикулярно оси X; отменить ориентацию - отменит внесенные ориентатором изменения. ___________________________________________________________ 4. Массовые изменения. На вкладке массовых изменений есть 2 вкладки. "Критерии отбора объектов" - задает параметры фильтра, через которые пропускаются объекты для дальнейшей обработки, т.е. какой-либо обработке подвергнутся только те объекты, которые соответствуют указанным на этой вкладке критериям. "Действия над отобранными объектами" - собсно определяет что будет происходить с теми объектами которые прошли сквозь фильтр. В принципе, назначение элементов вкладок должно быть понятно по их названию. Кнопка Сбросить - убирает все настройки на обеих вкладках. Кнопка Выполнить изменения - собсно выполняет назначенные действия. Для действий "копировать" и "переносить" - должен быть выбран реально существующий файл куда объекты будут копироваться\переноситься. Обращаю внимание что даже если вы выбрали копирование или перенос - опции выставленные в разделе "изменять параметры на" всеравно будут действовать - т.е. помимо копирования\переноса могут быть одновременно и изменены параметры копируемых\переносимых объектов. В принципе, функцию массовых изменений можно использовать и для удаления, импорта, экспорта объектов. ___________________________________________________________ 5. Функция логирования. Такие действия как сохранение, загрузка, бекапирование, массовые изменения - выводят информацию в лог - посмотреть его можно на вкладке "Лог". В случае если при выполнении каких-либо действий произошла ошибка - то вкладка лога будет открыта автоматически и пользователь сможет увидеть выведенное туда сообщение о ошибке. Также лог может быть полезен за отслеживанием содержимого моба - т.к. при загрузках, сохранениях, массовых изменениях - выводится информация о количестве различных блоков и\или объектов в мобе. ___________________________________________________________ 6. Функция бекапирования. Возможно автоматическое и ручное бекапирование. При включенном автоматическом бекапировании (включается в настройках программы) - перед каждым сохранением файла его старая, лежащая на диске копия переименовывается в файл с именем вида [старое имя с расширением].auto.bak.mob Ручное бекапирование - в любой момент можно дать команду из меню Файл->Сделать бекап - при этом старый файл будет скопирован в файл с именем вроде [старое имя с расширением].bak.mob - при этом сам старый файл остается без изменений. ___________________________________________________________ 7. Диалог настроек. Диалог настроек открывается по команде меню Файл->Настройки. Что можно настроить: * Использовать нитки при сохранении\загрузке мобов - смысл в том что когда это включено - сохранение и загрузка выполняются в фоновом режиме, интерфейс при таком сохранении не блокируется - т.е. можно продолжать редактировать скрипт не дожидаясь пока файл будет сохранен. В данной версии эта функция работает нестабильно - возможно зависание, поэтому по умолчанию функция выключена. * Количество повторных попыток сохранения при неудаче - если при попытке сохранить файл произошла ошибка (например такой файл уже существовал, обычно это бывает при медленной реакции файловой системы на изменения - это по-видимому от операционки зависит) - то программа подождет немного и попытается сохранить файл еще раз - N попыток (N указывается в этом пункте настроек). Сделано это было по той причине что бывали случаи когда программа при сохранении поверх старого файла - удаляла или переименовывала старый файл, затем пыталась сохранить новый файл с тем же именем, но от файловой системы получала что файл с таким именем уже существует - в итоге пользователь получал ошибку. После введения этой функции - ошибки прекратились - обычно файл нормально сохраняется уже со 2-й попытки сохранения. В принципе - это костыль, обусловленный не совсем прямым алгоритмом сохранения файла - возможно это будет исправлено в следующих версиях. * Делать автоматические бекапы - включает\выключает функцию автоматического бекапирования. ___________________________________________________________ 8. Скрытые функции. Список имеющихся в программе скрытых от глаз пользователя функций: 1. Если нажать Ctrl+Alt+Shift+K - появится диалог изменения ключа шифрования скрипта - можно поменять ключь или выключить шифрование, поставив ключ в 0. 2. В данной версии пока-что присутствует механизм пометки файлов - когда-то он был сделан чтобы удостовериться что наши тогдашние "конкуренты" не пользуются этим редактором, что им было явно запрещено %). С тех пор в редакторе осталась "закладка" - при сохранении любого файла с зашифрованным скриптом - ключ шифрования заменяется на 32167 - своеобразная метка. Возможно это будет убрано в последующих версиях. 3. В Alpha и Beta-версиях включается тестовый пункт меню в меню Файл - пользоваться им не рекомендуется без знания о том что именно этот пункт делает в данной версии т.к. на этот пункт обычно разработчики навешивают тестирование различного нового функционала, некоторые такие тесты могут оказать деструктивное действие на ваши данные %). В Release и ReleaseCandidate-версиях этот пункт всегда скрыт. ___________________________________________________________ 9. Координаты аффторов. Утилита разработана командой Gipat Group которые иногда обитают по адресу www.GipatGroup.org. Там есть форум где можно обсудить программу. Собственно разработка программы ведется на трекере по адресу http://svn.gipat.org/trac/MobSurgeon - здесь вы можете ознакомиться со статусом разработки, посмотреть на дальнейшие планы, списки багов, скачать саму прогу и исходник (в т.ч. текущую версию из svn) итд итп. ___________________________________________________________ 10. Как можно помочь проекту. Если вы нашли в программе баг - заходите на трекер, ищете по багам - не сообщали ли уже о такой ошибке. Если сообщений нет - создаете New Ticket в котором подробно описываете сущность ошибки, если программа выдает какое-то сообщение о ошибке - желательно прикрепить скриншот с этого сообщения. В настройках создаваемого тикета не забывайте указывать что тип тикета - баг, что компонент - тоже баг, указывайте номер версии программы, которой вы пользуетесь. Если вы хотите предложить что-то улучшить в программе - аналогично создайте новый тикет, указав тип тикета - "предложение", компонент - выберите тот компонент, к которому по вашему мнению относится улучшение (можно выбрать "другое") и опишите предлагаемое улучшение. Версию - выберите вашу текущую, которой пользуетесь. Milestone - выбрать "предложения". Если вы сами сделали какое-то улучшение в исходнике - сделайте patch от текущей версии svn - и пришлите патч опять же в виде Ticket-а. Тип тикета - выбрать патч, компонент - патчи, присоедините сам файл патча к тикету, опишите сделанное вами улучшение, в тексте обязательно укажите номер ревизии на которую нужно накладывать патч.