Malandrinus 615 Опубликовано 18 Апреля 2014 (изменено) S.T.A.L.K.E.R. Plot Manager (Программа управления сюжетом S.T.A.L.K.E.R.)v.1.0 Примечание: на данный момент в полной мере реализован функционал редактора диалогов.Ссылки на скачивание: http://rusfolder.com/40460474 https://yadi.sk/d/R-U2S8NAVtVrk ВведениеФайловая структура сюжетной части игрыОчень кратко о файловой организации сюжетной части игры. Сюжет управляется совокупностью следующих элементов: игровые задания (миссии), инфопорции, диалоги, профили персонажей, статьи энциклопедии. К этому добавляется механизм локализации в виде трансляции строк, когда везде указываются идентификаторы строк, а сами строки вынесены в отдельный файл, что позволяет относительно легко сменить язык.Все указанные элементы находятся в файлах "*.xml". Для каждого типа элементов файлов может быть несколько. Файлы перечислены в секциях: файл system.ltx: [dialogs] - список файлов с диалогами [info_portions] - список файлов с инфопорциями [encyclopedia] - список файлов со статьями [game_tasks] - список файлов с миссиями [profiles] - список файлов с профилями персонажей файл localization.ltx:[string_table] - список файлов со строками Примечание: localization.ltx в сущности является частью system.ltx, так как включён в него с помощью #include, но никто это никогда не меняет и парсить это было бы ненужным усложнением.Соответственно, редактирование всех указанных элементов сводится к редактированию этих файлов, которые являются текстовыми по сути. С другой стороны, ручное редактирование, в особенности диалогов, является необычайно трудоёмким и чувствительным к ошибкам делом. Поэтому нужна была программа, которая позволяла бы это редактирование упростить.Дополнительно, процесс редактирования усложняется тем, что как файлы "*.ltx" так и "*.xml" могут быть составными и включать другие файлы с помощью директив #include (т.е. обрабатываются препроцессором).ТребованияТребования к программе, которые в том числе были сформулированы по мотивам попыток использования альтернатив (в первую очередь редактора, который идёт в комплекте с SDK) включают: минимальная настройка, отсутствие привязки к настройкам в реестре и возможность работы с несколькими установленными экземплярами игр. доступ к описанной выше структуре файлов элементов и конфигураций в полной мере, а не частично только к одному файлу (в каком-то смысле необходимость имитации логики игры). Это включает отображение иерархии вложенности файлов с помощью #include и сохранение этой структуры при сохранении файлов. редактирование диалога в виде, максимально компактном и приближённом к логике работы этого диалога в игре в том числе построение дерева диалога, отражающего логику разговора, с обратными переходами и возможность видеть фразы уже с транслированными строками, т.е. так, как они отображаются в игре. Возможность ручного редактирования в виде текстовых файлов, точнее средства, упрощающие такой процесс. Особенности программыСоответственно требованиям, краткий список фишек включает: Программа практически не требует настройки, в минимальном варианте достаточно запустить рядом с распакованным каталогом gamedata. Отдельные списки диалогов, строк, инфопорций, статей игровой энциклопедии, задач. Списки организованы в виде дерева зарегистрированных файлов с сохранением подчинённости файлов, включаемых директивой #include. Поиск во всех списках по имени элемента (инфопорции, строки и т.д.) с циклическим перебором. Каждый файл можно открыть внешним редактором. Для Notepad++ и SciTE поддерживается переход на нужную строку внутри файла. Отдельные окна можно перемещать в пределах главного окна, размещая их в закладках или рядом друг с другом. Редактор диалогов позволяет: просматривать диалог в виде, наиболее близком к его игровому представлению, помечается очерёдность фраз, актор/NPC, диалог можно пометить как диалог актора, что повлияет на эту разметку, просматривать и менять свойства диалога и отдельных фраз, создавать фразы, удалять фразы, менять текст фраз, перемещать фразы по дереву фраз, создавать обратные переходы. Можно открыть файл со скриптовыми функциями по ссылке из фразы. Использование программыЗапуск Вариант 1. Без аргументов командной строки рядом с папкой gamedata Вариант 2. Один аргумент командной строки - полный путь к редактируемой папке, имеющей структуру каталога gamedata. В этом случае редактируемая папка может называться произвольно (не обязательно gamedata). Путь должен завершаться сиволом '\'. При наличии пробелов в пути он должен быть заключён в двойные кавычки. В обоих случаях редактируемая папка должна содержать полностью распакованные подкаталоги config и scripts. Версия игры в данной версии программы не проверяется, локализация в текущей версии подразумевается только русская, т.е. строки берутся из подкаталога "config\text\rus\".Файл настроек программы должен называться spm.ini и должен располагаться в том же каталоге, что и spm.exe. Структура файла следующая:[main];npp - использовать Notepad++ по пути, заданному параметром npp,; или раположенному по стандартному пути в PATH;scite - аналогично использовать SciTE;notepad или пустая строка - использовать MS Notepad (указывать путь не нужно, не работает переход )external_editor = nppnpp = c:\\tools\\npp\\notepad++.exescite = C:\\tools\\Lua\\5.1\\SciTE\\SciTE.exeВо время запуска будет видно окно лога загрузки с некоторой статистикой. Окно останется после завершения загрузки. Его можно закрыть. В случае возникновения ошибок загрузки надо закрыть программу, исправить ошибочные файлы, не удовлетворяющие стандарту XML, и запустить программу заново.ИнтерфейсГлавное окно программы содержит меню и главную область.Команды меню Files - открыть во внешнем редакторе соответствующий файл и перейти на секцию (если позволяет редактор) Open 'localization.ltx' section [string_table] Open 'system.ltx' section [dialogs] Open 'system.ltx' section [info_portions] Open 'system.ltx' section [encyclopedia] Open 'system.ltx' section [game_tasks] Open 'system.ltx' section [profiles] Settings Use MS Notepad - использовать MS notepad в качестве внешнего редактора Use Notepad++ - использовать Notepad++ в качестве внешнего редактора Use SciTE - использовать SciTE в качестве внешнего редактора WindowsShow Log - открыть окно стартового лога программы HelpAbout - окно "О программе" Главная областьCодержит окна "Диалоги", "Строки", "Инфопорции", "Задачи", "Статьи" и "Текущий диалог". Изначально окна организованы в виде закладок. Перетаскиванием закладок можно разместить эти окна рядом с друг другом, разделив главную область на части. Предпочтительной организацией главной области является разделение на две части: в левой - "Текущий диалог", в правой - все остальные окна в виде закладок. В текущей версии разметка окна при выходе из программы не сохраняется.Описание отдельных окон.Окно "Диалоги"просмотр списка файлов диалогов из секции ... с сохранением структуры вложенных файлов, просмотр списков диалогов в каждом файле, поиск среди диалогов по имени диалога, выбор текущего диалога для редактирования. Окно состоит из панели инструментов в верхней части и иерархического каталога диалогов в нижней.Панель инструментов окна "Диалоги"Содержит элементы: "Reload" - перезагрузить с диска выбранный файл с диалогами (один из корневых или вложенный инклюдом) "Reload All" - перезагрузить все файлы в дереве (для обновления списка файлов в соответствии с секцией ... из ... необходимо перезапустить программу). "Save" - сохранить на диск выбранный файл. В текущей версии сохранение работает только сразу для всех файлов, входящих в состав какого-либо корневого файла. Т.е. для выполнения команды надо выделить корневой файл (не вложенный директивой #include) и нажать на "Save". Будут сохранены он сам и все входяшие в его состав файлы (но при этом только если они были изменены). "Save All" - сохранить все файлы в дереве. "Open" - открыть выбранный файл во внешнем редакторе. Если открывается узел файла, то курсор устанавливается в его начало. Если узел диалога, то программа пытается найти место этого диалога внутри файла и соответственно установить курсор. Если в качестве внешнего редактора используется MS notepad, то установка курсора не работает в любом случае. "Match Case" - флажок, задающий не игнорировать регистр символов при поиске по имени диалога поле поиска - имя для поиска диалога в каталоге диалогов. Поиск осуществляется по вхождению подстроки. "Next" - переход к следующему диалогу, соответствующему критерию поиска, если таковой имеется. Каталог диалоговВ каталоге диалогов имеется дерево с корневым узлом "Dialogs". Этот узел содержит список базовых (корневых) файлов диалогов, в соответствии с параметром ... в секции ... файла .... Каждый узел базового файла содержит подузлы трёх типов: собственно диалоги, вложенные файлы (инклюды) и комментарии. Инклюды в свою очередь могут содержать диалоги, инклюды и комментарии. Узлы файлов (базовых и инклюдов) помечаются звёздочкой, если файл содержит несохранённые изменения.Дерево диалогов позволяет обычные манипуляции: свернуть/развернуть узлы. Двойной клик на узле конкретного диалога выбирает его для редактирования, что приводит к тому, что он устанавливается текущим в окне "Текущий диалог", замещая тот, что был там установлен до этого.Окно "Строки"просмотр списка файлов строк из секции ... с сохранением структуры вложенных файлов, просмотр списков строк в каждом файле, поиск среди строк по id строки или по содержимому, выбор строки для использования в окне редактора диалогов.Панель инструментов окна "Строки" содержит элементы:"Reload", "Reload All", "Save", "Save All", "Open" - работают аналогично закладке "Диалоги" Поиск работает аналогично, с добавочной возможностью искать строки по содержимому, что задаётся группой из двух переключателей id/text.Иерархический каталог строк организован аналогично каталогу диалогов, за исключением наличия второго столбца, где отображается содержимое каждой строки.Окно "Инфопорции"просмотр списка файлов инфопорций из секции ... с сохранением структуры вложенных файлов, просмотр списков инфопорций в каждом файле, поиск среди инфопорций по id, выбор инфопорции для использования в окне редактора диалогов.Панель инструментов окна "Инфопорции" содержит элементы "Open" и элементы для поиска, которые работают аналогично закладке "Диалоги".Иерархический каталог инфопорций организован аналогично каталогу диалогов.Окна "Задачи" и "Статьи"на данный момент можно использовать для просмотра списка задач (game task) и статей игровой энциклопедии (article). Также можно с их помощью открывать соответствующие файлы во внешнем редакторе.Окно "Текущий диалог"редактор выбранного диалога. Позволяет менять структуру диалога, его свойства, а также свойства отдельных фраз.Окно редактора диалога состоит из панели инструментов в верхней части, иерархического дерева диалога в центре и редактора текста фразы в нижней.Дерево диалогаДерево диалога содержит элемент комбинированного дерева-списка, т.е. кроме узлов имеются столбцы для каждого узла. Корневой узел диалога отображает его id и содержит подузлы: "phrase_list", "init_func", "orphan_phrases". Двойной клик на корневом узле диалога открывает/скрывает его предусловия: <has_info>, <dont_has_info>, <precondition>. Узел "init_func" - соответствует тегу "init_func" диалога и показывается при его наличии. В этом узле показана функция инициализации диалога. При наличии этого тега узел "phrase_list" не отображается. Узел "orphan_phrases" содержит "потерянные фразы", т.е. фразы, которые не присоединены к корневой, имеющей id = "0". Такие фразы в игре не отображаются, но и сбоев не вызывают. Хотя в рабочем диалоге не должно быть таких фраз, можно использовать этот узел как своеобразную "корзину", где хранятся заготовки или (временно) удалённые фразы. Узел "phrase_list" соответствует тегу диалога "phrase_list" и содержит основное дерево фраз. Содержит единственный узел корневой фразы, т.е. фразы имеющей id = "0". Если такой фразы нет или она не одна, то будет вылет. Типы узлов в дереве фраз: узлы фраз - содержат текст фразы, транслированный, если это возможно, id фразы во втором столбце и признак того, кто говорит эту фразу в скобках перед текстом (act или npc). Разметка очерёдности выполняется автоматически программой и зависит также от того, какого типа текущий диалог: актора или npc (что переключается сверху в панели инструментов). Выбор фразы (одинарный клик) приводит к тому, что она становится текущей для редактирования в поле редактирования текста внизу редактора диалога. Двойной клик скрывает/показывает свойства фразы. узлы обратных переходов - видны как "====> [id фразы куда идёт ссылка]". Хотя визуально дерево фраз упорядочено как направленное дерево, граф фраз может содержать циклы. Узел обратного перехода как раз и нужен для обозначения перехода по дереву разговора назад и создания такого цикла. Двойной клик на таком узле приведёт к перемещению выделения на фразу, к которой идёт переход. узел несуществующей ссылки - показан красным цветом как "reference to nonexisting phrase id <id несуществующей фразы>" Этот узел соответствует тегу фразы <next>, содержащем ссылку не несуществующий в данном диалоге id фразы. Узлы свойств фразы. Отображаются/скрываются двойным кликом на фразе. Узел "text: <id строки>" - показывает содержимое тега <text>. Это может быть как id строки, так и прямой текст, если для строки нет трансляции. Текст, который виден в узле фразы, представляет собой результат трансляции этого текста. Двойной клик на этом узле приводит к выделению этой строки в окне каталога строк, при условии, что такой id строки там имеется. Предусловия и эффекты, основанные на инфопорциях: <has_info>, <dont_has_info>, <give_info>, <disable_info>. Двойной клик выделяет эту инфопорцию в каталоге инфопорций. Cкриптовые предусловия и эффекты: <precondition>, <action>. Двойной клик открывает файл с указанной скриптовой функцией во внешнем редакторе, если программе удалось найти файл и функцию. Специальные действия с деревом диалога, кроме обычных свернуть/развернуть, включают: Свернуть развернуть все элементы указанной ветки. Выполняется сворачиванием с зажатым "Ctrl". Показать/скрыть свойства всех фраз ветки. Выполняется двойным кликом с зажатым "Ctrl". Перетащить фразу на другое место. Тащим мышой. Панель инструментов "New Phr" - создать новую дочернюю фразу для выделенной. Фразе назначается уникальный id. Текст и свойства отсутствуют. "X" - удалить элемент. Можно удалять фразы, переходы, свойства. При удалении фразы будет предложено выбрать: удалить фразу, отсоединить фразу (поместить в дерево "orphan_phrases") или удалить фразу вместе со всеми дочерними фразами. "T" - сгенерировать для фразы новую строку. Строка размещается в каталоге строк сразу за текущей выделенной. id новой строки назначается по принципу <id диалога>_<id фразы>_<целое число от 0 для обеспечения уникальности> "+T" - назначить фразе строку из существующих. Заданная строка должна быть выбрана в каталоге строк. "+I" - добавить предусловие <has_info> "-I" - добавить предусловие <dont_has_info> "I+" - добавить эффект <give_info> "I-" - добавить эффект <disable_info> "+S" - добавить предусловие <precondition> "S+" - добавить эффект <action> "Up" - переместить фразу выше соседней по дереву "Down" - переместить фразу ниже "F+" / "F-" - увеличить/уменьшить размер шрифта дерева редактора диалога "Open" - открыть файл инфопорции или скрипта внешним редактором. "actor/npc" - переключить тип диалога. Повлияет на очерёдность маркировки фраз. Комбинации клавиш для удаления фраз: Del - отсоединить выделенную фразу (поместить в orphan_phrases). Команда приводит к удалению всех ссылок на этот узел, но его дочерние узлы не обрабатываются. Переместится ли всё поддерево вместе с отсоединённой фразой будет зависеть от наличия ссылок на узлы поддерева из других фраз. Del + Shift - удалить фразу. Поведение остатка поддерева аналогично предыдущему пункту Del + Alt - удалить фразу вместе с дочерними. Обратные ссылки не приводят к удалению фраз, на которые они ссылаются. Изменено 22 Января 2015 пользователем Kirgudu 24 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 18 Апреля 2014 А на зп это подойдет? По идее, никаких препятствий быть не должно. На данный момент в основном работает только редактор диалогов, а в диалогах в ЧН/ЗП практически ничего не изменилось. Там даже поддерживается один тег из ЗП. конкретнные имена файлов в логе не отображаются... Когда загрузка закончена, то надо смотреть по закладкам, где имеются некорректные файлы. Они отмечены красным и соответственно развернуть их нельзя. К сожалению, некорректность определяется только на уровне корневого файла xml. В каком из его инклюдов некорректный участок - сказать невозможно. Причина в том, что алгоритм работы программы таков, что сперва в памяти собирается целиком файл xml из всех его инклюдов. Затем этот файл парсится. Для парсера никаких инклюдов нет.. Более того, парсер, который я использую (а выбора у меня нет), даже не говорит, где именно произошёл сбой. То сообщение, которое появляется на экране - это внутренняя реакция парсера в процессе разбора. Я не могу ни отключить это окошко, ни как-то получить ту информацию из него (номера строк и тип ошибки). Ну вот так работает, ничего не могу сделать. Впрочем, в 99% случаев некорректными являются вложенные комментарии. Движок сталкера имеет свой парсер, который это дело пропускает, но по стандарту XML это запрещено. Пройдитесь вручную по тем файлам, которые показались красным, уберите вложенные комментарии. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 18 Апреля 2014 @aka_sektor, Я под спойлером специально расписал требования, с которых начал, и соответственно фичи программы. Редактор из SDK из этого не всё может, хотя построчное сравнение я не делал. Я тот редактор пытался поначалу использовать. Помучился и понял, что не устраивает как в плане удобства так и возможностей. На видео к сожалению нет времени. Описание я дал. Если кто сделает видео или хотя бы скриншоты операций - буду весьма признателен. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 18 Апреля 2014 И об этом Или предназначение у прог отличается?И да и нет. По задумке в рамках этого же интерфейса подразумеваются редакторы профилей сталкеров, инфопорций, статей и квестов. Хотя конечно на данный момент есть только полноценный редактор диалогов, и не уверен, что дойдут руки до чего-то большего. Впрочем, можно открывать соответствующие файлы из программы с переходом к секции. Получается как минимум менеджер файлов, относящихся к сюжету. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 24 Апреля 2014 Кому-нибудь удалось использовать программу для собственно редактирования диалогов? Есть нарекания, баги, предложения? 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 25 Апреля 2014 @7.9,1.Этим к сожалению управлять не могу. Парсер выдаёт окошко с сообщениями об ошибке самостоятельно, а в программу возвращает только удалось/неудалось. Соответственно, если не выдаёт окошко, то тоже неизвестно почему. Вообще-то, было желание это окошко убрать, просто не получилось.В будущем попробую больше информации вывести в лог, который сейчас больше для "не скучать при загрузке".2. Здесь не совсем понял. Можно пример?3. Насколько это критично? Тулбар сейчас сляпан на скорую руку. Это в сущности и не тулбар, а просто окно с кнопками, посему его сворачивание невозможно.4. Так ведь это можно сделать перетаскиванием закладок. Или имеешь в виду сразу при загрузке? Этого не получается к сожалению.5.Контекстное меню было конечно в конце приоритетов. Потихоньку буду синхронизировать с тулбаром.С горячими клавишами есть предложения. Какие сочетания на какую операцию?6. Открыть что именно? Там открывать можно только файлы скриптов, указанные в тегах скриптовых действий.7. Попробую исправить, но может и не получиться.8. Изменённый файл. После сохранения звёздочка погаснет.9. Нету такой возможности. Дело даже не в создании файла, а в том, что надо дополнительно менять ещё и system.ltx. Поскольку операция достаточно редкая и в общем нетрудная, то решил этого не делать. Впрочем, вспоможение для этого есть в виде открытия соответствующей секции system.ltx в текстовом редакторе. Т.е. в общем всего то делов: создать файл из любого другого, скопировать его имя, вставить в список в секции (даже искать эту секцию не надо), сохранить и перезапустить программу для обновления.10. Совсем пустом? Это вообще-то некорректный xml, по идее должен покраснеть.11. Исправлю. Наверное просто сделаю автоматическое создание такой фразы + сообщение об ошибке. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 25 Апреля 2014 @Kirgudu, я понял в чём дело. В ЧН папку config переименовали в configs. Надо будет добавить разбор файла fsgame.ltx. В качестве временной меры можно править в отдельной папке с копией всего, где configs переименован в config. 3 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 25 Апреля 2014 разделение диалогов по файлам локаций условное ...?Абсолютно условное. Внутри они все собираются в одну базу данных. Аналогично для всех остальных вещей: инфопорций, строк и т.д. По поводу горячих клавиш. Лично я так почти не пользуюсь горячими клавишами практически нигде за исключением Total Commander-а, для которого осталась ещё моторная память со времён NC =) Всё-таки какие предложения насчёт сочетаний? На такие вещи у меня творческого запала не хватает. По остальным вопросам понял, буду делать что могу. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 26 Апреля 2014 висит по центру экрана, сделать ничего не дает, остальной экран скрыт под Info (естественно, слева сверху), так что даже и не запустить ничего. Я же выше объяснял, что окошко с ошибкой - это самодеятельность парсера. Просто закрой его. что теперь ? Теперь первым делом исправить ошибки XML. В противном случае видим покрасневшие файлы. По сути ошибок, к сожалению, программа помочь может несильно. Опять же выше объяснял почему. Переходим к диалогам, получаем дерево (и как его сюда перетащить ? ручками-ручками ?) Перетащить что куда? Окно на экране? Открыть диалог? Если окно, то закладки надо таскать мышой. Сделать удобное размещение сразу не могу, поскольку используемый элемент управления не позволяет сохранить разметку окон. поэтому исходно всегда всё в виде закладок. Освоить, наверное, можно, но как бы по первому разу впечатление, что руками будет проще. Было строго обратное желание, чтобы не руками, а таки инструментом, ибо руками делать наелся досыта.А что собственно так смущает в окне "Текущий диалог" ? В первом приближении должно быть видно дерево фраз (если оно в диалоге есть разумеется). Что может быть нагляднее? Это практический вопрос. Как-то можно сделать иначе?Пытался сделать в виде, максимально приближённом к "игровому" восприятию, т.е. видим фразу (именно текст), следующие фразы, т.е. в сущности примерно то, что видим в игре. И вот на самом деле актуальнее было бы сначала не всю развесистую клюкву получить, а что-то поделать на уровне отдельных файлов. Что именно? На уровне отдельных файлов на данный момент можно их открыть в текстовом редакторе. Исключением является файлы диалогов, поскольку диалоги можно редактировать в программе. Ну и только уже на самом последнем этапе смотреть, что получилось в целом. Да, то есть, прицепить его запуск к .ltx и .xml, и вот путь их и открывает, а дальше - по содержимому. Признаться, не понял что надо.В целом программа преследует цели:1. менеджер файлов, относящихся к сюжету: перечислить, открыть в текстовом редакторе в нужном месте (если редактор поддерживает)2. редактор диалогов (вроде как сделано)3. Редактор инфопорций, задач, статей, профилей (всё в проекте)Ещё раз, при надлежащей поддержке физической файловой структуры упор таки делается на логические сущности: диалоги, инфопорции, строки и т.д. Они как бы единственно важны для игры. Еще вопрос - это как-то можно использовать для чистки мусора типа 100500 пробелов ? Не уверен, отвечает ли следующее на вопрос.При сохранении выполняется форматирование файла XML. Строго один тег на строку, пустые строки удаляются, отступы форматируются табуляциями. Пытался настроить сохранение так, чтобы исходное форматирование строго сохранялось, но не удалось. Если использовали XML-комментарии вслед за рабочими тегами, то они будут перенесены на следующую строку, ибо комментарий - отдельный тег. нужен инструмент, который позволял бы быстро найти файл и строку, где потерялась скобка или "недокомментировался" комментарий. Это тебе нужен XML валидатор. Вот чем я пользуюсь.http://xmlvalidator.sourceforge.net/Одна только проблема, если файл является частью другого (вставлен инклюдом), то он скорее всего заведомо не является корректным xml. Опять же в будущих версиях планирую сделать экспорт собранного файла XML (т.е. со всеми включёнными инклюдами) чтобы его как раз можно было проверять сторонними валидаторами. А если уж применительно к сталкеру, то еще проверить, прописано ли info и есть ли скрипт и функция, на которую ссылаемся из файла x строки n. А это кстати можно. При двойном клике на теге с инфопорцией должно открыться окно с инфопорциями и произойти переход в дереве на эту инфопорцию. Если не перешёл, значит нет такой (в будущем наверное сделаю сообщение). Со скриптами можно проверять путём открытия их во внешнем редакторе. Если это Notepad++ или SciTE, то при наличии файла и функции в нём он должен открыться и курсор должен установиться в начало функции. Если файла нет, то не откроется, если функции нет, то курсор будет в начале файла. В будущем тоже постараюсь сделать сообщение.Была идея сделать валидатор на основе этого функционала. Т.е. функцию сквозной проверки всего. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 27 Апреля 2014 (изменено) Ещё раз насчёт поиска проблем. Это - редактор, не валидатор. Правка косяков - сугубо разовая операция. Косяки в файлах надо исправить, сделать это один раз и дальше жить без них. Так и на кой я буду делать из программы валидатор, при том что их и так существует вагон? Не лучше ли таки заняться функционалом редактора? Официально заявляю. Валидатор XML в списке приоритетов на последнем месте. валидатор - он со сталкеровскими диалогами не хочетА ты не открывай файлы, а вместо этого вставляй текст из буфера обмена. Я так делал. окно все-таки надо оторватьКакое окно, что значит оторвать? "диалоги" и "текущий диалог" расположены контринтуитивно. Поменять.Третий раз объясняю. Не могу этого сделать. Контрол исходно всегда в виде закладок. Каждый раз надо вручную перетаскивать для разделения окна пополам, что я лично и делаю. Занимает две секунды. orphan_phrases - они везде подставляются, просто пустые ? А что не так - смотреть собственно на красный файл ?Нет, красные файлы - это значит они не загрузились из-за синтаксических ошибок в XML. orphan_phrases - это "потерянные" фразы, т.е. такие, на которые нет ссылок из основного дерева фраз, идущего от нулевой фразы. Их наличие в сущности никому не мешает, но в игре они показаны не будут. Естественно, обычно их нет. Кстати, этот узел не только показывает эти ошибочно отсоединённые фразы, но также может использоваться как своеобразная "корзина", куда можно временно помещать "запчасти". Т.е. вместо удаления я могу скинуть фразу или даже ветку фраз в этот раздел а потом вернуть. А могу и там оставить на будущее. зачем-то нажал downЭто перемешает фразы вниз в пределах текущего уровня подчинённости (т.е. среди вариантов ответа). Up - соответственно наверх. Ручная сортировка короче. Открыл снова. Нет, оказывается, выбор не двойным кликом делается. Надо еще что-то. Что ?Извини, я ничего не понял из этого. У меня там в дереве gameplay\dialogs_repair.xml почему-то без плюсика, так я его выбрать вообще не могу. Ну, строки, info и т.д., я так понял, не доделаны ? Так может там и нет ничего? Строки/инфопорции задействованы только в пределах редактора диалогов. Новые строки можно добавлять в процессе добавления фраз. Менять текст также только через редактор диалогов. Инфопорции и строки можно вставлять во фразы. Можно открывать текстовый редактор с переходом к элементу. В списке на реализацию в числе первых стоит сделать независимый редактор строк. Он хоть имя спрашивает ? А бэкап делает ?Не спрашивает, а зачем собственно? Есть же имя у файла. Нет, не делает. Я в этом смысле больше полагаюсь на SVN. Если что накосячил, просто откатываю из хранилища. Впрочем, бэкап планирую сделать в будущем. dialogs_repair.xml.bak.txt - это откуда взялось ?Без понятия. Я вообще не понимаю, что ты там делал. Есть изменённый файл, он помечен звёздочкой. Чтобы сохранит его, надо его выделить мышой и нажать Save. Он сохранится, звёздочка исчезнет. Расстреляйте меня, но я не понимаю, что здесь может быть непонятного. Изменено 27 Апреля 2014 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 16 Августа 2015 @Kirgudu, новостей нет, но совсем забрасывать не планировал. Просто не до того было, да и не видно, чтобы народ вообще пользовался программой.Написано на С++ с использованием wxWidgets для оконной части + немножко BOOST. Компилятор - Visual Studio. Если правильно помню, вроде как 2012. Сейчас тестирую 2015 на предмет совместимости.Если это всё не пугает, то выложу исходники. Вопрос только куда. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 16 Августа 2015 @Viнt@rь, а для SVN ничего похожего нет? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 18 Августа 2015 @Kirgudu, не хватает возможности создания диалогов с зацикливанием, возвратом к предыдущим фразам. Для этого до начала перетаскивания нужно нажать и удерживать Ctrl. Тогда курсор будет другой, а при отпускании фраза не переместится, а только будет создана ссылка. в виде, не слишком доступном человеку, который не привык ворочать в уме сложные блок-схемы Хороший вопрос, а в каком виде это можно сделать? Слушаю предложения. Сейчас это сделано так, что переход на фразу вниз по дереву показывается специальным подэлементом с указанием id фразы, куда переход. Для дополнительной наглядности, если на этот элемент кликнуть двойным кликом, то тот элемент, куда надо перейти, выделится (т.е. как бы совершится этот переход). Насчёт остального. Да, в сущности кроме редактора диалогов ничего больше не работает. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 18 Августа 2015 @Kirgudu, Есть ли ещё какие-то не описанные, но вполне себе работающие вещи? Не помню =) честно. Насчёт этой возможности просто забыл описать. Лично мне в голову приходит именно визуальное представление в виде блок-схемы, где блоки - фразы, линии (стрелки) - переходы между ними, Категорически не согласен.Я начал делать эту программу именно как редактор диалогов, и начал после того, как попробовал другие варианты. По мотивам использования у меня сложились определённые требования. Самые критические были:1. Максимально компактное представление диалога. Это требование сложилось после попыток окучить редактирование диалогов таких персонажей, как Сидор или Бармен. Диалоги у них ОГРОМНЫЕ, километровые тексты XML, где найти фразу по ссылке вручную совершенно нереально. Даже в виде предельно компактного текстового дерева с мелким шрифтом эти диалоги реально не влазят в экран большого монитора. Любая блок-схема, где каждая единичная фраз обвешена рюшечками в виде рамочек и промежутков между элементами, будет сразу занимать во многие разы больше места. Не в обиду будет сказано, но про блок-схемы обычно говорят люди, которые с этими мега-диалогами дел не имели. И я тоже думал про блок-схемы. В OGSE даже начали мутить инструмент на основе общего редактора блок-схем, но дело не пошло.Другой недостаток блок-схем тоже не будет очевиден до тех пор, пока не поглядишь на схему реального диалога. Дело в том, что все эти визуально оформленные линии перехода на практике начинают напоминать густую паутину. Расположить фразы так, чтобы линии не пересекались друг с другом практически невозможно. Это ещё больше увеличивает размер и так распухшей диаграммы и кроме того радикально ухудшает читаемость, что имеет отношение к следующему требованию.2. Представление диалога должно быть в виде, отражающем логику беседы и приближённом к логике работы этого диалога в игре. В этом смысле общий граф (т.е. всевозможные блок-схемы) оказывается не лучшим представлением, поскольку в целом не отражает направленность разговора. Ведь у беседы есть вполне очевидная временнАя направленность: одна фраза говорится за другой с чередованием собеседников и возможными ветвлениями. Т.е. в итоге именно дерево наиболее близко и наглядно отражает разговор, где есть фраза приветствия (корень дерева), а затем фразы чередуются одна за другой и кое-где есть ветвления. Как верно было замечено, ссылки обратно смотрятся несколько ненаглядно. Я, к сожалению, не могу сделать их длинными стрелками. Однако, это меньшее из неудобств. Главным и критически важным является представление главной структуры разговора, и это будет дерево и ничто иное. Так что отсюда нынешний вид программы. Я также пытался сделать так, чтобы можно было уменьшить высоту каждого элемента дерева (т.е. каждой фразы) до минимальной (т.е. до одной строки), и чтобы в этом минимальном варианте дерево представляло собой именно дерево произносимого текста. Я полагаю, что это максимально компактное и наглядное представление. Ведь мы бы примерно так оформили диалог где-нибудь в MS Word. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение