SoprachevAK Posted March 21 Share Posted March 21 Подскажите откуда можно вытащить закешированные текущие ХП танков союзников и противников. В player().vehicles лежат только максимальные. Понятное дело, что можно самому посчитать на onHealthChanged, но в игре уже должно быть что то подобное, для ХП команд в шапке, да и на миникарте отображаются Я нашел что то похожее в from vehicle_systems.appearance_cache import VehicleAppearanceCacheInfo , но оно как то нигде не используется нормально @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted March 21 Share Posted March 21 (edited) @SoprachevAK попробуй пострелять в BattleFieldCtrl. Но вообще странно, vehicle.health/maxHealth разве не пробовал? Edited March 21 by Kurzdor @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 21 Share Posted March 21 4 часа назад, Kurzdor сказал: vehicle.health Всё верно тыц. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted March 21 Author Share Posted March 21 4 часа назад, Kurzdor сказал: vehicle.health 2 минуты назад, StranikS_Scan сказал: Всё верно Насколько я помню, инстанс класса Vehicle существует только когда танк виден и известен игроку А в начале боя пока они ещё не светились, или за кругом отрисовки, или во всяких режимах где они вообще скрыты как быть? Может я просто неправильно хожу до этих Vehicles @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted March 22 Share Posted March 22 @SoprachevAK не верно, только .health не апдейтиться если он не в кругу прорисовки. @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 22 Share Posted March 22 8 часов назад, SoprachevAK сказал: Насколько я помню, инстанс класса Vehicle существует только когда танк виден и известен игроку Там же всё на событиях. Потому каждый плагин сам хранит инфу. Миникарта, например, цепляется на фидбэк и получает данные через него. Маркеры аналогично поступают - тыц и тыц. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted March 27 Author Share 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 Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27 Share Posted March 27 38 минут назад, SoprachevAK сказал: Это выглядело очень многообещающе, но у меня всё равно ничего не получилось, хотя я уже неприлично много времени на эту задачу потратил Фидбеки приходят только в радиусе отрисовки, даже Dead Погоди, ты типа думал, что если танк не в засвете, то сервер типа пришлет тебе какую-то инфу по изменению его состояния? Нет, конечно. Игра защищена от этого. Сервер присылает инфу только по условию механики игры. Пока танк не засветился, ты не узнаешь в каком он состоянии. Исключение - это смерть игрока-противника. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted March 27 Author Share Posted March 27 8 минут назад, StranikS_Scan сказал: Погоди, ты типа думал, что если танк не в засвете, то сервер типа пришлет тебе какую-то инфу по изменению его состояния Не не, не думал, очевидно что не пришлёт Я имел ввиду событие Dead когда противник умирает за кругом отрисовки. Его тоже нет в фидбеке А про инстанс Vehicle, я думал, что он кеширует в себе инфу на время боя. Как будто бы нет смысла каждый засвет аллоцировать память с нуля, так ещё и потом каждая подсистема кеширует одну и туже информацию локально @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27 Share Posted March 27 1 минуту назад, SoprachevAK сказал: Я имел ввиду событие Dead когда противник умирает за кругом отрисовки. Его тоже нет в фидбеке Это есть, уведомления же приходят во время игры и уши меняются, когда противник умирает. Их цепляют на эвенты арены: BigWorld.player().arena.onVehicleKilled += self.__onArenaVehicleKilled @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted March 27 Author Share Posted March 27 Только что, StranikS_Scan сказал: Это есть, уведомления же приходят во время игры и уши меняются, когда противник умирает. Их цепляют на эвенты арены: BigWorld.player().arena.onVehicleKilled += self.__onArenaVehicleKilled Ирония в том, что прямо в момент сообщения я нашел в коде именно эту строчку) Но всё равно спасибо большое! Пойду пробовать @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27 Share Posted March 27 7 минут назад, SoprachevAK сказал: А про инстанс Vehicle, я думал, что он кеширует в себе инфу на время боя. Как будто бы нет смысла каждый засвет аллоцировать память с нуля, так ещё и потом каждая подсистема кеширует одну и туже информацию локально Там только физика моделей кэшируется и сами модели, иначе тормозить будет при засвете. Какие-то "скелеты" там прописывали разрабы и внедряли с патчами, их кэширует система, но это всё связано только с визуальной частью с моделями. 2 минуты назад, SoprachevAK сказал: Ирония в том, что прямо в момент сообщения я нашел в коде именно эту строчку) Но всё равно спасибо большое! Пойду пробовать Там целая куча эвентов, посмотри может какие-то тебе и нужны для дела. @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted March 29 Share 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 Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted March 29 Author Share Posted March 29 5 часов назад, Kurzdor сказал: забудь про наследование этого класса без флешки Даа, я так и подумал, что оно точку входа в UI имеет. Спасибо за разъяснение) @ 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.