Popular Post Polyacov_Yury Posted May 14, 2015 Popular Post Share 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 Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted May 14, 2015 Share Posted May 14, 2015 Ты все таки сделал это:)Красавчик в любом случае. Один вопросик,не будет ли лишний скрипт систему(клиент) садить? @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted May 14, 2015 Share Posted May 14, 2015 Ты все таки сделал это:)Красавчик в любом случае. Один вопросик,не будет ли лишний скрипт систему(клиент) садить? Чем садить? Замена один раз происходит при входе в ангар, а не 100 раз в секунду. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted May 14, 2015 Author Share Posted May 14, 2015 А с чего ему садить-то? Циклов никаких нет, конфиг сначала пишется в словарь, а потом из него уже происходит чтение, и хукается только одна функция. Версия 0.1.0 stable вообще в 13 строк поместилась :) 3 @ Quote Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted May 14, 2015 Share Posted May 14, 2015 Ребят,я просто спрашиваю,в питоне ноль,да и вообще мало чего знаю.Век живи-век учись,как говорится)))Спасибо за ответ. @ Quote Link to comment Short link Share on other sites More sharing options...
AtotIK Posted May 14, 2015 Share Posted May 14, 2015 (edited) Красавец! Держи пять! А можно ещё добавить изменение надписи при смене сервера и перелогине? Edited May 14, 2015 by AtotIK @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted May 14, 2015 Author Share Posted May 14, 2015 В принципе, проблем никаких с этим нет. За сигнал сообщениям на перечитать отвечает один маленький for, увеличивающийся в зависимости от количества отредактированных надписей. Осталось выяснить, что вызывается при логине на сервер... 3 @ Quote Link to comment Short link Share on other sites More sharing options...
даша Posted May 14, 2015 Share Posted May 14, 2015 В принципе, проблем никаких с этим нет. За сигнал сообщениям на перечитать отвечает один маленький for, увеличивающийся в зависимости от количества отредактированных надписей. Осталось выяснить, что вызывается при логине на сервер... эти надписи видиш только ты ?как я поняла !ещё бы скрин примера как оно получается @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 14, 2015 Share Posted May 14, 2015 эти надписи видиш только ты ? Конечно же. @ Quote Link to comment Short link Share on other sites More sharing options...
AtotIK Posted May 14, 2015 Share Posted May 14, 2015 даша, пример: 1 @ Quote Link to comment Short link Share on other sites More sharing options...
NooBooL Posted May 14, 2015 Share Posted May 14, 2015 (edited) Норм)) Плюсую)) Одно НО как обычным геймерам узнать "...адрес, по которому обращается игра..." ??? UPD Поставить в res_mods/0.9.7 пустую папку text и прочитать Edited May 14, 2015 by NooBooL @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted May 15, 2015 Author Share Posted May 15, 2015 Поставить в res_mods/0.9.7 пустую папку text и прочитать Не, ну это уж совсем злобно :)А адрес обращения формируется так: #название_mo_файла:ключ_в_mo_файле. Ключ можно увидеть в любом редакторе .moшек :) 3 @ Quote Link to comment Short link Share on other sites More sharing options...
NooBooL Posted May 15, 2015 Share Posted May 15, 2015 (edited) А адрес обращения формируется так: #название_mo_файла:ключ_в_mo_файле. Ключ можно увидеть в любом редакторе .moшек :) Это понятно...вот только раз уж ты открыл mo. файл редактором...(чтоб адрес посмотреть)) ...там же в редакторе изменил что нужно и всё...мод тогда зачем??? Просто чтоб папку text в res_mods не ставить???))) Вот если бы можно было не ключ писать а сразу "перевод" а мод уже сам в mo. файлах ищет что нужно и меняет...неее??? Edited May 15, 2015 by NooBooL @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted May 15, 2015 Author Share Posted May 15, 2015 Весь проблем в чём? Весь проблем в быстрой подмене большого количества текстов. И в необходимости каждопатчевого обновления. А так Джовопаковские цветные сообщения сразу станут кросспатчевыми :)Насчет .mo файлов... Помните вот эту вещь? (кстати, скоро реинкарнация :) ) Так вот, там была подмена кнопки в бой рандомным текстом из списка. Приходилось перед стартом клиента файлик батником копировать, да и о замене при выходе из боя речи не идет. А скрипт решает целый круг проблем, как можно заметить :) 2 @ Quote Link to comment Short link Share on other sites More sharing options...
NooBooL Posted May 15, 2015 Share 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 Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted May 16, 2015 Author Share Posted May 16, 2015 Ага. Так и знал, что без прыжков не сработает. Питон.лог можно увидеть? @ Quote Link to comment Short link Share on other sites More sharing options...
NooBooL Posted May 16, 2015 Share Posted May 16, 2015 (edited) Питон.лог можно увидеть? python.log Edited May 16, 2015 by NooBooL @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted May 16, 2015 Author Share Posted May 16, 2015 (edited) python.log Огромнейшее спасибо. На самом деле, эксепшн выскочил просто на кривую обработку строки, не разделенной ;. Патч мода до версии 0.8.3 Исправлена обработка строки, в которой нет точки с запятой. Теперь надписи перечитываются и при перезаходе на сервер. Edited May 16, 2015 by Polyacov_Yury 1 @ Quote Link to comment Short link Share on other sites More sharing options...
NooBooL Posted May 16, 2015 Share Posted May 16, 2015 (edited) Ждёмс)) Как заработает сразу запилю конфиг на всем известные сообщения UPD Запилил)) Chat and KillLog.zip Edited May 7, 2021 by NooBooL 6 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 16, 2015 Share Posted May 16, 2015 Как заработает сразу запилю конфиг на всем известные сообщения Было бы здорово) @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.