SkepticalFox Posted July 9, 2016 Share Posted July 9, 2016 Так бы и не вылазил на винду https://habrahabr.ru/post/280560/ Осталось еще немного подождать... @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted July 10, 2016 Share Posted July 10, 2016 (edited) https://habrahabr.ru/post/280560/Осталось еще немного подождать... http://www.opennet.ru/opennews/art.shtml?num=44767 Какая же годнота получается... Edited July 11, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 12, 2016 Author Share Posted July 12, 2016 (edited) Upd 2.1. В очередной раз понимаю, что у некоторых разрабов WoT либо руки реально из одного места, либо мозг не варит, либо просто никто ничего не хочет делать. Все (ну кто моды не модпаком ставит) к примеру знают, что текстовые моды при установке (*.mo файлы)... нужно копировать сначала файлы из res/text, а уже потом, поверх них ставить моды. Но мало кто в курсе, что это делать не совсем обязательно, если правильно настроить gettext модуль (ну точнее не сам gettext [это средство для локализации приложений, если кто не в курсе, загуглите, используется игрой для хранения практически всех текстов], а обертку для него, i18n) в игре, то можно подгружать файлы из любой папки. Сижу вот сейчас играюсь, смотрю что можно из него отжать. А еще, можно (об этом есть даже тема в соседнем разделе) создавать свои файлы локализации и использовать их в своих целях. Вот сижу, экспериментирую, что можно вытащить из gettext. Ибо использование XML для хранения больших текстовых значений не самая хорошая идея, особенно если используется HTML форматирование. Есть небольшая идея вынести все строки в файл локализации. Что из этого получится - пока непонятно. translator = gettext.translation('achievements_', 'res_mods/0.9.15.0.1', languages=['text'])Создал копию achievements.mo, добавил нижнее подчеркивание в имя (создавать файлик для тестов как-то влом). Вроде робит нормально. Короч, для полного комфорта нужно запатчить scripts/client/helpers/i18n.py, заменить функцию _getTranslator получения транслятора (информация для @Polyacov_Yury). Edited July 12, 2016 by GPCracker 3 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted July 12, 2016 Share Posted July 12, 2016 Ибо использование XML для хранения больших текстовых значений не самая хорошая идея, особенно если используется HTML форматирование.Что-то вы слишком мягко это сказали. @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 12, 2016 Author Share Posted July 12, 2016 Upd 2.2. Короч, запилил свой класс-локализатор с блекджеком и **** примерно ориентируясь на то, что было у картохи. В минусе имеем кучу ненужного лично мне мусора, в плюсе - более компактный вид и вызовы, ну и умеет находить нужные файлы там, где они реально лежат (ну вообще по путям шарится и файлы ищет ResMgr, он умеет). "Весь код сей фичи" class TranslatorsCache(dict): @staticmethod def _get_translator(domain): path = ResMgrUtils.basepath(ResMgrUtils.join_path('text/LC_MESSAGES', domain + '.mo')) return gettext.translation(domain, path, languages=['text']) def __missing__(self, domain): return self.setdefault(domain, self._get_translator(domain)) def gettext(self, domain, message): return self[domain].gettext(message) def __repr__(self): return 'TranslatorsCache({})'.format(super(TranslatorsCache, self).__repr__()) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted July 12, 2016 Share Posted July 12, 2016 Еще раз просмотрю либуЯ тут посмотрел либу и понял, что ООП не нужно. @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 13, 2016 Author Share Posted July 13, 2016 Я тут посмотрел либу и понял, что ООП не нужно.Что ты имеешь в виду? @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted July 13, 2016 Share Posted July 13, 2016 Что ты имеешь в виду?модульности хватает @ Quote Link to comment Short link Share on other sites More sharing options...
Scharfhobel Posted July 13, 2016 Share Posted July 13, 2016 Так чем закончилась байга с Ббокс? @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 13, 2016 Author Share Posted July 13, 2016 Так чем закончилась байга с Ббокс?Пока ничем. Небольшой перерыв. Там посмотрим, может что прояснится. @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted July 17, 2016 Share Posted July 17, 2016 'Длиннопост лично для меня о_о' Upd 2.1. В очередной раз понимаю, что у некоторых разрабов WoT либо руки реально из одного места, либо мозг не варит, либо просто никто ничего не хочет делать. Все (ну кто моды не модпаком ставит) к примеру знают, что текстовые моды при установке (*.mo файлы)... нужно копировать сначала файлы из res/text, а уже потом, поверх них ставить моды. Но мало кто в курсе, что это делать не совсем обязательно, если правильно настроить gettext модуль (ну точнее не сам gettext [это средство для локализации приложений, если кто не в курсе, загуглите, используется игрой для хранения практически всех текстов], а обертку для него, i18n) в игре, то можно подгружать файлы из любой папки. Сижу вот сейчас играюсь, смотрю что можно из него отжать. А еще, можно (об этом есть даже тема в соседнем разделе) создавать свои файлы локализации и использовать их в своих целях. Вот сижу, экспериментирую, что можно вытащить из gettext. Ибо использование XML для хранения больших текстовых значений не самая хорошая идея, особенно если используется HTML форматирование. Есть небольшая идея вынести все строки в файл локализации. Что из этого получится - пока непонятно. translator = gettext.translation('achievements_', 'res_mods/0.9.15.0.1', languages=['text'])Создал копию achievements.mo, добавил нижнее подчеркивание в имя (создавать файлик для тестов как-то влом). Вроде робит нормально.Короч, для полного комфорта нужно запатчить scripts/client/helpers/i18n.py, заменить функцию _getTranslator получения транслятора (информация для @Polyacov_Yury). Информация полезная, но лично для меня не особо новая. Правда, структурирование помогло с, за что я благодарен. Одна вещь меня гложет. запатчить scripts/client/helpers/i18n.py Именно с этого начинался ButtonReplacer, и именно от этого я всеми силами пытался уйти. И именно поэтому он сейчас чуть ли не единственный мод на всё комьюнити, который остался в scripts/client/mods и требует CameraNode для запуска. Если патчинг лучше, чем "старый" загрузчик - я перепилю, с этим проблем никаких :) А насчет создания своего файла локали и неудобства настройки текстов в XML-конфиге - я эту проблему слегка по-читерски обошел. Я использую JSON-конфиги :D Все-таки для написания JSON-ки спец-софт (если таковым Notepad++ не считать) не требуется. Порог вхождения ниже. А насчет "ногами деланных скриптов" - в процессе настройки и отладки Краскопульта я наткнулся на такие слова в ключах, как "loby" и "maitenance" (это только из тех, на которые я внимание обратил.) Опять же - далеко не новость :) Пока ничем. Небольшой перерыв. Там посмотрим, может что прояснится. А как же мое предложение домножить это всё на vehicle.compoundModel.node('chassis'), который, ели я ничего не перепутал, является матрицей коррекции положения танка относительно Мирового ЭфираПространства? @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 20, 2016 Author Share Posted July 20, 2016 (edited) Если патчинг лучше, чем "старый" загрузчик - я перепилю, с этим проблем никаких :)Я имею ввиду запилить патч (в.т.ч. способом, который я использую в тех загрузчиках, что кидал у тебя в теме и загрузчиках WST), чтобы тексты работали "правильно", т.е. как все остальные нормальные файлы в папке с модами - оверлоад res согласно путям. Ибо тексты, насколько я понимаю - это единственная вещь, которую все еще нужно копировать из res в res_mods. Там патч всего одной функции, насколько я понял. Запили поиск по i18n, посмотри кто какие функции юзает... хотя я думаю ты и так такое уже делал. На i18n нужно накатывать только фикс, а не сам мод. Тогда это будет корректно. Это по сути фикс не для одного мода, так-то, он решает глобальную проблему. Для себя я запилил свой ридер, лежит тут... сорян, пока только у меня на харде. Разберусь с системой - коммитну в репо. Есть еще одна идея, как можно попробовать пофиксить. М.б., если будет время, накидаю фрагментик попроще и кину его на баг-трекер, возможно получится решить данную траблу со стороны картохи. А насчет создания своего файла локали и неудобства настройки текстов в XML-конфиге - я эту проблему слегка по-читерски обошел. Я использую JSON-конфиги :DЯ тоже как-то юзал на одном из сторонних проектов такое дело. Надо очень многое дипиливать. Комментарии, алгоритмы чтения, преобразования некоторых форматов, которые JSON не понимает и т.д. Для мода, активно взаимодействующего с движком, BW-XML подходит больше. Все-таки для написания JSON-ки спец-софт (если таковым Notepad++ не считать) не требуется. Порог вхождения ниже.Согласен. Для XML - тоже. Вопрос с использованием файлов локализации как хранилища для текстов требует проработки по части возможностей реалтайм компиляции *.po файлов в памяти. Это такие же текстовые файлы, как и JSON и XML. *.mo - это машинные файлы, т.е. бинарники. А *.po - примеры лежат в репозитории XVM в разделе разобранного клиента. А как же мое предложение домножить это всё на vehicle.compoundModel.node('chassis'), который, ели я ничего не перепутал, является матрицей коррекции положения танка относительно Мирового ЭфираПространства?Возможный вариант я уже описывал тебе в скайпе. Пока занят немного другими вещами. Просто домножить не прокатит, поскольку vehicle.compoundModel.node('chassis') это матрица трансформации шасси из локальных координат в глобальные. Бокс уже задан в глобальных... если ты просто домножишь - получится не пойми что. Там грамотно фиксить надо. Пока я просто хочу доделать остальное, там как раз релиз прикатится, посмотрим что там поменялось и потом уже будем думать, что куда. Edited July 20, 2016 by GPCracker @ Quote Link to comment Short link Share on other sites More sharing options...
spoter Posted July 20, 2016 Share Posted July 20, 2016 ogre.ninja autoaim коробочка работает, и упреждение для арты тоже считается и достаточно быстро. код не мой. но слежу с огромным интересом и широко открытыми глазами. 3 @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 21, 2016 Author Share Posted July 21, 2016 (edited) [Если я опять не совсем вылетел из потока; В связи с предстоящим патчем; Разбирал тут файлопомойку; Когда-то давным-давно;] Блин, сколько же всякого хлама накопилось на винте... Почти половину диска на ровном месте освободил. Восстанавливаю потихоньку настройки в связи с чистым переходом с 7ки на 10ку. Кстати, на тесте никто не пробовал катать файлик с графическим тестом коробочки? Не пофиксили случаем? Edited July 21, 2016 by GPCracker @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted July 21, 2016 Share Posted July 21, 2016 Блин, сколько же всякого хлама накопилось на винте...rm -rf /* меня выручал) @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 21, 2016 Author Share Posted July 21, 2016 (edited) On 21.07.2016 at 10:20 PM, ShadowHunterRUS said: rm -rf /* меня выручал) Нее, если я таким образом буду с хламом бороться... тогда обнова точно не выйдет :) Впилил парочку простеньких батничков для обвеса GnuWin32 и gettext. Парочка ярлыков в SendTo или твик в реестре, и в пару кликов можно разбирать и собирать текстовые файлы. Возможно, в упрощенном виде такое можно заюзать через реестр без самих батничков. Ну или по-простому можно таскать файлики на батники drag&drop'ом. Для обычных пользователей тут нет ничего интересного GetText.zip P.S. Подробно прочитать, как это в принципе работает, можно здесь Edited October 5, 2017 by GPCracker Заменен аттач-дубликат @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted July 22, 2016 Share Posted July 22, 2016 (edited) Я вот погляжу, ты Текстовик 2.0 пилишь-пилишь... А ведь имена файлов вшиты в ключи, а ключи захардкодены в питоне :) И кстати, патчинг i18n'а с привлечением своих файлов переводов не позволяет без бубен-дэнсинга применять несколько разных переводов на один и тот же ключ (как у меня с кнопкой "В бой!") Edited July 22, 2016 by Polyacov_Yury @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 22, 2016 Author Share Posted July 22, 2016 (edited) Я вот погляжу, ты Текстовик 2.0 пилишь-пилишь...Экспериментирую, что из этой механики отжать можно. А ведь имена файлов вшиты в ключи, а ключи захардкодены в питоне :)Если ты про макросы gettext - захардкодены частично, часть в XML-ках прописана. И кстати, патчинг i18n'а с привлечением своих файлов переводов не позволяет без бубен-дэнсинга применять несколько разных переводов на один и тот же ключ (как у меня с кнопкой "В бой!")А это и не нужно. Основная идея моего предложения - сделать так, чтобы файлы переводов брались не оттуда, где папка text лежит, а оттуда, где лежит реальный файл, причем у res_mods приоритет. Как происходит, например, со скриптами или XML, недавно с переходом на новое двигло впилили и для звуков. Лично меня напрягает копировать сначала все файлы из res, потом пойми, где моды, а где оригиналы... Edited July 22, 2016 by GPCracker @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 23, 2016 Author Share Posted July 23, 2016 @Polyacov_Yury, создал задачу на багтрекере картохи. @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted July 23, 2016 Share Posted July 23, 2016 потом пойми, где моды, а где оригиналы... Да, кстати, еще одну вещь вспомнил, которую намного проще реализовть через Реплейсор, чем через патченный gettext. Межмододельная совместимость файлов.Я в том смысле, что, к примеру, кто-то делает кнопку "В бой!", а кто-то - меняет, допустим, заголовок окна ЛБЗ. А и то и то лежит в файле menu. Как предложишь совмещать?) @ 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.