Jump to content
Korean Random

Leaderboard


Popular Content

Showing content with the highest reputation since 10/22/2020 in all areas

  1. 8 points
    Сделал вам тут новую штукень. Назвал ShutLoggersUp. Если коротко, ВГ наделали в куче мест вызовов на logging.getLogger().info('blablabla'), к примеру, в обработчик персональных жетонов. И всё бы хорошо, но оно СПАМИТ. Причём эти сообщения никому вообще не нужны. Так вот. Я сделал так, что модуль logging игнорирует всё, что INFO или ниже. Варнинги и и прочие эрроры всё ещё работают. Скачать можно тут: ЯндексДиск GoogleDrive
  2. 6 points
    В шапку добавлено три новых мода. Скопипастил ниже их описания. ShutLoggersUp Затыкатель логгеров ВГ наделали в куче мест вызовов на logging.getLogger().info('blablabla'), к примеру, в обработчике персональных жетонов. И всё бы хорошо, но оно СПАМИТ. Причём эти сообщения никому вообще не нужны. Так вот. Я сделал так, что модуль logging игнорирует всё, что INFO или ниже. Варнинги и и прочие эрроры всё ещё работают. Скачать: ЯндексДиск GoogleDrive ReorderProgressionDecals Переупорядочиватель прогрессионных декалей В обновлении 1.9.1 ВГ добавили в игру проекционные декали, которые выдаются за определённые достижения при игре на танке. За количество боёв, за фраги, за знаки Мастер и т.д. Проблема в том, что в той менюшке, где их можно выбрать и поставить на танк, они упорядочены в совершенно не понятном мне порядке. Этот мелкий модик переупорядочивает эти самые декали в порядке сложности получения награды. Сначала идут бои, потом фраги, ну и так далее. Скачать: ЯндексДиск GoogleDrive DamagePercentIndicator Процент прочности танка на индикаторах полученного урона Возможно, модик для нубов, но мне зашло. Суть вот в чём. Я катаюсь на разных машинах разных уровней и классов. И не всегда сразу и быстро понятно, если мне влетело на 250 урона - это можно бояться или продолжать танковать. И чем меньше урона, тем меньше понятно. Соответственно, я сделал модик, который добавляет к индикаторам полученного урона вторую строчку с процентом этого самого урона от полной прочности моего танка. Скачать: ЯндексДиск GoogleDrive
  3. 5 points
    Ну пока с восьмеркой сначала надо разобраться. Потом уже и до 9 и 10 надеюсь руки дойдут @Slava7572, 9-ка по быстрому (SD) Cz16_TNH_T_vz51.zip
  4. 5 points
    получите и распишитесь Обновление в отдельной форме архивы будут обновлены немного позже
  5. 4 points
    Немного про механику игры, исходя из клиентского кода Разброс в механике игры задается сервером как тангенс половинного угла разброса орудия dispersionAngle. Эту цифру сервер обсчитывает с тиком 0,1 сек и шлет клиенту игры. Вычисляет её он как функцию от динамических характеристик танка, путем применения дополнительных коэффициентов к базовому тангенсу разброса орудия, прописанному в файлах ТТХ для дистанции 100 метров. Все эти коэффициенты и формулу можно посмотреть в коде игры, они дублируют расчеты на сервере чтобы сглаживать движение объектов в клиенте игры. Расчеты в клиенте вынесены в отдельную функцию getOwnVehicleShotDispersionAngle. Ниже её код, а вот тут его разбор в числах, правда он мог немного устареть. def getOwnVehicleShotDispersionAngle(self, turretRotationSpeed, withShot=0): descr = self.__getDetailedVehicleDescriptor() aimingStartTime, aimingStartFactor, multFactor, gunShotDispersionFactorsTurretRotation, chassisShotDispersionFactorsMovement, chassisShotDispersionFactorsRotation, aimingTime = self.__aimingInfo vehicleSpeed, vehicleRSpeed = self.getOwnVehicleSpeeds(True) vehicleMovementFactor = vehicleSpeed * chassisShotDispersionFactorsMovement vehicleMovementFactor *= vehicleMovementFactor vehicleRotationFactor = vehicleRSpeed * chassisShotDispersionFactorsRotation vehicleRotationFactor *= vehicleRotationFactor turretRotationFactor = turretRotationSpeed * gunShotDispersionFactorsTurretRotation turretRotationFactor *= turretRotationFactor if withShot == 0: shotFactor = 0.0 elif withShot == 1: shotFactor = descr.gun.shotDispersionFactors['afterShot'] else: shotFactor = descr.gun.shotDispersionFactors['afterShotInBurst'] shotFactor *= shotFactor idealFactor = vehicleMovementFactor + vehicleRotationFactor + turretRotationFactor + shotFactor additiveFactor = self.__getAdditiveShotDispersionFactor(descr) idealFactor *= additiveFactor ** 2 idealFactor = multFactor * math.sqrt(1.0 + idealFactor) currTime = BigWorld.time() aimingFactor = aimingStartFactor * math.exp((aimingStartTime - currTime) / aimingTime) isGunReloading = self.guiSessionProvider.shared.ammo.isGunReloading() if aimingFactor < idealFactor: aimingFactor = idealFactor self.__aimingInfo[0] = currTime self.__aimingInfo[1] = aimingFactor if abs(idealFactor - multFactor) < 0.001: if not self.__isAimingEnded and not isGunReloading: self.soundNotifications.play('sight_convergence') self.__isAimingEnded = True elif idealFactor / multFactor > 1.1: self.__isAimingEnded = False elif aimingFactor / multFactor > 1.1: self.__isAimingEnded = False return [descr.gun.shotDispersionAngle * aimingFactor, descr.gun.shotDispersionAngle * idealFactor] В механике игры снаряды летят по параболе, параметры которой зависят от дистанции от танка игрока до точки прицеливания. Сервер в игре вычисляет дистанции по прямой, либо от опорной точки модели танка, либо от точки вылета снаряда. При этом снаряд на всех моделях вылетает из точки крепления пушки, она же опорная точка орудия (трассер кстати рисуется из другой точки, из конца орудия - элемент модели _GunFire). Первое юзается в механике маскировки и в засвета, второе в баллистике и прицеливании. Опорная точка пушки вычисляется, например так: startPoint = player.getOwnVehiclePosition() startPoint += player.vehicleTypeDescriptor.hull.turretPositions[0] + player.vehicleTypeDescriptor.turret.gunPosition Дистанция прицеливания вычисляется в той точке, в которую указывает маркер игрока, т.е. в точке пересечения луча из маркера, ортогонального плоскости монитора, с поверхностью игрового мира. В клиенте есть код на её вычисление, поэтому самому считать не надо, а можно брать готовое значение из: markerPos = player.gunRotator.markerInfo[0] Отсюда получается, что дистанция от танка игрока до точки прицеливания в механике стрельбы это всегда: markerDist = startPoint.distTo(markerPos) Тогда радиус круга разброса в точке прицеливания для любого танка это: dispersionRadius = player.gunRotator.dispersionAngle * markerDist В клиенте игры это все есть в коде, который отвечает за отрисовку сведения. Для этого используются следующие функции: 1. Внеклассовая функция расчета баллистических параметров в точке прицеливания getCappedShotTargetInfos def getCappedShotTargetInfos(shotPos, shotVec, gravity, shotDescr, vehicleID, minBounds, maxBounds, collisionStrategy): endPos, direction, collData, usedMaxDistance = BigWorld.wg_getCappedShotTargetInfos(BigWorld.player().spaceID, shotPos, shotVec, gravity, shotDescr.maxDistance, vehicleID, minBounds, maxBounds, collisionStrategy) if collData != 0: collData = EntityCollisionData(*collData) else: collData = None return (endPos, direction, collData, usedMaxDistance) Она обсчитывает траекторию нативно, но как именно она считает можно глянуть под спойлером. В списке выходных параметров direction это вектор попадания снаряда с учетом баллистической траектории. 2. Классовая функция расчета баллистических параметров и разброса в точке прицеливания __getGunMarkerPosition, использующая функцию из п.1 def __getGunMarkerPosition(self, shotPos, shotVec, dispersionAngles): shotDescr = self._avatar.getVehicleDescriptor().shot gravity = Math.Vector3(0.0, -shotDescr.gravity, 0.0) testVehicleID = self.getAttachedVehicleID() collisionStrategy = AimingSystems.CollisionStrategy.COLLIDE_DYNAMIC_AND_STATIC minBounds, maxBounds = BigWorld.player().arena.getSpaceBB() endPos, direction, collData, usedMaxDistance = AimingSystems.getCappedShotTargetInfos(shotPos, shotVec, gravity, shotDescr, testVehicleID, minBounds, maxBounds, collisionStrategy) distance = shotDescr.maxDistance if usedMaxDistance else (endPos - shotPos).length markerDiameter = 2.0 * distance * dispersionAngles[0] idealMarkerDiameter = 2.0 * distance * dispersionAngles[1] replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isClientReady: markerDiameter, endPos, direction = replayCtrl.getGunMarkerParams(endPos, direction) return (endPos, direction, markerDiameter, idealMarkerDiameter, collData) Как видим, диаметр круга разброса в точке прицеливания это удвоенное текущее значение тангенса половинного угла разброса орудия танка 2*dispersionAngles[0] помноженное на дистанцию distance = .... (endPos - shotPos).length между опорной точкой орудия shotPos и точкой прицеливания endPos. 3. Далее находим, где используется __getGunMarkerPosition. В функции обновления сведения прицела __updateGunMarker, которая вызывается пока игрок в бою с периодичностью 0,1 сек, что составляет тик сервера: def __updateGunMarker(self, forceRelaxTime=None): if self._avatar.getVehicleAttached() is None: return else: shotPos, shotVec = self.getCurShotPosition() markerPos, markerDir, markerSize, idealMarkerSize, collData = self.__getGunMarkerPosition(shotPos, shotVec, self.__dispersionAngles) replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isRecording and not replayCtrl.isServerAim: replayCtrl.setGunMarkerParams(markerSize, markerPos, markerDir) if not self.__targetLastShotPoint: self.__lastShotPoint = markerPos replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isUpdateGunOnTimeWarp: self._avatar.inputHandler.updateGunMarker(markerPos, markerDir, (markerSize, idealMarkerSize), 0.001, collData) else: relaxTime = self.__ROTATION_TICK_LENGTH if forceRelaxTime is None else forceRelaxTime self._avatar.inputHandler.updateGunMarker(markerPos, markerDir, (markerSize, idealMarkerSize), relaxTime, collData) self.__markerInfo = (markerPos, markerDir, markerSize) if self._avatar.inCharge: self._updateMultiGunCollisionData() return А еще в дублирующей её setShotPosition, которая обеспечивает автовозвышение орудия танка и обновление, упомянутого выше публичного буфера player.gunRotator.markerInfo. 4. Теперь нужно лезть в дебри модулей, отвечающих за управление прицелом и отрисовку сведения через флэшку, именно туда ведет вызов _avatar.inputHandler.updateGunMarker из кода выше. Если опустить подробности то, передача данных идет через объект DataProvider, который по сути является прокладкой для передачи данных в код флэшки прицела. Здесь же стоит отметить, что версии провайдера разные для прицела арты и для остальных прицелов танков. Для прицела арты создается он так: def _makeSPGProvider(): dataProvider = GUI.WGSPGGunMarkerDataProvider(aih_constants.SPG_GUN_MARKER_ELEMENTS_COUNT, aih_constants.SPG_GUN_MARKER_ELEMENTS_RATE) dataProvider.positionMatrixProvider = Math.MatrixAnimation() dataProvider.maxTime = 5.0 dataProvider.serverTickLength = constants.SERVER_TICK_LENGTH dataProvider.sizeScaleRate = aih_constants.SPG_GUN_MARKER_SCALE_RATE dataProvider.sizeConstraint = (aih_constants.SPG_GUN_MARKER_MIN_SIZE, aih_constants.SPG_GUN_MARKER_MAX_SIZE) dataProvider.setRelaxTime(constants.SERVER_TICK_LENGTH) return dataProvider А для всех остальных вот так def _makeDefaultProvider(): dataProvider = GUI.WGGunMarkerDataProvider() dataProvider.positionMatrixProvider = Math.MatrixAnimation() dataProvider.setStartSize(_setupGunMarkerSizeLimits(dataProvider)[0]) return dataProvider Что означают доп.константы у прицела арты, думаю не сложно догадаться, их значения кстати вот такие: GUN_MARKER_MIN_SIZE = 32.0 SPG_GUN_MARKER_ELEMENTS_COUNT = 37 SPG_GUN_MARKER_ELEMENTS_RATE = 10 SPG_GUN_MARKER_MIN_SIZE = 50.0 SPG_GUN_MARKER_MAX_SIZE = 100.0 SPG_GUN_MARKER_SCALE_RATE = 10.0 Обращаем внимание на последний параметр, у сведения арты есть дополнительный коэф. масштаба SPG_GUN_MARKER_SCALE_RATE. Передача данных в провайдер прицела арты выглядит вот так: def update(self, markerType, position, direction, size, relaxTime, collData): super(_SPGGunMarkerController, self).update(markerType, position, direction, size, relaxTime, collData) positionMatrix = Math.Matrix() positionMatrix.setTranslate(position) self._updateMatrixProvider(positionMatrix, relaxTime) self._size = size[0] ################################################# self._update() def _update(self): pos3d, vel3d, gravity3d = self._getCurrentShotInfo() replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isClientReady: self.__updateRelaxTime() self._updateDispersionData() self._dataProvider.update(pos3d, vel3d, gravity3d, self._size) def _getCurrentShotInfo(self): gunMat = AimingSystems.getPlayerGunMat(self._gunRotator.turretYaw, self._gunRotator.gunPitch) position = gunMat.translation velocity = gunMat.applyVector(Math.Vector3(0, 0, self._shotSpeed)) return (position, velocity, Math.Vector3(0, -self._shotGravity, 0)) ######################### def _updateDispersionData(self): dispersionAngle = self._gunRotator.dispersionAngle ######################### isServerAim = self._gunMarkerType == _MARKER_TYPE.SERVER replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isClientReady: d, s = replayCtrl.getSPGGunMarkerParams() if d != -1.0 and s != -1.0: dispersionAngle = d elif replayCtrl.isRecording: if replayCtrl.isServerAim and isServerAim: replayCtrl.setSPGGunMarkerParams(dispersionAngle, 0.0) elif not isServerAim: replayCtrl.setSPGGunMarkerParams(dispersionAngle, 0.0) self._dataProvider.setupConicDispersion(dispersionAngle) В то время как для остальных танков вот так: def update(self, markerType, pos, direction, sizeVector, relaxTime, collData): super(_DefaultGunMarkerController, self).update(markerType, pos, direction, sizeVector, relaxTime, collData) positionMatrix = Math.Matrix() positionMatrix.setTranslate(pos) self._updateMatrixProvider(positionMatrix, relaxTime) size = sizeVector[0] idealSize = sizeVector[1] replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isClientReady: s = replayCtrl.getArcadeGunMarkerSize() if s != -1.0: size = s elif replayCtrl.isRecording: if replayCtrl.isServerAim and self._gunMarkerType == _MARKER_TYPE.SERVER: replayCtrl.setArcadeGunMarkerSize(size) elif self._gunMarkerType == _MARKER_TYPE.CLIENT: replayCtrl.setArcadeGunMarkerSize(size) positionMatrixForScale = self.__checkAndRecalculateIfPositionInExtremeProjection(positionMatrix) worldMatrix = _makeWorldMatrix(positionMatrixForScale) currentSize = _calcScale(worldMatrix, size) * self.__screenRatio idealSize = _calcScale(worldMatrix, idealSize) * self.__screenRatio self.__sizeFilter.update(currentSize, idealSize) self.__curSize = self.__sizeFilter.getSize() if self.__replSwitchTime > 0.0: self.__replSwitchTime -= relaxTime self._dataProvider.updateSize(self.__curSize, 0.0) else: self._dataProvider.updateSize(self.__curSize, relaxTime) Рассмотрим сначала второй код. Для аркадного и снайперского прицелов размер сведения в пикселях вычисляется непосредственно в функции update() и затем отдается провайдеру. Для этого берется диаметр мгновенного значения круга разброса в текущей точке прицеливания size = sizeVector[0], высчитывается его масштаб для экрана игрока через функцию _calcScale и этот масштаб умножается на половину ширины экрана в пикселях self.__screenRatio. Последняя величина находится вот так self.__screenRatio = GUI.screenResolution()[0] * 0.5. Чтобы сведение в игре не было очень маленьким или очень большим, а оно будет таковыми, имеется фильтр self.__sizeFilter, который ограничивает минимально и максимально возможное значение круга сведения. Лимиты, которые задаются в него, вычисляются вот так: def _setupGunMarkerSizeLimits(dataProvider, scale=None): if scale is None: settingsCore = dependency.instance(ISettingsCore) scale = settingsCore.interfaceScale.get() limits = (aih_constants.GUN_MARKER_MIN_SIZE * scale, min(GUI.screenResolution())) dataProvider.sizeConstraint = limits return limits Переходим к арт-прицелу. У арты расчеты в пикселях в функции update() не выполняются, вместо этого данные о точке выстрела, векторах начальной скорости и гравитации и текущем диаметре круга разброса в точке прицеливания - pos3d, vel3d, gravity3d и self._size - передаются прямо в провайдер. А также в него передается текущее значение тангенса угла разброса орудия dispersionAngle. Что со всем этим делает провайдер WGSPGGunMarkerDataProvider сказать трудно, т.к. он нативный. Если глянуть список доступных атрибутов и функций у WGSPGGunMarkerDataProvider, то там можно увидеть: *** enableSmoothFiltering *** getPointsInside *** maxTime *** positionMatrixProvider *** relaxTime *** reset *** serverTickLength *** setRelaxTime *** setStartSize *** setupConicDispersion *** setupFlatRadialDispersion *** sizeConstraint *** sizeScaleRate *** update *** updateSize Функция setupFlatRadialDispersion тоже встречается в коде клиента игры. Это код, который отвечает за отрисовку новой игровой фичи - подсветки на игровом поле места, куда стреляет или будет стрелять арта. Код класса можно глянуть тут. В качестве аргумента в функцию передается игровая константа areaRadius.
  6. 4 points
    Адаптированная для 2.92 версия. tank_viewer_alpha.7z
  7. 4 points
    Добавил в шапку аддон: Показать/скрыть чат в бою
  8. 4 points
    Навигация по теме: Установка и знакомство Подсветка синтаксиса Установка Файл расширения Расширения Список и ссылки на расширения Настройка некоторых расширений Темы Некоторые возможности редактора Горячие клавиши Решил я попробовать использовать Visual Studio Code (VSC) для редактирования файлов конфигурации XVM. Сам я им только начал пользоваться (до этого использовал Notepad++), поэтому буду рад, если желающие поделятся опытом работы в нем. У меня пока только положительные впечатления от работы в нем. Итак, согласно Википедии: Скачать дистрибутив можно с официальной страницы. После установки имеем: Первое, что захотелось сделать, это русифицировать интерфейс. Для этого кликаем по иконке Extensions (Расширения) на левой панели и набираем в строке поиска Russian Language Pack. В первой строчке будет нужный нам результат. Нажимаем Install и после установки расширения перезапускаем программу. Теперь откроем папку с нашим конфиг XVM (Файл->Открыть папку...). VSC из "коробки" поддерживает языковой режим "JSON с комментариями" (файлы конфигурации XVM это немного расширенный формат JSON с поддержкой комментариев). Если языковой режим не определился автоматически, то нужно кликнуть в правом нижнем углу и выбрать в списке "JSON with Comments". Что же, неплохо, но это несложно сделать и в Notepad++. Приступим к поиску полезных и не очень расширений (список в конце сообщения). В результате установки и небольшой настройки расширений перечисленных в списке ниже, у меня получился следующий вид: Хорошо заметны отступы, блоки кода и концевые пробелы, выделены парные скобки и теги. Единственное, что смущает это скудная подсветка синтаксиса. Немного покурив Google, сделал подсветку для файлов *.xc. В разных темах она может выглядеть по разному. В стандартной темной теме она выглядит так: Для установки данной подсветки необходимо: скачать файл xc-X.X.X.vcix (файл находиться в конце сообщения), где X.X.X - версия расширения запустить VSC в право верхнем углу панели "Расширения" (Ctrl + Shift + X) нажать кнопку в выпавшем меню выбрать пункт "Установка из VSIX..." и выбрать скачанный файл После этого в панели "Расширения" у вас должно появиться расширение: Расширения: Существует несколько способов установки расширений. Для меня самый простой способ это пользоваться поиском расширений в самой программе. Bracket Pair Colorizer 2 - добавляет подсветку для скобок, окружающих блоки кода. indent-rainbow - расширение делает отступы более читабельными. Indenticator - еще одно расширение помогающее облегчить восприятия блоков (секций) кодов. Subtle Match Brackets - выделяет парные скобки возле которых находиться курсор. Color Highlight - подсвечивает CSS / веб-цвета, найденные в вашем документе. К сожалению на данный момент не поддерживает цвета в виде 0xFFFFFF, хотя судя по репозиторию попытки были (Пересобрал данное расширение, теперь поддерживает цвета в виде 0xFFFFFF. Скачать расширение можно в конце данного сообщения). Trailing Spaces - выделяет и может удалять конечные пробелы (ALT+SHIFT+T). Highlight Matching Tag - выделения соответствующих открывающих или закрывающих тегов. Russian - Code Spell Checker - русский словарь проверки орфографии. Вместе с ним установиться Code Spell Checker и английский словарь. TabSpacer - конвертирует табы в пробелы (Ctrl + Shift + T). Project Manager - менеджер проектов. Будет полезен, если вы настраиваете несколько конфигураций. Path Autocomplete - автозаполнение пути к каталогам и файлам. Markdown Preview Enhanced - предпросмотр файлов в формате Markdown. Пригодится для редактирования файлов README.md на GitHub или BitBucket. (Ctrl + K, V или Ctrl + Shift + V) L13 Diff - Сравнение двух папок (Ctrl + L Ctrl + L). Почти все расширения имеют настройки (Файл->Параметры->Параметры->Расширения). Темы (переключаться между темами можно сочетанием CTRL+K, CTRL+T): Atom One Dark Theme Solarized Custom (3 темы) Yi Dark & Yi Light Themes (2 темы) Расширение для подсветкой синтаксиса файлов конфигурации XVM: xc-1.0.0.vsix Пересобранное расширение Color Highlight: color-highlight-2.3.1.vsix
  9. 4 points
  10. 3 points
    1.14.1 – – XVM (config 13.10.21).zip ---
  11. 3 points
    WOT Mods Cleaner Версия: 1.3.1 Дата обновления: 01/08/2021 Описание: Программа предназначена для поиска и удаления модификаций, установленных в клиенте игры WorldOfTanks. Она позволяет найти все сторонние файлы, подключенные к клиенту и удалить их в автоматическом режиме, предварительно сделав бэкап в случае необходимости. Функционал программы включает в себя: Поиск файлов в "mods" и "res_mods" папках клиента (Internal mods) Анализ и восстановление файла "paths.xml", определение сторонних ссылок на файлы и папки в нём (External mods and files) Расширенный поиск посторонних файлов в каталоге "WorldOfTanks\res" путем загрузки и анализа данных с сервера обновлений WG (External mods and files) Удаление файлов и папок по расширенному списку, загружаемому с GitHub: WMCleaner-ExtendedList Очистка кэша игры в каталоге "Wargaming.net\WorldOfTanks\" (Cache-folder) Поиск и удаление log-файлов (Logs-files) Поиск и удаление скриншотов (Screenshots-files) Поиск и удаление реплеев (Wotreplays-files) Создание zip-архива с бэкапом Через программу можно скачать напрямую с сервера обновлений WG последние версии: WOTLauncher для RU, EU, NA и ASIA регионов WGCheck для RU, EU, NA и ASIA регионов Для работы с программой достаточно положить exe-файл программы в корень клиента игры (папка "WorldOfTanks\"), после чего запустить его. Программа автоматически проанализирует клиент игры и выдаст список файлов и модов, которые можно удалить. Удаляете их, закрываете программу, всё готово. Также для упрощения задания искомой папки вы можете просто перенести мышкой в запущенную программу любой файл из корневого каталога игры. Программа сама по нему определит правильный путь.... Особенности: ОС Windows Vista/7/8/10 Локализация RUS/ENG Программа тестировалась на совместимость с игровым и тестовым (СТ) клиентами игры Расширенный анализ файлов клиента игры со 100% выявлением всех запускаемых модов (External mods and files) доступен только при загрузке программой актуальных данных с сервера обновлений WG Загрузка данных с сервера обновлений WG производится для версии клиента игры, указанной в файле game_info.xml. Если версия клиента отличается от той, что на сервере игры, то программа предлагает пользователю выбор - можно либо продолжить на свой страх и риск, либо отказаться от углубленного анализа файлов. Если вы соглашаетесь, то после анализа необходимо тщательно проверить, что программой добавила в перечень удаляемых файлов Программа не очищает полностью весь каталог клиента игры от посторонних файлов, она ориентирована в первую очередь на обнаружение и удаление тех файлов и модификаций, которые загружаются или могут быть загружены клиентом игры и тем самым влиять на его работу и работоспособность Чтобы программный сканер или сама программа по какой-либо причине или ошибке не удалила каталог с игрой в коде программы реализована защита от такого удаления. Скачать: WMCleaner_1.3.1_200.zip | VirusTotal: 0/67 | Старые версии тут Аргументы командной строки для запуска в консольном режиме с параметрами Примеры запуска в консольном режиме с параметрами История версий:
  12. 3 points
    обновлено под новый патч
  13. 3 points
    @Kustarnik Если только такое.
  14. 3 points
    Вне зависимости от версии, все механики реализуются на сервере. На клиенте лишь визуальное отображение. Всё, что отправляет клиент, проверяется на сервере так же.
  15. 3 points
    Тут ввели новый экспериментальный режим Разведка боем Стоит ли на нём заморачиваться (адаптировать скрипты аддонов) либо нужно отключить? имхо: режим по типу "стандартного" и думаю стоит адаптировать
  16. 3 points
    Раздача для Steam Раздача продлится до 30 мая 2021-го (20:00 МСК). Little Nightmares Вам необходимо: Открыть клиент Steam. Перейти на страницу игры в магазине. Нажать кнопку "Добавить на аккаунт". Теперь игра навсегда останется на вашем аккаунте.
  17. 3 points
    Раздача для Epic Games Store Раздача продлится с 15 по 22 апреля 2021-го (18:00 МСК). Вам необходимо: 1. Зайти на сайт. 2. Зарегистрироваться / Войти. Deponia: The Complete Journey 3. Добавить игру на аккаунт на странице акции. Ken Follett's The Pillars of the Earth 4. Добавить игру на аккаунт на странице акции. The First Tree 5. Добавить игру на аккаунт на странице акции. 6. После этого продукт навсегда привязывается к учетной записи. 7. Установить его можно будет при помощи фирменного лаунчера Epic Games.
  18. 3 points
    09.02.21 Обновлена сборка модов: * Обновлено для версии игрового клиента v1.11.1.3 * Обновлён мод "Комплексный мод XVM" до версии v8.7.6-dev
  19. 3 points
    Математическая модель платформы Стюарта. Давайте реально рассчитаем нашу платформу для средней части туловища будущего робота. Ниже две вырезки из замечательной книги «Анатомия для скульпторов», которые отображают места и площади срезов в женском теле человека. Расстояния между зеленым и фиолетовыми срезами - равно примерно стандартной единице измерения человеческого тела (голова) - в нашем случае это 125 мм. (для робота ростом 1 м и идеальным соотношением голов к росту в 8 единиц). Спасибо создателям этой книги - в этом рисунке они постарались учесть пропорции и размеры по максимуму - и можно говорить что в фиолетовый и зеленый срезы можно примерно вписать окружность с диаметром 100 мм. Эти начальные параметры мы и берем за основу - расчетная высота нашей платформы будет 125, а расчетные окружности основной и подвижной плоскостей с диаметром 100 или радиусом 50 мм. Получилось как то так. Угол между точками составляет 15° (где есть отрезок) и 105°. подвижная платформа смещена по оси Z на 60 градусов. Весь смысл приведения в движение платформу - нахождение длин отрезков совмещающих точки на основной и подвижной плоскостях, ну и в нашем случае приведение актюаторов в правильное соответствие, я эти отрезки отобразил также. Давайте условимся сразу об именовании точек, соединяющих точки основы и подвижной части - предлагаю отрезки назвать по цветам белый-черный-красный-синий-зеленый-желтый и принадлежность основа-подвижный, таким образом точки у нас будут: white_base_p; white_move_p; black_base_p; black_move_p; red_base_p; red_move_p; blue_base_p; blue_move_p; green_base_p; green_move_p; yelow_base_p; yellow_move_p. Ну и соответственно отрезки: white; black; red; blue; green; yellow. Если посмотреть внимательней - для основы это трехмерные векторы с началом в точке O, которая будет являться у нас началом координат всей платформы и в этом случае искомые точки для базы у нас равны координатам векторов. Например на моем рисунке выше, где у есть обозначение длины отрезка этот вектор будет с координатами (50, 0, 0), и точка имеет эти координаты. Так как у нас точки все лежат на одной плоскости и не двигаются по оси Z - мы не берем это в расчет. Формулы для нахождения координат вектора при повороте на угол Ɵ ниже, знак выбирается в зависимости от системы координат - правосторонняя или левосторонняя, в формуле так же нужно использовать радианы, вместо градусов . Забьем эти формулы в табличку и получим следующие значения координат точек для базовой платформы. x y z angle white_base_p 50,0000 0,0000 0,0000 0 black_base_p 48,2963 -12,9410 0,0000 15 red_base_p -25,0000 -43,3013 0,0000 120 blue_base_p -35,3553 -35,3553 0,0000 135 green_base_p -25,0000 43,3013 0,0000 -120 yelow_base_p -12,9410 48,2963 0,0000 -105 blue_move_p -50,0000 0,0000 125,0000 0 green_move_p -48,2963 12,9410 125,0000 15 yellow_move_p 25,0000 43,3013 125,0000 120 white_move_p 35,3553 35,3553 125,0000 135 red_move_p 12,9410 -48,2963 125,0000 -105 black_move_p 25,0000 -43,3013 125,0000 -120 Вот теперь мы можем вычислить наши отрезки, для этого найдем вектор начало которого будет на основе, а конец на подвижной части и найдем модуль этого вектора. В принципе можно просто искать отрезок - формулы одинаковы, но будем использовать векторы. x y z length white -14,6447 35,3553 125,0000 130,7267 black -23,2963 -30,3603 125,0000 130,7267 red 37,9410 -4,9950 125,0000 130,7267 blue -14,6447 35,3553 125,0000 130,7267 green -23,2963 -30,3603 125,0000 130,7267 yelow 37,9410 -4,9950 125,0000 130,7267 Ну вроде все правильно - у нас получилось что все отрезки в стартовом состоянии равны 131 мм. Посмотрим на чертеж линейных актюаторов из поднебесной. Китайцы делают их с ходом 10, 21, 30, 50 и 100 мм. Начальное состояние у нас должно быть для актюатора где-то не в самом начале, а примерно посередине, чтобы должна быть возможность хода в обе стороны. Таким образом для хода в 50 мм у нас получиться (для центра отверстий): ; . Т.е. 131 мм. - как раз чуть больше середины: . Теперь думаю понятно что перемещая или вращая подвижную часть относительно базы, нам нужно вычислять соответствующие точки, затем вычислять по ним модуль векторов (отрезков) и выдвигать актюаторы на нужную длину. Здесь есть несколько проблем, заранее нужно условится, что расчет будет всегда происходить от начального состояния и первым мы делаем расчет вращения подвижной части, а затем применяем к ней перемещение . С перемещением подвижной части все относительно просто - берем вектор , где начальная точка с координатами , а ' конечная точка и перемещаем все наши точки по формуле: А вот с вращением все немного интереснее. Углы Крылова или Эйлера имеют ограничения в виде определенности последовательности поворотов и так называемый «шарнирный замок» - так что будем использовать кватернионы. Находим векторы в начальном состоянии - это просто, нужно от конечной точки отнять конечную. x y z blue_move_v -50 0 0 green_move_v -48,2963 12,941 0 yellow_move_v 25 43,3013 0 white_move_v 35,3553 35,3553 0 red_move_v 12,941 -48,2963 0 black_move_v 25 -43,3013 0 Для поворота вектора кватернионом необходимо: Создать кватернион из нашего вектора, добавив к нему скалярную нулевую часть blue_move_q = (0, 50, 0, 0) (как пример). Кватренион состоит из скалярной части qw и векторной qx, qy, qz. Умножить наш кватернион поворота на созданный и затем умножить на сопряженный blue_move_q' = q • blue_move_q • . Таким образом мы применяем поворот, который описывает наш кватернион к вектору. Отбрасываем скалярную часть чтобы получить наш повернутый вектор blue_move_v'. Так как у нас используется нулевая скалярная часть, и для получения вектора она нам тоже не нужна - умные люди сильно упростили данное вычисление и оно выполняется быстрее. Где - исходный вектор, - векторная часть кватерниона, - скалярная часть кватерниона, - произведение, • - скалярное произведение и - искомый вектор. Вернемся к нашей платформе, мы будем получать два кватерниона для робота - один говорит нам о повороте основы в глобальном пространстве, второй о повороте подвижной части. Для получения поворота подвижной части в координатах основы (то как повернуть подвижную часть нужно относительно координат основы) необходимо кватернион основы умножить на кватернион подвижной части и мы получим кватернион который описывает вращение как будто основа у нас неподвижна и находиться в центре координат. Формула умножения: ; Где - векторное произведение, а - скалярное. Приводить полную формулу не буду - легко гуглиться ;) Итак, у нас есть кватернион поворота для локальной системы координат подвижной части платформы, базовый для расчета берем тождественный, с координатами (1, 0, 0, 0). Давайте разберем на примере что куда в табличках. Возьмем кватернион, который описывает в углах Эйлера поворот по всем осям на 15° - q(0.972, 0.145, 0.111, 0.145) и повернем векторы подвижной части платформы на него. x y z blue_move_v_q -46,665 -15,704 8,687 green_move_v_q -48,307 -3,316 12,455 yellow_move_v_q 12,521 47,511 9,256 white_move_v_q 24,170 43,486 4,962 red_move_v_q 24,137 -40,170 -17,417 black_move_v_q 34,145 -31,808 -17,943 Для того чтобы получить наши точки концов векторов необходимо к значениям координат вектора прибавить координаты точки начала, в нашем случае при любых поворотах она осталась прежней с координатами (0, 0, 125), таким образом нам необходимо только скорректировать столбец с Z. x y z blue_move_p -46,665 -15,704 133,687 green_move_p -48,307 -3,316 137,455 yellow_move_p 12,521 47,511 134,256 white_move_p 24,170 43,486 129,962 red_move_p 24,137 -40,170 107,583 black_move_p 34,145 -31,808 107,057 Так а что относительно перемещения? Так как основная идея робота максимально пробовать использовать физиологию человека, то моя идея такова. У нас есть еще один вектор - соединяющий центр основы и подвижной части, что-то наподобие позвоночника у человека. В итоге когда мы двигаем телом верхняя часть туловища и нижняя взаимосвязаны, та часть позвоночника между этими частями всегда принимает какое-то промежуточное значение между положениями верхней и нижней части туловища. Мы попробуем поступить так же. Сумма двух кватернионов даст нам «средний» поворот между двумя. Именно этот кватернион будет применятся к вектору между центрами, таким образом получим новый вектор, который соединяет два центра основы и подвижной части платформы, отняв от которого существующий базовый можно получить наш вектор перемещения. w x y z q 0,9723 0,1452 0,1114 0,1452 q_middle_norm 0,9931 0,0731 0,0561 0,0731 q_middle 1,9723 0,1452 0,1114 0,1452 q_base 1,00 0,00 0,00 0,00 center_v 0,00 0,00 125,00 center_v_q 15,26142 -17,12509 122,87726 center_move_v 15,26142 -17,12509 -2,12274 Теперь можно рассчитать нужные нам точки для подвижной платформы, векторы от нижней к верхней платформе и их модули (т.е. длину отрезков). x y z length white -10,5906 26,3752 127,8356 130,9571 black 1,1160 -35,9661 104,8885 110,8891 red 64,4099 -13,9746 105,4204 124,3277 blue 3,9661 2,4949 131,6004 131,6838 green -23,2964 -63,7759 135,3758 151,4486 yelow 40,7022 -17,9041 132,1429 139,4237 Ну вроде как вкладываемся в ход актюаторов ;) В общем как-то так. P.S. Пошу прощения, делал все в текстовом редакторе - немного поломалась разметка ;)
  20. 3 points
  21. 3 points
    Актуально для XVM 8.7.9 World of Tanks 1.12.1.2 Значение полей: Особенности: Таймер перезарядки показывает красным цветом время до конца перезарядки. Когда снаряд заряжен, показывает "ОК" для цикличных танков, или время перезарядки снарядов внутри барабана. Ниже показывается полное время перезарядки снаряда или барабана. Поле дистанции до цели/точки прицеливания становится красным при наведении прицела на цель: Количество и тип снарядов окрашены цветом голдовости снаряда. Когда снарядов остается <=5, цифры кол-ва становятся красными: Конфиг 08-06-2021.zip Необходимые скрипты: chancePenetration.py (Вероятность пробития) reloading.py (Перезарядка орудия) quantityShells.py (Количество снарядов) infoChargedShell.py (Информация о текущем снаряде) targetInfo.py (Информация о технике в прицеле) markerPosition.py (Точка прицеливания) aiming.py (Сведение) Из темы Сборник py_macro: aimingSystem.py (Режим прицела) myHP.py (Очки прочности своей техники) colorMacros.py (Макросы плавного перехода цветов)
  22. 2 points
    Да, это место существует. И я даю вам уникальнейшую возможность заглянуть сюда. Витрина Ссылочки Модпак: Lite-версия - всё, кроме ремоделингов: ЯндексДиск Полная версия - включает полтора гига ремоделингов: ЯндексДиск Cюда сложу ссылки на другие свои топики, чтобы при вопросе "а какие у тебя еще есть моды" можно было просто пинать людей в сторону сюда. КамоСелектор: здесь, на официальном Ремодомод, Шкуродёр: здесь, на официальном Реплейсор, Ангарный Краскопульт, Отладчик Текстов: здесь, на официальном BanksLoader, SoundEventInjector, UT_announcer, Гудки: здесь, на официальном Громовые Орудия, как пак конфигов к Инъектору: на официальном Настраиваемая Роза Команд (сломана): здесь, на официальном SunContoller (сломан), Фары: здесь, на официальном Хранилище Здесь повыкладываю свои мелкомодики, которыми пользуются некоторые люди, многие спрашивают, где скачать, но сам мод слишком мелок, чтобы заслужить отдельную тему. AppreciationBadges Нашивки Увожения Вы наверняка уже видели этот вотмодик в архивах с моими модами. Многие спрашивают, что это и зачем. Мод, как лично мне понятно из названия, добавляет игрокам нашивки. Как минимум - мне, любимому. Чтобы если вдруг меня кто-то в бою встретит - не было большого недоумения на тему "а чего это он так отыграл посредственно". В ангаре (окно тренировочной комнаты, результаты боя и создание взвода) - полная кастомность, в бою же я могу выбрать только одну из существующих. Изначальная благородная цель - дать возможность другим авторам тоже как-то "обозначить" себя в игре. Авторы таких вещей, как шкурки, ремоделинги или звуки, в большинстве случаев не имеют возможности залесть в питон и чего-то там добавить себе самостоятельно, и я решил дать им такую возможность. (Не то чтобы оно кому-то, кроме меня, было особо нужно...) Скриншотики Добавляем свою нашивку Скачать: ЯндексДиск GoogleDrive HangarScreenshots Скриншоты ангара Изначально меня попросили починить модик HideHangarUI от @alphasave1. Потом - зафиксировать камеру в ангаре. И получилось вот это. Все настройки есть в ангарном интерфейсе, там же, где и у остальных модов, и достаточно подробно описаны. Скрин настроек: Скачать: ЯндексДиск GoogleDrive PlayersPanelHP ХП в ушах Nuff said. Исходный топик: http://forum.worldoftanks.ru/index.php?/topic/884307-. Данная функция есть и в XVM (если кто помнит мой конфиг - полоски стырены именно оттуда :) ), но все же. Настройки довольно простые, базового знания синтаксиса JSON и гуглопереводчика должно хватить. Скачать: ЯндексДиск GoogleDrive PlayerHPAnnouncer Оповещение о низком здоровье игрока Тут даже скринить нечего. Просто, когда Ваше здоровье опустится ниже 50%, 25% и 10%, вы услышите звук. В стандартной поставке мод использует слегка обрезанные фразы Корабля-Базы из Звёздных Волков. Почему не закидываю к Звуковым Скриптам по ссылке выше? Не знаю. Там и так много всего. Скачать: ЯндексДиск GoogleDrive InsigniaOnGun Нарисованные отметки на орудиях Изначально модик делался только для ангара и только для ремоделлеров, чтобы им было удобнее подгонять настройки для отредактированных орудий. Но потом на мод-портале я наткнулся на творение, изменяющее текстуры отметок, чтобы их всегда и у всех было 3. Мне такой изврат запал в душу, и к изначально скрипту на 5 строчек прикрутился ангарный интерфейс и боевой модуль. Кстати, на скрине HangarScreenshots у КВ-2 три отметки на стволе именно благодаря этому модику. :) По доброй традиции, скриншот окна настроек: Скачать: ЯндексДиск GoogleDrive LogSwapper Смена местами логов полученного и и нанесенного урона Не знаю, как так получилось, что в стандартном интерфейсе от WG лог нанесенного урона находится рядом с дамаг-панелью, а лог полученного - возле левой панели команд, но данный скрипт исправляет это недоразумение. Мод не нужен, если у Вас установлен BattleObserver - там эта фича есть. Любителям пообвинять в плагиате - во-первых, Armagomen упомянут в сообщении о загрузке мода. Во-вторых, несмотря на то, что идея изначально его, у него в моде сейчас моя реализация. Скачать: ЯндексДиск GoogleDrive ShowVehicle Отображение корпуса танка в снайперском режиме Исходные топики: изначальный - http://forum.worldoftanks.ru/index.php?/topic/884602-, недолгое время поддерживаемый: http://forum.worldoftanks.ru/index.php?/topic/1610063- Все настройки есть в ангаре. Скрин: Скачать: ЯндексДиск GoogleDrive StatPaints СтатПокрасчик Раскрашивает машины в зависимости от рейтинга WGR игрока. Полностью совместим с КамоСелектором. Раскрашиваются только те машины, на которые можно нанести краску. Потому что на те, на кого нельзя, она не наносится даже в обход фильтра по технике. WG fix pls. Скачать: ЯндексДиск GoogleDrive IngameGUITextTweaks Твики боевого интерфейса Опять же, nuff said. Также позволяет убрать отображение ников. Скачать: ЯндексДиск GoogleDrive VMTFix Фикс для прозрачных деталей на машине игрока С модом/без мода (за примеры спасибо GoodmanTech): По неведомым мне причинам обводка игрока, позволяющая увидеть свой танк сквозь препятствия, ломает отображение частичной прозрачности и светящихся деталей (шейдеры lightonly_alpha.fx и glow.fx соответственно) на машине игрока. Данный мод убирает эту обводку, возвращая детали на место. Скачать: ЯндексДиск GoogleDrive VoiceOverrider Переопределение режима внутриигрового голосового оповещения Мод на принудительное включение любого режима голосовой озвучки на любом танке с любым составом экипажа. Нужно выключить Буффона или включить женскую озвучку? Это к нам. Скачать: ЯндексДиск GoogleDrive Дополнительный банк от ВГ: ЯндексДиск GoogleDrive - нужен для работы режимов "Valkyrie Chronicles: мужской" и "Valkyrie Chronicles: женский". ShutLoggersUp Затыкатель логгеров ВГ наделали в куче мест вызовов на logging.getLogger().info('blablabla'), к примеру, в обработчике персональных жетонов. И всё бы хорошо, но оно СПАМИТ. Причём эти сообщения никому вообще не нужны. Так вот. Я сделал так, что модуль logging игнорирует всё, что INFO или ниже. Варнинги и и прочие эрроры всё ещё работают. Скачать: ЯндексДиск GoogleDrive HangarGUITweaks Твики ангарного интерфейса В обновлении 1.9.1 ВГ добавили в игру проекционные декали, которые выдаются за определённые достижения при игре на танке. За количество боёв, за фраги, за знаки Мастер и т.д. Проблема в том, что в той менюшке, где их можно выбрать и поставить на танк, они упорядочены в совершенно не понятном мне порядке. Этот мелкий модик переупорядочивает эти самые декали в порядке сложности получения награды. Сначала идут бои, потом фраги, ну и так далее. Также мод делает так, что на Складе резервы сортируются сначала по "крутости", потом по типу, а потом по продолжительности действия. У ВГ сортировка идёт сначала по типу, потом по крутости, потом по времени действия. В итоге я без лишнего клацанья могу себе сразу набрать резервов на часик (или два) и В БОЙ, вместо того, чтобы для каждого типа отдельно резерв выбирать. Ещё мод добавляет список совместимой техники во всплывающие подсказки к модулям в дереве исследования. Таким образом, чтобы посмотреть, стоит ли мне исследовать очередную рацию или можно подождать, мне не нужно делать аж три клика (два для открытия окошка информации о модуе и один для закрытия.) И напоследок, мод добавляет в контекстные меню оборудования и элементов внешнего вида опцию, позволяющую снять его с другого танка. Опция добавляется только для тех вещей, которые не могут быть установлены на текущий танк без снятия с другого (не могут быть куплены и кончились на складе). Скачать: ЯндексДиск GoogleDrive DamagePercentIndicator Процент прочности танка на индикаторах полученного урона Возможно, модик для нубов, но мне зашло. Суть вот в чём. Я катаюсь на разных машинах разных уровней и классов. И не всегда сразу и быстро понятно, если мне влетело на 250 урона - это можно бояться или продолжать танковать. И чем меньше урона, тем меньше понятно. Соответственно, я сделал модик, который добавляет к индикаторам полученного урона вторую строчку с процентом этого самого урона от полной прочности моего танка. Скачать: ЯндексДиск GoogleDrive Автоклавная, она же мастерская Кто там опять булькает, эй? Здесь, возможно, буду писать то, что сейчас в работе/в планах. Переписать гайд по КамоСелектору - жду @DDragun907. Дописать гайд по Ремодомоду - к нему же. :) Внетанковый стафф А вопросы, предложения, запросы на новые моды и прочее буду принимать в самом топике. Типа багтрекер и ЦПП в одном флаконе. @angelsoft, к тебе обращаюсь :) А то спам в иррелевантных топиках уже много кому надоел. ... Ну, как минимум мне надоел. :)
  23. 2 points
    Миникарта (цветные координаты) Старый метод установки World of Tanks\res_mods\1.14.1.x\gui\flash Миникарта.rar Новый способ установки мода, закинуть архив в World of Tanks\mods\1.14.1.x скрин старый(суть одна) minikarta.wotmod Миникарту перенесли в атлас battleAtlas. Кто использует свои иконки в атласах,разрезаем-заменяем на свои,соединяем и пользуемся Как это сделать
  24. 2 points
    Решил собрать в одном месте свои мелкие скрипты (а то уже стал забывать, что делал, зачем делал). Для установка аддонов необходимо скопировать соответствующий скрипт (файл с расширением py) в папку \res_mods\configs\xvm\py_macro\ Список аддонов: Таймер Debug panel Размер миникарты Ограничение строк в чате Отключение лога уничтоженных (над миникартой) Маркер над своим танком Таймер для шестого чувства Название карты Команда захватившая базу Premium аккаунт Очки прочности своей техники Макросы для "ушей", маркеров и миникарты Онлайн статистика Начало боя Цвет границы карты Внутриигровой браузер Макросы плавного перехода цветов Информация о своей технике Перемотка реплея Режим прицела Скоростной режим в начале боя События по таймеру Быстрый выход из боя Показать/скрыть или включить/отключить чат в бою. Таймер: Данная модификация добавляет py_macro: {{py:xvm.leftTime(x)}} - возвращает 'lt', если после входа в бой прошло меньше x секунд, иначе возвращает пусто. Скрипт: timer.py Debug_panel: Данная модификация добавляет py_macro: {{py:xvm.fps}} - FPS в бою {{py:xvm.ping}} - возвращают ping {{py:xvm.fps_replay}} - при просмотре реплея возвращает FPS, который был в бою. В бою возвращает пусто. {{py:xvm.lag}} возвращает 'lag' или пусто. Скрипт: debugPanel.py Размер миникарты: Данная модификация добавляет py_macro: {{py:sizeMap}} - размер миникарты в пикселях. PY(ON_MAP_RESIZE) - событие срабатывает при изменении размера миникарты. Пример отображения панели эффективности слева от миникарты: "totalEfficiency": { "enabled": true, "updateEvent": "PY(ON_TOTAL_EFFICIENCY), PY(ON_MAP_RESIZE)", "screenVAlign": "bottom", "x": "{{py:math.sum({{py:xvm.screenWidth}},-70,-{{py:sizeMap}})}}", "y": -2, "width": 70, "height": "{{py:xvm.isStuns?120|96}}", "textFormat": { "size": 16, "align": "right" }, "format": "<textformat leading='4'><font color='{{py:xvm.totalDamage>0?{{py:xvm.totalDamageColor}}}}'>{{py:xvm.totalDamage}}</font> <img src='xvm://res/icons/Efficiency/damage.png' vspace='-2'><br>{{py:xvm.totalAssist}} <img src='xvm://res/icons/Efficiency/assist.png' vspace='-2'><br>{{py:xvm.totalBlocked}} <img src='xvm://res/icons/Efficiency/reflect.png' vspace='-2'><br>{{py:xvm.detection}} <img src='xvm://res/icons/Efficiency/discover.png' vspace='-2'><br>{{py:xvm.totalStun}} <img src='xvm://res/icons/Efficiency/stun.png' vspace='-2'></textformat>" }, Скрипт: minimapSize.py Ограничение строк в чате: Этот скрипт ограничивает количество строк в чате (в бою). Количество строк задается в самом скрипте, в 7 строке: makeSettingsVO['maxLinesCount'] = 2 Скрипт: messenger.py Отключение лога уничтоженных (над миникартой): Скрипт отключает вывод сообщений над миникартой. Скрипт: notShowBattleMessage.py Маркер над своим танком: Это переделанный и адаптированный под XVM мод от @MakcT40 (что-то он его подзабросил). Аддон добавляет маркер над техникой игрока. Для настройки необходимо добавить в файл markers.xc в секцию "markers" следующие строки: "playerMarkers": { //true - включен при старте "onStart": true, //клавиша включения/выключения маркера "keyCode": 49 }, Скрипт: playerMarker.py Таймер для шестого чувства: Данная модификация позволяет выводить таймер обратного отсчета при засвете. {{py:xvm.sixthSenseTimer(x)}} - возвращает оставшееся время после засвета, иначе пусто. Аргумент x - продолжительность отсчета. PY(ON_SIXTH_SENSE_SHOW) - событие срабатывает при засвете. Пример отображения отсчета поверх лампы засвета: "sixthSenseTimer": { "enabled": true, "updateEvent": "PY(ON_SIXTH_SENSE_SHOW)", "x": 0, "y": 260, "width": 60, "height": 50, "screenHAlign": "center", "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": {"align": "center", "size": 40 }, "format": "{{py:xvm.sixthSenseTimer(10)}}" }, Скрипт: sixthSense.py Название карты Данная модификация добавляет py_macro: {{py:map.nameFile}} - название файла карты, на которой проходит бой. {{py:map.localeName}} - локализованное название карты, на которой проходит бой. {{py:map.kind}} - возвращает 'summer', если карта летняя, 'winter' - зимняя, 'desert' - пустынная. Пример отображение карты с разъездами (карты должны находиться в \res_mods\mods\shared_resources\xvm\res\ в формате PNG): "maps": { "hotKeyCode": 56, "onHold": true, "x": 200, "y": 550, "width": 500, "height": 500, "align": "center", "format": "<img src='xvm://res/{{py:map.nameFile}}.png'>" }, Скрипт: maps.py Команда захватившая базу: Данная модификация добавляет py_macro: {{py:teamCaptured}} - возвращает 'ally' - если захватили союзники, 'enemy' - если захватили противники, иначе возвращает пусто. Через десять секунд после захвата, макрос вновь начнет возвращать пусто. PY(ON_CAPTURED) - событие срабатывает, если какая-либо из команд захватила базу. Скрипт: capture.py Premium аккаунт: Данная модификация добавляет py_macro: {{py:prem.timeLeft}} - возвращает оставшееся количество дней или часов (если осталось меньше 24 часов) до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.timeMetric}} - возвращает в русской локализации "д." или "ч." (если осталось меньше 24 часов) . Если ПА закончился, то возвращает пусто. {{py:prem.timeLeftDays}} - возвращает оставшееся количество дней до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.timeLeftHours}} - возвращает оставшееся количество часов (от 0 до 23) до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.timeLeftMinutes}} - возвращает оставшееся количество часов (от 0 до 59) до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.premType}} - возвращает 'plus' или 'basic' в зависимости от типа активного премиум аккаунта, иначе пусто PY(ON_INFO_PREMIUM) - событие для обновления данных макросов. Скрипт: infoPremium.py Очки прочности своей техники: Данная модификация добавляет py_macro: {{py:my_hp.health(norm)}} - если параметр norm не задан, то возвращает количество оставшихся очков прочности. Иначе возвращает нормализованное значение очков прочности; {{py:my_hp.maxHealth}} - максимальное количество очков прочности; {{py:my_hp.dmg}} - последний полученный урон. PY(ON_MY_HP) - событие для обновления данных макросов. Пример для отображения полоски HP под панелью снарядов: 1) В файл battleLabels.xc добавить: ${ "battleLabelsTemplates.xc":"def.hpBar"}, ${ "battleLabelsTemplates.xc":"def.hpBar_Background"}, ${ "battleLabelsTemplates.xc":"def.hpBar_text"} 2) В файл battleLabelsTemplates.xc добавить: "hpBar": { "enabled": true, "updateEvent": "PY(ON_MY_HP)", "x": "{{py:math.sum(-248,{{py:math.div({{py:my_hp.health(496)}}, 2)}})}}", "y": -4, "width": "{{py:my_hp.health(496)}}", "height": 14, "bgColor": "{{py:my_hp.health(100)>75?0x00AF00|{{py:my_hp.health(100)>50?0xCB9E00|{{py:my_hp.health(100)>25?0xF66700|0xD22A00}}}}}}", "screenVAlign": "bottom", "screenHAlign": "center" }, "hpBar_Background": { "enabled": true, "x": 0, "y": -2, "width": 502, "height": 20, "screenHAlign": "center", "screenVAlign": "bottom", "format": "<img src='xvm://res/my_hp_bar/hpBar_Background.png'>" }, "hpBar_text": { "enabled": true, "updateEvent": "PY(ON_MY_HP)", "x": 0, "y": -2, "width": 100, "height": 20, "screenHAlign": "center", "screenVAlign": "bottom", "textFormat": { "align": "center" }, "format": "<font size='14' color='#00E5FD'>{{py:my_hp.health}}/{{py:my_hp.maxHealth}}</font>" } 3) Для смещения панели снарядов и расходников, в файле elements.xc добавить секцию: "consumablesPanel": { "$delay": 4000, "y": "{{py:math.sub({{py:xvm.screenHeight}}, 80)}}" } Если панель снарядов и расходников не сдвигается, попробуйте увеличить значение параметра "$delay". 4) Файл hpBar_Background.png (подложка) скопировать в \res_mods\mods\shared_resources\xvm\res\my_hp_bar\ hpBar_Background.zip Скрипт: myHP.py Макросы для "ушей", маркеров и миникарты: Данная модификация добавляет py_macro: {{py:killerName('{{name}}')}} - имя игрока уничтожившего данную технику; {{py:killerVehicle('{{name}}')}} - название техники игрока уничтожившего данную технику; {{py:reloadVehicle('{{name}}')}} - время перезарядки орудия (не таймер); {{py:visionRadius('{{name}}')}} - табличный обзор техники; {{py:piercingPower('{{name}}')}} - средняя бронепробиваемость основного снаряда; {{py:shellDamage('{{name}}')}} - средний урон основного снаряда; {{py:isHardening('{{name}}')}} - возвращает 'hardening' для техники с установленным оборудованием 'Улучшенная закалка', иначе пусто. Пример использование данных макросов. Скачать: collection.py Онлайн статистика: Данная модификация позволяет изменить внешний вид онлайн статистики в ангаре. Для использования данной модификации в файл hangar.xc в секцию "serverInfo" необходимо добавить: // заменяет отображение названия сервера и количество игроков на сервере. // можно использовать макросы: {{serverName}}, {{clusterUsers}}, {{total}}, {{regionUsers}}. "clusterStats": "<font color='#FFFFFF'>{{serverName}}: {{clusterUsers}}</font>", // заменяет отображение "Всего" и количество игроков на кластере. // можно использовать макросы: {{serverName}}, {{clusterUsers}}, {{total}}, {{regionUsers}}. "regionStats": "<font color='#FFFFFF'>{{total}}: {{regionUsers}}</font>" Значение макросов: {{serverName}} - название сервера; {{clusterUsers}} - количество игроков на сервере; {{total}} - локализованное слово "Всего". {{regionUsers}} - количество игроков на кластере. Скрипт: onlineStats.py Начало боя: Данная модификация добавляет py_macro: {{py:isBattle}} - возвращает 'battle', если бой начался, иначе пусто. PY(ON_BEGIN_BATTLE) - событие для обновления макроса {{py:isBattle}}. Скрипт: beginBattle.py Цвет границы карты: Данная модификация позволяет изменять цвет границы карты. Для использования данной модификации в файл battle.xc в секцию "battle" необходимо добавить: // Настройка цвета границы карты "borderColor": { "color": "0x00ff00", "alpha": 100 }, Скачать: borderColor.py Внутриигровой браузер: На данный момент не работает. Данная модификация позволяет открыть ссылку во внутриигровом браузере. Аддон добавляет следующие py_macro: {{py:ob.highlight}} - возвращает 'highlight', если курсор мышки находится над полем, иначе пусто. {{py:ob.address(url)}} - параметр 'url' задает адрес открываемого сайта. PY(ON_OPEN_BROWSER) - событие для обновления данных макросов. "openBrowser_Down", "openBrowser_Over", "openBrowser_Out" - обработчики событий мыши. Пример использования: В файл widgets.xc в секцию "lobby" добавить строку: ${ "widgetsTemplates.xc":"openBrowser" } В файл widgetsTemplates.xc.xc добавить секцию: "openBrowser": { "enabled": true, "layer": "top", "type": "extrafield", "formats": [ { "updateEvent": "PY(ON_OPEN_BROWSER)", "screenHAlign": "center", "x": 300, "y": 1, "width": 90, "height": 20, "textFormat": { "color": "{{py:ob.highlight?0x3B95FF|0xD8B44E}}", "size": 14}, "format": "<u>Korean Random</u>{{py:ob.address('https://koreanrandom.com')}}", "mouseEvents": {"mouseDown": "openBrowser_Down", "mouseOver": "openBrowser_Over", "mouseOut": "openBrowser_Out"} } ] } Скрипт: openBrowser.py Макросы плавного перехода цветов: Аддон добавляет макросы плавного перехода цветов: {{py:dynamic_colorRGB(color_100, color_0, percent, maximum)}} {{py:dynamic_colorRBG(color_100, color_0, percent, maximum)}} {{py:dynamic_colorGRB(color_100, color_0, percent, maximum)}} {{py:dynamic_colorGBR(color_100, color_0, percent, maximum)}} {{py:dynamic_colorBRG(color_100, color_0, percent, maximum)}} {{py:dynamic_colorBGR(color_100, color_0, percent, maximum)}} {{py:dynamic_color(color_100, color_0, percent, maximum)}} Если параметр maximum не задан, то считается что он равен 100. Программа для облегчения выбора нужного вам макроса: Color.exe Скрипт: colorMacros.py Информация о своей технике: {{py:isWheeledTech}} - возвращает 'wheel' если техника колесная, иначе пусто; {{py:hasSiegeMode}} - возвращает 'siege' если техника может переходить в осадный режим, иначе пусто; {{py:hasAutoSiegeMode}} - возвращает 'autosiege' если техника может автоматически переходить в осадный режим, иначе пусто; {{py:isDualGun}} - возвращает 'dual' если техника имеет два орудия, иначе пусто; {{py:isAutoReload}} - возвращает 'auto' для техники с механизмом дозарядки, иначе пусто; {{py:hasTurboshaftEngine}} - возвращает 'turbo' для техники с газотурбинным двигателем, иначе пусто; {{py:isClip}} - возвращает 'clip' для техники с барабаном заряжания, иначе пусто; {{py:featureVehicle(v1, v2, v3, v4, v5, v6, v7)}} - возвращает: для колесной техники - v1, если значение не задано - 'wheel'; для техники имеющей осадный режим - v2, если значение не задано - 'siege'; для техники автоматически переходящей в осадный режим - v3, если значение не задано - 'autosiege'; для двухствольной техники - v4, если значение не задано - 'dual'; для техники с механизмом дозарядки - v5, если значение не задано - 'auto'; для техники с газотурбинным двигателем - v6, если значение не задано - 'turbo'; для техники с "барабаном" - v7, если значение не задано - 'clip'. {{py:invisibilityMove}} - коэффициент незаметности в движении. На реплеях, или если зашли в бой не из ангара, не учитываются перки экипажей. Скрипт: infoMyVehicle.py Перемотка реплея: Аддон расширяет возможности перемотки реплеев: стрелка вправо/влево - перемотка на 20 секунд; SHIFT + стрелка вправо/влево - перемотка на 1 минут; CTRL + стрелка вправо/влево - перемотка на 2 минуты; ALT + стрелка вправо/влево - перемотка на 5 минут. Скрипт: rewindRepeat.py Режим прицела: {{py:aim.mode(v1, v2, v3)}} - возвращает v1 - в аркадном , v2 - в снайперском, v3 - в стратегическом (артиллерийском) режиме прицела, если значения v1, v2, v3 не заданы, то возвращает 'arc' - в аркадном, 'sn' - в снайперском, 'str' - в стратегическом (артиллерийском) режиме прицела; {{py:aim.y(shift)}} - возвращает расстояние по оси y между центром экрана и центром прицела в пикселях, в зависимости от режима прицела. Параметр 'shift' позволяет задать смещение от центра прицела по оси y. {{py:aim.netType(v1, v2, v3, v4)}} - тип выбранной сетки прицела. В стратегическом режиме возвращает пусто. В аркадном и снайперском режимах возвращает: для "диагонального" - v1, если значение не задано - 'diagonal'; для "горизонтального" - v2, если значение не задано - 'horizontal'; для "радиальный" - v3, если значение не задано - 'radial'; для "пунктирный" - v4, если значение не задано - 'dotted'. PY(ON_AIM_MODE) - событие срабатывает при смене режима прицела. Скрипт: aimingSystem.py Скоростной режим в начале боя: При установке данного скрипта, в начале боя будет включаться скоростной режим, если техника поддерживает данный режим. Скрипт: enableAutorotation.py События по таймеру: Дополнение позволяет создавать свои события, которые будут обновлять поля через указанный промежуток времени. Для создания своих событий необходимо: 1) в файл @xvm добавить ссылку: "events": ${"events.xc":"events"}, 2) создать файл events.xc в папке со своим конфигом содержащим: { "events": { // события для боя "battleTimers": [ ], // события для ангара "hangarTimers": [ ] } } 3) добавить в секцию "battleTimers" события для боя (battleLabels), в секцию "hangarTimers" - для ангара (widgets). Пример: { "events": { // события для боя (battleLabels) "battleTimers": [ // "period" - период в секундах, через которое будет обновляться поле // "name" - нахвание события {"period": 5, "name": "ON_EVENT_5"}, {"period": 10, "name": "ON_EVENT_10"} ], // события для ангара (widgets) "hangarTimers": [ {"period": 30, "name": "ON_EVENT_30"}, {"period": 60, "name": "ON_EVENT_MINUTE"} ] } } После этого в battleLabels можно будет использовать события PY(ON_EVENT_5) и PY(ON_EVENT_10), поля будут обновляться каждые 5 и 10 секунд соответственно. А в widgets - события PY(ON_EVENT_30) и PY(ON_EVENT_MINUTE), поля будут обновляться каждые 30 и 60 секунд. Скрипт: timerEvents.py Быстрый выход из боя: Дополнение позволяет назначит клавишу для быстрого выхода из боя, если выход не повлечет штраф за "дезертирство". Пример использования: Для выхода из боя по клавиши F4 в файл hotkeys.xc нужно добавить: "quicklyLeave": { "enabled": true, "keyCode": 62, "modifier": "ctrl"} Параметр "modifier" - клавиша-модификатор может принимать значения: "none", "shift", "ctrl", "alt". Скрипт: quicklyLeave.py Показать/скрыть или включить/отключить чат в бою: Дополнение позволяет назначит клавишу для скрывания и/или включения/отключения чата в бою. Пример использования: Чтобы скрыть/показать чат в бою по клавиши H в файл hotkeys.xc нужно добавить: "hideBattleChat": { "enabled": true, "keyCode": 35, "modifier": "none"} Для отключения чата в бою по клавише O в файл hotkeys.xc нужно добавить: "disableBattleChat": { "enabled": true, "keyCode": 24, "modifier": "none"} Параметр "modifier" - клавиша-модификатор может принимать значения: "none", "shift", "ctrl", "alt". Скрипт: hideBattleChat.py
  25. 2 points
    This is Speed.xc the xc file will show your tanks top speed forward and reverse , above the damage panel. You will always know what your tanks top speed is . I will update file when new Tanks are added. Add this text to config file. @xvm.xc "speed": ${"speed.xc":"speed"}, battleLabels.xc ${ "battleLabelsTemplates.xc":"def.speed"} battleLabelsTemplates.xc }, "speed": { "enabled": true, "layer": "bottom", "x":80, "y": "{{battletype-key=epic_battle?-280|-244}}", "width": 80, "height": 22, "alpha": 100, "screenVAlign": "bottom", "shadow": {"color":"0x000000", "distance": 1, "angle": 90, "alpha": 60, "blur": 5, "strength": 3 }, "format": "{{.speed.{{vehiclename}}}}" }, speed.xc Hawg's Boot Camp WOT Discord Mod Tech & Questions , WOT Chat  Tank speeds with decimal point was rounded down to whole number. Speed.xc Created By Hawg > Hawg's Alternative Xvm & One-fifty > Blue Moon Modifications Format Created By HEKPOMAHT Speed Data Source http://wiki.wargaming.net/en/Main_Page Hawgs Alternative Xvm
  26. 2 points
    Данная тема предназначена для тестирования и предложений по расширенному установщику XVM. В отличии от стандартного установщика XVM, здесь добавлено ещё два окна: На данный момент инсталлятор устанавливает только файлы конфигурации, то есть перед использованием данного инсталлятора, необходимо установить XVM. Список настроек: Боевой интерфейс Миникарта Альтернативный режим миникарты Выбор клавиши включения альтернативного режима (CTRL или ALT) Отображение очков прочности Очки прочности Увеличение миникарты при нажатии клавиши CTRL Увеличение по центру экрана Панель игроков Отключение отображения статистки Отображение очков прочности Маркеры над техникой Рейтинг - звезда Лог полученного урона Включение подложки лога Лог нанесенного урона Группировать попадания по игроку Добавлять значения сверху Заголовок лога нанесенного урона "Новый" заголовок "Старый" заголовок Прицел Время полета снаряда (только в стратегическом режиме прицела) Время до полного сведения (только в стратегическом режиме прицела) Параметры камеры Отключение подсказок (переход в осадный режим, альт.режим АРТ-САУ) Отключение затемнения в снайперском режиме Отключение красной вспышки при получении урона Отключение эффекта отдачи от выстрела Отключение индикатора приближения (zoom) Индикатор суммарного очков прочности команд Средний урон на текущей технике Урон для получения медали "Основной калибр" Отображение на панели счета живых вместо мертвых Несколько изображений для "Шестого чувства" (лампочки) Таймер "Шестого чувства" 10 секунд Отключение панели после смерти Отключения зеркалирования иконок танков Ангар Автоматический вход в игру Панель техники (карусель) Автовозврат экипажа Возврат экипажа по умолчанию Счетчики уведомлений "Внешний вид" Замки Боны Свободный опыт Золото Отображение количества игроков на серверах В ангаре На экране логина Отображения пинга до серверов В ангаре На экране логина Кнопка "Купить премиум" Кнопка "Премиум магазин" Реклама премиум техники Виджеты Часы Статистика игрока Цветовые схемы Цветовая слепота Звуки "Шестое чувство" Если вы автор достаточно популярного конфига и хотите распространять его вместе с XVM, пишите. Если у кого-нибудь есть возможность заняться переводом, был бы благодарен. Инструкция по добавлению новых пунктов в окне "Настройка конфигурации": Настройка пунктов осуществляется в файле \installerXVM\src\SettingsInstall\default\default.xc. Описание параметров: "name" - название пункта, обязательный параметр. Здесь может быть указан ключ из файла перевода. Файлы перевода находятся в \installerXVM\src\SettingsInstall\default\l10n\ секция [CheckListBox]. "description" - подробное описание пункта. Здесь может быть указан ключ из файла перевода. Файлы перевода находятся в \installerXVM\src\SettingsInstall\default\l10n\ секция [DescriptionLabel]. "itemType" - задает отображение пункта, как radioButton, checkBox или group. Значение по умолчанию CheckBox. "checked" - определяет выбран пункт (radioButton, checkBox) или нет. Может иметь значения true или false. Значение по умолчанию true. "imageIfSelected" - имя файла изображения, которое будет отображаться, если пункт выбран. Значение по умолчанию "empty.png". "imageIfNotSelected" - имя файла изображения, которое будет отображаться, если пункт не выбран. Значение по умолчанию "empty.png". "soundIfSelected" - имя звукового файла (mp3, ogg), который будет проигран, если пункт выбран. Значение по умолчанию "". "soundIfNotSelected" - Имя звукового файла (mp3, ogg), который будет проигран, если пункт не выбран. Значение по умолчанию "". "valueIfSelected" - секция, значение которой будут вноситься в конфиг, если пункт выбран. Если параметр равен "", то изменения в конфиг не вносятся. Значение по умолчанию "". "valueIfNotSelected" - секция, значение которой будут вноситься в конфиг, если пункт не выбран. Если параметр равен "", то изменения в конфиг не вносятся. Значение по умолчанию "". "configFileName" - имя файла конфигурации, в который будут вносится изменения из секции "value". "value" - значение данного параметра будет внесено в файл конфигурации, указанный в параметре "configFileName". "isAdd" - определяет, буду элементы массива, описанного в секции "value", добавлены (true), или массив будет полностью заменен (false). Значение по умолчанию true. "@files" - в данном параметре в квадратных скобках перечисляются через запятую файлы, которые будут скопированы при установке в каталог с игрой. "children" - секция, в которой настраиваются подпункты данного пункта. Значение по умолчанию "". Структура каталога \installerXVM\src\SettingsInstall\default\: каталог config - содержимое данной папки будет скопировано в каталог с игрой. каталог files - в данной папке находятся файлы, которые указаны в параметрах "@files". каталог images - в данной папке находятся файлы, которые указаны в параметрах "imageIfSelected" и "imageIfNotSelected". каталог l10n - в данной папке находятся файлы перевода. каталог sounds - в данной папке находятся файлы, которые указаны в параметрах "soundIfSelected" и "soundIfNotSelected". Для сборки необходимо использовать Inno Setup 6. Инсталлятор: setup_xvm_v2.exe Исходники: installerXVM.zip
  27. 2 points
    English documentation is attached to this post. Всем привет, Меня зовут Антон, я работаю в WG и занимаюсь модами и смежными штуками. В следующей версии танков мы реализовали новую фичу для облегчения инсталяции/деинсталяции модов - пэкеджи пакеты модов. По предложениям трудящихся переименовали в пакеты. К посту я приаттачил доку с описанием текущей реализации. Важный момент: все это work in progress, и то, что в следующей версии эта фича появится в танках, не означает, что мы остановим ее разработку. Мы хотим и будем доделывать и переделывать какие-то вещи согласно вашим пожеланиям, поэтому считайте это только первой итерацией разработки. В ближайших нескольких версиях танков будет работать гибридное подключение модов - и через пакеты, и по старинке через res_mods/. В будущем в силу ряда причин мы бы хотели отойти от способа установки модов через res_mods/; тем не менее мы не будем этого делать, пока коммьюнити мододелов не скажет, что пакеты ок и вы готовы перейти на них полностью. Поэтому нам очень важно получать от вас отзывы и предложения по улучшению системы, чтобы мы могли учитывать их в будущих версиях. Миша завел гуглодоку, за актуальными хотелками можно следить там: https://docs.google.com/document/d/1-IIs7gEUbOb82ZfEeJhdC8LyF64EU_sXzOnMp2nahuE/edit?usp=sharing update 12.10.17 Прикрепил обновленную русскую доку (v0.5) packages_doc_0.5_ru.pdf. Отдельное большое спасибо Mixaill за работу над документом. В 9.20.1 починили ряд багов: Неполная регистронезависимость имён в VFS Некорректная загрузка локаций из пакетов Невозможность загрузки Gettext-файлов из VFS Английскую версию сейчас допереводим, приаттачу, как только будет готова Updated the document to v0.5. packages_doc_0.5_en.pdf
  28. 2 points
    начал обновлять под 1.14 :) приятного использования
  29. 2 points
    Искренне удивляюсь, что находятся люди, которые все ещё не понимают, что нужно удалить в моде, чтобы определенная его часть перестала работать...
  30. 2 points
  31. 2 points
    У ВГ на апи-сервере в integrity_check сломалась (или убрали) объединялку запросов в одну строку. Починю сегодня.
  32. 2 points
    Support XVM on patreon and get auto-renewal. Easy.
  33. 2 points
    "Обзор" на старые иконки танков и интерфейс боя для «WoT это Классика!» уже на канале!
  34. 2 points
    05.07.21 Обновлена сборка модов: * Обновлён мод "Комплексный мод XVM" до версии v8.8.0-dev (0034)
  35. 2 points
    автовозврат оборудования-снаряжения-камуфляжей в моде не работает. По этому что бы отключить всё остальное надо не ставить мод ! В моде мало что работает. Ждём автора, чтоб он исправил ситуацию.
  36. 2 points
    Хочу предложить добавить в sounds отключение (замену на стандартную) озвучки Буффон. Народ задавал вопрос на оф. форуме по этому поводу, глобальный модератор дал ответ: Это "фича" - уникальный командир танка со своей озвучкой, поменять на "стандартную" увы - нельзя. У кого-то он уже есть, а после футбола появится у многих. Функция будет 100% востребована.
  37. 2 points
    Добавил в шапку аддон: Быстрый выход из боя.
  38. 2 points
    Обновлен скрипт infoMyVehicle.py. Исправлена ошибка в макросе {{py:invisibilityMove}}.
  39. 2 points
    ShuraBB! 1.12.1.0 не пускает в игру, постоянно крутится шестерёнка.
  40. 2 points
  41. 2 points
  42. 2 points
    Так, скоро микропатч, обнову буду сейчас делать и отправлять. Ничего не измениться, только название папки в архиве. Release 3 уже готовиться и настраивается, придется подождать еще ~2-3 дня. UPD[23:46]: Пока секции для нового микропатча не завезли, мб завтра будет UPD[12:07]: Наврал немного по поводу изменений, будет введена национальная озвучка, в отдельном моде она тоже будет обновлена!
  43. 2 points
    0.1.4 Поддержка WoT 1.7.0 0.1.5 добавлена поддержка 64-разрядного клиента 0.1.6 исправлен вылет клиента на некоторых конфигурациях 0.1.7 исправлена несовместимость с модом OffHangar https://bitbucket.org/IzeBerg/mod_offhangar 0.1.8 изменён подход к подписке на функции IDXGISwapChain NVIDIA_Ansel_v0.1.8.zip --- Также засветилось тут :)
  44. 2 points
    Раздача для Uplay UBISOFT ПРОВОЖАЕТ 2020 ГОД И КАЖДЫЙ ДЕНЬ С 14 ПО 18 ДЕКАБРЯ ГОТОВИТ ДЛЯ ВАС ПОДАРКИ НОВЫЕ ПОДАРКИ КАЖДЫЙ ДЕНЬ! 15 декабря: Starlink: Battle for Atlas™ Digital Edition 17 декабря: Trials® Rising Standard Edition Вам необходимо: Переходим по ссылке выше. Жмем на иконку PC. Если появилась надпись: “Congratulations! The game has been successfully added to your Uplay library.” Игра навсегда привязана к вашему аккаунту
  45. 2 points
    Всем привет и с наступающим НГ !!! По просьбе @rpabapuk объединил этот мод с одним из своих модов для иконок танков, иконки вот такие: Так что если кому будет интересно заходите, смотрите, может быть и другие модики вам приглянутся ;)
  46. 2 points
    Они так скоро домашку начнут в танках решать :))
  47. 2 points
    Решительно предлагаю отключить виджеты в экране battleQueue (?) за ненадобностью
  48. 2 points
    %AppData%\TankIconMaker2\ Также вы можете экспортировать стили в любое место, а затем их импортировать.
  49. 2 points
    Ещё немного доработан скрипт.
×
×
  • Create New...