Jump to content
Korean Random

Polyacov_Yury

User
  • Content Count

    2,107
  • Joined

  • Last visited

  • Days Won

    73

Everything posted by Polyacov_Yury

  1. Тут Краскопульт тоже опубликован будет. Но чуть позже. UPD. Перезалил архив. Забыл добавить обещанный вежливый error-месседж при отсутствии GUI-пакета.
  2. ИТАК. ButtonReplacer v.1.1.0 Интеграция с модулем PYmodsGUI (настройка модов напрямую из клиента). Состоит из файла mod_PYmodsGUI.pyc, папок gui/flash и res_mods/configs/PYmods. Для работы необязателен. Интеграция с PYmodsCore (приватная кодопомойка :) ). Для работы обязателен. Удален (вернее, ассимилирован в Ядро) файлик mod_ButtonReplacer_textFixes.pyc Убрана поддержка конфигов в формате cfg/HTML. Теперь конфиги только в формате JSON/Unix/UTF-8. Доработана обработка конфигов. Добавлена возможность прописывать многострочные тексты, списки вариантов, а также метаданные для конфигов. Полная инструкция в шапке. Через GUI можно (но настоятельно не рекомендуется) отключить ГуглоАналитику. (Благодарим Delysid за излишний гемор в эту сторону) P.S. Полуночникам просьба перекачать архив. Доработал обработку многострочных текстов. (rstrip не каждой строки, а уже скленного текста).
  3. Значить, инструктирую. Ставите мод сообщений из скинутого вами архива. Удаляете файлик scripts/client/gui/mods/mod_ButtonReplacer_textFixes.pyc. Сверху ставите мод из архива в шапке темы. ??? PROFIT! P.S. Обещанный патчноут чуть позже сегодня (как минимум, чтобы Форум его в этот пост не приклеил -__-)
  4. Спасибо всем интересующимся за тестирование. Перезалил архив в шапке темы. Изменения относительно неописанного бета-релиза: GUI: исправлена кросс-авторная совместимость скриптов. Затенение глобальной переменной по имени 'id' - нехорошо, но зависит это не от меня, поэтому придется жить с тем, что есть. CameraNode: почищен вывод в лог с учетом добавления в новом патче timestamp'ов. P.S. Когда выкатывал "пенную" версию aka бета-релиз, забыл сказать, что отключил в моде поддержку конфигов в формате .cfg. Их все равно, как я погляжу, только я и использовал :D В планах на завтра: Описание релиза (пофиг, бета-не-бета, разницы никакой промежду ними окромя пары комментов в коде) Нормальное сообщение в логе, если модуль GUI-настроек не установлен (а не трассировка эксепшона, которая всех только пугать будет) Бета-выпуск Краскопульта (пора бы уже :З)
  5. Executing: artautoaim Этхто? (с) Executing: hangarCalculator Executing: hangarCalculatorButton Executing: sniperByScroll Тот же вопрос. WARNING: [WARNING] (scripts/client/gui/mods/__init__.py, 69): There is problem while import gui mod ('gui.mods', 'mod_ExtraAimInfo.pyc') ERROR: [EXCEPTION] (scripts/client/gui/mods/__init__.py, 71): Traceback (most recent call last): File "scripts/client/gui/mods/__init__.py", line 64, in _findValidMODs File "scripts/common/Lib/importlib/__init__.py", line 37, in import_module File "mod_ExtraAimInfo", line 1, in <pjorion_protected> File "mod_ExtraAimInfo", line 1, in <pjorion_protected> File "mod_ExtraAimInfo", line 1, in File "mod_ExtraAimInfo", line 17, in <module> ImportError: No module named aims Обновляйте читы, а потом на Реплейсор бочку катите, пожалуйста. [OLD MODS LOADER] Зачем? Есть же КамераНод. Вот у вас и глючит от дважды-импорта модов. ERROR: Traceback (most recent call last): ERROR: File "scripts/client/gui/mods/mod_PYmodsGUI.py", line 829, in register_gui ERROR: TypeError: addMod() got an unexpected keyword argument 'modID' Вот за это спасибо. Надо будет отрегулировать имена переменных для кросс-совместимости (не удосужился проверить, ага) P.S. Завтра будет вам патчноут. Я сегодня устал после Лаго-Наки :)
  6. Ага, отдых, как же... Лес, горы, природа Свет 2 часа в день, интернета нету Баня, шашлыки, игры на свежем воздухе... Родители, их друг с женой и моя младшая сестра. Плохо выглядишь, Валера, Что случилось? - ОТДОХНУЛ! (с)
  7. Судя по брызгам мыльной пены из монитора, у модпакеров перед патчем жарко. В шапке можно скачать тестовую версию Реплейсора под 9.15.1. Работоспособность на релизе не гарантирую. Когда приеду (пятница) - выложу простыню, в которой распишу все изменения. Пока что могу только сказать, что старые конфиги поддерживаются в полном объеме.
  8. В JSON-конфиге, ага :) Я ж все моды при переходе на 2.0 перевел на JSON Тогда ой. Сам Реплейсор-то отдельно лежит, а вот Дебаггер, который я сделал пару патчей назад и без которого я был бы, как без рук - он да, он перегружает. Значит - будем зависеть от картофельных проггеров, что тут поделаешь -_- Регулярки - это и без питоновских наворотов для меня - тёмное колдунство :) (Это, правда, не мешает мне их использовать, но это не важно ) Схоронил, почитаю :) Ситэйшон следующий. Я хукнул функцию makeString уже после того, как переводы для подсказок в начале боя считались в Tuple. Поэтому, чтобы переводы для них считались из конфига и появились в игре, приходится этот tuple принудительно перечитывать после того, как функция была хукнута. А если влезть напрямую в i18n - такой проблемы не будет, потому что конфиги получат приоритет над .mo в любом всплывшем случае. Есть еще другая проблема, для которой код я не привел. Это когда в сорце написано не from helpers import i18n, а from helpers.i18n import makeString. В таком случае хук функции почему-то не проходит. (см. dyn_squad_functional для примера). Таких импортов в клиенте 112 штук.
  9. Полностью согласен. Вот только надо еще соглашение ввести, а где же, собственно, это отведенное место находится :) А то эти все брожения с конфигами - то рядом со скриптом конфиг клади, то в res_mods/connfigs... Вдобавок, всплывают вот эти самые "имя_файла"-конфликты. И опять же, лично мне, как мододелу, проще написать тексты для мода в JSON-конфиг, сохранить их в res_mods/configs/author_name/i18n/mod_name/lang.json и забыть, чем еще проги качать, чтобы свой .mo сделать. Хотя опять же, тут возможно влияние привычки... Смотря что понимать под словом "оверлоад". Если им не считать хук makeString - тогда не оверлоадит :) А ты хитрый ;D А что рекурсия? Нет, понятно, что если makeString нашла в тексте ключ, надо его рекурсивно скормить себе же. Вопрос в том - как его оттуда выцепить :) То есть путь text/lc_messages вшит прямо в gettext? Веселимси... А я хотел предложить складывать .mo-шки в уже упомянутую res_mods/configs/author_name/i18n/mod_name/lang :P Одни compound-модели чего стоят, ага (А теперь пойми, сарказм это или нет (предыдущее указание оказалось саморекурсивным :D)) Может мне на основе сего запилить Реплейсор и Краскопульт? Уж больно заманчиво избавиться от кода типа вот этого: def new_init(*args, **kwargs): old_init(*args, **kwargs) from gui.battle_control.battle_constants import COUNTDOWN_STATE from gui.Scaleform.daapi.view.battle.legacy import TimersBar TimersBar._STATE_TO_MESSAGE = {COUNTDOWN_STATE.WAIT: i18n.makeString('#ingame_gui:timer/waiting'), COUNTDOWN_STATE.START: i18n.makeString('#ingame_gui:timer/starting'), COUNTDOWN_STATE.STOP: i18n.makeString('#ingame_gui:timer/started')} old_init = game.init game.init = new_init Правда, придется по факту запилить свой загрузчик i18n-модов...
  10. Вон оно что! А я тут, значит, сижу, понять не могу, почему я ему о маффинах, а он мне о пирожках... Если в эту сторону понимать вопрос, то да, тогда патч gettext'a кажется вполне себе нужным. Возможность нормально хранить переводы модов в файлах .mo - очень заманчивая перспектива :) И даже их использование как метода работы с Реплейсором начинает казаться не таким нелепым, как мне в начале обсуждения :) Но даже если так - хранить свои переводы в text/lc_messages - не очень надежно. Все же в папке с конфигами - оно как-то ближе и ламповее :) (Хотя тут, похоже, дело привычки) В любом случае - будем смотреть, как дела выгорят с фиксом i18n. Пока что оставлю так, как оно на данный момент есть, ибо меня (и, судя по всему - не только меня) все устраивает :) А насчет перехода в новую папку модов - поглядим-с. По скриптам, несмотря на 1548 использований функции makeString (единственного хука на весь мод, не считая Аналитику и фиксы) - дай бог 20-я часть из них глючит. Насчет этого ко мне пока никто не обращался. Можно сделать построчный перенос конфига, если схитрить немного :) Хм. А это, кстати говоря, идея. ''.join() никто не отбирал, правильно?) Тогда конфиг по факту просто туннелем является. И тут уже придется хитро-хитро покумекать. Как отличить ключ в строке от, собственно, просто строки? Можно ввести что-то вроде {key}{/key} - но это, опять же, лишнее горизонтальное танго. Посмотрим, как идея воспринята будет. А вот и он. Камень преткновения во всей дискуссии. Было бы еще хитрее, если бы можно было в i18n-конфиге мода (не ремап картофельного текста, а именно мода) указать путь к папке с локализациями и оттуда читать напропалую. Юзерам потом тогда папку модов от модов чистить легче. Весело там у вас А у меня тут, что называется, событие всплыло. Поэтому *все глядим в подпись*
  11. Знать бы, что именно :) В принципе - можно объединить наши подходы. В JSON-е сделать ремап ключ-ключ (а не ключ-текст, как у меня :) ) и по этому ремапу дёргать тексты из кастомных файлов .mo. Но опять же - излишнее усложнение работы по созданию конфига, ИМХО :) А в версии, которая выйдет вместе с 9.15.1, я вообще полностью убрал поддержку XML, остался только JSON :) P.S. Только что подумал, что благодаря JSON-у можно уйти от textList = textString.split(';') и вместо этого просто захардкодить в JSON сразу массив. Быстро и красиво :) *ушел кодить :P А где проблема с копированием? Модик-который-негласно-решено-не-называть вообще папку text для работы не требует. Standalone, если можно так выразиться :)
  12. А что мешает сделать так? Ни один уже существующий и стремительно приближающийся к 35к юзеров мод не напоминает?
  13. Да, кстати, еще одну вещь вспомнил, которую намного проще реализовть через Реплейсор, чем через патченный gettext. Межмододельная совместимость файлов. Я в том смысле, что, к примеру, кто-то делает кнопку "В бой!", а кто-то - меняет, допустим, заголовок окна ЛБЗ. А и то и то лежит в файле menu. Как предложишь совмещать?)
  14. Товарищи народ. Тут скоро патч, а значит - скоро релиз. А выпускать мод с 7 фразами на русском языке и 3-мя на английском как-то нуочень не комильфо -_- >Нажата кнопка F7 P.S. Никто не в курсе, как отловить факт активности боевого чата, чтобы, когда я что-то в него пишу - гудок не срабатывал?
  15. Я вот погляжу, ты Текстовик 2.0 пилишь-пилишь... А ведь имена файлов вшиты в ключи, а ключи захардкодены в питоне :) И кстати, патчинг i18n'а с привлечением своих файлов переводов не позволяет без бубен-дэнсинга применять несколько разных переводов на один и тот же ключ (как у меня с кнопкой "В бой!")
  16. Пилю такой Краскопульт, как внезапно: 'Вот как это назвать?!'
  17. Исправил Огроменный Бажище в Краскопульте. Переведено в стадию Беты. Если ничего не изменится - выкачу вместе с остальными модами. А патч таки на следующей неделе. Буду, наверное, пилить длиннопосты об изменениях в модах до их, собственно, выпуска, чтоб в день выхода патча задний план мылом не забрызгать :)
  18. UPD. Поискал по картофельным скриптам функцию i18n.makeString. 1587 использований, из них 112 - идентичны тому, что мне пришлось чинить в ДинВзводах. Такое очучение, что даже CameraNode проблему не решит, о переезде в новую папку речи не идет. Может, не будем капризничать и/или трогать то, что есть и хоть как-то работает?)
  19. Если бы поменяли - я бы написал :) А вообще, после долгого обдумывания я так подумал, что чуть-чуть порыться в клиенте никому еще не повредило :) Если раскопки покажут относительную легкость переработки - перееду по новому пути :) P.S. За что Славу-то заминусили? Дело же говорит :) Мне было бы меньше папок со скриптами поддерживать)
  20. Информация полезная, но лично для меня не особо новая. Правда, структурирование помогло с, за что я благодарен. Одна вещь меня гложет. Именно с этого начинался ButtonReplacer, и именно от этого я всеми силами пытался уйти. И именно поэтому он сейчас чуть ли не единственный мод на всё комьюнити, который остался в scripts/client/mods и требует CameraNode для запуска. Если патчинг лучше, чем "старый" загрузчик - я перепилю, с этим проблем никаких :) А насчет создания своего файла локали и неудобства настройки текстов в XML-конфиге - я эту проблему слегка по-читерски обошел. Я использую JSON-конфиги :D Все-таки для написания JSON-ки спец-софт (если таковым Notepad++ не считать) не требуется. Порог вхождения ниже. А насчет "ногами деланных скриптов" - в процессе настройки и отладки Краскопульта я наткнулся на такие слова в ключах, как "loby" и "maitenance" (это только из тех, на которые я внимание обратил.) Опять же - далеко не новость :) А как же мое предложение домножить это всё на vehicle.compoundModel.node('chassis'), который, ели я ничего не перепутал, является матрицей коррекции положения танка относительно Мирового ЭфираПространства?
  21. Планы есть, возможности нету -__- Спасибо Охотнику в Тени за разъяснения в то время, пока я не мог за компьютер попасть (уж что-то часто у меня BSoD'ы с KERNEL_SECURITY_CHECK_FAILURE'ом ;( ) На данный момент работаю над окончательной связкой белых/черных списков для Краскопульта, чтобы все к патчу выкатить (кстати, он все-таки 18-19-го, я прав?) А вот это вы, ребята, зря :) Если мод лежит в старой папке - это не значит, что он менее работоспособен. Ну вот написали ВГ game.py и personality.py так, что моды стартуют чуть ли не в конце загрузки клиента вообще, что мне теперь, юзеров терять из-за этого?) P.S. Краскопульт тоже будет по старому пути. Ну не могу я расписывать в 4 раза скрипт просто из-за того, что i18n работает не постоянно) Именно с этого начинался ButtonReplacer, и именно от этого я всеми силами пытался уйти. И именно поэтому он сейчас чуть ли не единственный мод на всё комьюнити, который остался в scripts/client/mods и требует CameraNode для запуска. Если патчинг лучше, чем "старый" загрузчик - я перепилю, с этим проблем никаких :) А насчет создания своего файла локали и неудобства настройки текстов в XML-конфиге - я эту проблему слегка по-читерски обошел. Я использую JSON-конфиги :D Все-таки для написания JSON-ки спец-софт (если таковым Notepad++ не считать) не требуется. Порог вхождения ниже. Рекомендую прочитать полный пост. Тут решил репостнуть важное.
  22. 'Ангарный Краскопульт aka HangarPainter v.0.0.1 ALPHA'
  23. В общих чертах к релизу 9.15.1 я готов. На данный момент жду подтверждения по добавлению очень красочного модуля, а также еще пару вещей (к примеру, собственно релиз 0.9.15.1 )
  24. Режим target и место для размещения chassis добавлены. Реализована подсветка танка в прицеле 6-ю прожекторами вокруг танка. Получилось достаточно удобно. На очереди "Ангарный Краскопульт" и некоторая работа по обслуживанию скриптов.
  25. UPD. Исправил выгрузку моделей. Теперь она не вызывает зависаний клиента (только лаги :P) и не рвет стек. Спасибо BigWorld.callback(). Также исправил вызов при прожатии клавиш. Теперь вызывается колесо загрузки с "Обновлением Ангара". Также закончил работу над target'ами в Фарах. На очереди "Ангарный Краскопульт" :)
×
×
  • Create New...