BuSH
-
Posts
1,464 -
Joined
-
Last visited
-
Days Won
5
Posts posted by BuSH
-
-
2020-02-06 14:16:31.040: INFO: 2020-02-06 14:16:31: [ERROR] mods/xfw_libraries/xfw/events.pyc 2020-02-06 14:16:31.040: ERROR: Traceback (most recent call last): 2020-02-06 14:16:31.040: ERROR: File "./xfw/events.py", line 57, in __event_handler 2020-02-06 14:16:31.041: ERROR: File "./xfw/events.py", line 24, in fire 2020-02-06 14:16:31.041: ERROR: File "res_mods/configs/xvm/py_macro\crosshair.py", line 54, in FragsCollectableStats_addVehicleStatusUpdate 2020-02-06 14:16:31.042: ERROR: if (not vInfoVO.isAlive()) and (ownVehicle.id == vInfoVO.vehicleID) and battle.isBattleTypeSupported: 2020-02-06 14:16:31.042: ERROR: AttributeError: 'NoneType' object has no attribute 'id'
проверить на наличие атрибута забыл?
@Slava7572 я его заюзал с прошлого патча, но забываю туда заглянуть.
И то ж средние цифры. А математика нам говорит, что чем больше выборка, тем ближе она к среднему значению и перестаём быть угнетёнными.А вот 10 угнетений из 10 за один конкретный бой вполне может сойти за оправдание.
В 5-м вроде класса на математике основы вероятностей учили и бросали монету. За 10 раз у кого 5 (50%), у кого 9
орловгербов (90%). А уже за 100 — и за 60% сложно перевалить. А на домашке с косарём ещё ближе к 50% подойти. -
39 минут назад, Arni Ex сказал:
А на кой ляд оно тебе? Чекать прошла альфа или нет? Что-то от этого изменится, если ты будешь знать это?
Я издавна был один из первых кто задавал подобный вопрос за дичайший бесполезняк не прибавляющий ничего к нагибу, но эту фичу потестил малость и решил оставить.
Выполняет типа оправдательную функцию почему нагнул или не вытащил. Не как обычно, надписью в чате типа "команда *цензура*" а просто для себя. Например видишь, что с 8-ми выстрелов и 6к даги все выстрелы в диапазоне -22 — -8% даги, тогда можно обвинить рандом а не свою криворукость.
Ну и там же считаю фуги где нет разброса урона. В одно место стрельнул получил 80% урона/2, в другое — 95.
Няшная получилась фича.
@ktulho удивился что ты сам прошёлся по геометрии с вычислением дистанции. Но неужели у картохи негде было дёрнуть уже готовую цифру как это делают флешки прицелов
-
12 часов назад, andreyvazmtp сказал:
я так понял что ваш новый макрос {{py:sight.distCrosshair}} из скрипта crosshair.py показывает дистанцию до точки на которую смотрит центр сетки прицела, или примерно центр монитора. А макрос {{py:sight.distance}} из скрипта markerPosition.py показывает дистанцию до центра круга/овала сведения.
Почему возник такой вопрос я не понял, но понял, что пропустил какую-то глобальную обнову с заменой скриптов и добавлением макросов, которые дописывал сам.
Теперь можно грохать свой форкнутый sight.py, переименовать добавленные макросы и просто надёргать файликов с темы "как есть". Хоть конфиг это никак не затронуло, но было бы неплохо, все эти прицельные фичи разделить на разные battleLabels по событиям вместо их длинной ленты что негативно влияет на производительность.
Ещё бы в хитлог добавить базовый урон снаряда и вообще XFW начнет интегрити чек проходить )
-
14 часов назад, ktulho сказал:
Добавил аддон Перекрестие:
{{py:sight.distCrosshair}} - расстояние до точки наведения центрального маркера; PY(ON_CROSSHAIR) - событие предназначено для обновления данного макроса.
Спасибо. Наконец-то можно прикидывать не нажимая клавишу. По сравнению с флешовой работает стрёмненько, но начало уже положено. Закинул пока 2 параллельно заценить разницу и в снайперском бывает разница в несколько иксов. Ну и как ожидалось, в артилерийском обе мерялки distCrosshair и distance дают одно и тоже значение.
-
@Slava7572 та шо ты оффтопишь?! я уже тестю катаю )
@StranikS_Scan вот нашёл у себя 1.4.0.1
такой был класс когда ещё работала фича
class _GunMarkersFactories(object): def __init__(self, *factories): super(_GunMarkersFactories, self).__init__() self.__factories = factories def create(self, markersInfo, vehicleInfo): return self._create(markersInfo, vehicleInfo, components=None) def override(self, components, markersInfo, vehicleInfo): return self._create(markersInfo, vehicleInfo, components=components) def _create(self, markersInfo, vehicleInfo, components=None): markers = () for factory in self.__factories: result = factory().create(markersInfo, vehicleInfo, components=components) if result: markers = markers + result return _components.GunMarkersComponents(markers) class _GunMarkersFactory(object): def create(self, markersInfo, vehicleInfo, components=None): raise NotImplementedError @staticmethod def _findComponent(markerType, dataProvider, components, name): component = None if components is not None: component = components.popComponent(name) if component is not None: component.setDataProvider(markerType, dataProvider) return component class _ControlMarkersFactory(_GunMarkersFactory): def create(self, markersInfo, vehicleInfo, components=None): if vehicleInfo.isSPG(): markers = self._createSPGMarkers(markersInfo, components=components) else: markers = self._createDefaultMarkers(markersInfo, components=components) return markers def _createDefaultMarkers(self, markersInfo, components=None): if markersInfo.isServerMarkerActivated: dataProvider = markersInfo.serverMarkerDataProvider markerType = GUN_MARKER_TYPE.SERVER elif markersInfo.isClientMarkerActivated: dataProvider = markersInfo.clientMarkerDataProvider markerType = GUN_MARKER_TYPE.CLIENT else: dataProvider = None markerType = GUN_MARKER_TYPE.UNDEFINED return (self._createArcadeMarker(markerType, dataProvider, components=components), self._createSniperMarker(markerType, dataProvider, components=components)) def _createSPGMarkers(self, markersInfo, components=None): if markersInfo.isServerMarkerActivated: dataProvider = markersInfo.serverMarkerDataProvider spgDataProvider = markersInfo.serverSPGMarkerDataProvider markerType = GUN_MARKER_TYPE.SERVER elif markersInfo.isClientMarkerActivated: dataProvider = markersInfo.clientMarkerDataProvider spgDataProvider = markersInfo.clientSPGMarkerDataProvider markerType = GUN_MARKER_TYPE.CLIENT else: dataProvider = None spgDataProvider = None markerType = GUN_MARKER_TYPE.UNDEFINED return (self._createArcadeMarker(markerType, dataProvider, components=components), self._createSPGMarker(markerType, spgDataProvider, components=components)) def _createArcadeMarker(self, markerType, dataProvider, components=None, name=_CONSTANTS.ARCADE_GUN_MARKER_NAME, linkage=_CONSTANTS.GUN_MARKER_LINKAGE): component = self._findComponent(markerType, dataProvider, components, name) if component is None: component = _components.DefaultGunMarkerComponent(markerType, _VIEW_ID.ARCADE, name, linkage, dataProvider) return component def _createSniperMarker(self, markerType, dataProvider, components=None, name=_CONSTANTS.SNIPER_GUN_MARKER_NAME, linkage=_CONSTANTS.GUN_MARKER_LINKAGE): component = self._findComponent(markerType, dataProvider, components, name) if component is None: component = _components.DefaultGunMarkerComponent(markerType, _VIEW_ID.SNIPER, name, linkage, dataProvider) return component def _createSPGMarker(self, markerType, dataProvider, components=None, name=_CONSTANTS.SPG_GUN_MARKER_NAME, linkage=_CONSTANTS.GUN_MARKER_SPG_LINKAGE): component = self._findComponent(markerType, dataProvider, components, name) if component is None: component = _components.SPGGunMarkerComponent(markerType, _VIEW_ID.STRATEGIC, name, linkage, dataProvider) return component
отвалилось вроде в 1.6... но сейчас он выглядит так
class _GunMarkersFactory(object): __slots__ = ('_components', '_markersInfo', '_vehicleInfo') def __init__(self, markersInfo, vehicleInfo, components=None): super(_GunMarkersFactory, self).__init__() self._components = components self._markersInfo = markersInfo self._vehicleInfo = vehicleInfo def create(self): raise NotImplementedError def _findMarker(self, name): marker = None if self._components is not None: marker = self._components.popComponent(name) return marker def _createMarker(self, componentClass, viewId, markerType, dataProvider, name, isActive=False): marker = self._findMarker(name) if marker is not None: marker.setDataProvider(markerType, dataProvider) return marker else: linkage = _GUN_MARKER_LINKAGES[name] return componentClass(markerType, viewId, name, linkage, dataProvider, isActive) def _getMarkerDataProvider(self, markerType): if markerType is GUN_MARKER_TYPE.SERVER: return self._markersInfo.serverMarkerDataProvider else: return self._markersInfo.clientMarkerDataProvider if markerType is GUN_MARKER_TYPE.CLIENT else None def _getSPGDataProvider(self, markerType): if markerType is GUN_MARKER_TYPE.SERVER: return self._markersInfo.serverSPGMarkerDataProvider else: return self._markersInfo.clientSPGMarkerDataProvider if markerType is GUN_MARKER_TYPE.CLIENT else None class _ControlMarkersFactory(_GunMarkersFactory): def create(self): if self._vehicleInfo.isSPG(): markers = self._createSPGMarkers() elif self._vehicleInfo.isDualGunVehicle(): markers = self._createDualGunMarkers() else: markers = self._createDefaultMarkers() return markers def _getMarkerType(self): if self._markersInfo.isServerMarkerActivated: return GUN_MARKER_TYPE.SERVER return GUN_MARKER_TYPE.CLIENT if self._markersInfo.isClientMarkerActivated else GUN_MARKER_TYPE.UNDEFINED def _createDualGunMarkers(self): markerType = self._getMarkerType() return (self._createArcadeMarker(markerType, name=_CONSTANTS.DUAL_GUN_ARCADE_MARKER_NAME), self._createSniperMarker(markerType, name=_CONSTANTS.DUAL_GUN_SNIPER_MARKER_NAME)) def _createDefaultMarkers(self): markerType = self._getMarkerType() return (self._createArcadeMarker(markerType, name=_CONSTANTS.ARCADE_GUN_MARKER_NAME), self._createSniperMarker(markerType, name=_CONSTANTS.SNIPER_GUN_MARKER_NAME)) def _createSPGMarkers(self): markerType = self._getMarkerType() return (self._createArcadeMarker(markerType, name=_CONSTANTS.ARCADE_GUN_MARKER_NAME), self._createSPGMarker(markerType, name=_CONSTANTS.SPG_GUN_MARKER_NAME)) def _createArcadeMarker(self, markerType, name): dataProvider = self._getMarkerDataProvider(markerType) return self._createMarker(DefaultGunMarkerComponent, _VIEW_ID.ARCADE, markerType, dataProvider, name) def _createSniperMarker(self, markerType, name): dataProvider = self._getMarkerDataProvider(markerType) return self._createMarker(DefaultGunMarkerComponent, _VIEW_ID.SNIPER, markerType, dataProvider, name) def _createSPGMarker(self, markerType, name): dataProvider = self._getSPGDataProvider(markerType) return self._createMarker(SPGGunMarkerComponent, _VIEW_ID.STRATEGIC, markerType, dataProvider, name)
типичный рефакторинг при введении двустволок и хукнутый метод раздербанили на мелкие
ну я просто выкинул то что стало лишним
from gui.Scaleform.genConsts.GUN_MARKER_VIEW_CONSTANTS import GUN_MARKER_VIEW_CONSTANTS as _CONSTANTS def new_ControlMarkersFactory_createSPGMarkers(old_ControlMarkersFactory_createSPGMarkers, self): result = old_ControlMarkersFactory_createSPGMarkers(self) if self._markersInfo.isServerMarkerActivated: markerType = aih_constants.GUN_MARKER_TYPE.SERVER elif self._markersInfo.isClientMarkerActivated: markerType = aih_constants.GUN_MARKER_TYPE.CLIENT else: markerType = aih_constants.GUN_MARKER_TYPE.UNDEFINED return result + (self._createSniperMarker(markerType, name=_CONSTANTS.SNIPER_GUN_MARKER_NAME), )
этот же метод в текущей версии мода
def new_ControlMarkersFactory_createSPGMarkers(old_ControlMarkersFactory_createSPGMarkers, self, markersInfo, components=None): result = old_ControlMarkersFactory_createSPGMarkers(self, markersInfo, components=components) if markersInfo.isServerMarkerActivated: dataProvider = markersInfo.serverMarkerDataProvider markerType = aih_constants.GUN_MARKER_TYPE.SERVER elif markersInfo.isClientMarkerActivated: dataProvider = markersInfo.clientMarkerDataProvider markerType = aih_constants.GUN_MARKER_TYPE.CLIENT else: dataProvider = None markerType = aih_constants.GUN_MARKER_TYPE.UNDEFINED return result + (self._createSniperMarker(markerType, dataProvider, components=components), )
ну и забыл импорт
тупо картохин без самодеятельности
from gui.Scaleform.genConsts.GUN_MARKER_VIEW_CONSTANTS import GUN_MARKER_VIEW_CONSTANTS as _CONSTANTS- 1
-
Поправил тот плагинчик.
ПО ходу надо с гитом разбираться чтобы туда запулить правочку. -
Заценяю в 1.7.1.1. Все моды как обычно, две заветные а в xvm вырубаем привязку к версии
com.modxvm.xfw.actionscript_8.3.0.66.wotmod\res\mods\xfw_packages\xfw_actionscript\xfw_package.json "wot_version_exactmatch": false
Upd.
та что я такое несу?! всё же работает как надо, зачем что-то чинить
-
Ещё бы плагинчик ковырнуть, который развалился в те суровые времена ежедневных микропатчей.
-
@horizont ну это дефолтная неизбежная проблема всех этих *логов. Когда картоха меняет или добаваляет задействованные в моде параметры. Получается некий рассинхрон вывалюющийся при каждом событии в этом логе.
А здесь речь о ежебойным накапливании шняги и после каждого боя клиент работает медленнее.
1 час назад, Slava7572 сказал:А лог разве не самоочищается
Та чистится но только при перезапуске.
Часов через 2-3 н++ послал подальше со своей бигдатой. Ешё через час-два, когда тех эффектов было около 50к, начали отваливаться моды, упала консоль. С орионом вообще дичайшие тормоза через пару каток. В нем передавалка лога ооочень медленная и подвешивает софту на пару минут после каждого боя.
А ещё через пару каток и сам клиент помер. Так что беда серьезная . -
5 часов назад, Slava7572 сказал:
а фарплейн или нечто подобное...оггласите весь список пажалуста.У меня такая же зараза,думал из за твикера,но все работает и бог с ним.
я тоже сходу на че-то такое подумал или с другой кухни SpaceBinPatcher.
ну как работает..? после пары часов каток фризить начинает. Видять, тяжко ему с гиговым файлом лога даже на шустром железе.
Я только недавно выключил дев режим в xvm и прозрел, что клиент теперь не надо каждый день перезапускать. А тут опять.
-
30.01.2020 в 17:03, HEKPOMAHT сказал:
Это легко проверяется запуском клиента без модификаций. Запустил -> проверил -> убедился в наличии -> сэкономил время на создание темы
Там не сразу приход ловишь а катать 1-2 катки без модов? та ну брось :)
Можно в паймакро вкинуть и в реалтайме следить как оно разростаеться.
import helpers.EffectsList print len(helpers.EffectsList.EffectsListPlayer.activeEffects)
- 1
-
@Arni Ex насколько я понимаю слово target, именно действующий макрос можно было бы так обозвать, который меряет расстояние до цели. А здесь речь про сугубо UIную мерялку где, как по мне, обязательно слово crosshair.
-
@ktulho ааааа.... только ни я, у меня всегда с неймингом переменных целая катастрофа. Десятки раз весь твой код обнюхал и не замечал у тебя такой проблемы :)
distance и crosshair заюзать бы
ну или в тупую py:sight.crosshairdistance
или как школа :) distance2crosshair
-
3 минуты назад, night_dragon_on сказал:
И самостоятельно их упаковать, например консольной версией 7-zip (или другими аналогами).
та любой и зип и 7зип и зип с винрара. Чем только не собирал, важно только режим стор выбрать ну или где как его называют типа без сжатия.
-
26.03.2019 в 19:38, BuSH сказал:
Ожидал привязки дальномера и времени полёта снаряда к прицелу как у арты. А макросы {{py:sight.distance}} {{py:sight.timeFlight}} "отображают инфу для сведения".
Можно ли сделать подобное для самих прицелов?
27.03.2019 в 12:55, ktulho сказал:А где это привязано?
Опять начало пригорать от этой штуки и решил напомнить вопрос.
В артприцеле расстояние измеряется до центра прицела и не важно куда смотрит орудие. В аркадном и снайперском чтобы чекнуть расстояние до такого-то куста, нужно обязательно повернуть на эту точку ствол, но вообще не всегда есть такая возможность. Приходиться по старинке юзать хоткей в балкалкмоде.
-
@AntonEvtyushov как вы собрались "тестировать" софту если не способны навести курсор на ник автора?
- 1
-
а прочесть 1-е сообщение? оО
-
@Nik7 нам остаётся только аплодировать твоей гениальности. Ведь всё верно! Если в одной версии изменить путь а в какой-то из последующих "вернуть обратно".
А почему у меня так сложно было... Я тогда цепонул файло и батник а когда на днях в 5 утра "картоха опять всё сломала". С ошибки в логе добрался до того пути. Пошатал и завелось. А уже потом, вроде когда фейспалм этот открывал читать подсказав как чинил я, листанул пару ообщений вверх и понял что просто вернул "как было" и можно было просто закинуть оригинальный файл.
-
18 минут назад, goofy67 сказал:
>>> Connection to WOT: v.1.7.0.1 build 128 [J:\Games\World_of_Tanks_EU\]
18 минут назад, goofy67 сказал:2019-12-18 20:26:44.201: INFO: [Config] Command line: J:/Games/World_of_Tanks_EU/win32/WorldOfTanks.exe
Options.. -> Paths: ... win32
-
@nehalemex зачем ты мне это поясняешь когда я уже под всем подписался.
Хотя ты про 10, а я про 300-400 как приходилось делать на некоторых акках где совершенно нет подходящей техники.
-
09.12.2019 в 16:17, nehalemex сказал:
появилось несколько насущных вопросов которые как мне кажется можно решить с ХВМ.
первое интересует автоматический сброс прогресса выполнения ЛБЗ при неудачном старте.
пример: есть задача в 4 боях из 10 попасть в топ 1 по опыту. при неудачном старте попытка 1 из 10 провалена. я не знаю почему картоха это не сделала сама.
Много лет меня интересовал этот вопрос, но нигде никто ниче.
С неудачным стартом то ты загнул, нужна будет логика под разные квесты а вот тупо вынести кнопку ресета в батлрезалт или в саму ту штуку в ангаре с твоим текущим квестом, которая в xvm hangar.personalQuests
Крайне мало народа пользуется подобным мазохизмом: подбирать удачный бой под старт серии. А это когда десятки а когда и много сотен боёв и каждый раз открываешь эти все окна для банальногго ресета.
-
in script
PjOrion\wottransmission.zip\wottransmission\scripts\common\bw_site.py
i changed res_path from './../' to './'
-
Нет, HD текстуры дополняют стандартные.
- 4
-
такая шляпа постоянно, когда долго не перезапускаешь софту
Помогите найти виновника
in Mod Questions and Problem Solving
Posted · Edited by BuSH
скомуниздил у батлобзёрвера
mod_effectlist_cleaner.pyc