sirmax 5,499 Posted April 16, 2013 Устаревшее начало обсуждения:Так как сейчас конфиг уже становится неуправляемым, нужно расширять его формат.Самыми важными, на мой взгляд, являются два требования:1. Разделение конфига на несколько файлов.2. Подстановка повторяющихся значений.При этом желательно сохранить обратную совместимость с текущим конфигом.Реализовано с версии 4.0.0-alpha1 ИнформацияФормат подстановок: 1. Сокращенный: "param": ${"file/name":"obj.path"} 2. Полный: "param": { "$ref": { "file": "file/name", "path": "obj.path" }, "subparam": "overrided value" } file и subparam - не обязательны. Если file не указан, то используется текущий файл К сожалению, JSON не поддерживает ссылки, поэтому есть несколько возможных вариантов:1. Использовать XML. + есть ссылки + есть схема - не удобен в редактировании - не удобен в использовании - нет обратной совместимости2. Использовать YAML. + есть ссылки + удобен в редактировании - не удобен в использовании (нужно искать/писать парсер на AS2) - пользователям необходимо переучиваться - нет обратной совместимости3. Сделать собственное расширение JSON. + легко переучиться + можно оставить обратную совместимость - необходимо придумывать и реализовывать самим Думаю, стоит рассмотреть внимательно 3 вариант, если он подойдет, то на нем и остановимся. Во всех случаях будут проблемы с онлайн-редактором, и у меня нет представления как это решать. Проблемы начинаются уже с того, что загрузить можно только один файл за раз. Так же предлагаю ввести новое расширение файла конфига XVM: .xcОсновной файл конфига будет называться xvm.xc Вот что у меня получается на данный момент: Вводим только одно расширение формата JSON: value => ref ref :== ${ref_expr} ref_expr :== ["module-name":]"obj-path" module-name - название подключаемого файла (опционально) obj-path - путь к подставляемому объекту. Если module-name не указан, то берем из текущего файла. Если obj-path равен ".", то подставляется корневой объект. Пример:battle.xc /** * Общие параметры боевого интерфейса */ { "battle": { "mirroredVehicleIcons": true, // false - отключить зеркалирования иконок танков (полезно для альтернативных иконок). По умолчанию включено. "showPostmortemTips": true, // false - отключить всплывающую внизу панель после смерти. По умолчанию включено. "removePanelsModeSwitcher": false, // true - убрать переключатель режимов ушей мышкой "highlightVehicleIcon": true, // false - отключить подсветку иконки своего танка и взвода "clockFormat": "H:N", // Формат часов на экране панели отладки (возле FPS). Формат: Y:год, M:месяц, D:день, H:часы, N:минуты, S:секунды. "" - убрать часы. "useStandardMarkers": false, // true - использовать стандартные маркеры клиента "clanIconsFolder": "../../../clanicons" // путь к папке иконок кланов относительно res_mods/[ВЕРСИЯ ИГРЫ]/gui/flash } } hotkeys.xc /** * Специальные горячие клавиши XVM */ { // onHold: произвести действие по разовому нажатию клавиши или по удержанию // Значения кодов можно посмотреть здесь: // http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes // Ctrl - 17, X - 88, C - 67 "minimapZoom": { "enabled": true, "onHold": true, "keyCode": 17 } } battleLoading.xc /** * */ { "def": { "format": "<font color='{{c:kb}}'>{{kb:3}}</font> <font color='{{c:xwn}}'>{{xwn}}</font> <font color='{{c:rating}}'>{{rating}}</font>", }, // Параметры экрана загрузки боя "battleLoading": { "clockFormat": "H:N:S", // Формат часов на экране загрузки боя. Формат: Y:год, M:месяц, D:день, H:часы, N:минуты, S:секунды. "" - убрать часы. "showChances": false, // true - включить отображение шансов на победу (только с xvm-stat) Прочитать подробней: http://www.koreanrandom.com/forum/topic/1663- "showChancesExp": false, // Показывать экспериментальную формулу расчета шансов "removeSquadIcon": false, // true - убрать отображение иконки взвода. На пустое поле можно вывести, например, иконку клана. // параметры отображения иконки игрока/клана "clanIcon": ${"defines.xc":"clanIcon"}, // Формат отображения для левой панели (допускаются макроподстановки, см. readme-ru.txt) "formatLeft": ${"def.format"}, // Формат отображения для правой панели (допускаются макроподстановки, см. readme-ru.txt) "formatRight": ${"def.format"} } } xvm.xc: /** * Полный конфигурационный файл (далее - конфиг) со всеми возможными опциями, * настроенными по умолчанию. */ { "configVersion": "1.5.0", // Версия конфига. Не удаляйте и не изменяйте её без необходимости. "editorVersion": "0.41", // Версия редактора. // Блок общих параметров конфига. Все параметры информационные, в моде не используются. "definition": { "author": "sirmax2", // автор конфига "description": "Default settings for XVM", // описание конфига "url": "http://code.google.com/p/wot-xvm/", // адрес, где выкладываются обновления конфига "date": "15.04.2013", // дата последней модификации конфига "gameVersion": "0.8.5", // поддерживаемая версия игры "modMinVersion": "3.5.0" // минимально необходимая версия мода XVM }, // Блок общих параметров боевого интерфейса "battle": ${"battle.xc":"battle"}, // Специальные горячие клавиши XVM "hotkeys": ${"hotkeys.xc":"."}, // Окно взвода "squad": ${"squad.xc":"squad"}, // Параметры экрана загрузки боя "battleLoading": ${"battleLoading.xc":"battleLoading"}, // Параметры окна статистики по клавише Tab "statisticForm": ${"statisticForm.xc":"statisticForm"}, // Параметры панелей игроков ("ушей") "playersPanel": ${"playersPanel.xc":"playersPanel"}, ... Так же, новые конфиги переносим в папку res_mods/xvm/, там же будут лежать и все остальные файлы, необходимые для XVM - картинки, например. Upd: Добавил давнюю хотелку по подстановке значений из конфига в строке. Реализовано через макрос {{.}}.Например, есть конфиг: { "my": { "value": "X" }, ... } Чтобы подставить значение, необходимо написать макрос: "My value is: {{.my.value}} Единственное ограничение - пути должны указываться от корня конфига, а не от текущей секции конфига. То есть если "my" определена в файле "texts.xc", то макрос будет {{.texts.my.value}}.Макрос статический, так что на производительность сильно влиять не должен, но нужно проверять.Вложенные макросы должны работать (не проверял).Возможности открываются безграничные - как минимум, можно делать свои собственные секции texts, и указывать, например: "<font face='xvm'>{{.def.texts.xvmuser.{{xvm-user}}}}</font> 9 Quote Share this post Link to post Short link Share on other sites
Mr A 750 #57933 Posted April 21, 2013 (edited) @sirmax, хочу строку для тестового конфига. Суть: если файл есть, он загружается, нет - загружается следующая строчка. Навеяно постоянными тестами конфигов пользователей с необходимостью переименования своего. Edited May 1, 2013 by Mr A Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #61025 Posted April 30, 2013 После обновления из XVM-4.0.0-alpha2 на XVM-4.0.0-alpha3 делаю правки в конфигах но в игре нет изменений http://www.koreanrandom.com/forum/topic/3173-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-test-400-alpha3/page-8?do=findComment&comment=60994 Quote Share this post Link to post Short link Share on other sites
Tiger.t600 16 #61106 Posted May 1, 2013 (edited) Как использовать старый конфиг? Свой XVM.xvmconf переносим в \res_mods\xvm\configs\В xvm.xc добавляем: ${"configs/XVM.xvmconf":"."}Должно получится так /** * load config: * configs/default/@xvm.xc - path and file name of config * . - root object */ //${"configs/sirmax.xc":"."} ${"configs/XVM.xvmconf":"."} //${"configs/default/@xvm.xc":"."} Edited May 1, 2013 by Mr A 1 Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #61119 Posted May 1, 2013 (edited) Свой XVM.xvmconf переносим в \res_mods\xvm\configs\ В xvm.xc добавляем: ${"configs/XVM.xvmconf":"."} Должно получится так еще проще - переименовать свой конфиг и заменить xvm.xc. Edited May 1, 2013 by Mr A Quote Share this post Link to post Short link Share on other sites
sergej_vid 24 #61591 Posted May 2, 2013 Как использовать старый конфиг? Свой XVM.xvmconf переносим в \res_mods\xvm\configs\ В xvm.xc добавляем: ${"configs/XVM.xvmconf":"."} Должно получится так /** * load config: * configs/default/@xvm.xc - path and file name of config * . - root object */ //${"configs/sirmax.xc":"."} ${"configs/XVM.xvmconf":"."} //${"configs/default/@xvm.xc":"."} Всё сделал как описано выше не работает маркеры не мои Мой конфиг XVM.xvmconf Quote Share this post Link to post Short link Share on other sites
BuSH 174 #61768 Posted May 3, 2013 Всё сделал как описано выше не работает маркеры не мои Мой конфиг XVM.xvmconf Скорее всего не верный путь к файлу XVM.xvmconf Что мешает переименовать старый конфиг в res_mods\xvm\XVM.xc Quote Share this post Link to post Short link Share on other sites
Alastanka 282 #61942 Posted May 3, 2013 (edited) Решил переходить на новый конфиг и решил разобратся какой файл за что отвечает и подписать и разобратся 'readme.txt' \markers // Блок маркеров над танками.\markers\markersAliveExtended.xc // союзник-противник/живой/расширенный режим (c Alt)\markers\markersAliveNormal.xc // союзник-противник/живой/нормальный режим (без Alt)\markers\markersDeadExtended.xc // союзник-противник/мертвый/расширенный режим (c Alt)\markers\markersDeadNormal.xc // союзник-противник/мертвый/нормальный режим (без Alt)\minimap // Миникарта\minimap\minimap.xc // Миникарта\minimap\minimapCircles.xc // Круги дальности. Дистанция только в реальных метрах карты. Только для своей техники.\minimap\minimapLabels.xc // Текстовые поля. Поддерживают HTML.\minimap\minimapLines.xc // Линии. Только для своей техники.\@xvm.xc // Полный конфигурационный файл (далее - конфиг) со всеми возможными опциями, настроенными по умолчанию.\alpha.xc // Настройки динамической прозрачности\battle.xc // Общие параметры боевого интерфейса\battleLoading.xc // Параметры экрана загрузки боя(? зачем вынесли в defines.xc formatLeft/formatRight гдето еще используются?)\captureBar.xc // Полоса захвата\colors.xc // Настройки цветов\colorsDamage.xc // Цвет для отлетающего урона\defines.xc //? formatLeft/formatRight из battleLoading.xc // Параметры отображения иконки игрока/клана // всплывающий урон\finalStatistic.xc // Параметры окна послебоевой статистики\hangar.xc // Ангар (пинг на сервера/Окно достижений)\hitLog.xc // Лог попаданий (счетчик своих попаданий)\hotkeys.xc // Специальные горячие клавиши XVM\iconset.xc // Наборы иконок\playersPanel.xc // Параметры панелей игроков ("ушей")(? def.nick, def.vehicle)\rating.xc // Управление статистикой\squad.xc // Окно взвода\statisticForm.xc // Параметры окна статистики по клавише Tab\texts.xc // Текстовые подстановки для макроса {{vtype}}\turretMarkers.xc // Отображаемые строки {{turret}} маркера(Сток/башня-орудие)\vehicleNames.xc // Замена названий танков. и так чуть разобрался но возникли вопросы: \battleLoading.xc // Параметры экрана загрузки боя(? зачем вынесли в defines.xc formatLeft/formatRight гдето еще используются?) зачем вынесли в defines.xc formatLeft/formatRight гдето еще используются? \defines.xc //? formatLeft/formatRight из battleLoading.xc // Параметры отображения иконки игрока/клана // всплывающий урон вообще не понял зачем файл все в разнабой собрано например // Параметры отображения иконки игрока/клана можно было в \iconset.xc потом formatLeft/formatRight вернуть в battleLoading.xc и какраз останется // всплывающий урон \playersPanel.xc // Параметры панелей игроков ("ушей")(? def.nick, def.vehicle) тут вообще я запутался где эта хрень def.nick, def.vehicle p/s на момент написания нашол "def": { но так и не понял зачем вообще внутрений макрос если уши разные и подстановка одинакового не уместна сама мысль написания внутрених макросов интересна readme.txt Edited May 3, 2013 by Alastanka 1 Quote Share this post Link to post Short link Share on other sites
Mr A 750 #61946 Posted May 3, 2013 @Alastanka, рановато доки писать. В активной разработке структура сейчас. Quote Share this post Link to post Short link Share on other sites
Tiger.t600 16 #61948 Posted May 3, 2013 (edited) \battleLoading.xc // Параметры экрана загрузки боя(? зачем вынесли в defines.xc formatLeft/formatRight где то еще используются?) зачем вынесли в defines.xc formatLeft/formatRight где то еще используются? В statisticForm.xc. но так и не понял зачем вообще внутрений макрос если уши разные и подстановка одинакового не уместна Да с твоим конфом так не получится (сам юзаю его). Я просто поделил твой конфиг с правками и все. Так что ждемс релиза. Edited May 3, 2013 by Tiger.t600 Quote Share this post Link to post Short link Share on other sites
Tiger.t600 16 #61954 Posted May 3, 2013 Mr A, sirmax, Поправте и перезалейте архив http://code.google.com/p/wot-xvm/downloads/detail?name=xvm-4.0.0-alpha3.zip&can=2&q= Quote Share this post Link to post Short link Share on other sites
Mr A 750 #61962 Posted May 3, 2013 @Tiger.t600, готово 1 Quote Share this post Link to post Short link Share on other sites
nemoW 84 #61972 Posted May 3, 2013 Как использовать старый конфиг? Свой XVM.xvmconf переносим в \res_mods\xvm\configs\ В xvm.xc добавляем: ${"configs/XVM.xvmconf":"."} Должно получится так /** * load config: * configs/default/@xvm.xc - path and file name of config * . - root object */ //${"configs/sirmax.xc":"."} ${"configs/XVM.xvmconf":"."} //${"configs/default/@xvm.xc":"."} Этот метод не работает, если свой конфиг сокращенный. Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #61973 Posted May 3, 2013 Этот метод не работает, если свой конфиг сокращенный. должно работать. Quote Share this post Link to post Short link Share on other sites
nemoW 84 #62003 Posted May 4, 2013 Не работает на третье альфе. Что ещё кроме лога надо? XVM.log Quote Share this post Link to post Short link Share on other sites
TurinDeNar 576 #62008 Posted May 4, 2013 Не работает на третье альфе. Что ещё кроме лога надо? 2013.05.04 09:21:06 [H:003] Error loading config file 'xvm.xc': file is missing: XVM.xvmconf Что-то не так с конфигом сделали походу. Quote Share this post Link to post Short link Share on other sites
nemoW 84 #62011 Posted May 4, 2013 /** * load config: * configs/default/@xvm.xc - path and file name of config * . - root object */ //${"configs/sirmax.xc":"."} //${"configs/default/@xvm.xc":"."} ${"configs/XVM.xvmconf":"."} XVM.xvmconf Quote Share this post Link to post Short link Share on other sites
TurinDeNar 576 #62013 Posted May 4, 2013 newoW, я если честно еще с этим новым форматом не разбирался:) так что помочь не смогу:( Quote Share this post Link to post Short link Share on other sites
Tiger.t600 16 #62047 Posted May 4, 2013 Этот метод не работает, если свой конфиг сокращенный. Что именно не работает. Испытал ваш конф все работает. Quote Share this post Link to post Short link Share on other sites
nemoW 84 #62057 Posted May 4, 2013 1. xvm.xс лежит в c:\Games\World_of_Tanks\res_mods\xvm\ 2. XVM.xvmconf лежит в c:\Games\World_of_Tanks\res_mods\xvm\configs\ 3. Quote Share this post Link to post Short link Share on other sites