Jump to content
Korean Random

Leaderboard


Popular Content

Showing content with the highest reputation since 06/29/18 in all areas

  1. 24 points
    (See English translation below) Всем привет, Мы подготовили специальную версию редактора ангаров для мододелов, качать здесь. Предоставляем "как есть", в редакторе могут быть баги, странные костыли и неработающий функционал, но в целом он вполне работоспособен, и в нем, к примеру, делался ангар для мода Girls und Panzer. В случае возникновения вопросов рекомендую обращаться к @RAGEQUIT, у него уже есть опыт работы с редактором. ========== Hey guys, We've prepared a special version of our internal hangar editor for mod creators, download link. World Editor is provided "as is", and it may contain bugs, broken features and generate lots of non-relevant error messages. Still, it should be operable; for example, mods like Girls und Panzer and Independence Day Garage were created using this particular version. If you have any questions, please ask them in this topic.
  2. 17 points
    ModsSettingsAPI Инструмент для создания меню настроек модификаций Автор модификации: @IzeBerg ModsSettingsApi - это модификация клиента игры World of Tanks, которая предоставляет сторонним разработчикам инструментарий для создания удобного меню настроек. Основные этапы работы модификации заключается в следующем: При загрузке клиента игры modsSettingsApi загружает файл сохраненных настроек сторонних модификаций. Если файл отсутствует - будет создан новый. Затем modsSettingsApi ожидает подключения к себе сторонних модификаций посредством программного интерфейса. Для генерации меню настроек, сторонняя модификация должна отправить в modsSettingsApi шаблон, содержащий в себе описание необходимых для отображения графических элементов. Кроме шаблона сторонняя модификация должна отправить ссылку на функцию, которая будет вызываться при любом изменении настроек стороннего мода. При необходимости обработки нажатия дополнительных кнопок модификация должна отправить ссылку на функцию, которая будет вызывается при нажатии на кнопку с передачей текущего значения. При изменении настроек modsSettingsApi будет вызывать переданный модификацией метод с новыми параметрами. При использовании кнопок, ModSettingsAPI будет вызывать переданный модификацией метод с текущим параметром и его значением. Полное описание работы модификации с примерами можно прочитать здесь: http://wiki.wargaming.net/ru/ModsettingsAPI Официальный репозиторий модификации на Bitbucket: https://bitbucket.org/The_IzeBerg/modssettingsapi/ Ссылка на скачивание: https://bitbucket.org/The_IzeBerg/modssettingsapi/downloads/ Репортить баги можно сразу на Bitbucket используя багтрекер. Предложения по улучшению модификации можно посылать туда же, создавая тикет с заголовком [Suggestion] и тэгом [Proposal]
  3. 15 points
    Для меня танки — это развлечение и отдых. Мне важно удовольствие от процесса игры. Я не вижу смысла тратить время и силы на запоминание с какой скоростью заряжается WZ-111 1-4, сколько дамага мне в лоб может выписать Leo или засвечусь ли я, если выстрелю сейчас в 45TP. Цель создания этого конфига — лучше понимать, что происходит на поле боя и тратить на это меньше мозгового топлива. Конфиг частично написан мной, частично взят из других конфигов и изменен, а частично просто честно украден у Некроманта и оставлен как есть. Я не программист, поэтому в коде много ереси. Буду потихоньку допиливать. Надеюсь, кому-то с этим конфигом будет играть приятнее. Конфиг поддерживает только русский язык и разрешение 1920×1080, другие разрешения не тестировал. В будущем сделаю. Спасибо Некроманту за конфиг-донор, ktulho, night_dragon_on и Kotyarko_O за скрипты и всем разработчикам xvm за наше счастливое детство. Окно загрузки боя Окно статистики по клавише Tab Три левых числа - статистика конкретного танка, три следующих - статистика игрока в целом. Количество боев, рейтинг и процент побед. Яркий маркер слева говорит о том, что у игрока установлен xvm и включены сервисы xmqp. Обычные уши и хитлог Слева от иконки количество хп. В хитлоге верхняя часть показывает ваш дамаг, нижняя - дамаг с вашей помощью. Уши по клавише Alt Слева направо: Статистика wn8, статистика по танку xte, процент побед, количество боев. На иконке время перезарядки и дамаг танка. Прицел Слева хп, справа информация о снаряде и перезарядка. Сверху дальность, становится зелёной, если расстояние до цели больше ее обзора. При повреждении критически важных модулей или членов экипажа рядом с точкой прицеливании появляется соответствующая иконка и можно отремонтироваться просто кликнув на неё. Прицел при наведении и лампочка Если цель пробьется, прицел становится зеленым, если не пробьется - красным. Если хз, то желтым. Зеленые цифры показывают приведенную броню в точке прицеливания. Артиллерийский прицел В арт-прицел добавлены время полета снаряда и время сведения. Круги помогают рассчитать упреждение по движущемуся танку. Настройки прицела в клиенте игры: Маркеры У противников на полосе есть два числа. Слева время перезарядки. Если оно приглушенное, то вы зарядитесь быстрее противника. Если ярко-белое, то он быстрее. Справа его дамаг. По альту показывается ещё и бронепробитие. Если противник шотный, над ним загорается ромбик. Дамаг-панель Миникарта Ангар В обычной карусели есть фон, который позволяет мельком понять тип танка. И количество опыта до полной прокачки. Карусель по клавише Alt Слева: средний дамаг, процент побед, рейтинг, количество боёв. Справа процент метки на стволе и количество опыта до полной прокачки. Дерево исследований Скачать xvm-ddar-config-20.05.19.zip История изменений
  4. 15 points
    Версия 055 (2018-12-11) Что нового: поддержка 1.3.0.0 исправлена загрузка ресурсов для колесной техники (Roman Astafev) Скачать
  5. 14 points
    Поддержать развитие мода Visa 4276 7400 1529 7732 Qiwi +7 914 802 18 59
  6. 13 points
  7. 13 points
    Доброе утро! Скоро данной модификации будет 5 лет. Мод тех времен, когда Серб говорил - ужас какой, а Крута - страдай пидарас, твои мучения радуют нас) Тогда, 5 лет назад, я делал для себя калькулятор и была идея опубликовать для всех. logos.swf - тогда с этого все начиналось. К дню рождения мода, то есть, публикации на официальном форуме и на форуме koreanrandom - подготовлю немного ностальгии и выложу весь проект в исходных кодах.
  8. 12 points
    Как-то я бродил по интернетам и заметил, что Wargaming предлагают присоединиться к путешествию во времени и посмотреть на клиент образца 2012 года. Что же, нам тоже есть что вспомнить :) Итак, XVM Classic, на базе XVM 1.7 от 12 марта 2012 года. Изменения относительно классического XVM 1.7 * адаптированно под современные серверы XVM API * используется рейтинг WN8 вместо EFF * изменена работа флага /debug у wot-xvm-proxy. Теперь он не запускает клиент самостоятельно, а просто ждет, пока не нажмут Enter. Может быть полезно для запуска реплеев. Установка 0. Установите классический WoT: https://wotclassic.ru/ 1. Установите MSVS Redist 2017 x64 https://aka.ms/vs/15/release/vc_redist.x64.exe 2. Установите Dokan_x64.msi из каталога Dokan 3. Скопируйте содержимое каталога Client в каталог WoT 4. Если необходимо, настройте конфигурационный файл: `\res\gui\flash\XVM.xvmconf` Можно выбрать готовый из каталога `Sample` 5. Для отображения статистики необходимо запускать файл wot-xvm-proxy.exe (игра будет запущена автоматически). ВАЖНО. Вы также должны хотя бы один раз зайти в современный клиент (WoT 1.4.1) с установленным XVM, чтобы статистика начала отображаться. Скачать XVM-Classic_1.7_2.zip История версий * 1.7_3 * исправлено отображение OTM * 1.7_2 * исправлен хардкод пути к WoT * исправлена опечатка в слове lychshe * 1.7_1 * первый публичный выпуск Оно даже работает XVM-Classic_1.7_3.zip
  9. 12 points
     Обновление конфига: bitbucket.org
  10. 12 points
    This is a quick Link to all of Hawg's 1.1.0 Updated mods , 64 Updated mods that are on Hawg's Main Project Page XVM (5) Damage Mods (9) Mini Maps (4) HawgXVM Glass Damage Panel Hawg's MiniMap HawgPack Needle Damage Indicator V2 Spg - TD -Passive Scout- Tactical Minimap's Hawg's XVM Nickname Icons V1 Damage Indicator Tactical Battle Loading MiniMap's Arty MiniMap Aim Paint Balls Damage Passive Scout Tactical MiniMap Hawg & 150 6th Sense XVM Bulbs V2 Damage Indicator Target Arrow V1 Needle Color blind Damage Indicator V1 Sixth Sense (7) Target Arrow's V2 I am Groot 6th sense &  + Sound ColorBlind Paint Ball Damage Contours Icons (1) Achievement Medals 6th Sense Real Time Contour Icons ++ 101 Sixth Sense Sound's Mark of Excellence (2) NEW Hawg & 150 6th Sense No XVM Bulbs Army Rank Mark Of Excellence Consumable,Shells,Equipment Informer Suaron 6th sense + With Sound Mark Of Excellence HawgPack Lite Sabaton 6th sense Cobra 6th sence Tank Carousel (4) Sky & Clouds (1) Tank Carousel LED Lights Blue Sky Carousel Flags Remover Battle Results ( 18 ) Carousel Flags Other (8) BW Battle Results No Carousel Tank Icons Radial Menu Tank Battle Results Login (3) Battle Timers Darth Vader Battle Results Game Loading Screens Colored Pre Battle Timer Cobra Battle Results Hawg's Login Screen Shells By Lynnpaul Pin Up Girl Battle Results Hot Beach Patry Hawg's Flag Emblems Simple Black Window Battle Results Hawg's UnderWater Timer Simple Rustic Steel Battle Results Crewman (1) Base Cap Circles V.1 Leviathan Battle Results Invisible Man Crewman Base Cap Circles V2 Skulls Battle Results Wonder Woman Battle Results Grim Reaper Battle Results Fire Battle Results Marvin The Martian Battle Results USA Flag Battle Results Sabaton Battle Results Trump's Battle Results Minnion Battle Results UK Flags Battle Results
  11. 12 points
    NetStatisticsModules(NSM) Версия: 1.2.5 | Ссылка: Git-Hub Пакет NSM это библиотека модулей с открытым исходным кодом для мододелов, в которой реализованы основные инструменты для получения статистики игроков с серверов WG и XVM и различные математические функции, такие как расчет того или иного рейтинга, или показателя, расчет шансов на победу и т.д. Библиотека периодически обновляется и дополняется. Состав пакета: xvm_statistics - модуль для получения статистики игроков с сервера XVM wg_statistics - модуль для получения статистики игроков с сервера WG rating_calculation - модуль для расчета рейтингов игроков и различных статистических показателей victory_chances - модуль для расчета шансов на победу в бою При использовании функций и эвентов из модулей статистики, обращающихся к серверам WG-API и XVM-API, необходимо указывать <application_id> вашего приложения. Чтобы его получить достаточно зайти на сайт https://developers.wargaming.net и зарегистрировать свой мод как автономное приложение, после чего ему будет присвоен токен из 33 символов, это и есть <application_id>. Используйте его при работе с библиотекой и все ваши обращения к серверам будут идентифицироваться посредством этого токена. В случае с WG-API вы также сможете в своем личном кабинете наблюдать статистику запросов вашего мода. Для применения пакета достаточно положить его в папку mods\X.X.X\. После чего можно импортировать из этого пакеты все необходимые вашему моду функции и эвенты и использовать их в коде своего мода. Ниже дается подробное описание функций и эвентов и примеры их использования по каждому из модулей NSM. Модуль: xvm_statistics События: g_XVMStatisticsEvents addStatsAccountBecomePlayer - подписаться на событие AccountBecomePlayer, которое возвращает словарь со статистикой игрока по аккаунту и по танкам при авторизации в ангаре (требуется активация на сайте XVM). Формат словаря {'players': [{...}]}. Ниже пример подписки и отписки от эвента. from gui.mods.xvm_statistics import g_XVMStatisticsEvents #Returns the full statistics of the player during authorization in the game client, #if there is no data on the server or there is no connection or there is no token, it returns None def event(statistic): statistic -> dict or None #{'players': [{'status': 1, 'max_xp': 2868, 'dmg': 29441665, 'spo': 22369, 'wn8': 2093, 'xp': 15118810, 'frg': 24127, 'nm': 'StranikS_Scan', 'ts': 1544905295000L, 'wgr': 8970, 'hip': 71, 'wtr': 6580, 'memberhistory': [], 'is_banned': None, 'max_frg': 11, 'flag': None, 'dt': '2018-12-15T20:21:35.22+00:00', 'lang': None, 'b': 20029, 'e': 1457, 'cid': 69731, 'max_dmg': 8528, 'cap': 38302, 'dmg_r': 20473839, 'srv': 6873, 'w': 11715, 'v': {'8465': {'b': 129, 'frg': 141, 'mom': 3, 'dmg': 167647, 'cap': 471, 'srv': 40, 'w': 88, 'spo': 193, 'xp': 106742, 'id': '8465', 'def': 13}, ...}, 'lvl': 7.54826, '_id': 2365719, 'def': 14626}]} ... g_XVMStatisticsEvents.addStatsAccountBecomePlayer(<application_id>=str, event=func) ... g_XVMStatisticsEvents.delStatsAccountBecomePlayer(<application_id>=str, event=func) ... g_XVMStatisticsEvents.delStatsAccountBecomePlayer(<application_id>=str) addStatsBattleLoaded - подписаться на событие BattleLoaded, которое возвращает словарь со статистикой игроков по аккаунту и по текущему танку при загрузке боя (требуется активация на сайте XVM). Формат словаря {'players': [{...}, {...}, ...]}. В примере ниже статистика двух игроков, зашедших в тренировочный бой на RU 251 и ЛТТБ. #Returns the statistics of all players when the battle is loaded, #if there is no connection to the server or there is no token, then it returns None def event(statistic): statistic -> dict or None ... g_XVMStatisticsEvents.addStatsBattleLoaded(<application_id>=str, event=func) #{'players': [{'status': 1, 'max_xp': 2868, 'dmg': 29441665, 'spo': 22369, 'xp': 15118810, 'wn8': 2093, 'frg': 24127, 'nm': 'StranikS_Scan', 'ts': 1544905295220L, 'wgr': 8970, 'hip': 71, 'wtr': 6580, 'max_frg': 11, 'flag': None, 'is_banned': None, 'lang': None, 'b': 20029, 'e': 1457, 'cid': 69731, 'max_dmg': 8528, 'cap': 38302, 'dmg_r': 20473839, 'r': 8970, 'srv': 6873, 'w': 11715, # 'v': {'wtr': 2095, 'b': 86, 'frg': 33, 'mom': 3, 'dmg': 63105, 'cap': 37, 'srv': 10, 'w': 39, 'spo': 154, 'xp': 55069, 'def': 17}, # 'lvl': 7.54826, '_id': 2365719, 'def': 14626}, # {'status': None, 'max_xp': 2304, 'dmg': 3102429, 'spo': 4802, 'xp': 1957580, 'wn8': 1276, 'frg': 3273, 'nm': 'stiiiiil777', 'ts': 1545087003283L, 'wgr': 4241, 'hip': 54, 'wtr': 3309, 'max_frg': 8, 'flag': None, 'is_banned': None, 'lang': None, 'b': 4003, 'e': 1034, 'cid': None, 'max_dmg': 4017, 'cap': 4717, 'dmg_r': 2573057, 'r': 4241, 'srv': 1057, 'w': 1958, # 'v': {'wtr': 2724, 'b': 79, 'frg': 30, 'mom': 3, 'dmg': 41240, 'cap': 67, 'srv': 7, 'w': 35, 'spo': 208, 'xp': 38228, 'def': 12}, # 'lvl': 6.43886, '_id': 2446623, 'def': 2871}]} ... g_XVMStatisticsEvents.delStatsBattleLoaded(<application_id>=str, event=func) ... g_XVMStatisticsEvents.delStatsBattleLoaded(<application_id>=str) addStatsFullBattleLoaded - аналогично предыдущему событию, только возвращает статистику игроков по всем танкам (требуется активация на сайте XVM). #Returns the full statistics of all players when the battle is loaded, #if there is no connection to the server or there is no token, then it returns None def event(statistic): statistic -> dict or None ... g_XVMStatisticsEvents.addStatsFullBattleLoaded(<application_id>=str, event=func) #{'players': [{'status': None, 'max_xp': 2304, 'dmg': 3102429, 'spo': 4802, 'wn8': 1276, 'xp': 1957580, 'frg': 3273, 'nm': 'stiiiiil777', 'ts': 1545087003000L, 'wgr': 4241, 'hip': 54, 'wtr': 3309, 'memberhistory': [], 'is_banned': None, 'max_frg': 8, 'flag': None, 'dt': '2018-12-17T22:50:03.283+00:00', 'lang': None, 'b': 4003, 'e': 1034, 'cid': None, 'max_dmg': 4017, 'cap': 4717, 'dmg_r': 2573057, 'srv': 1057, 'w': 1958, # 'v': {'9249': {'wtr': 1197, 'b': 15, 'frg': 4, 'mom': 1, 'dmg': 7614, 'cap': 15, 'srv': 3, 'w': 7, 'spo': 1, 'xp': 4599, 'id': '9249', 'def': 0}, ...}, # 'lvl': 6.43886, '_id': 2446623, 'def': 2871}, # {'status': 1, 'max_xp': 2868, 'dmg': 29441665, 'spo': 22369, 'wn8': 2093, 'xp': 15118810, 'frg': 24127, 'nm': 'StranikS_Scan', 'ts': 1544905295000L, 'wgr': 8970, 'hip': 71, 'wtr': 6580, 'memberhistory': [], 'is_banned': None, 'max_frg': 11, 'flag': None, 'dt': '2018-12-15T20:21:35.22+00:00', 'lang': None, 'b': 20029, 'e': 1457, 'cid': 69731, 'max_dmg': 8528, 'cap': 38302, 'dmg_r': 20473839, 'srv': 6873, 'w': 11715, # 'v': {'8465': {'b': 129, 'frg': 141, 'mom': 3, 'dmg': 167647, 'cap': 471, 'srv': 40, 'w': 88, 'spo': 193, 'xp': 106742, 'id': '8465', 'def': 13}, ...}, # 'lvl': 7.54826, '_id': 2365719, 'def': 14626}]} ... g_XVMStatisticsEvents.delStatsFullBattleLoaded(<application_id>=str, event=func) ... g_XVMStatisticsEvents.delStatsFullBattleLoaded(<application_id>=str) Запросы: g_XVMConsole addAsyncReports - подписаться на встроенное событие AsyncReports, возвращающее результат запроса при асинхронном вызове (если вызываемая функция явно не указывалась в числе аргументов запроса). Ниже пример подписки и отписки от события. from gui.mods.xvm_statistics import g_XVMConsole #Returns reports from the server for the _Async requests, if no onAsyncReports is specified def event(statistic): statistic -> dict or None ... g_XVMConsole.addAsyncReports(<application_id>=str, event=func) ... g_XVMStatisticsEvents.delAsyncReports(<application_id>=str, event=func) ... g_XVMStatisticsEvents.delAsyncReports(<application_id>=str) getStatsByID - возвращает словарь со статистикой игрока или игроков по аккаунту и по танкам, если известны их accountDBID (требуется активация на сайте XVM). Формат словаря {'players': [{...}, {...}, ...]}. getStatsByID_Async - асинхронная версия, при получении результата вызывает пользовательскую функцию onAsyncRepots, если она задана, иначе вызывает встроенное событие onAsyncReports. В onAsyncRepots можно передавать список функций. #Return statistics for one or more players with all the tanks by a accountDBID #IDs=[2365719, 34483, accountDBID, ...] or 2365719 only g_XVMConsole.getStatsByID(<application_id>=str, IDs=int or list, timeout=5.0) -> dict or None #{'players': [{'status': 1, 'max_xp': 2868, 'dmg': 29441665, 'spo': 22369, 'wn8': 2093, 'xp': 15118810, 'frg': 24127, 'nm': 'StranikS_Scan', 'ts': 1544905295000L, 'wgr': 8970, 'hip': 71, 'wtr': 6580, 'memberhistory': [], 'is_banned': None, 'max_frg': 11, 'flag': None, 'dt': '2018-12-15T20:21:35.22+00:00', 'lang': None, 'b': 20029, 'e': 1457, 'cid': 69731, 'max_dmg': 8528, 'cap': 38302, 'dmg_r': 20473839, 'srv': 6873, 'w': 11715, 'v': {'8465': {'b': 129, 'frg': 141, 'mom': 3, 'dmg': 167647, 'cap': 471, 'srv': 40, 'w': 88, 'spo': 193, 'xp': 106742, 'id': '8465', 'def': 13}, ...}, 'lvl': 7.54826, '_id': 2365719, 'def': 14626}]} g_XVMConsole.getStatsByID_Async(<application_id>=str, IDs=int or list, onAsyncReports=None or func or list, timeout=5.0) getStatsByNick - возвращает словарь со статистикой игрока или игроков по аккаунту и по танкам, если известны их ники (требуется активация на сайте XVM). Формат словаря {'players': [{...}, {...}, ...]}. Если регион не указан, то он определяется автоматически по региону авторизовавшегося в клиенте игрока или по локализации клиента игры (см. g_XVMConsole.g_HomeRegion). getStatsByNick_Async - асинхронная версия, при получении результата вызывает пользовательскую функцию onAsyncRepots, если она задана, иначе вызывает встроенное событие onAsyncReports. В onAsyncRepots можно передавать список функций.. #The same, but with the help of the player's nickname #nicknames = ['Straik','MeeGo'] or 'Straik' only; region=('RU','EU','COM','ASIA') g_XVMConsole.getStatsByNick(<application_id>=str, nicknames=str or list, region='', timeout=5.0) -> dict or None #{'players': [{'status': 1, 'max_xp': 2868, 'dmg': 29441665, 'spo': 22369, 'wn8': 2093, 'xp': 15118810, 'frg': 24127, 'nm': 'StranikS_Scan', 'ts': 1544905295000L, 'wgr': 8970, 'hip': 71, 'wtr': 6580, 'memberhistory': [], 'is_banned': None, 'max_frg': 11, 'flag': None, 'dt': '2018-12-15T20:21:35.22+00:00', 'lang': None, 'b': 20029, 'e': 1457, 'cid': 69731, 'max_dmg': 8528, 'cap': 38302, 'dmg_r': 20473839, 'srv': 6873, 'w': 11715, 'v': {'8465': {'b': 129, 'frg': 141, 'mom': 3, 'dmg': 167647, 'cap': 471, 'srv': 40, 'w': 88, 'spo': 193, 'xp': 106742, 'id': '8465', 'def': 13}, ...}, 'lvl': 7.54826, '_id': 2365719, 'def': 14626}]} g_XVMConsole.getStatsByNick_Async(<application_id>=str, nicknames=str or list, region='', onAsyncReports=None or func or list, timeout=5.0) getStats - возвращает словарь со статистикой игроков по аккаунту и по конкретному танку, если известны accountDBID игрока и задан compactDescr его танка (требуется активация на сайте XVM). Формат словаря {'players': [{...}, {...}, ...]}. getStats_Async - асинхронная версия, при получении результата вызывает пользовательскую функцию onAsyncRepots, если она задана, иначе вызывает встроенное событие onAsyncReports. В onAsyncRepots можно передавать список функций.. #Return statistics for a specific tank for one or multiple users #ids={2365719:54529, 4100782:51841, accountDBID:compactDescr, ...} g_XVMConsole.getStats(<application_id>=str, ids=dict) -> dict or None #{'players': [{'status': 1, 'max_xp': 2868, 'dmg': 29441665, 'spo': 22369, 'xp': 15118810, 'wn8': 2093, 'frg': 24127, 'nm': 'StranikS_Scan', 'ts': 1544905295220L, 'wgr': 8970, 'hip': 71, 'wtr': 6580, 'max_frg': 11, 'flag': None, 'is_banned': None, 'lang': None, 'b': 20029, 'e': 1457, 'cid': 69731, 'max_dmg': 8528, 'cap': 38302, 'dmg_r': 20473839, 'r': 8970, 'srv': 6873, 'w': 11715, # 'v': {'wtr': 2095, 'b': 86, 'frg': 33, 'mom': 3, 'dmg': 63105, 'cap': 37, 'srv': 10, 'w': 39, 'spo': 154, 'xp': 55069, 'def': 17}, # 'lvl': 7.54826, '_id': 2365719, 'def': 14626}, # {'status': None, 'max_xp': 2304, 'dmg': 3102429, 'spo': 4802, 'xp': 1957580, 'wn8': 1276, 'frg': 3273, 'nm': 'stiiiiil777', 'ts': 1545087003283L, 'wgr': 4241, 'hip': 54, 'wtr': 3309, 'max_frg': 8, 'flag': None, 'is_banned': None, 'lang': None, 'b': 4003, 'e': 1034, 'cid': None, 'max_dmg': 4017, 'cap': 4717, 'dmg_r': 2573057, 'r': 4241, 'srv': 1057, 'w': 1958, # 'v': {'wtr': 2724, 'b': 79, 'frg': 30, 'mom': 3, 'dmg': 41240, 'cap': 67, 'srv': 7, 'w': 35, 'spo': 208, 'xp': 38228, 'def': 12}, # 'lvl': 6.43886, '_id': 2446623, 'def': 2871}]} g_XVMConsole.getStats_Async(<application_id>=str, ids=dict, onAsyncReports=None or func or list) getOnlineUsersCount - возвращает количество игроков на серверах WG (требуется активация на сайте XVM). #Return online WOT-server statistics g_XVMConsole.getOnlineUsersCount(<application_id>=str) -> dict or None #{'e': [{'players_online': 65997, 'server': 'EU2'}, {'players_online': 93610, 'server': 'EU1'}], 'r': [{'players_online': 47301, 'server': 'RU8'}, {'players_online': 54485, 'server': 'RU7'}, {'players_online': 101362, 'server': 'RU2'}, {'players_online': 81508, 'server': 'RU1'}, {'players_online': 43960, 'server': 'RU3'}, {'players_online': 105694, 'server': 'RU6'}, {'players_online': 70492, 'server': 'RU5'}, {'players_online': 48227, 'server': 'RU4'}, {'players_online': 7066, 'server': 'RU9'}, {'players_online': 16221, 'server': 'RU10'}], 'asia': [{'players_online': 133, 'server': '503'}, {'players_online': 3999, 'server': '502'}], 'na': [{'players_online': 8899, 'server': '303'}, {'players_online': 356, 'server': '304'}, {'players_online': 4793, 'server': 'NA EAST'}]} Токен: g_UserToken Токен игрока, получаемый им при активации на сайте XVM. Если токена нет или он просрочен, то доступа к статистике не будет. Все вызовы будут возвращать None. Игроку достаточно активироваться на сайте XVM и перезайти в клиент игры и функционал опять заработает. from gui.mods.xvm_statistics import g_UserToken g_UserToken.accountDBID -> int or None g_UserToken.userToken -> str or None #Default value is '', can also take values: #'You need to be logged in once for authorization!' #'Requires activation on the XVM-website (https://modxvm.com/)!' #'No connection to the XVM-server!' g_UserToken.errorStatus -> str Домашний регион: g_HomeRegion Регион авторизовавшегося в ангаре игрока или регион соответствующий локализации клиента игры. from gui.mods.xvm_statistics import g_HomeRegion g_HomeRegion.accountDBID -> int or None g_HomeRegion.homeRegion -> str or None Модуль: wg_statistics События: g_WGStatisticsEvents addStatsAccountBecomePlayer - подписаться на событие AccountBecomePlayer, которое возвращает словарь со статистикой игрока по аккаунту и по танкам при авторизации в ангаре. Запрашиваются данные только по рандомным боям. Формат словаря {'players': [{...}]}. Ниже пример подписки и отписки от эвента. from gui.mods.wg_statistics import g_WGStatisticsEvents #Returns the full statistics of the player in random battles during authorization in the game client, #if there is no data on the server or server is unavailable, it returns None def event(statistic): statistic -> dict or None ... g_WGStatisticsEvents.addStatsAccountBecomePlayer(<application_id>=str, event=func) #{'players': [{'spotted': 22369, 'battles_on_stunning_vehicles': 2, # 'vehicles': {11265: {'spotted': 174, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 14, 'explosion_hits_received': 0, 'avg_damage_blocked': 280.0, 'capture_points': 595, 'no_damage_direct_hits_received': 4, 'stun_assisted_damage': 0, 'explosion_hits': 0, 'battle_avg_xp': 664, 'piercings': 3, 'xp': 142066, 'in_garage': None, 'tank_id': 11265, 'damage_dealt': 164908, 'hits_percents': 64, 'stun_number': 0, 'draws': 5, 'hits': 975, 'losses': 84, 'battles': 214, 'piercings_received': 10, 'damage_received': 141906, 'survived_battles': 81, 'shots': 1514, 'wins': 125, 'frags': 230, 'dropped_capture_points': 89, 'mark_of_mastery': 4, 'tanking_factor': 0.25}, ...}, # 'avg_level': 7.54803, 'max_xp': 2868, 'avg_damage_blocked': 561.73, 'max_xp_tank_id': 529, 'explosion_hits': 242, 'global_rating': 8970, 'piercings': 48815, 'xp': 15118810, 'survived_battles': 6873, 'dropped_capture_points': 14626, 'client_language': 'r', 'hits_percents': 71, 'draws': 276, 'max_damage': 8528, 'battles': 20029, 'clan_id': 69731, 'damage_received': 20473839, 'avg_damage_assisted': 560.04, 'max_frags_tank_id': 12305, 'frags': 24127, 'stun_number': 10, 'tanking_factor': 0.44, 'avg_damage_assisted_radio': 431.61, 'direct_hits_received': 44950, 'account_id': 2365719, 'damage_dealt': 29441665, 'stun_assisted_damage': 1047, 'battle_avg_xp': 755, 'max_damage_tank_id': 16897, 'nickname': 'StranikS_Scan', 'capture_points': 38302, 'hits': 138087, 'last_battle_time': 1544904305, 'wins': 11715, 'losses': 8038, 'piercings_received': 32339, 'no_damage_direct_hits_received': 12606, 'max_frags': 11, 'shots': 193372, 'explosion_hits_received': 2208, 'avg_damage_assisted_track': 128.44}]} ... g_WGStatisticsEvents.delStatsAccountBecomePlayer(<application_id>=str, event=func) ... g_WGStatisticsEvents.delStatsAccountBecomePlayer(<application_id>=str) addStatsBattleLoaded - подписаться на событие BattleLoaded, которое возвращает словарь со статистикой игроков по аккаунту и по текущему танку при загрузке боя. Запрашиваются данные только по рандомным боям. Формат словаря {'players': [{...}, {...}, ...]}. В примере статистика двух игроков, зашедших в тренировочный бой на RU 251 и ЛТТБ. #Returns the statistics of all players and current tanks for random battles, when the battle is loaded #if there is no data on the server or server is unavailable, it returns None def event(statistic): statistic -> dict or None ... g_WGStatisticsEvents.addStatsBattleLoaded(<application_id>=str, event=func) #{'players': [{'spotted': 22369, 'battles_on_stunning_vehicles': 2, # 'vehicles': {'spotted': 154, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 315, 'explosion_hits_received': 21, 'avg_damage_blocked': 0.0, 'capture_points': 37, 'no_damage_direct_hits_received': 21, 'stun_assisted_damage': 0, 'explosion_hits': 19, 'battle_avg_xp': 640, 'piercings': 339, 'xp': 55069, 'in_garage': None, 'tank_id': 18449, 'damage_dealt': 63105, 'hits_percents': 66, 'stun_number': 0, 'draws': 0, 'hits': 471, 'losses': 47, 'battles': 86, 'piercings_received': 294, 'damage_received': 97933, 'survived_battles': 10, 'shots': 713, 'wins': 39, 'frags': 33, 'dropped_capture_points': 17, 'mark_of_mastery': 3, 'tanking_factor': 0.0}, # 'max_xp': 2868, 'avg_damage_blocked': 561.73, 'max_xp_tank_id': 529, 'explosion_hits': 242, 'global_rating': 8970, 'piercings': 48815, 'xp': 15118810, 'survived_battles': 6873, 'dropped_capture_points': 14626, 'client_language': 'r', 'hits_percents': 71, 'draws': 276, 'max_damage': 8528, 'battles': 20029, 'clan_id': 69731, 'damage_received': 20473839, 'avg_damage_assisted': 560.04, 'max_frags_tank_id': 12305, 'frags': 24127, 'stun_number': 10, 'tanking_factor': 0.44, 'avg_damage_assisted_radio': 431.61, 'direct_hits_received': 44950, 'account_id': 2365719, 'damage_dealt': 29441665, 'stun_assisted_damage': 1047, 'battle_avg_xp': 755, 'max_damage_tank_id': 16897, 'nickname': 'StranikS_Scan', 'capture_points': 38302, 'hits': 138087, 'last_battle_time': 1544904305, 'wins': 11715, 'losses': 8038, 'piercings_received': 32339, 'no_damage_direct_hits_received': 12606, 'max_frags': 11, 'shots': 193372, 'explosion_hits_received': 2208, 'avg_damage_assisted_track': 128.44}, # {'spotted': 4802, 'battles_on_stunning_vehicles': 33, # 'vehicles': {'spotted': 208, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 376, 'explosion_hits_received': 13, 'avg_damage_blocked': 156.01, 'capture_points': 67, 'no_damage_direct_hits_received': 64, 'stun_assisted_damage': 0, 'explosion_hits': 0, 'battle_avg_xp': 484, 'piercings': 250, 'xp': 38228, 'in_garage': None, 'tank_id': 18433, 'damage_dealt': 41240, 'hits_percents': 59, 'stun_number': 0, 'draws': 2, 'hits': 344, 'losses': 42, 'battles': 79, 'piercings_received': 312, 'damage_received': 74223, 'survived_battles': 7, 'shots': 588, 'wins': 35, 'frags': 30, 'dropped_capture_points': 12, 'mark_of_mastery': 3, 'tanking_factor': 0.17}, # 'max_xp': 2304, 'avg_damage_blocked': 170.05, 'max_xp_tank_id': 16641, 'explosion_hits': 447, 'global_rating': 4241, 'piercings': 3302, 'xp': 1957580, 'survived_battles': 1057, 'dropped_capture_points': 2871, 'client_language': 'r', 'hits_percents': 54, 'draws': 66, 'max_damage': 4017, 'battles': 4003, 'clan_id': None, 'damage_received': 2573057, 'avg_damage_assisted': 199.54, 'max_frags_tank_id': 54289, 'frags': 3273, 'stun_number': 120, 'tanking_factor': 0.32, 'avg_damage_assisted_radio': 167.44, 'direct_hits_received': 6055, 'account_id': 2446623, 'damage_dealt': 3102429, 'stun_assisted_damage': 10171, 'battle_avg_xp': 489, 'max_damage_tank_id': 8977, 'nickname': 'stiiiiil777', 'capture_points': 4717, 'hits': 19191, 'last_battle_time': 1545078809, 'wins': 1958, 'losses': 1979, 'piercings_received': 4133, 'no_damage_direct_hits_received': 1917, 'max_frags': 8, 'shots': 35342, 'explosion_hits_received': 149, 'avg_damage_assisted_track': 32.1}]} ... g_WGStatisticsEvents.delStatsBattleLoaded(<application_id>=str, event=func) ... g_WGStatisticsEvents.delStatsBattleLoaded(<application_id>=str) addStatsFullBattleLoaded - аналогично предыдущему событие, только возвращает статистику игроков по всем танкам. Запрашиваются данные только по рандомным боям. #Returns the full statistics of all players for random battles, when the battle is loaded #if there is no data on the server or server is unavailable, it returns None def event(statistic): statistic -> dict or None ... g_WGStatisticsEvents.addStatsFullBattleLoaded(<application_id>=str, event=func) #{'players': [{'spotted': 4802, 'battles_on_stunning_vehicles': 33, # 'vehicles': {3329: {'spotted': 6, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 0, 'explosion_hits_received': 0, 'avg_damage_blocked': 0.0, 'capture_points': 0, 'no_damage_direct_hits_received': 0, 'stun_assisted_damage': 0, 'explosion_hits': 0, 'battle_avg_xp': 138, 'piercings': 0, 'xp': 1799, 'in_garage': None, 'tank_id': 3329, 'damage_dealt': 953, 'hits_percents': 10, 'stun_number': 0, 'draws': 0, 'hits': 62, 'losses': 4, 'battles': 13, 'piercings_received': 0, 'damage_received': 1170, 'survived_battles': 1, 'shots': 592, 'wins': 9, 'frags': 6, 'dropped_capture_points': 0, 'mark_of_mastery': 0, 'tanking_factor': 0.0}, ...}, # 'avg_level': 6.43542, 'max_xp': 2304, 'avg_damage_blocked': 170.05, 'max_xp_tank_id': 16641, 'explosion_hits': 447, 'global_rating': 4241, 'piercings': 3302, 'xp': 1957580, 'survived_battles': 1057, 'dropped_capture_points': 2871, 'client_language': 'r', 'hits_percents': 54, 'draws': 66, 'max_damage': 4017, 'battles': 4003, 'clan_id': None, 'damage_received': 2573057, 'avg_damage_assisted': 199.54, 'max_frags_tank_id': 54289, 'frags': 3273, 'stun_number': 120, 'tanking_factor': 0.32, 'avg_damage_assisted_radio': 167.44, 'direct_hits_received': 6055, 'account_id': 2446623, 'damage_dealt': 3102429, 'stun_assisted_damage': 10171, 'battle_avg_xp': 489, 'max_damage_tank_id': 8977, 'nickname': 'stiiiiil777', 'capture_points': 4717, 'hits': 19191, 'last_battle_time': 1545078809, 'wins': 1958, 'losses': 1979, 'piercings_received': 4133, 'no_damage_direct_hits_received': 1917, 'max_frags': 8, 'shots': 35342, 'explosion_hits_received': 149, 'avg_damage_assisted_track': 32.1}, # {'spotted': 22369, 'battles_on_stunning_vehicles': 2, # 'vehicles': {11265: {'spotted': 174, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 14, 'explosion_hits_received': 0, 'avg_damage_blocked': 280.0, 'capture_points': 595, 'no_damage_direct_hits_received': 4, 'stun_assisted_damage': 0, 'explosion_hits': 0, 'battle_avg_xp': 664, 'piercings': 3, 'xp': 142066, 'in_garage': None, 'tank_id': 11265, 'damage_dealt': 164908, 'hits_percents': 64, 'stun_number': 0, 'draws': 5, 'hits': 975, 'losses': 84, 'battles': 214, 'piercings_received': 10, 'damage_received': 141906, 'survived_battles': 81, 'shots': 1514, 'wins': 125, 'frags': 230, 'dropped_capture_points': 89, 'mark_of_mastery': 4, 'tanking_factor': 0.25}, ...}, # 'avg_level': 7.54803, 'max_xp': 2868, 'avg_damage_blocked': 561.73, 'max_xp_tank_id': 529, 'explosion_hits': 242, 'global_rating': 8970, 'piercings': 48815, 'xp': 15118810, 'survived_battles': 6873, 'dropped_capture_points': 14626, 'client_language': 'r', 'hits_percents': 71, 'draws': 276, 'max_damage': 8528, 'battles': 20029, 'clan_id': 69731, 'damage_received': 20473839, 'avg_damage_assisted': 560.04, 'max_frags_tank_id': 12305, 'frags': 24127, 'stun_number': 10, 'tanking_factor': 0.44, 'avg_damage_assisted_radio': 431.61, 'direct_hits_received': 44950, 'account_id': 2365719, 'damage_dealt': 29441665, 'stun_assisted_damage': 1047, 'battle_avg_xp': 755, 'max_damage_tank_id': 16897, 'nickname': 'StranikS_Scan', 'capture_points': 38302, 'hits': 138087, 'last_battle_time': 1544904305, 'wins': 11715, 'losses': 8038, 'piercings_received': 32339, 'no_damage_direct_hits_received': 12606, 'max_frags': 11, 'shots': 193372, 'explosion_hits_received': 2208, 'avg_damage_assisted_track': 128.44}]} ... g_WGStatisticsEvents.delStatsFullBattleLoaded(<application_id>=str, event=func) ... g_WGStatisticsEvents.delStatsFullBattleLoaded(<application_id>=str) Запросы: g_WGConsole OnAsyncReports - подписаться на встроенное событие AsyncReports, возвращающее результат запроса при асинхронном вызове (если вызываемая функция явно не указывалась в числе аргументов запроса). Ниже пример подписки и отписки от события. from gui.mods.wg_statistics import g_WGConsole #Returns reports from the server for the _Async requests, if no onAsyncReport is specified g_WGConsole.addAsyncReports(<application_id>=str, event=func) ... g_WGConsole.delAsyncReports(<application_id>=str, event=func) ... g_WGConsole.delAsyncReports(<application_id>=str) getStatsFull - возвращает словарь со статистикой игрока или игроков по аккаунту и по танкам, если известны их accountDBID (аналог функции getStatsByID в модуле xvm_statistics). Формат словаря {'players': [{...}, {...}, ...]}. Запрашиваются данные только по рандомным боям. getStatsFull_Async - асинхронная версия, при получении результата вызывает пользовательскую функцию onAsyncRepots, если она задана, иначе вызывает встроенное событие onAsyncReports. В onAsyncRepots можно передавать список функций. #Return statistics for one or more players for random battles with all the tanks by a accountDBID #IDs=[2365719, 34483, accountDBID, ...] or 2365719 only g_WGConsole.getStatsFull(<application_id>=str, IDs=int or list, timeout=5.0) -> dict or None #{'players': [{'spotted': 22369, 'battles_on_stunning_vehicles': 2, # 'vehicles': {11265: {'spotted': 174, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 14, 'explosion_hits_received': 0, 'avg_damage_blocked': 280.0, 'capture_points': 595, 'no_damage_direct_hits_received': 4, 'stun_assisted_damage': 0, 'explosion_hits': 0, 'battle_avg_xp': 664, 'piercings': 3, 'xp': 142066, 'in_garage': None, 'tank_id': 11265, 'damage_dealt': 164908, 'hits_percents': 64, 'stun_number': 0, 'draws': 5, 'hits': 975, 'losses': 84, 'battles': 214, 'piercings_received': 10, 'damage_received': 141906, 'survived_battles': 81, 'shots': 1514, 'wins': 125, 'frags': 230, 'dropped_capture_points': 89, 'mark_of_mastery': 4, 'tanking_factor': 0.25}, ...}, # 'avg_level': 7.54803, 'max_xp': 2868, 'avg_damage_blocked': 561.73, 'max_xp_tank_id': 529, 'explosion_hits': 242, 'global_rating': 8970, 'piercings': 48815, 'xp': 15118810, 'survived_battles': 6873, 'dropped_capture_points': 14626, 'client_language': 'r', 'hits_percents': 71, 'draws': 276, 'max_damage': 8528, 'battles': 20029, 'clan_id': 69731, 'damage_received': 20473839, 'avg_damage_assisted': 560.04, 'max_frags_tank_id': 12305, 'frags': 24127, 'stun_number': 10, 'tanking_factor': 0.44, 'avg_damage_assisted_radio': 431.61, 'direct_hits_received': 44950, 'account_id': 2365719, 'damage_dealt': 29441665, 'stun_assisted_damage': 1047, 'battle_avg_xp': 755, 'max_damage_tank_id': 16897, 'nickname': 'StranikS_Scan', 'capture_points': 38302, 'hits': 138087, 'last_battle_time': 1544904305, 'wins': 11715, 'losses': 8038, 'piercings_received': 32339, 'no_damage_direct_hits_received': 12606, 'max_frags': 11, 'shots': 193372, 'explosion_hits_received': 2208, 'avg_damage_assisted_track': 128.44}]} g_WGConsole.getStatsFull_Async(<application_id>=str, IDs=int or list, onAsyncReports=None or func or list, timeout=5.0) getStats - возвращает словарь со статистикой игроков по аккаунту и по конкретному танку, если известны accountDBID игрока и задан compactDescr его танка (аналог функции getStats в модуле xvm_statistics). Формат словаря {'players': [{...}, {...}, ...]}. Запрашиваются данные только по рандомным боям. getStats_Async - асинхронная версия, при получении результата вызывает пользовательскую функцию onAsyncRepots, если она задана, иначе вызывает встроенное событие onAsyncReports. В onAsyncRepots можно передавать список функций. #Return statistics for a specific tank for one or multiple users #ids={2365719:54529, 4100782:51841, accountDBID:compactDescr, ...} g_WGConsole.getStats(<application_id>=str, ids=dict, timeout=5.0) -> dict or None #{'players': [{'spotted': 22369, 'battles_on_stunning_vehicles': 2, # 'vehicles': {'spotted': 154, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 315, 'explosion_hits_received': 21, 'avg_damage_blocked': 0.0, 'capture_points': 37, 'no_damage_direct_hits_received': 21, 'stun_assisted_damage': 0, 'explosion_hits': 19, 'battle_avg_xp': 640, 'piercings': 339, 'xp': 55069, 'in_garage': None, 'tank_id': 18449, 'damage_dealt': 63105, 'hits_percents': 66, 'stun_number': 0, 'draws': 0, 'hits': 471, 'losses': 47, 'battles': 86, 'piercings_received': 294, 'damage_received': 97933, 'survived_battles': 10, 'shots': 713, 'wins': 39, 'frags': 33, 'dropped_capture_points': 17, 'mark_of_mastery': 3, 'tanking_factor': 0.0}, # 'max_xp': 2868, 'avg_damage_blocked': 561.73, 'max_xp_tank_id': 529, 'explosion_hits': 242, 'global_rating': 8970, 'piercings': 48815, 'xp': 15118810, 'survived_battles': 6873, 'dropped_capture_points': 14626, 'client_language': 'r', 'hits_percents': 71, 'draws': 276, 'max_damage': 8528, 'battles': 20029, 'clan_id': 69731, 'damage_received': 20473839, 'avg_damage_assisted': 560.04, 'max_frags_tank_id': 12305, 'frags': 24127, 'stun_number': 10, 'tanking_factor': 0.44, 'avg_damage_assisted_radio': 431.61, 'direct_hits_received': 44950, 'account_id': 2365719, 'damage_dealt': 29441665, 'stun_assisted_damage': 1047, 'battle_avg_xp': 755, 'max_damage_tank_id': 16897, 'nickname': 'StranikS_Scan', 'capture_points': 38302, 'hits': 138087, 'last_battle_time': 1544904305, 'wins': 11715, 'losses': 8038, 'piercings_received': 32339, 'no_damage_direct_hits_received': 12606, 'max_frags': 11, 'shots': 193372, 'explosion_hits_received': 2208, 'avg_damage_assisted_track': 128.44}, # {'spotted': 4802, 'battles_on_stunning_vehicles': 33, # 'vehicles': {'spotted': 208, 'battles_on_stunning_vehicles': 0, 'direct_hits_received': 376, 'explosion_hits_received': 13, 'avg_damage_blocked': 156.01, 'capture_points': 67, 'no_damage_direct_hits_received': 64, 'stun_assisted_damage': 0, 'explosion_hits': 0, 'battle_avg_xp': 484, 'piercings': 250, 'xp': 38228, 'in_garage': None, 'tank_id': 18433, 'damage_dealt': 41240, 'hits_percents': 59, 'stun_number': 0, 'draws': 2, 'hits': 344, 'losses': 42, 'battles': 79, 'piercings_received': 312, 'damage_received': 74223, 'survived_battles': 7, 'shots': 588, 'wins': 35, 'frags': 30, 'dropped_capture_points': 12, 'mark_of_mastery': 3, 'tanking_factor': 0.17}, # 'max_xp': 2304, 'avg_damage_blocked': 170.05, 'max_xp_tank_id': 16641, 'explosion_hits': 447, 'global_rating': 4241, 'piercings': 3302, 'xp': 1957580, 'survived_battles': 1057, 'dropped_capture_points': 2871, 'client_language': 'r', 'hits_percents': 54, 'draws': 66, 'max_damage': 4017, 'battles': 4003, 'clan_id': None, 'damage_received': 2573057, 'avg_damage_assisted': 199.54, 'max_frags_tank_id': 54289, 'frags': 3273, 'stun_number': 120, 'tanking_factor': 0.32, 'avg_damage_assisted_radio': 167.44, 'direct_hits_received': 6055, 'account_id': 2446623, 'damage_dealt': 3102429, 'stun_assisted_damage': 10171, 'battle_avg_xp': 489, 'max_damage_tank_id': 8977, 'nickname': 'stiiiiil777', 'capture_points': 4717, 'hits': 19191, 'last_battle_time': 1545078809, 'wins': 1958, 'losses': 1979, 'piercings_received': 4133, 'no_damage_direct_hits_received': 1917, 'max_frags': 8, 'shots': 35342, 'explosion_hits_received': 149, 'avg_damage_assisted_track': 32.1}]} g_WGConsole.getStats_Async(<application_id>=str, ids=dict, onAsyncReports=None or func or list, timeout=5.0) getOnlineUsersCount - возвращает количество игроков на серверах WG. Необходимо указывать регион, если регион не задан, то берется домашний регион (см. g_WGConsole.g_HomeRegion). #Return online WOT-server statistics for region #region=('ru','eu','com','asia') g_WGConsole.getOnlineUsersCount(<application_id>=str, region='ru') -> dict or None #{'wot': [{'players_online': 51366, 'server': 'RU8'}, {'players_online': 57839, 'server': 'RU7'}, {'players_online': 106893, 'server': 'RU2'}, {'players_online': 85843, 'server': 'RU1'}, {'players_online': 46178, 'server': 'RU3'}, {'players_online': 111753, 'server': 'RU6'}, {'players_online': 73782, 'server': 'RU5'}, {'players_online': 50640, 'server': 'RU4'}, {'players_online': 7401, 'server': 'RU9'}, {'players_online': 18437, 'server': 'RU10'}]} Домашний регион: g_HomeRegion Регион авторизовавшегося в ангаре игрока или регион соответствующий локализации клиента игры. from gui.mods.wg_statistics import g_HomeRegion g_HomeRegion.accountDBID -> int or None g_HomeRegion.homeRegion -> str or None Модуль: rating_calculation Функции: g_Calculator globalRating - конвертирует абсолютное значение какого-либо рейтинга в относительное значение шкалы XVM. Если задана опция exct, то возвращает вещественное значение. from gui.mods.rating_calculation import g_Calculator #Converting an absolute value to an index or float value of a universal XVM-Scale #rating = ['wgr', 'eff', 'wn8', 'win', 'wtr', 'xte', 'xtdb', 'sup'] g_Calculator.globalRating(value=float, rating=str, exact=False) -> int or float or None #example: globalRating(2209.651,'wn8') -> 72 or 72.423 if exact=True specificRating - конвертирует относительное значение шкалы XVM в абсолютное значение заданного рейтинга. #Get the value of the specific rating by the XVM-Scale #rating = ['wgr', 'eff', 'wn8', 'win', 'wtr', 'xte', 'xtdb', 'sup'] g_Calculator.specificRating(value=int or float, rating=str) -> float or None #example: specificRating(72.423,'wn8') -> 2209.651 avgTIER - рассчитывает средний уровень техники. Принимает на вход словарь с техникой в XVM- или WG-формате. from gui.mods.rating_calculation import g_Calculator #Return the average level of player's tanks #params = {'id': {'b':int}, ...} and also WG-tags are supported g_Calculator.avgTIER(params=dict) -> float or None #example: avgTIER(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]['vehicles']) -> 7.54803 needWin - возвращает число побед, необходимых для увеличения % побед на заданную величину. Принимает на вход словарь с числом боев и числом побед, а также на сколько % нужно увеличить показатель. #Return the number of wins to increase the percentage of wins by a given amount and final winning percentage #params = {'b': int, 'w': int} and also WG-tags are supported; incPercentage = float g_Calculator.needWin(params=dict, incPercentage=int or float) -> dict(wins=int, result=float) or None #example: needWin({'b':10,'w':3}, 30) -> (8, 61.111111111111114) needWinHalf - возвращает число побед, необходимых для увеличения процента побед на 0,5%. Принимает на вход словарь с числом боев и числом побед. #Return the number of wins to increase the percentage of wins to the next half percent value and final winning percentage #params = {'b': int, 'w': int} and also WG-tags are supported g_Calculator.needWinHalf(params=dict) -> dict(wins=int, result=float) or None #example: needWinHalf({'b':1000,'w':500}) -> (11, 50.54401582591493) needWinWhole - возвращает число побед, необходимых для увеличения процента побед на 1%. Принимает на вход словарь с числом боев и числом побед. #Return the number of wins to increase the percentage of wins to the next whole percent value and final winning percentage #params = {'b': int, 'w': int} and also WG-tags are supported g_Calculator.needWinWhole(params=dict) -> dict(wins=int, result=float) or None #example: needWinWhole({'b':1000,'w':500}) -> (21, 51.02840352595494) eff - рассчитывает рейтинг РЭ для конкретного танка. Принимает на вход словарь со статистикой танка в XVM- или WG-формате. #Calculation of EFF for one tank with id=compactDescr, see https://koreanrandom.com/forum/topic/13386- #params = {'id':int, 'b':int, 'dmg':int, 'frg':int, 'spo':int, 'cap':int, 'def':int} and also WG-tags are supported g_Calculator.eff(params=dict) -> float or None #example: eff(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]['vehicles'][257]) -> 1108.86042228 wn8 - рассчитывает рейтинг WN8 для конкретного танка. Принимает на вход словарь со статистикой танка в XVM- или WG-формате. #Calculation of WN8 for one tank with id=compactDescr, see https://koreanrandom.com/forum/topic/13434- #params = {'id':int, 'b':int, 'w':int, 'dmg':int, 'frg':int, 'spo':int, 'def':int} and also WG-tags are supported g_Calculator.wn8(params=dict) -> float or None #example: wn8(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]['vehicles'][257]) -> 1867.55994042 xte - рассчитывает рейтинг xTE для конкретного танка. Принимает на вход словарь со статистикой танка в XVM- или WG-формате. #Calculation of xTE for one tank with id=compactDesc, see https://koreanrandom.com/forum/topic/23829- #params = {'id':int, 'b':int, 'dmg':int, 'frg':int} and also WG-tags are supported g_Calculator.xte(params=dict) -> float or None #example: xte(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]['vehicles'][257]) -> 70.3853988826 xtdb - рассчитывает показатель xTDB для конкретного танка. Принимает на вход словарь со статистикой танка в XVM- или WG-формате. #Calculation of xTDB for one tank with id=compactDesc, see https://koreanrandom.com/forum/topic/23829- #params = {'id':int, 'b':int, 'dmg':int} and also WG-tags are supported g_Calculator.xtdb(params=dict) -> float or None #example: xtdb(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]['vehicles'][257]) -> 68.8375478927 EFF - рассчитывает рейтинг РЭ для аккаунта игрока. Принимает на вход словарь со статистикой игрока в XVM- или WG-формате. #Calculation of EFF for player account with lvl=avgTIER, see https://koreanrandom.com/forum/topic/13386- #params = {'b':int, 'lvl':float, 'dmg':int, 'frg':int, 'spo':int, 'cap':int, 'def':int} and also WG-tags are supported g_Calculator.EFF(params=dict) -> float or None #example: EFF(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]) -> 1456.62977209 WN8 - рассчитывает рейтинг WN8 для аккаунта игрока. Принимает на вход словарь со статистикой игрока в XVM- или WG-формате. #Calculation of WN8 for player account with id=compactDescr, see https://koreanrandom.com/forum/topic/13434- #params = {'b':int, 'w':int, 'dmg':int, 'frg':int, 'spo':int, 'def':int, # 'v': {'id':{'b':int, 'w':int, 'dmg':int, 'frg':int, 'spo':int, 'def':int}, 'id':{...}, ...}} g_Calculator.WN8(params=dict) -> float or None #example: WN8(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]) -> 2093.12196623 XTE - рассчитывает рейтинг xTE для аккаунта игрока. Принимает на вход словарь со статистикой всех танков игрока в XVM- или WG-формате. #Calculation of xTE for player account with id=compactDesc, see https://koreanrandom.com/forum/topic/23829-/?do=findComment&comment=445507 #params = {'id': {'b':int, 'dmg': int, 'frg': int}, 'id':{...}, ...}} g_Calculator.XTE(params=dict) -> float or None #example: XTE(g_WGConsole.getStatsFull(<application_id>, 2365719)['players'][0]['vehicles']) -> 66.3322963036 Константы: g_Tables xvmscaleTable - таблица перевода рейтингов в шкалу XVM. Актуальная версия загружается автоматически с сайта XVM при запуске клиента игры. #Tables, autoupdated from the XVM-site and loaded from disk from gui.mods.rating_calculation import g_Tables g_Tables.xvmscaleTable -> dict or None #{'xwgr': [1361, ...], 'xeff': [378, ...], 'xwn8': [56,...], 'xwin': [43.44, ...], 'xwtr': [1409, ...]} wn8Table - таблица ожидаемых значений для расчета рейтинга WN8. Актуальная версия загружается автоматически с сайта XVM при запуске клиента игры. g_Tables.wn8Table -> dict or None #{'header': {'url': 'https://...', 'source': 'XVM', 'version': '2018-02-12'}, # 'data': [{'expDamage': 1079.886, 'expSpot': 0.769, 'IDNum': 55297, 'expWinRate': 52.995, 'expDef': 0.881, 'expFrag': 1.146}, ...]} wn8idsTable - эта же таблица, но в виде словаря с id-танков в качестве ключей. g_Tables.wn8idsTable -> dict or None #{55297: {'expDamage': 1079.886, 'expSpot': 0.769, 'expWinRate': 52.995, 'expDef': 0.881, 'expFrag': 1.146}, ...} xteTable - таблица ожидаемых значений для расчета рейтинга xTE. Актуальная версия загружается автоматически с сайта XVM при запуске клиента игры. g_Tables.xteTable -> dict or None #{'62737': {'tf': 1.64, 'x': [342, ...], 'td': 2168, 'ad': 1171, 'af': 0.78}, ...} xtdbTable - таблица ожидаемых значений для расчета показателя xTDB. Актуальная версия загружается автоматически с сайта XVM при запуске клиента игры. g_Tables.xtdbTable -> dict or None #{'62737': {'tf': 1.64, 'x': [726, ...], 'td': 2168, 'ad': 1171, 'af': 0.78}, ...} supTable - таблица значений шкалы процентного превосходства SUP%. Актуальная версия загружается автоматически с сайта XVM при запуске клиента игры. g_Tables.supTable -> tuple #('1.2', ..., '99.99') Модуль: victory_chances События: g_StatisticEvents onBattleLoaded - возвращает указатель на экземпляр класса g_TanksStatistic при загрузке боя, содержащий информацию по шансам команд. from gui.mods.victory_chances import g_StatisticEvents #It works when the caching of users and tanks information is completed when the battle is loaded #Returns a pointer to class instance g_TanksStatistic def func(statistic): statistic -> pointer or None #example: <gui.mods.victory_chances._TanksStatistic object at 0x2B5B8F70> ... g_StatisticEvents.onBattleLoaded += func onVehiclesChanged - возвращает указатель на экзепляр класса g_TanksStatistic, причину срабатывания (см. UPDATE_REASONE) и vehicleID танка, когда меняется какой-либо из параметров техники. #It works when the players and the parameters of the tanks change #Returns a pointer to g_TanksStatistic, reasone type as UPDATE_REASONE and vehicleID def func(statistic, reasone, vID): statistic -> pointer or None #example: <gui.mods.victory_chances._TanksStatistic object at 0x2B494EB0> reasone -> int #example: 0 vID -> int #example: 6632275 ... g_StatisticEvents.onVehiclesChanged += func onCountChanged - возвращает новое число союзных и вражеских танков, когда кто-то присоединятся к бою или погибает в бою. #It works when change the count of tanks in teams #Returns the number of allies and enemy tanks def func(allies, enemies): allies -> int #example: 15 enemies -> int #example: 14 ... g_StatisticEvents.onCountChanged += func onHealthChanged - возвращает новые суммарные значения хп команд, когда кому-то наносится урон или кто-то погибает. #It works when the health of users changed #Returns the total healths of allies and enemy teams def func(allies, enemies): allies -> int #example: 4510 enemies -> int #example: 3240 ... g_StatisticEvents.onHealthChanged += func onChanceChanged - возвращает новые значения шансов на победу и условные силы команд союзников и противников, когда кому-то наносится урон или кто-то погибает. #It works when the chances of victory changed #Returns the chances 0..100 and total forces of allies and enemy teams def func(a_chances, e_chances, a_forces, e_forces): a_chances -> int #example: 45 e_chances -> int #example: 55 a_forces -> int #example: 4500 e_forces -> int #example: 5500 ... g_StatisticEvents.onChanceChanged += func Переменные: g_TanksStatistic Экземпляр класса с текущими параметрами техники и статистикой команд. Экземпляр един для всех в клиенте игры. В примере статистика двух игроков, зашедших в тренировочный бой на RU 251 и ЛТТБ. #Parameters of tanks and players statistics from gui.mods.victory_chances import g_TanksStatistic g_TanksStatistic.base -> dict #{6632274: {'userName': 'StranikS_Scan', 'isAlive': True, 'name': 'Ru251', 'level': 9, 'hp': 1400, 'isEnemy': False, 'gun': {'shell': {'AP': {'dpm': 0, 'damage': 0}, 'HE': {'dpm': 2742.8571428571427, 'damage': 160.0}, 'APRC': {'dpm': 2057.1428571428573, 'damage': 240.0}, 'HC': {'dpm': 2057.1428571428573, 'damage': 240.0}}, 'reload': 7.0, 'caliber': 90.0, 'currentShell': 'APRC', 'currentDamage': 240.0, 'currentDpm': 2057.1428571428573}, 'accountDBID': 2365719, 'Th': 0.7000000123624448, 'force': 1.3714285956488717, 'contribution': 65.287617689119, 'Te': 0.5104166666666666, 'type': {'tag': 'lightTank'}, 'tank_id': 18449}, 6632275: {'userName': 'stiiiiil777', 'isAlive': True, 'name': '\xd0\x9b\xd0\xa2\xd0\xa2\xd0\x91', 'level': 8, 'hp': 1050, 'isEnemy': True, 'gun': {'shell': {'AP': {'dpm': 1999.9999646787296, 'damage': 180.0}, 'HE': {'dpm': 3333.3332744645495, 'damage': 150.0}, 'APRC': {'dpm': 1999.9999646787296, 'damage': 180.0}, 'HC': {'dpm': 0, 'damage': 0}}, 'reload': 5.400000095367432, 'caliber': 85.0, 'currentShell': 'AP', 'currentDamage': 180.0, 'currentDpm': 1999.9999646787296}, 'accountDBID': 2446623, 'Th': 0.5104166666666666, 'force': 0.7291666537891202, 'contribution': 34.712382310881004, 'Te': 0.7000000123624448, 'type': {'tag': 'lightTank'}, 'tank_id': 18433}} g_TanksStatistic.allyChance -> int or None #example: 65.2876176891 g_TanksStatistic.enemyChance -> int or None #example: 34.7123823109 g_TanksStatistic.allyTanksCount -> int or None #example: 1 g_TanksStatistic.enemyTanksCount -> int or None #example: 1 g_TanksStatistic.allyTeamHP -> int or None #example: 1400 g_TanksStatistic.enemyTeamHP -> int or None #example: 1050 g_TanksStatistic.allyTeamOneDamage -> int or None #example: 240.0 g_TanksStatistic.enemyTeamOneDamage -> int or None #example: 180.0 g_TanksStatistic.allyTeamDPM -> int or None #example: 2057.14285714 g_TanksStatistic.enemyTeamDPM -> int or None #example: 1999.99996468 g_TanksStatistic.allyTeamForces -> int or None #example: 1.37142859565 g_TanksStatistic.enemyTeamForces -> int or None #example: 0.729166653789 Константы: UPDATE_REASONE Причины обновления статистики. #Types of reasons in OnVehiclesChanged event from gui.mods.victory_chances import UPDATE_REASONE UPDATE_REASONE.VEHICLE_ADDED -> int UPDATE_REASONE.VEHICLE_DEATH -> int UPDATE_REASONE.HEALTH_CHANGED -> int Примеры модов, использующих модули из библиотеки можно найти в моем репозитарии на Git-Hub.
  12. 11 points
    Пилим сервис статистики, на котором можно будет отслеживать актуальные и исторические данные по игрокам и кланам из базы XVM. Хотим показать первые наброски и получить ваши отзывы. Обращаем внимание на то, что это максимально сырой вариант и все доработки ещё впереди. Как посмотреть? Ссылка на вашу страницу статистики доступна в личном кабинете на сайте XVM: Что ещё запланировано: Страница клана Топ игроков Топ кланов Поиск
  13. 11 points
    На данный момент в стандартной поставке мода отключены следующие компоненты: Миникарта / Minimap Окно загрузки боя Окно по Таб Компоненты работоспособные на данный момент: Кастомизируемые текстовые поля [ BattleLabels ] [Лог попаданий / Hitlog] V2 (py_macro) Полоса захвата / Capture bar Замена лампочки перка "Шестое чувство" Маркеры над техникой Остальные компоненты требуют полной или частичной адаптации. В данной теме обсуждаем работоспособность компонентов, ищем различного рода недоработки/неисправности. Известные проблемы (в процессе наполнения): Не обновляется макрос {{turret}} в маркерах над техникой после возрождения. Исправленные проблемы (в процессе наполнения):
  14. 11 points
    Вертикальное дерево развития 1920x1080 [16:9] Скриншоты: Поддержать развитие мода Visa4276 7400 1529 7732Qiwi+7 914 802 18 59
  15. 11 points
    Таймер как раньше макросы: {time} — время до начала боя {battleType} — тип боя {winString} — задача боя Измененный стандартный таймер можно изменить масштаб, прозрачность, расположение или отключить по отдельности, в конфиге он выключен полностью Скачать
  16. 11 points
    Обновил до версии 7.8.7
  17. 11 points
    Всем привет! В ночь с 27 на 28 марта выйдет микропатч. Папки модов будут называться /mods/1.4.1.1/ и /res_mods/1.4.1.1/ Готовьтесь
  18. 10 points
    Данная модификация добавляет лог урона нанесенного с вашей помощью (по засвету, гусенице, оглушение). Пример подключения: 1) В файл battleLabels.xc добавить: ${ "battleLabelsTemplates.xc":"def.assistLog_Background"}, ${ "battleLabelsTemplates.xc":"def.assistLog"}, 2) В файле battleLabelsTemplates.xc добавить секцию: "assistLog": { "enabled": true, "updateEvent": "PY(ON_ASSIST_LOG)", "x": "{{py:xvm.assistLog_x}}", "y": "{{py:xvm.assistLog_y}}", "width": 300, "height": 500, "layer": "bottom", "screenHAlign": "right", "textFormat": { "color": "0xF4EFE8", "size": 15}, "format": "{{py:xvm.assistLog}}", "mouseEvents": { "mouseDown": "assistLog_mouseDown", "mouseUp": "assistLog_mouseUp", "mouseMove": "assistLog_mouseMove" } }, "assistLog_Background": { "enabled": true, "$ref": { "path":"def.assistLog" }, "format": "{{py:xvm.assistLog_Background}}" }, 3) Файлы assistLog.xc скопировать в папку с вашим кофигом (например в \res_mods\configs\xvm\default\) 4) В файле @xvm.xc нужно добавить ссылку на файл assistLog.xc: "assistLog": ${"assistLog.xc":"assistLog"}, 5) В файле hotkeys.xc добавить клавишу для альтернативного режима: "assistLogAltMode": { "enabled": true, "keyCode": 56, "onHold": true } 6) В файле colors.xc для макросов {{c:assist}}, {{c:sum-assist}}, {{c:track}}, {{c:sum-track}}, {{c:spot}}, {{c:sum-spot}}, {{c:stun}}, {{c:sum-stun}} добавить секцию: // Динамический цвет по проценту нанесенного урона цели. "dmg_ratio_player": [ { "value": 16.5, "color": ${"def.colorRating.very_bad" } }, { "value": 33.5, "color": ${"def.colorRating.bad" } }, { "value": 49.5, "color": ${"def.colorRating.normal" } }, { "value": 66.5, "color": ${"def.colorRating.good" } }, { "value": 83.5, "color": ${"def.colorRating.very_good"} }, { "value": 999, "color": ${"def.colorRating.unique" } } ], 7) Файл assist_log.py скопировать в \res_mods\configs\xvm\py_macro\ 8) Файл assistLog.py скопировать в \res_mods\configs\xvm\py_macro\xvm\ Поддерживаемые макросы перечислены в файл assistLog.xc. Если кто хочет, то отредактируйте описание. Скачать: assistLog.xc assist_log.py assistLog.py
  19. 10 points
    Анонсирую мод Позиций - места настрела, насвета, укрытия НЛД (нижней лобовой детали) для игры World of Tanks. Видео по установке: Скачать бесплатный мод Позиций
  20. 10 points
    Привет, В ночь с 18 на 19 марта выйдет обновление 1.4.1, папки модов будут называться /mods/1.4.1.0/ и /res_mods/1.4.1.0/
  21. 10 points
    Всем привет! В следующий понедельник, 11 марта, в World of Tanks стартует второй эпизод режима «Линия Фронта». В прошлый раз у нас были некоторые проблемы совместимости режима с модами, поэтому одновременно с запуском второго эпизода мы выпустим микропатч, отламывающий установленные у игроков моды. Новые папки модов будут называться /mods/1.4.0.2/ и /res_mods/1.4.0.2
  22. 10 points
    Nопик вот этот... Афигительнейший анализ (от слов анал и лизать) даже не дизассемблированного кода от человека, который в кодинге не разбирается. 127.0.0.1 это сраный локалхост. Это IP, по которому комп может обратиться к самому себе по тем или иным причинам. Обведенная рамочкой функция, если я все правильно вижу, принимает на вход url и проверяет, не ссылается ли этот url часом на localhost при помощи вызова gethostbyname. Название isLocalHost как бы намекает. Начнем с того, что картошкин вайтлист работает только на их же встроенный WebBrowser, а на вызовы из модулей вроде urllib2 не влияет никак. Это раз. В коде, кстати, написан urllib. Который либо используется либо для собственно скачивания данных, и если так, то автор идиот (пользуйтесь urllib2, работяги), либо же - для urllib.urlencode, которая просто-напросто превращает питоновский dict в закодированную в понятный для http-сервера формат строку. Это два. Вышеупомянутый белый список был выключен практически сразу же после появления, когда я спросил про официальный метод монетизации модов, и больше не включался - это три. Начнем с того, что если там что-то и качается - то DLL - Dynamic Language Library - но никак не DDL - Data Definition Language (примером такого Language будет SQL). Скорее всего, тамошние три буквы обозначают Data DownLoad. Ссылка на скачивание, то бишь - вместо /download/ написали /ddl/. Что они там качают - уже вопрос другой, вполне вероятно, что какой-нибудь динамически формируемый список. Проверить мне не удалось, потому что сайта wotzone.ru на данный момент не существует - он просто не открывается браузером. А пароли воровать можно простым хуком одной функции через питон. Все потому что ВГ, если вы вдруг не знали давно всем известный факт, присылает ваш пароль из флеша login.swf в питоновскую функцию открытым текстом. Если не стоит галочка "запомнить пароль", that is. Но это можно легко обойти. Да, сайт mods2all выглядит интересно - главная страница говорит HELLO, потом спрашивает WHAT WAS BEFORE THE BIG BANG? и редиректит тебя на главную гугла. А wotzone, как я уже сказал, вообще не существует. И вполне вероятно, что Фокс действительно что-то повшивал в свои моды, учитывая наплыв европейцев с жалобами на рекламу в его настройщике. Но я могу сказать точно, что конкретно в топике написан полнейший некомпетентный мнительный БРЕД. Даже если из него сделаны ВНЕЗАПНО верные выводы, по которым не буду ничего комментировать. PY out.
  23. 9 points
    1. Страница поддержки для желающих отблагодарить 2. При публикации файлов на сторонних источниках указывайте авторство hideHangarElements Скрипт предназначен для: --- отключения отображения кнопки "Реферальная программа"; --- отключения отображения кнопки "Общий чат"; --- отключения отображения рекламы премиум техники (на фоне в ангаре); --- отключения отображения информационного окна с перечнем полученных наград за "Довольствие"; --- отключения отображения всплывающего окна об открытии "Резервного хранилища" при входе в ангар; --- отключения отображения всплывающих сообщений и счетчика в меню от "Полевой почты". Поставляется с конфигурационным файлом. Установка: Содержимое архива распаковать в корневую директорию клиента Настройка: mods\configs\hangarAddons\ "mods_name.json" Скачать hangarAddons.zip
  24. 9 points
    20 мая выйдет еще один микропатч. Папки модов будут называться /mods/1.5.0.3/ и /res_mods/1.5.0.3/ Включаем новый сезон ранговых.
  25. 9 points
    Решил я попробовать использовать Visual Studio Code (VSC) для редактирования файлов конфигурации XVM. Сам я им только начал пользоваться (до этого использовал Notepad++), поэтому буду рад, если желающие поделятся опытом работы в нем. У меня пока только положительные впечатления от работы в нем. Итак, согласно Википедии: Скачать дистрибутив можно с официальной страницы. После установки имеем: Первое, что захотелось сделать, это русифицировать интерфейс. Для этого кликаем по иконке Extensions (Расширения) на левой панели и набираем в строке поиска Russian Language Pack. В первой строчке будет нужный нам результат. Нажимаем Install и после установки расширения перезапускаем программу. Теперь откроем папку с нашим конфиг XVM (Файл->Открыть папку...). VSC из "коробки" поддерживает языковой режим "JSON с комментариями" (файлы конфигурации XVM это немного расширенный формат JSON с поддержкой комментариев). Если языковой режим не определился автоматически, то нужно кликнуть в правом нижнем углу и выбрать в списке "JSON with Comments". Что же, неплохо, но это несложно сделать и в Notepad++. Приступим к поиску полезных и не очень расширений (список в конце сообщения). В результате установки и небольшой настройки расширений перечисленных в списке ниже, у меня получился следующий вид: Хорошо заметны отступы, блоки кода и концевые пробелы, выделены парные скобки и теги. Хотелось бы также отметить, что в редакторе отображается символ BOM. Дело в том, что на данный момент, при копировании текста с форума вместе с ним может скопироваться управляющий символ BOM (подробнее здесь), который может поломать конфиг. В VSC он, и не только он, будет отображаться специальным символом: Единственное, что смущает это скудная подсветка синтаксиса. Немного покурив Google, сделал подсветку для файлов *.xc. В разных темах она может выглядеть по разному. В стандартной темной теме она выглядит так: Для установки данной подсветки необходимо распаковать содержимое архива в папку %LOCALAPPDATA%\Programs\Microsoft VS Code\resources\app\extensions\. После этого, при открытие файлов с расширением .xc в правом нижнем углу должна быть надпись "XC for XVM". Архив находиться в конце сообщения. Расширения: Существует несколько способов установки расширений. Для меня самый простой способ это пользоваться поиском расширений в самой программе. Bracket Pair Colorizer 2 - добавляет подсветку для скобок, окружающих блоки кода. indent-rainbow - расширение делает отступы более читабельными. Indenticator - еще одно расширение помогающее облегчить восприятия блоков (секций) кодов. Subtle Match Brackets - подчеркивает парные скобки возле которых находиться курсор. Color Highlight - подсвечивает CSS / веб-цвета, найденные в вашем документе. К сожалению на данный момент не поддерживает цвета в виде 0xFFFFFF, хотя судя по репозитории попытки были. Trailing Spaces - выделяет и может удалять конечные пробелы (ALT+SHIFT+T). Highlight Matching Tag - выделения соответствующих открывающих или закрывающих тегов. Russian - Code Spell Checker - русский словарь проверки орфографии. Вместе с ним установиться Code Spell Checker и английский словарь. Почти все расширения имеют настройки (Файл->Параметры->Параметры->Расширения). Темы (переключаться между темами можно сочетанием CTRL+K, CTRL+T): Atom One Dark Theme Solarized Custom (3 темы) Yi Dark & Yi Light Themes (2 темы) Архив с подсветкой синтаксиса для файлов конфигурации XVM: xc.zip
  26. 9 points
    11.05.19 версия 1.5.1 История изменений Досье Никто не забыт, ничто забыто Краткое описание - хочешь больше информации по танкам в карусели - жми на Alt, - хочешь расширенную статистику и маркеры в бою - жми на Alt, - хочешь видеть отметки на орудиях в панели по ТАВ - жми на Alt, - хочешь увеличенную миникарту до начала боя - жми на Alt, - хочешь не сливаться каждый бой - вынь руки из жопы, Alt то не резиновый Фото Видео (v. 1.4.1)
  27. 9 points
    Дополнение позволяет отобразить клавишу рядом с центром уведомлений в ангаре для просмотра вашей статистики аккаунта на сайте XVM. Страница открывается во внешнем браузере, для конечного пользователя не требуется вводить его ID аккаунта. Подробнее про сервис читаем на данной странице форума: Сервис статистики на сайте XVM Данная модификация добавляет следующие макросы: {{py:vc.buttonsState}} - отдает значение 'True' если есть хотя бы одна техника в окне сравнения, иначе пусто. "mouseEvents" > "mouseDown" > "stats_mouseDown" Установка: widgets.xc ${ "widgetsTemplates.xc": "statistics_XVM" } widgetsTemplates.xc "statistics_XVM": { "enabled": true, "layer": "top", "type": "extrafield", "formats": [ { "updateEvent": "PY(ON_VC_BST)", "x": "{{py:vc.buttonsState?-169|-92}}", "y": -2, "width": 73, "height": 34, "screenHAlign": "right", "screenVAlign": "bottom", "src": "xvm://res/icons/other/xvm_button.png", "mouseEvents": { "mouseDown": "stats_mouseDown" } } ] } Скрипт: statisticsXVM.py Разместить в: configs\xvm\py_macro Готовый комплект: statisticsXVM.zip Для дефолтного конфига (распаковать поверх)
  28. 9 points
    Обновлен мод отметок до 7.00 добавлен показ в ангаре:
  29. 9 points
    https://symbolserver.openwg.net Позволяет корректно отображать коллстек для worldoftanks.exe в отладчиках. Как это работает: При помощи генерации PDB файла, который содержит авторазметку от IDA и размеченные функции С/Python API. Обработка присходит в два этапа 1) экспортируем из IDB в .json с помощью скрипта dumpinfo.py 2) генерируем из .exe и .json результирующую .pdb с помощью pdbgen.exe Забрать скрипт и генератор можно тут: https://github.com/Mixaill/FakePDB/releases/tag/v0.0.0 Планы: * поддержка аргументов для функций С/Python API Суть: Кому может быть интересно: @SkepticalFox @reven86 @Pavel3333
  30. 9 points
    Всем привет, После долгого перерыва, добавляем актуальную версию инструмента. Ссылка также добавлена в первый пост.
  31. 9 points
    Привет! В ночь с 4 на 5 февраля выйдет обновление 1.4, папки модов будут называться /mods/1.4.0.0/ и /res_mods/1.4.0.0/
  32. 9 points
  33. 9 points
    Конфиг XVM обновлен Иконки техники обновлены
  34. 9 points
    Мод показывает в окне результата боя рейтинг wn8, eff, xte за бой, показывает итоговый заработанный опыт и серебро за бой вместо начисленного Скачать
  35. 9 points
  36. 8 points
    1. Файлы предназначены для отключения зеркальности кастомных иконок техники размером 80х24 пикселя. *. Иконки техники данного размера создаются программой TankIconMaker 2. Страница поддержки для желающих отблагодарить 3. При публикации файлов на сторонних источниках указывайте авторство Отключение зеркальности для элементов в бою: ◉ окно загрузки боя; ◉ окно по нажатию Tab; ◉ панели команд (уши). Без удаления элементов: mvi_battle.zip С удалением уровня техники: mvi_battle_clear.zip Отключение зеркальности для элементов в ангаре: ◉ окно тренировочной комнаты; ◉ всплывающая подсказка при наведении на экипаж. Без удаления элементов: mvi_hangar.zip С удалением уровня техники: mvi_hangar_clear.zip С удалением уровня и названия техники: mvi_hangar_clear-all.zip Иконки техники (с картинки выше): Для версии клиента - v.1.5.0.3 #1295: vehicle_icons.zip
  37. 8 points
    1. Страница поддержки для желающих отблагодарить 2. При публикации файлов на сторонних источниках указывайте авторство noBinoculars Скрипт предназначен для отключения затемнения и озеленения в снайперском режиме. Поставляется с конфигурационным файлом. Не требует подмены стандартной текстуры "slens_map.dds". noFlashBang Скрипт предназначен для отключения красной вспышки когда враг попадает по вам. Поставляется с конфигурационным файлом. noCameraLimit Скрипт предназначен для отключения предела вращения камеры в снайперском прицеле для техники с ограниченными УГН-ми* Поставляется с конфигурационным файлом. «УНГ» - углы горизонтальной наводки орудия noBattleHint Скрипт предназначен для отключения подсказок в бою (смена режима прицеливания АРТ-САУ, переход в осадный режим, переход в меню ЛБЗ) Поставляется с конфигурационным файлом. safeShot Скрипт предназначен для блокировки случайного выстрела по союзникам и трупам (уничтоженной технике). Поставляется с конфигурационным файлом. Блокировка выстрела по технике союзника. --- Корпус должен быть подсвечен. --- Настраиваемое исключение для тимкиллеров. Блокировка выстрела по уничтоженной технике. --- Настраиваемое время блокировки. Мод полностью отключается при использовании горячей клавиши. --- Горячая клавиша подлежит настройке. extendedZoom Скрипт предназначен для регулировки отдаления камеры, задания кратности прицела в снайперском режиме. Поставляется с конфигурационным файлом. autoAimMarker Скрипт предназначен для отображения видимого маркера текущей цели при автозахвате. Поставляется с конфигурационным файлом. Установка: В зависимости от выбранного дополнения содержимое архива распаковать в корневую директорию клиента (в папку с игровым клиентом) Настройка: mods\configs\camAddons\ "mods_name.json" Скачать camAddons.zip
  38. 8 points
    Apology accepted. Reluctantly. У кого-то все же зачеты >_< Вы может это, потыкаете-таки разработчиков Unbound'а, чтобы они убрали хардкод имён battle.swf и lobby.swf, чтобы можно было научить XVM отключаться самостоятельно? Насколько я понимаю, пытаться переписать XVM таким образом, чтобы он инъектировал свой код в существующие компоненты из отдельного swf-файла, как это сделано, например, в GUIFlash от Гамбитера, а не заменял их полностью, не представляется возможности. Это тоже бы решило нашу проблему, позволив моду отключаться при обнаружении несовместимости без падения игры. Ну и нужны примеры других модов, которые ломаются от микропатчей, потому что делать из XVM козлов отпущения уже как-то самому неприятно.
  39. 8 points
    Я вот щас сильно разочарую всех, кто думает что будут скачивать клиент отдельно с торрентов. авторизация проходит через WGC, если он не запущен, то просто невозможно войти в игру. 100% увидел это ещё на wot classic В случае принудительного ввода WGC я просто развернусь и уйду. мне хватило негативного опыта с гой центром во время 070 эвента. Опишу проблемы которые лично "отхватил" 1. постоянно висит в памяти и производит какие-то действия, антивирус AVG просто заходился в крике про доступ к системным компонентам и постоянному "служебному" трафику. 2. дико медленный запуск клиента. 3. вылеты с ошибками без причины. 4. отказался работать на MAC дочери. 5. при удалении снёс клиент танков вместе с собой. 6. после удаления осталось куча мусора, реестр пришлось восстанавливать из резервной копии, при старте системы получал кучу сообщений от мониторинга целостности. Ну и негатив от того что аунтификация только через этот центр, а не вводом пароля в клиенте игры, мне для тестирования приходится заходить под разными аккаунтами и запускать несколько клиентов одновременно, чтобы к примеру сам с собой в треньке покатать. с гей центром это станет нереально подозреваю. Так что думаю что скоро придётся удалять репо и вместо модов публиковать #НакуйГрёбаныйЦентр
  40. 8 points
  41. 8 points
  42. 8 points
    See English description below. Скачать (Download) https://wgmods.net/2319 Мод Armor Inspector (wotinspector.com) позволяет получить всю информацию о бронировании техники в игре. Описание Основные возможности: • модели бронирование (из ресурсов игры) • расположение модулей и экипажа для многих танков (уникальный контент) • отображение вероятности пробития цветом в зависимости от выбранного орудия • симуляция каждого выстрела, сделанного в последнем бою • детальная информация в каждой точке траектории снаряда • расчет потенциального урона от фугаса • расчет потенциального урона от тарана Мод использует ресурсы игры и может быть также установлен на версии общего теста. Часть функционала является платной. Покупки синхронизируются с мобильным приложением Armor Inspector (iOS, Android) и наоборот. Установка Скопировать wotmod в папку mods/<версия игры>. В ангаре по центру под танком появится кнопка Armor Inspector. Нажатие на кнопку запустит приложение. Выстрелы из последнего боя автоматически переносятся в приложение при запуске. Запуск Запуск по нажатию на кнопку Armor Inspector в ангаре. Кнопка открывает окно браузера и подгружает туда выбранный танк. Внимание: Первый запуск может занять некоторое время (до 30 сек.). Включенный AdBlock может помешать загрузке (это проблема AdBlock т.к. он излишне блокирует загрузку файла с данными) Управление В меню слева можно выбрать один с режимов работы: Рентген, Дуэль и Таран. Рентген показывает общее бронирование танка, расположение модулей, внешний вид. Дуэль служит для симуляции выстрела и отображения вероятностей пробития. Таран позволяет примерно расчитать урон при таране. Дополнительная информация по каждому режиму доступна по кнопки (i) в верхней левой части. Задать стреляющий танк и цель можно в нижней части экрана, там же можно установить скорости для Тарана и тип снаряда. Список выстрелов из последнего боя доступен по кнопке справа. English Armor Inspector modification (wotinspector.com) allows to understand penetration mechanics and check the collision models of any tank in the game. Description Main feature: • collision models (from game resources) • crew and modules locations (unique content) • penetration hitskin depending on the gun you choose • complete simulation of every shot made in the last game • detailed penetration information at any given point on shell's trajectory • HE damage map • calculating potential ramming damage The modification solely uses game resources and can be even installed on Common Test versions. Some functions are paid. Purchases made in the modifications are synced with mobile version of Armor Inspector (iOS, Android) and vice versa. Installation Copy wotmod file into mods/<version> folder When the mod is installed properly, the button Armor Inspector will appear at the garage right under the tank and above the maintenance buttons. Shots from the last battle are automatically accessible when you open Armor Inspector. Running Clicking on Armor Inspector button will bring the app on top. The app is opened in the browser window and the tank selected in garage is loaded into it. Note: First run may take some time (about 30 sek.) AdBlock can prevent app from running. (This is AdBlock issue since it is extensively blocking the loading of one of the data files) Controls Menu on the left allows to select one of the available modes: X-ray, Confrontation and Collision. X-ray shows the armor layout, placements of crew and modules, visual model. Confrontation allows to make a shot simulation and shows penetration hitskins. Collision mode allows to test ramming features of the vehicle. Additional information on every mode is available by clicking (i) at the top part of the app. Changing shooter or target tanks, their speeds and ammo type is possible at the bottom part of the screen. Shots from the last battle are accessible by the button on the right.
  43. 8 points
    mod_marksOnGunExtended 5.11 - added 4 new visual styles - fixed issue with 100% moe - added new option "Battle: show damage to +0.5%"
  44. 8 points
    В файл sight.xc добавлен параметр: // true - не отображать прицел после смерти "hideSightAfterDeath": true, Обновлен скрипт syght.py.
  45. 8 points
    сделал новый дизайн карты скачать
  46. 8 points
  47. 8 points
    Запулил. Для включения данной функции, необходимо в файле battleLabelsTemplates.xc в секции "damageLog"->"mouseEvents" добавить: "mouseWheel": "dLog_mouseWheel"
  48. 8 points
    ВНИМАНИЕ!|----------------------------------------------------------------------------------------|При использовании данного материала на своих сайтах, блогах и другихинтернет ресурсах ссылка на данную тему обязательна.|----------------------------------------------------------------------------------------| Данная модификация заменяет (Халтурно нарисованную как по мне) иконку Шарлотты Уэллс за Twitch Prime. Скриншоты Установка %Папка с танками%/mods/актуальная версия танков Поскольку мод не использует скриптов, мод можно установить один раз, и затем перемещать из папки в папку при выходе новых патчей. --->Скачать<---
  49. 8 points
    Иконки техники обновлены
  50. 8 points
    встречайте пополнение, как обещал R144_K_91.7z K_91_chassis_01_AM.7z R155_Object_277.7z Object_277_chassis_01_AM.7z
×