Jump to content
Korean Random

BuSH

User
  • Posts

    1,464
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by BuSH

  1. 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% подойти. 

  2. 39 минут назад, Arni Ex сказал:

    А на кой ляд оно тебе? Чекать прошла альфа или нет? Что-то от этого изменится, если ты будешь знать это?

    Я издавна был один из первых кто задавал подобный вопрос за дичайший бесполезняк не прибавляющий ничего к нагибу, но эту фичу потестил малость и решил оставить.

    Выполняет типа оправдательную функцию почему нагнул или не вытащил. Не как обычно, надписью в чате типа "команда *цензура*" а просто для себя. Например видишь, что с 8-ми выстрелов и 6к даги все выстрелы в диапазоне -22 — -8% даги, тогда можно обвинить рандом а не свою криворукость.

    Ну и там же считаю фуги где нет разброса урона. В одно место стрельнул получил 80% урона/2, в другое — 95.

    Няшная получилась фича.

    @ktulho удивился что ты сам прошёлся по геометрии с вычислением дистанции. Но неужели у картохи негде было дёрнуть уже готовую цифру как это делают флешки прицелов

  3. 12 часов назад, andreyvazmtp сказал:

    я так понял что  ваш новый макрос {{py:sight.distCrosshair}} из скрипта crosshair.py показывает дистанцию до точки на которую смотрит центр сетки прицела, или примерно центр монитора. А макрос {{py:sight.distance}} из скрипта markerPosition.py показывает дистанцию до центра круга/овала сведения.

    Почему возник такой вопрос я не понял, но понял, что пропустил какую-то глобальную обнову с заменой скриптов и добавлением макросов, которые дописывал сам.

    Теперь можно грохать свой форкнутый sight.py, переименовать добавленные макросы и просто надёргать файликов с темы "как есть". Хоть конфиг это никак не затронуло, но было бы неплохо, все эти прицельные фичи разделить на разные battleLabels по событиям вместо их длинной ленты что негативно влияет на производительность.

    Ещё бы в хитлог добавить базовый урон снаряда и вообще XFW начнет интегрити чек проходить )

  4. 14 часов назад, ktulho сказал:

    Добавил аддон Перекрестие:

    
    {{py:sight.distCrosshair}} - расстояние до точки наведения центрального маркера;
    PY(ON_CROSSHAIR) - событие предназначено для обновления данного макроса.

     

    Спасибо. Наконец-то можно прикидывать не нажимая клавишу. По сравнению с флешовой работает стрёмненько,  но начало уже положено. Закинул пока 2 параллельно заценить разницу и в снайперском бывает разница в несколько иксов. Ну и как ожидалось, в артилерийском обе мерялки distCrosshair и distance дают одно и тоже значение.

  5. @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), )

    https://github.com/StranikS-Scan/AdvancedAimingSystem-NOLF/blob/1.7.x/source/res/scripts/client/gui/mods/.submodules/source/plugins/SniperModeSPGExtension.py

    ну и забыл импорт
    тупо картохин без самодеятельности
    from gui.Scaleform.genConsts.GUN_MARKER_VIEW_CONSTANTS import GUN_MARKER_VIEW_CONSTANTS as _CONSTANTS

    • Upvote 1
  6. Заценяю в 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.

    та что я такое несу?! всё же работает как надо, зачем что-то чинить

  7. @horizont ну это дефолтная неизбежная проблема всех этих *логов. Когда картоха меняет или добаваляет задействованные в моде параметры. Получается некий рассинхрон вывалюющийся при каждом событии в этом логе.

    А здесь речь о ежебойным накапливании шняги и после каждого боя клиент работает медленнее.

     

    1 час назад, Slava7572 сказал:

    А лог разве не самоочищается

    Та чистится но только при перезапуске.
    Часов через 2-3 н++ послал подальше со своей бигдатой. Ешё через час-два, когда тех эффектов было около 50к, начали отваливаться моды, упала консоль.  С орионом вообще дичайшие тормоза через пару каток. В нем передавалка лога ооочень медленная и подвешивает софту на пару минут после каждого боя.
    А ещё через пару каток  и сам клиент помер. Так что беда серьезная .

  8. 5 часов назад, Slava7572 сказал:

    а фарплейн или нечто подобное...оггласите весь список пажалуста.У меня такая же зараза,думал из за твикера,но все работает и бог с ним.

    я тоже сходу на че-то такое подумал или с другой кухни SpaceBinPatcher.

    ну как работает..? после пары часов каток фризить начинает. Видять, тяжко ему с гиговым файлом лога даже на шустром железе.

     

    Я только недавно выключил дев режим в xvm  и прозрел, что клиент теперь не надо каждый день перезапускать. А тут опять.

  9. 30.01.2020 в 17:03, HEKPOMAHT сказал:

    Это легко проверяется запуском клиента без модификаций. Запустил -> проверил -> убедился в наличии -> сэкономил время на создание темы :hmm:

    Там не сразу приход ловишь а катать 1-2 катки без модов? та ну брось :)

     

    Можно в паймакро вкинуть  и в реалтайме следить как оно разростаеться.

    import helpers.EffectsList
    
    print len(helpers.EffectsList.EffectsListPlayer.activeEffects)

     

    • Upvote 1
  10. @Arni Ex насколько я понимаю слово target, именно действующий макрос можно было бы так обозвать, который меряет расстояние до цели. А здесь речь про сугубо UIную мерялку где, как по мне, обязательно слово crosshair.

  11. @ktulho ааааа.... только ни я, у меня всегда с неймингом переменных целая катастрофа. Десятки раз весь твой код обнюхал и не замечал у тебя такой проблемы :)

    distance и crosshair заюзать бы

    ну или в тупую py:sight.crosshairdistance

    или как школа :) distance2crosshair

  12. 3 минуты назад, night_dragon_on сказал:

    И самостоятельно их упаковать, например консольной версией 7-zip (или другими аналогами).

    та любой и зип и 7зип и зип с винрара. Чем только не собирал, важно только режим стор выбрать ну или где как его называют типа без сжатия.

  13. 26.03.2019 в 19:38, BuSH сказал:

    Ожидал привязки дальномера и времени полёта снаряда к прицелу как у арты. А макросы {{py:sight.distance}} {{py:sight.timeFlight}} "отображают инфу для сведения".

     

    Можно ли сделать подобное для самих прицелов?

     

    27.03.2019 в 12:55, ktulho сказал:

    А где это привязано?

    Опять начало пригорать от этой штуки и решил напомнить вопрос.

     

    В артприцеле расстояние измеряется до центра прицела и не важно куда смотрит орудие. В аркадном и снайперском чтобы чекнуть расстояние до такого-то куста,  нужно обязательно повернуть на эту точку ствол, но вообще не всегда есть такая возможность. Приходиться по старинке юзать хоткей в балкалкмоде.

  14. @Nik7 нам остаётся только аплодировать твоей гениальности. Ведь всё верно! Если в одной версии изменить путь а в какой-то из последующих "вернуть обратно".

     

    А почему у меня так сложно было... Я тогда цепонул файло и батник а когда на днях в 5 утра "картоха опять всё сломала". С ошибки в логе добрался до того пути. Пошатал и завелось. А уже потом, вроде когда фейспалм этот открывал читать подсказав как чинил я, листанул пару ообщений вверх и понял что просто вернул "как было" и можно было просто закинуть оригинальный файл. 

  15. 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

  16. @nehalemex зачем ты мне это поясняешь когда я уже под всем подписался.

    Хотя ты про 10, а я про 300-400 как приходилось делать на некоторых акках где совершенно нет подходящей техники.

  17. 09.12.2019 в 16:17, nehalemex сказал:

    появилось несколько насущных вопросов которые как мне кажется можно решить с ХВМ.

    первое интересует  автоматический сброс прогресса выполнения ЛБЗ при неудачном старте. 

    пример: есть задача в 4 боях из 10 попасть в топ 1 по опыту. при неудачном старте попытка 1 из 10 провалена. я не знаю почему картоха это не сделала сама.

    Много лет меня интересовал этот вопрос, но нигде никто ниче.

    С неудачным стартом то ты загнул, нужна будет логика под разные квесты а вот тупо вынести кнопку ресета в батлрезалт или в саму ту штуку в ангаре с твоим текущим квестом, которая в xvm hangar.personalQuests

     

    Крайне мало народа пользуется подобным мазохизмом: подбирать удачный бой под старт серии. А это когда десятки а когда и много сотен боёв и каждый раз открываешь эти все окна для банальногго ресета.

×
×
  • Create New...