Jump to content
Korean Random

Leaderboard

Popular Content

Showing content with the highest reputation since 01/08/2025 in all areas

  1. Всем привет Что случилось Для ускорения загрузки клиента в WoT 1.27.1 была реализована новая подсистема Persistent Data Cache, которая кэширует результат обработки XML файлов. В результате время загрузки клиента уменьшается вплоть до двух раз на ряде конфигураций ПК. Как это влияет на модификации Если модификация каким-либо образом меняет кэшируемые данные, то при наличии уже созданного кэша результат может быть не применен; После удаления модификации закэшированные данные могут негативно влиять на работу клиента. Как это работает Исходный код: https://github.com/izeberg/wot-src/tree/CT/sources/res/scripts/common/persistent_data_cache_common При первом запуске клиента после обновления игры или смены языка будет создан кэш, который включает в себя следующие компоненты: decal_map_config path_builder vehicles_list vehicles_cache tankmen_skills tankmen_nations arena_type personal_missions_season personal_missions_tile personal_missions_campaigns personal_missions_operations personal_missions customization_quests static_quests gui_items_params area_destructibles в дальнейшем список может быть расширен Кэш будет сохранен по пути <каталог клиента>/data.wgpdc. Для сброса кэша достаточно удалить этот файл. Что делать разработчикам модификаций Задача модификаций -- не изменять кэшируемые данные до того как кэш будет успешно записан на диск. Наиболее простой способ этого достичь -- не трогать кэшируемые данные до наступления состояния GameplayStateID.LOGIN Более сложный (и нерекомендуемый) путь -- дождаться пока DefaultPDCManager закончит сериализацию данных. Пример реализации подхода: https://gitlab.com/wot-public-mods/branded-tanks/-/commit/c9d7509f31c5db3e977130cd08ba5c32ed999559 Что делать разработчикам сборок модификаций Сборки модификаций (модпаки) могут очищать кэш в процессе установки и удаления. Для этого можно использовать библиотеку OpenWG.Utils (пример очистки кэша: https://gitlab.com/openwg/openwg.utils/-/commit/b4d220be9daccbe60d299dc9a914604bbcd9fd43 ) или же любым иным методом удалить файл кэша при его наличии.
    6 points
  2. MT variant updated to 1.32.0.0 micropatch 06.02
    3 points
  3. Версия xvm_12.0.0_0071_master_5f69f7eb1fde924230f15ac3d25884e585739f54. Уехал значок моего танка. Причем он движется на одном расстоянии при моем движении. python.log xvm.log
    3 points
  4. scripts/client/gui/game_loading/view/splash_screen.py def createSplashScreen(preferences): if mustShowSplashScreen(preferences): # <- Удалить, чтобы воспроизводить при каждом запуске. return SplashScreen(preferences) else: return # Получится так def createSplashScreen(preferences): preferences.writeString('introVideoVersion', '0') # <- Делал на всякий случай, может не необходимо. return SplashScreen(preferences) Придется менять оригинальный файл, ибо загрузка модов идет после запуска клиента. В старом экране логина я писал свой класс. наследующий оригинальный SplashScreen и подменял его через game_loading_config.xml. Но тут это будет излишним.
    3 points
  5. 3 points
  6. @HEKPOMAHT и в правду, не во всех местах есть поддержка макросов а-ля cfg:// или xvm://. Но там дело в том, что клиент ожидает, что атласы будут находится в папке gui/flash/atlases. Изменить данное поведение нельзя. Также туда нужно конкретно название атласа, а не путь.
    3 points
  7. Всем привет! На следующей неделе выйдет обновление для World of Tanks под версией 1.27.1. Даты выхода по регионам: ASIA: 13 января NA: 14 января EU: 15 января Каталоги для размещения модификаций как обычно меняют названия: ./mods/1.27.1.0/ и ./res_mods/1.27.1.0/ --- Hey all! World of Tanks patch 1.27.1 is going to be released since January, 13 Release dates: ASIA: January, 13 NA: January, 14 EU: January, 15 The mods folders will be renamed to: ./mods/1.27.1.0/ and ./res_mods/1.27.1.0
    3 points
  8. Приветствую @SkepticalFox! Нужна помощь с фиксом под свежий клиент wotver: 1.32.0.4268 mapname: 07_lakeville unpackhd: True debug: True AssertionError: (80857036, 80879116, 'BSMI') Интересно узнать как зареверсить, чтобы в будущем помочь. Если я правильно понимаю, надо в экзешнике игры структуру соответствующую найти, пока не понял методу для этого действия. UPD: С этой разобрался, там оказалось проще. BSMI добавили поле структуры через нулевой разделитель: _fields_ = [ (list, 'transforms', '<16f'), (list, 'chunk_models', ChunkModel_v1_0_0), (list, 'visibility_masks', '<I'), (list, 'bsmo_models_id', '<2I'), (list, 'animations_id', '<i'), (list, 'model_animation', ModelAnimation_v1_16_1), (list, '6_40', '<10I'), (list, '7_4', '<I'), (list, '8_12', '<3I'), (list, '9_4', '<I'), # always 0 (list, '10_20', '<5f'), (int, '11_4', '<I'), (list, '12_4', '<I'), (int, '13_4', '<I'), # <- Added (list, '14_4', '<I'), # <- Added ] Но дальше каскадом идёт апдейт другой структуры BWLC. С этим сложнее, так как не знаю типов данных в структуре _fields_ = [ (list, 'pulse_light_list', PulseLight_v1_32_0_RU), # Previous _size_ = 100, New _size_ = 112 (list, 'pulse_spot_light_list', PulseSpotLight_v1_32_0_RU), # Previous _size_ = 104, New _size_ = 116 (list, 'frames', '<2f'), ] # <zipfile.ZipExtFile name='spaces/07_lakeville/space.bin' mode='r'> # print((i, repeat, struct_size, block_start, repeat * struct_size, block_start + repeat * struct_size)) # (0, 4, 112, 83563221, 448, 83563669) # (1, 0, 116, 83563677, 0, 83563677) # (2, 84, 8, 83563685, 672, 83564357) Есть гипотеза, что добавили по 3 поля длиной по 4 байта - float, int. Остальные не смотрел, но можно это легко сделать в качестве дебага переписать код для Base_JSON_Section @row_seek(True) def from_bin_stream(self, stream, row): stream.seek(row.position) self._data = {} i = 0 while True: if stream.tell() >= row.position + row.length: break struct_size, repeat = unpack('<2I', stream.read(8)) block_start = stream.tell() print((i, repeat, struct_size, block_start, repeat * struct_size, block_start + repeat * struct_size)) if struct_size > 0: if repeat > 0: data = stream.read(repeat * struct_size) self._data[f'field_{i}_raw'] = [data[i:i + struct_size] for i in range(0, repeat)] else: self._data[f'field_{i}_raw'] = [] else: # Грязный хак, пока не устаканим модельку. stream.seek(block_start - 4) self._data[f'field_{i}'] = repeat i += 1 UPD2: Имея офсеты удобно анализировать данные простым инструментом, имея значения сдвигов блоков со схожими структурами данных. xxd -s 80569988 -g 4 -d -l 4000 -c 64 space.bin Есть еще полезный инструмент для более качественного реверса - ImHEX, рекомендую.
    2 points
  9. 1. Бага с иконками никак не влияет на запуск и работу клиента ! 2. XVM вроде как починился (обновитесь до крайней версии). 3. Мои моды с иконками танков для ушей я еще вчера пересобрал и они тоже работают корректно.
    2 points
  10. Эхх... Ранова-то ты качнул иконки для ушей ... Там есть багуля - на миникарте указатель твоего танка (стрелочка) смещен на пол карты Сейчас переделываю, как перезалью отпишусь
    2 points
  11. 2 points
  12. Я так сделал для себя. Я решил вас уведомить о работоспособности.
    2 points
  13. Пробуте так: закрыть клиент удалить папки mods и res_mods со старыми модами. Находятся в папке с игрой (например, C:\Games\Tanki) обязательно проверить целостность клиента скачать мод XVM архив установить вручную, скопировав обе папки mods и res_mods в папку с игрой C:\Games\Tanki
    2 points
  14. WoT variant updated to 1.27.1.0 micropatch 22.01 MT variant updated to 1.32.0.0
    2 points
  15. Oops. really. That should be swf/xvm actually. I messed up. Commit message depends on the type of changed files in commit actually. @Bazooka also those are called naming conventions exactly, I personally use something like https://www.conventionalcommits.org/en/v1.0.0/
    2 points
  16. Опять окно изменения названия темы стало маленьким:
    2 points
  17. Вышло обновление программы 1.2.1 --------------------------------------------- [Upd] Учтено переименование файла WorldOfTanks.exe в Tanki.exe в клиенте игры от Lesta
    2 points
  18. Қазақ болсаң... Қазақ болсаң - алысқанды алып ұр, Құлап қалсаң-аяғыңнан қайта тұр, Бабаң батыр,осал емес берілме, Я Алла деп ,ұраныңды айта тұр, "Қазақ болсаң лайк бас, менің конфигурациямен ойна ...)" Общее: За основу взят ENGiAND's - XVM.xvmconf Hitlog, damaglog взят НЕКРОМАНТ Инструкция: Скачать и распаковать res_mods в папку с игрой, предварительно удалив старую папку res_mods Скачать XVM с официального сайта и установить, с заменой файлов Описание конфигурации: - "Метки на стволах" отображаются с правой стороны полосы здоровья в виде: "/" //"format": "{{marksOnGun}}" - Определение типа танка на маркерах "барабанный/не барабанный" Сборник py_macro от ktulho //"format": "{{py:isAmmoClip('{{name}}')?&#x10B;}}" - Окрас в красный цвет ХП% по достижению нижнего порога в 15% //"format": "{{hp}}|{{hp-max}}<font color='{{c:hp-ratio}}'>-{{hp-ratio}}%</font>" - Отображение римскими цифрами техники уровнем выше //"format": "{{level>{{my-level}}?{{rlevel}}}}" По нажатию ALT: кол-во боев на танке | % побед на танке общее кол-во боев | общий % побед никнейм рейтинг (wn8) | эффективность на данном танке (xTE) //"format": "<font color='{{c:t-battles}}'>{{t-kb%3.01f~k|-.-k}}</font>|<font color='{{c:t-winrate}}'>{{t-winrate%2d~%|--%}}</font>\n <font color='{{c:kb}}'>{{kb%2d~k|--k}}</font>|<font color='{{c:winrate}}'>{{winrate%2d~%|--%}}</font>" //"format": "<font color='{{c:wn8}}'>{{wn8%2d~|--}}</font>|<font color='{{c:xte}}'>{{xte%2d~|--}}</font>" Скачать конфигурацию: res_mods.zip Скрины: основной вид: по нажатию Alt: Маркеры над танками:
    2 points
  19. WoT variant updated to 1.27.0.1 micropatch 19.12
    2 points
  20. ✯✯✯ ≈ Версия игры 1.32.0.0 ≈ ✯✯✯ Все моды собраны в новом формате - файл с расширением wotmod, и теперь размещаются не в "res_mods", а в "mods" Содержимое архива распаковать в ...\World_of_Tanks\mods\[версия патча]\ Для удобства все моды будут сохраняться в папку ...\xZirus\ !!! ВНИМАНИЕ !!! Начиная с версии 1.10 моды обновляю по запросу, т.е. вы в списке ниже находите интересующий вас мод(ы) и пишите об этом в теме. Для удобства над кнопкой СКАЧАТЬ указана версия под которую был собран этот мод, при этом фон выделен цветом: [1.22.0.0] - мод полностью адаптирован под текущую (указанную в шапке) версию. [1.22.0.0] - мод от предыдущих версий, работает (не приводит к сбоям), но не актуализировался. [1.22.0.0] - мод работает крайне не корректно или вовсе приводит к сбоям/вылету игры. ✯ Загрузочный экран ✯ ✯ Анимированное колесо загрузки ✯ ✯ Интерфейс ✯ ✯ Экран загрузки боя и по нажатию Tab ✯ ✯ Финальная статистика ✯ ✯ Иконки танков ✯ История изменений
    2 points
  21. Здрасте мальчишки и девченки сегодня обнаружилось после микрообновы вылет при заходе в бой , поэтому обновил в шапке темы тоже обновлены ссылки на архивы Под патч 1.32.0.0 https://kr.cm/f/t/49227/ Mods_full_PNG_Icons - Конфиг плюс некоторые моды кугл диск Mods_full_PNG_Icons Конфиг плюс некоторые моды на яндекс диске xvm_config_bes_1 __- сам конфиг на яндекс диске xvm_config_bes_1 _ - конфиг на кугл Конфиг ссесионой статистики Мод "Потерянное время" - статистика за сессию, по танкам, по картам от ShuraBB Скин _bes_1 TimeSpent_config _bes_1
    1 point
  22. Build: 12.0.0_0079 Не рисует на миникарте. Лапочки работают. python.log xvm.log
    1 point
  23. Помните пост от ноября 2024 года? Пришла пора реализовывать то, что было покрыто тайной и мраком. Ангар Near_You Team от команды «WoT это Классика!» уже здесь. https://wot-classic.ru/news/near_youteam_hangar/
    1 point
  24. Ну странно что мне сразу в голову не пришло. Проверил и на дефолте так-же было. Но это я не снёс все моды. Потом сел и начал думать что я такое устанавливаю что имеет доступ к ангару, и понял что это PMOD. Полез в файлы конфига и нашёл ↓↓↓ ...\mods\configs\pmod\hangar.json там тоже оказывается есть дублирующий функционал XVM. Мне PMOD только для сессионнки нужен был, а он вон оно чё творил. Спасибо за помощ!
    1 point
  25. Всё что у меня есть на текущий момент. Ну точно меньше трёх дней, тк за 3 дня этот сервер в принципе собрали с нуля и установили в ДЦ.
    1 point
  26. Yes. Add this cote to end of Games\WOT\res\packages\gui-partX.pkg\gui\gameface\js\index.js window.engine.on('Ready', () => { const style = document.createElement('style'); style.innerHTML = ` .highlight-rect { box-sizing: border-box; position: absolute; border: 2px solid cyan; pointer-events: none; z-index: 100000; display: none; } .info-div { box-sizing: border-box; position: absolute; background-color: rgba(0, 0, 0, 0.7); color: #fff; padding: 10px 10px; border-radius: 10px; pointer-events: none; font-size: 1em; transform: translate(0, -100%); z-index: 100000; line-height: 1.2; } .info-div p { margin: 0; } .target-point { position: absolute; width: 5px; height: 5px; background-color: #ff000059; border-radius: 50%; pointer-events: none; z-index: 100000; } `; document.head.appendChild(style); const highlightRect = document.createElement('div'); highlightRect.className = 'highlight-rect'; document.body.appendChild(highlightRect); const infoDiv = document.createElement('div'); infoDiv.className = 'info-div'; document.body.appendChild(infoDiv); const targetPoint = document.createElement('div'); targetPoint.className = 'target-point'; document.body.appendChild(targetPoint); document.body.addEventListener('mousemove', (event) => { const element = document.elementFromPoint(event.clientX - 15, event.clientY - 30); targetPoint.style.left = `${event.clientX - 15}px`; targetPoint.style.top = `${event.clientY - 30}px`; if (element) { infoDiv.style.left = `${event.clientX + 20}px`; infoDiv.style.top = `${event.clientY - 30}px`; infoDiv.innerHTML = ''; let parent = element; while (parent) { const parentInfo = document.createElement('p'); parentInfo.textContent = `${parent.tagName} > ${parent.className} #${parent.id}`; infoDiv.appendChild(parentInfo); parent = parent.parentElement; } } if (element && element !== document.body && element !== document.documentElement) { const rect = element.getBoundingClientRect(); highlightRect.style.left = `${rect.left}px`; highlightRect.style.top = `${rect.top}px`; highlightRect.style.width = `${rect.width}px`; highlightRect.style.height = `${rect.height}px`; highlightRect.style.display = 'block'; } else { highlightRect.style.display = 'none'; } }); }); gui-partX.pkg is regular zip archive, you can open it using 7zip index.js can be located randomly in gui-part1.pkg or gui-part2.pkg or gui-part3.pkg Html picker is 20px above cursor (small red dot) to prevent hovering
    1 point
  27. LOL, ask DumbGPT about WoT modding, and you'll see how wrong you are. It doesn't know anything about such niche topics. I use AI only to correct the formatting, grammar and typos in my messages, nothing more than that.
    1 point
  28. @HEKPOMAHT надо будет подождать релиза 1.32 на Lesta :) Но вообще оно уже есть на картошке под hangar/allowChannelButtonBlinking
    1 point
  29. Документации в сети нет. чтобы понять, как это работает, вам придется изучить исходный код игры. работа с досье в WoT может быть очень сложной и потребует предварительного знания Python, основных методов шифрования, методов сжатия данных и умения перепроектировать существующие методы, чтобы получить человекочитаемые данные. с каждым патчем WG становится все сложнее и сложнее. удачи.
    1 point
  30. @Mixaill , декабря какого года?.. Возможно, ошибся текстом?
    1 point
  31. v2025.01.09.1 owg_wot_detect: добавлен вывод информации о состоянии PDC кэша (World of Tanks >= 1.27.1) demo: добавлен пример очистки кэша для установке и деинсталляции добавлена функция WOT_GetClientCachePresent добавлена функция WOT_GetClientCacheSupported добавлена функция WOT_ClearClientCache OpenWG.Utils_v2025.01.09.1.zip
    1 point
  32. Played without problems from Europe. The only thing they removed all languages from the client, only Russian and Belarusian remained.
    1 point
  33. @Armagomen_UA Loving this mod! Keep it up!
    1 point
  34. Может получилось не очень, но я первый раз пробовал, для себя и решил поделиться. кстати, за помощь спасибо Kapitoshka Most likely, you should work there too. Most likely, you should work there too. Most likely, you should work there too.
    1 point
  35. Причину нашел, сегодня обновлю. ЗЫ: Я же говорил, что проблема в Вынь7, не все стандартные опции команды CreateProcess она почему-то переваривает. Пришлось методом перебора искать, какой флаг кладёт программу. Вышло обновление программы 2.2.4 1. Исправлено зависание консольной версии программы в Windows 7 2. Учтено переименование файла WorldOfTanks.exe в Tanki.exe в клиенте игры от Lesta
    1 point
  36. Обновление 1.4.2 Список изменений: 1. Учтено переименование файла WorldOfTanks.exe в Tanki.exe в клиенте игры от Lesta 2. Восстановлена работа функции загрузки перечня файлов игры с сервера обновления Lesta 3. Добавлена возможность скачивания дистрибутивов Lesta Game Center и Wargaming Game Center
    1 point
  37. 1 point
  38. Второй вариант, пожалуйста :) https://github.com/PolyacovYury/ModPacker Буквально только что домигрировал код со старых костылей на утилиты в топике. Coбираю им свои Тёмные Подвалы в кучку. Буду обновлять только пак, архивы останутся в лимбе. (да, я собираюсь обновить свои поделия на 1.28/1.25. Зря отпуск брал, что ли?)
    1 point
  39. from gui.prb_control.dispatcher import g_prbLoader # Диспатчер. prbDispatcher = g_prbLoader.getDispatcher() # Название режима боя, исходя из constants.PREBATTLE_TYPE. modeName = prbDispatcher.getEntity().getEntityType() # Проверка на взвод. isInSquad = prbDispatcher.getFunctionalState().isInUnit() and self.prbEntity.getEntityType() in PREBATTLE_TYPE.SQUAD_PREBATTLES
    1 point
  40. Здесь будет происходить анализ .fxo файлов .fxo - zip архив, который в себе содержит скомпилированный шейдер(effect - результат компиляции ID3DXEffectCompiler - до 0.9.15), hash(MD5?) и зависимости(depends) Довольно странно, что нигде не встречал разбор этих файлов - придется это сделать мне Самые последние результаты исследования здесь: https://bitbucket.org/SkepticalFox/wot-shader-utils/src
    1 point
×
×
  • Create New...