StranikS_Scan Posted January 28, 2020 Share Posted January 28, 2020 3 часа назад, Evgen1388 сказал: подтверждаю, прицел залипает на грунт и не реагирует. Использую AdvancedAimingSystem-NOLF в связке модпаком от протанки. питон приложил python.log 32 kB · 1 скачивание Там картоха в ганрораторе из __avatar сделал _avatar. Починю. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Evgen1388 Posted January 28, 2020 Share Posted January 28, 2020 6 минут назад, StranikS_Scan сказал: Там картоха в ганрораторе из __avatar сделал _avatar. Починю. Спасибо, будем ждать))). картошке лишь бы накопать багов, а разгребают их сторонние ребята. @ Quote Link to comment Short link Share on other sites More sharing options...
vasya-sar Posted January 28, 2020 Share Posted January 28, 2020 Ну слава богу, что есть добрый человек , ждём с не терпением @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted January 28, 2020 Share Posted January 28, 2020 Обновлено под патч 1.7.1.0 Скачать 10 @ Quote Link to comment Short link Share on other sites More sharing options...
vasya-sar Posted January 29, 2020 Share Posted January 29, 2020 уря усё работает плюс ушол @ Quote Link to comment Short link Share on other sites More sharing options...
BuSH Posted January 31, 2020 Share Posted January 31, 2020 Ещё бы плагинчик ковырнуть, который развалился в те суровые времена ежедневных микропатчей. @ Quote Link to comment Short link Share on other sites More sharing options...
BuSH Posted February 4, 2020 Share Posted February 4, 2020 Поправил тот плагинчик. ПО ходу надо с гитом разбираться чтобы туда запулить правочку. @ Quote Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted February 4, 2020 Share Posted February 4, 2020 1 час назад, BuSH сказал: Поправил тот плагинчик. ты же вот это хотел вроде @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted February 4, 2020 Share Posted February 4, 2020 1 час назад, BuSH сказал: Поправил тот плагинчик. ПО ходу надо с гитом разбираться чтобы туда запулить правочку. Правку покажи, исправлю в репо @ Quote Link to comment Short link Share on other sites More sharing options...
BuSH Posted February 4, 2020 Share Posted February 4, 2020 (edited) @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 Edited February 6, 2020 by BuSH 1 @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted February 7, 2020 Author Share Posted February 7, 2020 On 1/4/2020 at 3:08 AM, Coluchiy said: Это какой-то глюк, или при наведении не учитываются препятствия, и я как бы навожусь на плоскость, находящуюся от меня на зафиксированном расстоянии. Это не глюк. В режиме корректировки дальномера препятствия не учитываются (в противном случае теряется основной смысл корректировки дальномера - вертикальная стабилизация орудия на границе перекрывающего цель объекта). Вся интересующая тебя математика расчетов прописана здесь. За маркер орудия отвечает отдельный алгоритм интегрального (рассчитывается по точкам) баллистического (с учетом траектории полета снаряда) теста на столкновения, там учитываются все влияющие на полет снаряда объекты. On 1/4/2020 at 3:08 AM, Coluchiy said: Что именно исправляет участок, включаемый по Ctrl+K, и опция "fixGunMarker" ? Когда удаленная цель перекрыта близким объектом, маркер орудия отображается выше перекрестия прицела. Когда близкая цель маячит на фоне неба или далекого ландшафта, маркер орудия будет проваливаться существенно ниже перекрестия прицела, поскольку точками прерывания баллистического коллижн-теста могут быть только твердые (влияющие на полет снаряда) объекты или же граница локации. Первую проблему без кучи костылей и велосипедов решить нереально, да и смысла особого в этом нет, поскольку это своего рода маркер, показывающий игроку, что какой-то близкий суслик (его вроде не видно, а он есть) мешает стрелять. Для второй проблемы есть плагин AimCorrectionGunMarkerFix, подключаемый в нужном режиме прицеливания как раз таки через этот самый параметр. On 1/4/2020 at 3:33 AM, Coluchiy said: А опции fixGunMarker и arcadeAimCorrection/targetMode - есть простое их разъяснение? Чтобы понять что это и нужно ли оно мне... Есть два режима выбора дистанции для корректировки дальномера - ручной, когда удерживается клавиша, и автоматический, когда дистанция определяется с учетом выбранной игроком цели в автоматическом режиме. За целеуказание (механизм определения наиболее вероятной цели игрока) отвечает модуль TargetScanner, его параметры настраиваются здесь. В некоторых ситуациях скрипты модификации могут не совсем корректно понимать интересы игрока, поэтому отключать информационные панели не рекомендуется. Параметры графического интерфейса настраиваются здесь, сам интерфейс на работу модулей целеуказания и корректировки дальномера влияет так же, как линейка на размер... монитора, то есть никак, информационные панели нужны исключительно для контроля за текущим состоянием (которое иногда может отличаться от ожидаемого игроком). On 1/4/2020 at 3:26 AM, Scharfhobel said: Мод ничего не корректирует и ничего не наводит никуда. Он вообще не управляет пушкой, иначе это был бы чит. Точка прицеливания (куда именно наводится орудие) трехмерная, а прицел у игрока двухмерный (вверх-вниз, влево-вправо). Параметром дальности управляет система прицеливания в игре в автоматическом режиме, причем незаметно для игрока. Корректировка дальномера влияет лишь на выбор расчетной дальности, определяющей угол возвышения орудия (для понимания сути вопроса настоятельно рекомендую ознакомиться со старой советской литературой), в само же прицеливание, то есть наведение орудия на цель (то, что игрок обычно делает мышкой), модификация не вмешивается (заранее оставлю специальное отдельное пояснение для особо одаренных - модификация ни на слабые точки, ни на танки в целом орудие не наводит, на упреждение никого не берет). По сути Advanced Aiming System делает то же самое, что и BalCalcMod от Ktod, только в автоматическом режиме. По умолчанию орудие в игре наводится на ближайшее твердое препятствие (линейный коллижн-тест в точке перекрестия прицела), влияющее на полет снаряда (ландшафт, элементы окружения локации, танки противника, граница локации). Стандартный алгоритм прост и примитивен, но у него есть существенные проблемы, вызывающие регулярное адское воспламенение пятых точек танкистов, у которых руки не под хрен заточены. Во-первых, нереально нормально выстрелить в точку, где танка противника еще пока нет, но он там будет в момент подлета снаряда. Иными словами, проблематична стрельба из любых бревнометов (орудий с низкой скоростью полета снаряда) по любому движущемуся или играющему от башни противнику, стрельба на упреждение на фоне далекого ландшафта или границы локации. Во-вторых, выбивание разного рода сусликов (которые вроде как и не светятся, но они там есть, ибо ваша лампочка не может срабатывать сама по себе) из кустов на фоне неба тоже порой вызывает, мягко выражаясь, проблемы (происходят регулярные так называемые перелеты, когда снаряд пролетает аккуратно над целью вместо попадания в нее). В-третьих, стоять и отхватывать откровенно излишних проблем со здоровьем в ожидании нормализации орудия по дистанции стрельбы после выезда из-за угла (а иначе вместо выстрела происходит какой-то плевок в землю) тоже мало кого прикалывает. А собственно, весь этот приход белого пушного зверька происходит по одной лишь простой причине - нарисованные танкисты не в курсе, что адекватный игрок принципиально не собирается обстреливать ландшафт, здания, границу локации и прочие статичные объекты, у него только одна цель - танки противника. А потому и дальномер нужно выставлять согласно дальности до противника, а не до хрен знает чего (не, ну логично же, блин). Почему этого до сих пор не поняла картошка, спросите вы? Ну так адекватные товарищи, которые изначально занимались разработкой системы прицеливания в игре, это понимали, но нормально решить данную проблему автоматического дальномера можно только лишь отказавшись от автоматического дальномера вовсе, то есть реализовав прицеливание по принципу снайперских винтовок в Battlefield 4 или Sniper Ghost Warrior, но любой подобный вариант был бы слишком сложным для целевой аудитории, а еще бы негативно влиял на динамичность игры. А если же решать эту проблему в рамках автоматического дальномера, то все сводится к сложной системе целеуказания, для нормальной работы которой без прямого вмешательства игрока (вроде нажимания и зажимания кнопок на клавиатуре и тому подобной фигни, совершенно неприемлемой для большого проекта, ориентированного на домохозяев) необходимо написать кода на несколько тысяч строк как минимум, если не больше (примерно столько же, сколько сейчас занимают основные модули модификации и все необходимые функции из библиотеки). И еще при этом каким-то образом объяснить целевой аудитории, как это все работает. Учитывая относительно незначительный процент людей с мозгами (замечающих данную проблему) и элементарным чувством собственного достоинства (не привыкших жрать кактус), все это дело совершенно никак с точки зрения большого бизнеса не оправдано, а потому на исправление данного косяка успешно и невообразимо надолго забили болт и положили еще один сверху. А те разработчики, что пришли уже позже, так и вообще не понимают толком, о чем там речь идет, и чего старожилы и редкие новички до сих пор периодически бомбят в профильных темах. В общем, данная проблема изначально решалась (и до сих пор решается) исключительно силами сообщества. On 1/4/2020 at 3:26 AM, Scharfhobel said: Он просто строит плоскость на заданном расстоянии. И при вашем прицеливании точка прицеливания движется по этой плоскости. Оставлю это здесь на всякий случай. Не стоит путать понятия "точка прицеливания" и "точка построения маркера орудия" (или просто "маркер орудия"). Маркер орудия (gun marker) - так внутри скриптов официально называется "сведение". Точка построения маркера орудия трехмерная, и является результатом интегрального баллистического коллижн-теста. Центр "сведения" - это проекция точки построения маркера орудия на экран монитора. Что касается точки прицеливания, она тоже трехмерная, но ее проекция всегда находится в середине перекрестия прицела (неподвижной части графического интерфейса). Если перевести сказанное выше на язык артиллеристов, то точка прицеливания - это место, куда пытается навести артиллерийскую батарею (танк на сервере) корректировщик (клиент игры), а точка построения маркера орудия - место, где по расчетам (теоретически) артиллеристов (серверный прицел) или корректировщика (клиентский прицел) снаряд должен столкнуться с каким-то твердым препятствием, если выстрелить прямо сейчас, не дожидаясь полноценного наведения орудия на цель. On 1/10/2020 at 2:38 AM, •••YURASIK••• said: Подскажите, за что отвечает параметр <aimingThreshold>? Все дело в том, что орудие в игре сводится экспоненциально. Это пороговое отношение множителей разброса (текущего к минимальному), ниже которого можно условно считать сведение полным (математику можно посмотреть здесь). #точка-прицеливания #aiming-point #маркер-орудия #gun-marker #сведение #корректировка-дальномера #aiming-correction #провал-сведения #сканер-целей #target-scanner #частые-вопросы #faq 6 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted February 8, 2020 Share Posted February 8, 2020 (edited) @BuSH поправил плагин тыц, проверь работоспособность. ЗЫ: Изменения - тыц. Edited February 8, 2020 by StranikS_Scan 4 @ Quote Link to comment Short link Share on other sites More sharing options...
Pensioner Posted February 20, 2020 Share Posted February 20, 2020 У кого есть на русском, поделитесь пожалуйста. @ Quote Link to comment Short link Share on other sites More sharing options...
Scharfhobel Posted February 20, 2020 Share Posted February 20, 2020 2 часа назад, Pensioner сказал: У кого есть на русском, поделитесь пожалуйста. На русском 3 @ Quote Link to comment Short link Share on other sites More sharing options...
Pensioner Posted February 20, 2020 Share Posted February 20, 2020 6 часов назад, Scharfhobel сказал: На русском Спасибо! У меня не получилось русский поставить, всё время ошибку выдавало, хоть и паковал без сжатия! @ Quote Link to comment Short link Share on other sites More sharing options...
INFERNO66 Posted February 21, 2020 Share Posted February 21, 2020 Может кто-то объяснить пож-та. Мод автоматически работает? Как в ручном режиме корректировать прицел? Где настраивается горячая кнопка? @ Quote Link to comment Short link Share on other sites More sharing options...
Scharfhobel Posted February 24, 2020 Share Posted February 24, 2020 (edited) 08.02.2020 в 08:51, StranikS_Scan сказал: @BuSH поправил плагин тыц, проверь работоспособность. ЗЫ: Изменения - тыц. А можно ли таким же образом поправить мод mod_sniperByScroll.py от spoter-а? Он работает, но спамит в питон лог. Цитата Edited February 26, 2020 by Scharfhobel @ Quote Link to comment Short link Share on other sites More sharing options...
BuSH Posted February 24, 2020 Share Posted February 24, 2020 @Scharfhobel до того дня как я выложил исправление, его мод ничего подобного в лог не писал. @ Quote Link to comment Short link Share on other sites More sharing options...
Scharfhobel Posted February 24, 2020 Share Posted February 24, 2020 38 минут назад, BuSH сказал: @Scharfhobel до того дня как я выложил исправление, его мод ничего подобного в лог не писал. ок, проверю еще раз.. @ Quote Link to comment Short link Share on other sites More sharing options...
Scanmen Posted March 4, 2020 Share Posted March 4, 2020 (edited) It seems to work with version 1.8.0.0 Вроде работает с версией 1.8.0.0. Edited March 4, 2020 by Scanmen 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.