SoprachevAK 65 Posted March 21 Подскажите откуда можно вытащить закешированные текущие ХП танков союзников и противников. В player().vehicles лежат только максимальные. Понятное дело, что можно самому посчитать на onHealthChanged, но в игре уже должно быть что то подобное, для ХП команд в шапке, да и на миникарте отображаются Я нашел что то похожее в from vehicle_systems.appearance_cache import VehicleAppearanceCacheInfo , но оно как то нигде не используется нормально Quote Share this post Link to post Short link Share on other sites
Kurzdor 460 #540765 Posted March 21 (edited) @SoprachevAK попробуй пострелять в BattleFieldCtrl. Но вообще странно, vehicle.health/maxHealth разве не пробовал? Edited March 21 by Kurzdor Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #540769 Posted March 21 4 часа назад, Kurzdor сказал: vehicle.health Всё верно тыц. Quote Share this post Link to post Short link Share on other sites
SoprachevAK 65 #540770 Posted March 21 4 часа назад, Kurzdor сказал: vehicle.health 2 минуты назад, StranikS_Scan сказал: Всё верно Насколько я помню, инстанс класса Vehicle существует только когда танк виден и известен игроку А в начале боя пока они ещё не светились, или за кругом отрисовки, или во всяких режимах где они вообще скрыты как быть? Может я просто неправильно хожу до этих Vehicles Quote Share this post Link to post Short link Share on other sites
Kurzdor 460 #540771 Posted March 22 @SoprachevAK не верно, только .health не апдейтиться если он не в кругу прорисовки. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #540772 Posted March 22 8 часов назад, SoprachevAK сказал: Насколько я помню, инстанс класса Vehicle существует только когда танк виден и известен игроку Там же всё на событиях. Потому каждый плагин сам хранит инфу. Миникарта, например, цепляется на фидбэк и получает данные через него. Маркеры аналогично поступают - тыц и тыц. 1 Quote Share this post Link to post Short link Share on other sites
SoprachevAK 65 #540851 Posted March 27 22.03.2024 в 09:03, Kurzdor сказал: не верно Ну я вот сейчас тестировал, инстанс Vehicle меняется каждый раз когда танк пропадает и появляется заново. Ну типа каждый засвет инстанс новый, id не меняется и можно через BigWorld.entity() получать, но это другое 22.03.2024 в 09:42, StranikS_Scan сказал: Миникарта, например, цепляется на фидбэк и получает данные через него. Маркеры аналогично поступают - тыц и тыц. Это выглядело очень многообещающе, но у меня всё равно ничего не получилось, хотя я уже неприлично много времени на эту задачу потратил Фидбеки приходят только в радиусе отрисовки, даже Dead Ещё я надеялся, что мне поможет IBattleFieldListener https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/a073ff6fab4bdb9a915560cb3c774e645ea9ed64/source/res/scripts/client/gui/battle_control/controllers/battle_field_ctrl.py#L18, но я не нашел как его регистрировать, чтоб в него приходили вызовы. По сути сейчас я беру максимальные ХП из player().arena.vehicles['maxHealth'], и на Vehicle.onEnterWorld и Vehicle.onHealthChanged обновляю текущие хп каждого танка по ID Но оно всё работает только в радиусе отрисовки. Остаётся только обнулять ХП умерших за отрисовкой танков. Ну и мечтаю, чтоб это хоть как то работало во всяких режимах с хилом и воскрешениями Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #540852 Posted March 27 38 минут назад, SoprachevAK сказал: Это выглядело очень многообещающе, но у меня всё равно ничего не получилось, хотя я уже неприлично много времени на эту задачу потратил Фидбеки приходят только в радиусе отрисовки, даже Dead Погоди, ты типа думал, что если танк не в засвете, то сервер типа пришлет тебе какую-то инфу по изменению его состояния? Нет, конечно. Игра защищена от этого. Сервер присылает инфу только по условию механики игры. Пока танк не засветился, ты не узнаешь в каком он состоянии. Исключение - это смерть игрока-противника. Quote Share this post Link to post Short link Share on other sites
SoprachevAK 65 #540853 Posted March 27 8 минут назад, StranikS_Scan сказал: Погоди, ты типа думал, что если танк не в засвете, то сервер типа пришлет тебе какую-то инфу по изменению его состояния Не не, не думал, очевидно что не пришлёт Я имел ввиду событие Dead когда противник умирает за кругом отрисовки. Его тоже нет в фидбеке А про инстанс Vehicle, я думал, что он кеширует в себе инфу на время боя. Как будто бы нет смысла каждый засвет аллоцировать память с нуля, так ещё и потом каждая подсистема кеширует одну и туже информацию локально Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #540854 Posted March 27 1 минуту назад, SoprachevAK сказал: Я имел ввиду событие Dead когда противник умирает за кругом отрисовки. Его тоже нет в фидбеке Это есть, уведомления же приходят во время игры и уши меняются, когда противник умирает. Их цепляют на эвенты арены: BigWorld.player().arena.onVehicleKilled += self.__onArenaVehicleKilled Quote Share this post Link to post Short link Share on other sites
SoprachevAK 65 #540855 Posted March 27 Только что, StranikS_Scan сказал: Это есть, уведомления же приходят во время игры и уши меняются, когда противник умирает. Их цепляют на эвенты арены: BigWorld.player().arena.onVehicleKilled += self.__onArenaVehicleKilled Ирония в том, что прямо в момент сообщения я нашел в коде именно эту строчку) Но всё равно спасибо большое! Пойду пробовать Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #540856 Posted March 27 7 минут назад, SoprachevAK сказал: А про инстанс Vehicle, я думал, что он кеширует в себе инфу на время боя. Как будто бы нет смысла каждый засвет аллоцировать память с нуля, так ещё и потом каждая подсистема кеширует одну и туже информацию локально Там только физика моделей кэшируется и сами модели, иначе тормозить будет при засвете. Какие-то "скелеты" там прописывали разрабы и внедряли с патчами, их кэширует система, но это всё связано только с визуальной частью с моделями. 2 минуты назад, SoprachevAK сказал: Ирония в том, что прямо в момент сообщения я нашел в коде именно эту строчку) Но всё равно спасибо большое! Пойду пробовать Там целая куча эвентов, посмотри может какие-то тебе и нужны для дела. Quote Share this post Link to post Short link Share on other sites
Kurzdor 460 #540894 Posted March 29 (edited) On 3/27/2024 at 6:57 PM, SoprachevAK said: IBattleFieldListener ViewComponentsController/SharedPage._onRegisterFlashComponent глянь и забудь про наследование этого класса без флешки. Edited March 29 by Kurzdor 1 Quote Share this post Link to post Short link Share on other sites
SoprachevAK 65 #540904 Posted March 29 5 часов назад, Kurzdor сказал: забудь про наследование этого класса без флешки Даа, я так и подумал, что оно точку входа в UI имеет. Спасибо за разъяснение) Quote Share this post Link to post Short link Share on other sites