Polyacov_Yury 1,667 Posted May 14, 2015 (edited) Написал несколько модиков, которые расширяют работу с текстами. С обновления 0.9.20.1 файлы .mo читаются правильно без каких-либо костылей типа translatorsFix или net.wfs.gettext. Мод замены текстов aka ButtonReplacer Модификация работает примерно так же, как и проект за авторством VokaMut, но не путем подмены файлов .mo, а перехватом одной функции через питон. Возможна замена любой надписи в игре, нужно лишь знать ее адрес из .mo-файла. Настройка Создание конфига JSON { "meta" : { "name" : "<b>Образец конфига</b>", "desc" : "\t• Пример конфигурационного файла для данного мода.\n\t• Автор: Polyacov_Yury" }, "#some_file:key/reference" : { "mode" : "single", "text" : "Достаточно короткая строка, чтобы влезть в одну строку конфига" }, "#some_file:another/key" : { "mode" : "single", "text" : [ "Строка, которая не влезла ", "в одну строку конфига" ] }, "#menu:headerButtons/battle" : { "mode" : "random", "text" : [ "Аллах бабаХ", "Burzuuum!", "ДОЗА НЕВРОЗА" ] }, "#menu:headerButtons/ready" : { "mode" : "bindToKey", "bindToKey" : "#menu:headerButtons/battle", "text" : [ "Взрывать-ждатЬ", "Burzuuum!", "ДОЗА НЕВРОЗА" ] } } Что такое meta? В объекте "meta" прописывается краткое описание конфига, чтобы пользователю было понятнее, что это за новая кнопка у него в ангаре. Список метаданных отображается в настроечном GUI. Название JSON-объекта - адрес, по которому обращается игра, чтобы получить надпись. #menu:headerButtons/battle - кнопка В бой! mode - режим работы конкретного тега. Значения: single - из поля text прочтет только одно значение. Многострочный список склеивается пустым местом, поэтому следите за пробелами. random - случайная кнопка из списка. circle - последовательный перебор списка. bindToKey - см. ниже. text - список подстановок для данного ключа. Подстановки запаковываются в массив. Также поддерживается просто одна строка. Точка с запятой оставлена исключительно для поддержки старых конфигов и, скорее всего, будет потом убрана. У всех текстов обрезаются ведущие пробелы и/или новые строки. При выборе режима bindToKey обязательно добавить тег bindToKey, в который вписать ключ, к которому данный текст должен быть привязан. К примеру, кнопка В бой! установлена в режим random, и нам нужно, чтобы кнопка Готов! соответствовала кнопке В бой!. Тогда указываем для ключа #menu:headerButtons/ready режим bindToKey, а в теге bindToKey прописываем, что нужно привязать к ключу #menu:headerButtons/battle. Таким образом, для каждой кнопки В бой! ставится в соответствие текст для кнопки Готов! (в примере настройки видно, как это работает.) Список изменений Ссылка на GitHub (там всегда свежее) 28.11.2018 Исправлено появление тегов <shortDesc> в текстах для оборудования и расходников. 29.07.2018 Завершение Большого рефакторинга кода. 10.07.2018 Большой рефакторинг кода. 07.07.2018 Мелкая полировка кода. 2.2.0 (14.06.2018) Переработка кода. Теперь в него хотя бы смотреть приятно. 29.11.2017 Исправлена ошибка, возникшая при обновлении Ядра. 15.11.2017 Обновление Ядра до версии 2.4.0. 2.1.3 (11.11.2017) Удалена тонна ненужного кода, отвечавшего за фикс оборудования. Функционал не изменен. 28.10.2017 Аналитика отправляет дату компиляции скрипта. 06.08.2017 Мод обновлен под 0.9.20.0. 04.05.2017 Совместимость с net.openwg.vfsgettext. 2.1.2 (20.03.2017) Исправлено отображение Оборудования. 2.1.1 (02.03.2017) Переезд в .wotmod-пакет. 2.1.0 (13.12.2016) Переход на modsCore 2.0. 2.0 (15.08.2016) Переезд в helpers/i18n. Доработка взаимодействия с GUI. 1.1.0 (29.07.2016) Интеграция с новыми модулями. Убраны HTML-конфиги. Доработаны JSON-конфиги. 1.0.1 (28.04.2016) Исправлен баг с пустой строкой, висевший с версии мода 0.8.3 Исправлена перезагрузка текстов при входе в ангар. Теперь она производится при выходе из боя. Исправлена обрезка пробелов в начале строки. Стандартная кодировка конфигов изменена на UTF-8 w/o BOM. Мелкие исправления структуры кода. 1.0.1 (23.04.2016) Исправил путь к папке с конфигами. Прикручена Google Analytics. Посмотрим, сколько нас :P 1.0.1 (21.03.2016) Мод вернулся на исконное место обитания. 1.0.0.9 (21.03.2016) Микро-фикс ДинВзводов (апяяять >_<) Мод переехал по новому пути. 1.0.0 (27.01.2016) Исправлена работа мода с сервисным каналом. 0.9.9 (09.01.2016) Убран статус Beta у модика (да, до этого момента он был Бета ) Теперь исправления работы Сервисного Канала и ДинВзводов находятся внутри главного скрипта, поэтому - Убраны ненужные более файлы из архива. 0.9.6 (30.06.2015) Исправлена работа с текстами в динамических взводах. Исправлена работа с заголовками подсказок во время загрузки боя. Исправлена работа с сообщениями о штрафе и компенсации в сервисном канале. 0.9.5 (01.06.2015) Убрано захламление лога после боя. Исправлена работа с текстами в режиме bindToKey. 0.9.4 (20.05.2015) Исправлен парсинг строк с форматированием через XML. Добавлена поддержка конфигов в JSON. 0.8.4 (16.05.2015) Добавлен мультиконфиг. Исправлена вторая подмена кнопки при первом заходе на сервер. Известный баг: при перезаходе на сервер без килла клиента кнопка обновляется не сразу. 0.8.3 (16.05.2015) Исправлена обработка строки, в которой нет точки с запятой. Теперь надписи перечитываются и при перезаходе на сервер. 0.8.0. (14.05.2015) Бета-версия. Реализован первичный функционал (включая чтение конфига) Спасибки VokaMut - за изначальную идею и классный сайт Товарищам мододелам - за поддержку (как моральную, так и информационную) NooBooL - за идеи и вдумчивый тестинг Kotyarko_O - за поддержку мода во время моего небольшого творческого кризиса :) Скачать Собственно сам скрипт: ЯндексДиск GoogleDrive Кнопки В бой! и Готов! (18 штук) с рандомной заменой: ЯндексДиск GoogleDrive Полный пак кнопок (86 штук) : ЯндексДиск GoogleDrive Мой конфиг боевого чата и килл-лога (спасибо NooBooL): ЯндексДиск GoogleDrive Конфиг боевого чата и килл-лога: пост от NooBooL Подсказки к перкам экипажа: пост от NooBooL Расширенное описание оборудования и снаряжения: пост от NooBooL Улучшенные сообщения о повреждениях модулей и ранениях экипажа: пост от NooBooL Русификация имён и званий экипажей by Elit: пост от niZMo Ангарный Краскопульт Внимание! Имена, фамилии и звания танкистов в меню пересадки отображаются не совсем правильно. Их перекраску можно отключить в настройках. Об остальных ошибках просьба сообщать (со скриншотами) в тему. Настройка JSON { // Глобальный выключатель "enabled": true, // Цвет, в который будет покрашен текст "colour": "0097FA", // Имена, звания и роли танкистов будут раскрашены, но выпадающий список пересадки глючит. "crewColour": true, // Вместо чтения переводов выводить ключ (тот, что для Реплейсора нужен) "debug": false, // В режиме отладки текст тоже будет перекрашиваться. "debugColour": false, // Номер начального символа в ключе в режиме отладки (есть места, где ключ приходится посимвольно выковыривать) "debugBegin": 0 } Список изменений Ссылка на GitHub (там всегда свежее) 15.01.2019 Добавлена возможность выйти из игры вместо перезапуска. Черный список теперь принимает регулярные выражения, в результате чего код избавлен от старых костылей. 02.10.2018 Ядро: код для вызова диалоговых окон вынесен из модов. 29.07.2018 Завершение Большого рефакторинга кода. 10.07.2018 Большой рефакторинг кода. 07.07.2018 Мелкая полировка кода. 14.06.2018 Переработка кода. Теперь в него хотя бы смотреть приятно. 1.2.0.2 (06.01.2018) Исправлена неработоспособность диалоговых окон (например - демонтаж оборудования за золото). 29.11.2017 Исправлена ошибка, возникшая при обновлении Ядра. 15.11.2017 Обновление Ядра до версии 2.4.0. 1.2.0.1 (14.11.2017) Исправлена ошибка, возникающая из-за слёта кодировки при работе с настроечным окошком. 1.2.0 (11.11.2017) Долгожданные правки названий ЛБЗ и имен, званий и ролей танкистов в Личном деле и Казарме. 28.10.2017 Аналитика отправляет дату компиляции скрипта. 04.05.2017 Совместимость с net.openwg.vfsgettext. 1.1.2 (02.03.2016) Переезд в .wotmod-пакет. 1.1.0 (13.12.2016) Переход на modsCore 2.0. Новый стиль выбора текста в настройках. Новый "чистый режим" работы - для тех, кто не относится терпимо к незаметным абракадабрам. Подгрузка черных списков с GitHub при старте игры. 1.0.0 BETA Релиз. Интеграция с GUI. Куча правок. Спасибки GPCracker и остальным - за информационную поддержку. __P_H_A_R_A_O_N__ - за моральную поддержку и исходную идею angelsoft и E_Space - за въедливое тестирование и ценные идеи. Остальным - за то, что вы есть и используете мод :) Скачать ЯндексДиск GoogleDrive Локализационный отладчик Используется для отлова и отладки игровой локализации. Работает только с Python.Log, с внешним видом игры не взаимодействует. Выводит в лог пару ключ-значение, а после нее - traceback функции, которой этот перевод понадобился. Настройка mods/configs/PYmods/i18nDebugger/i18nDebugger.xml <root> <!--Задействовать модуль--> <!--Значения: True/False--> <enable>True</enable> <!--ключ--> <key></key> <!--Текст, по которому хотите найти перевод--> <text></text> </root> Текст в секции key должен быть частью ключа (а вдруг ты ее знаешь :P) без пробелов. Можно дебажить сразу несколько ключей через ";" (без кавычек) Текст в секции text - часть текста, которую видно на экране. Можно дебажить несколько текстов, разделив их через ";" (без кавычек). Пробелы НЕ срезаются. Спасибки GPCracker - за файл-хукинг :D Скачать ЯндексДиск GoogleDrive Edited May 7, 2021 by Polyacov_Yury 49 2 Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #270579 Posted May 14, 2015 Ты все таки сделал это:)Красавчик в любом случае. Один вопросик,не будет ли лишний скрипт систему(клиент) садить? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #270582 Posted May 14, 2015 Ты все таки сделал это:)Красавчик в любом случае. Один вопросик,не будет ли лишний скрипт систему(клиент) садить? Чем садить? Замена один раз происходит при входе в ангар, а не 100 раз в секунду. 1 Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #270583 Posted May 14, 2015 А с чего ему садить-то? Циклов никаких нет, конфиг сначала пишется в словарь, а потом из него уже происходит чтение, и хукается только одна функция. Версия 0.1.0 stable вообще в 13 строк поместилась :) 3 Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #270585 Posted May 14, 2015 Ребят,я просто спрашиваю,в питоне ноль,да и вообще мало чего знаю.Век живи-век учись,как говорится)))Спасибо за ответ. Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #270587 Posted May 14, 2015 (edited) Красавец! Держи пять! А можно ещё добавить изменение надписи при смене сервера и перелогине? Edited May 14, 2015 by AtotIK Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #270600 Posted May 14, 2015 В принципе, проблем никаких с этим нет. За сигнал сообщениям на перечитать отвечает один маленький for, увеличивающийся в зависимости от количества отредактированных надписей. Осталось выяснить, что вызывается при логине на сервер... 3 Quote Share this post Link to post Short link Share on other sites
даша 44 #270602 Posted May 14, 2015 В принципе, проблем никаких с этим нет. За сигнал сообщениям на перечитать отвечает один маленький for, увеличивающийся в зависимости от количества отредактированных надписей. Осталось выяснить, что вызывается при логине на сервер... эти надписи видиш только ты ?как я поняла !ещё бы скрин примера как оно получается Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #270603 Posted May 14, 2015 эти надписи видиш только ты ? Конечно же. Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #270604 Posted May 14, 2015 даша, пример: 1 Quote Share this post Link to post Short link Share on other sites
NooBooL 1,021 #270610 Posted May 14, 2015 (edited) Норм)) Плюсую)) Одно НО как обычным геймерам узнать "...адрес, по которому обращается игра..." ??? UPD Поставить в res_mods/0.9.7 пустую папку text и прочитать Edited May 14, 2015 by NooBooL Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #270733 Posted May 15, 2015 Поставить в res_mods/0.9.7 пустую папку text и прочитать Не, ну это уж совсем злобно :)А адрес обращения формируется так: #название_mo_файла:ключ_в_mo_файле. Ключ можно увидеть в любом редакторе .moшек :) 3 Quote Share this post Link to post Short link Share on other sites
NooBooL 1,021 #270736 Posted May 15, 2015 (edited) А адрес обращения формируется так: #название_mo_файла:ключ_в_mo_файле. Ключ можно увидеть в любом редакторе .moшек :) Это понятно...вот только раз уж ты открыл mo. файл редактором...(чтоб адрес посмотреть)) ...там же в редакторе изменил что нужно и всё...мод тогда зачем??? Просто чтоб папку text в res_mods не ставить???))) Вот если бы можно было не ключ писать а сразу "перевод" а мод уже сам в mo. файлах ищет что нужно и меняет...неее??? Edited May 15, 2015 by NooBooL Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #270774 Posted May 15, 2015 Весь проблем в чём? Весь проблем в быстрой подмене большого количества текстов. И в необходимости каждопатчевого обновления. А так Джовопаковские цветные сообщения сразу станут кросспатчевыми :)Насчет .mo файлов... Помните вот эту вещь? (кстати, скоро реинкарнация :) ) Так вот, там была подмена кнопки в бой рандомным текстом из списка. Приходилось перед стартом клиента файлик батником копировать, да и о замене при выходе из боя речи не идет. А скрипт решает целый круг проблем, как можно заметить :) 2 Quote Share this post Link to post Short link Share on other sites
NooBooL 1,021 #270785 Posted May 15, 2015 (edited) Попробовал изменить чат в бою. Пишу так... <back_to_base> <key>#ingame_gui:chat_shortcuts/back_to_base</key> <mode>single</mode> <text><img src='img://extended/back_to_base.png' width='20' height='20' vspace='-6'/> <font color='#ffda24'>Защищайте базу!</font></text> </back_to_base> ...не алё((( В mo. файле такая строка работает Edited May 15, 2015 by NooBooL Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #270848 Posted May 16, 2015 Ага. Так и знал, что без прыжков не сработает. Питон.лог можно увидеть? Quote Share this post Link to post Short link Share on other sites
NooBooL 1,021 #270866 Posted May 16, 2015 (edited) Питон.лог можно увидеть? python.log Edited May 16, 2015 by NooBooL Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #270869 Posted May 16, 2015 (edited) python.log Огромнейшее спасибо. На самом деле, эксепшн выскочил просто на кривую обработку строки, не разделенной ;. Патч мода до версии 0.8.3 Исправлена обработка строки, в которой нет точки с запятой. Теперь надписи перечитываются и при перезаходе на сервер. Edited May 16, 2015 by Polyacov_Yury 1 Quote Share this post Link to post Short link Share on other sites
NooBooL 1,021 #270873 Posted May 16, 2015 (edited) Ждёмс)) Как заработает сразу запилю конфиг на всем известные сообщения UPD Запилил)) Chat and KillLog.zip Edited May 7, 2021 by NooBooL 6 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #270875 Posted May 16, 2015 Как заработает сразу запилю конфиг на всем известные сообщения Было бы здорово) Quote Share this post Link to post Short link Share on other sites