Jump to content
Korean Random

Polyacov_Yury

User
  • Content Count

    1785
  • Joined

  • Last visited

  • Days Won

    34

Polyacov_Yury last won the day on January 6

Polyacov_Yury had the most liked content!

Community Reputation

1401 ⭐⭐⭐⭐⭐

7 Followers

About Polyacov_Yury

  • Rank
    Танкоэлектрик
  • Birthday 02/28/1998

Basic information

  • Gender
    Мужчина
  • City
    Краснодар/Петергоф

Contacts

  • Nick
    Polyacov_Yury
  • Skype
    brain_drone

Recent Profile Visitors

15721 profile views
  1. Были мысли о том, чтобы сделать что-то похожее на то, что Странник делает в своём wottransmission. Влезть в bw_site.py и до загрузки вотмодов клиентом подсовывать ему старые моды. Суть только в том, что иногда микропатчи действительно что-то ломают. В основном потому, что их разработка начинается после выхода основной версии, и нет возможности предварительно выкатить их куда-нибудь типа ST8, чтобы мододелы имели возможность подготовиться ко всяким Линиям Фронта и прочему Хеллоуину до того, как это будет отдано пользователям на растерзание. Иначе же весь контент просто выкатывался бы при выходе основной версии.
  2. Соль ещё в том, что даже если в архиве папки с номером версии нет - один фиг его перезаливать надо. А если зальешь архив со старой версией - завернут.
  3. То есть, я правильно понял, что было сделано исправление, возвращавшее старое поведение (и пути к конфигам), но, поскольку все уже переехали на новую систему, это исправление пришлось откатывать?
  4. Хоттабыч, не перепостивай ссылки, плис. Сказать юзерам, что в шапке ссылка актуальна, вполне достаточно. И да, я про ГДрайв в курсе. Я просто ещё на новой машине не настроил заливку архивов, а это, в свою очередь, потребует правки ВСЕХ ссылок на ГДрайв. Надо найти, могу ли я сделать так, чтобы мой телефон не закачивал их в себя, но при этом я всё ещё мог их просто в папку Драйва положить и получить перманентные пермалинки... Да, можно. Добавляете в нужный блок строчку "inPostmortem": true P.S. Это хорошо :) И да, я только что архив перезалил. Буквожор буквы в конфигах поел немного (Юра криво написал регулярку для расстановки пробелов после запятых) :D
  5. Архивы перезалиты, теперь всё должно работать.
  6. Знаэмо. ВГ в этом патче загрузку конфигов сломали. Как раз пришёл с обеда фикс заливать.
  7. Я знаю, как это называется. Пост для юзеров написан в понятных им "терминах". Предлагаешь нагромоздить конвертацию в кортежи в ридер JSON-конфигов? Мысль, конечно, неплохая. Но применить можно не везде. А у меня всё же код довольно сильно унифицирован из-за (и благодаря) используемому PYmodsCore ConfigInterface API. В принципе, пока моды не выкатил - можно и посмотреть. Спасибо за наводку, половлю, кому из модов именно что нужна динамичность в хранилище данных из конфига. Не факт, что кому-то она и правда нужна. Не путай. Одно дело - писать data.get(key, []). Совершенно другое - def func(val=[]): return. То, о чём ты говоришь - это как раз второе. Первое же - вполне приемлемая (и, насколько я знаю, pythonic'ная) однострочная замена конструкции val = [] if key in data: val = data[key] Почитал. Как говорится, коротко о том, почему я с таким стажем до сих пор считаю себя джуном: на слово "юнит-тест" у меня реакция однозначная: "ШТОЭТА?". Да и не очень понятно, как я их к Танкам прикручу, со всем нашим манки-патчингом через overrideMethod.
  8. Итак, товарищи пользователи. Спустя два дня интенсивного кодинга и два вечера не менее интенсивной мигрени (вчера и сегодня) я переписал весь код мода практически с нуля. Ужался он всего на 25 строк, но это не отменяет того факта, что всякие нелогичности были из него вышлифованы. Оставался маленький проблема - почему-то после переписывания не хотели работать команды по горячей клавише (как выяснилось, я в одном месте тупо получал BigWorld.target().id, не проверив сначала, а не None ли мне вернули). Ради отладки я натыкал принтов в код и пошёл в очередной бой на общем тесте. И почти тут же словил нехилые фризы. Бой и без меня его турбослили со счётом 2:11 ко второй минуте, так что я даже не переживаю. Полез смотреть. Увидел кучу-кучу-кучу по кругу выводящихся одних и тех же объектов и фалломорфировал. Полез снова в код. И что же я вижу в обработчике горячих клавиш? commandsList = self.selectedCommands.get('hotkeyOnly', []) # получить список команд из блока hotkeyOnly menuConf, _ = self.findBestFitConf() # найти подходящую к текущей ситуации конфигурацию самого меню if menuConf is not None: # если такая есть: commandsList.extend(menuConf.get(state, [])) # в зависимости от state, определяемого тем, на что я смотрю, добавить к этому списку остальные команды for command in commandsList: # для каждой команды в получившемся списке if command and command.handleKeys(command.hotKeys, event.key): # если команда не пустая и были прожаты соответствующие ей клавиши command.onCustomAction(target.id if target is not None else None, True) # пнуть команду, мол, работай. Подвох не видно на первый взгляд, да? Вот и я его не видел несколько патчей. А подвох заключается в том, что при каждом нажатии любой клавиши в список hotkeyOnly складывался текущий список команд радиалки. Сколько примерно раз за бой ты нажимаешь на клавиатуру за бой, анон? Вот. Каждое нажатие - плюс минимум 6 объектов, которые надо проверить. За несколько боёв их набиралось достаточное количество, чтобы начать вызывать проблемы. Фикс вышел на три символа. Приписать "[:]" к первой строке в приведённом кусочке. То есть - создавать копию списка hotkeyOnly, которая автоматически удалится после завершения работы обработчика, вместо того, чтобы в памяти висеть и разрастаться. Энивей. Завтра патч выходит. Вот завтра новую версию вам и выкачу. Я, кстати, перепилил структуру работы мода в плане очереди выполнения команд, так что теперь ошибок типа "слишком часто тыкаете команды", если разными командами начать спамить, быть не должно. P.S. Посмотрел git blame по строкам, отвечавшим за обработку горячих клавиш. Они были неизменными с момента изначального написания мода. По крайней мере, в моём гит-репозитории, созданном 11.12.2016 года, код "в начале времён" уже лежит с багом. Так что утечка памяти и производительности при нажатии клавиш была в моде в течение почти 3 (ТРЁХ) лет. Но почему-то узнал я о ней относительно недавно... P.P.S. Перезагрузка конфига (достаточно было просто открыть окно настроек) помогала, потому что при перезагрузке "память" мода - а вместе с ней - и блок hotkeyOnly - полностью очищается и считывается из конфиг-файлов заново. Список с кучей копий одних и тех же команд тупо удаляло, поэтому производительность возвращалась.
  9. Обновление будет, не беспокойтесь. Я, на самом деле, уже его сделал, но чтобы его починить, пришлось малость переорганизовать то, что там в коде творилось. Теперь я хотя бы быстро могу найти ту часть, в которой происходит то, что мне нужно, ага. А вообще совет. Заглядывайте на https://github.com/PolyacovYury/PYmods/network и проверяйте названия коммитов. Если что-то требовало ремонта и уже починено под патч - оно всегда будет в ветке develop_CT.
  10. Всем, у кого лагает данный мод. Я уже видел сообщения на вотспике, присылал админ сайта. Спасибо, что показали недавно добавленный ответ на него, он проливает чуть больше света на происходящее, но я всё ещё не понимаю, что там конкретно творится - в плане, что там такого можно делать лагучего. Разве что шалит обработчик нажатия клавиш... В любом случае - заглянув в код после долгого времени, я обнаружил, что его неплохо бы и переписать. Работа с конфигами мне в основном нравится, только не очень понятно приписывание слова "Menu" к названиям секций, да и секция tankSpecific выглядит более чем избыточно.. В любом случае, я по уже сложившейся традиции сделаю так, что вы, как пользователь, не должны будете сидеть и конфиги править. Мод при первом запуске сам всё сделает. А вот всё остальное может и должно быть переписано. Надеюсь, что в рамках переработки я смогу исправить лаги, но мне, как обычно, потребуется ваша помощь - я банально не смогу достаточно качественно оттестировать мод. Не в последнюю очередь потому, что я недавно обновил железо, и теперь танки на Ультрах летают. И да, я вряд ли смогу выкатить переработанную версию раньше выхода 1.6.1.0, который произойдёт во вторник. Эта неделя у меня более-менее расписана вся вплоть до воскресенья, а в понедельник у меня пары. А даже если и успею - один фиг придержу. Лучше покатаю лишнюю пару боёв да отвалившийся функционал половлю лишний раз.
  11. Можно и без realpath, на самом деле, но да. Не ./mods/, а ../mods/. В принципе, благодаря этому теперь обращение к mods/configs/ теперь одинаковое что для os, что для ResMgr - то бишь через две точечки.
  12. Итак, товарищи. Хорошо, что я ещё слежу за обновлениями игры... Сегодня ВГ выкатили новую прем-машину, к которой помимо новой озвучки приделали, внимание, отдельное музыкальное сопровождение. Я, естественно, заинтересовался и полез в код. Оказывается, эти sneaky fucks добавили новую озвучку экипажа ещё в 1.6.0.7, а я её не заметил, потому что это было сделано в рамках полного рефактора кода, отвечающего за включение этих самых озвучек. (если бы заметил - можно было бы тааакооой слив инфы устроить, ууух).. Но это сейчас не важно - мой код от этого не сломался, потому что то, что там происходило, просто перенесли в другой файл, вынеся из кода в xml-очку все параметры озвучек. Теперь его ещё вдобавок можно обучить эти самые озвучки оттуда вычитывать автоматически вместо того, чтобы ручками добавлять. Важно другое. Как я уже сказал, в игре официально появился код для переключения музыкального сопровождения. То есть моды, заменяющие музыку, могут мало того, что значительно упроститься (вместо кучи ивентов для каждой карты нужно всего 8, по количеству ключей в wwmusicSetup), так их ещё и прямо из клиента переключать можно было бы. Собственно вопрос. Переключение музыки внести в VoiceOverrider, переименовав его в AudioOverrider (потому что он теперь overrider'ит не только voice) или сделать новый отдельный мод? @Andre_V, ты у нас озвучечник главный, тебя в основном спрашиваю.
  13. Отправил архивы на перезаливку. ЛФ не грузилась из-за AppreciationBadges.
  14. @Mixaill Слушай, а есть возможность через тебя передать разрабам немного своих громких ФЫР в сторону ResMgr? Он, как бы так выразиться, несколько обнаглел. И обленился. Я сейчас сижу ковыряюсь в нём немного. У меня выбора нет - BanksLoader и Skinner сами себя не починят. Так вот. Через него невозможно контролируемо создать полностью пустой файл, в который можно было бы что-то написать. Надо сначала with open(path, 'w') as f: f.write('Notice me!'), только потом sect = ResMgr.openSection(path); sect.asBinary = 'There\'s your data.'; sect.save(). Да, пустой файл он не увидит - openSection() None вернёт. А если делать ResMgr.openSection(path, True) - мало того, что в файле будет неудаляемый тег <root>, так ещё и не определить, куда он будет всунут потом - может быть в res_mods/1.x.x.x, а может и в res/ попасть... UPD. Больше скажу. Если существующий не-XML файл сделать openSection(), в него что-то написать, а потом сделать save() - то он его в рабочий каталог (wot_dir/win32) положит. Зависит всё от того, начинается path с './' или нет. Короче - боль и страдания. Непустые валидные XML-файлы test_file_1.xml и test_file_2.xml лежат в res_mods/версия. Прогоняем код: sect = ResMgr.openSection('test_file_1.xml') if sect is None: print 'test 1 is None' else: sect.writeString('test', 'test1') sect.save() sect = ResMgr.openSection('./test_file_2.xml') if sect is None: print 'test 2 is None' else: sect.writeString('test', 'test2') sect.save() На выходе имеем: 2019-09-16 22:04:17.056: INFO: test 2 is None а test_file_1 заспавнился в рабочем каталоге (wot_dir/win32), сохранив в себе всё, что было в файле в res_mods/версия. Оба файла (соответственно, test_file_1.xml и test_file_2.xml), находящихся в res_mods/версия, никак не изменились.
  15. Видимо, да. Только непонятно, в чём разница, зачем на 64-битную машину качать 32-битную версию и почему ВГ не смогли в детект битности системы.
×
×
  • Create New...