Jump to content
Korean Random
SoprachevAK

ХП танков во время боя

Recommended Posts

Подскажите откуда можно вытащить закешированные текущие ХП танков союзников и противников. В player().vehicles лежат только максимальные. Понятное дело, что можно самому посчитать на onHealthChanged, но в игре уже должно быть что то подобное, для ХП команд в шапке, да и на миникарте отображаются 

Я нашел что то похожее в from vehicle_systems.appearance_cache import VehicleAppearanceCacheInfo , но оно как то нигде не используется нормально

Share this post


Link to post

Short link
Share on other sites

@SoprachevAK попробуй пострелять в BattleFieldCtrl. Но вообще странно, vehicle.health/maxHealth разве не пробовал?

Edited by Kurzdor

Share this post


Link to post

Short link
Share on other sites
4 часа назад, Kurzdor сказал:

vehicle.health

 

2 минуты назад, StranikS_Scan сказал:

Всё верно

 
Насколько я помню, инстанс класса Vehicle существует только когда танк виден и известен игроку

А в начале боя пока они ещё не светились, или за кругом отрисовки, или во всяких режимах где они вообще скрыты как быть?
Может я просто неправильно хожу до этих Vehicles

Share this post


Link to post

Short link
Share on other sites
8 часов назад, SoprachevAK сказал:

Насколько я помню, инстанс класса Vehicle существует только когда танк виден и известен игроку

 

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

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
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
Но оно всё работает только в радиусе отрисовки. Остаётся только обнулять ХП умерших за отрисовкой танков. 

Ну и мечтаю, чтоб это хоть как то работало во всяких режимах с хилом и воскрешениями 

Share this post


Link to post

Short link
Share on other sites
38 минут назад, SoprachevAK сказал:

Это выглядело очень многообещающе, но у меня всё равно ничего не получилось, хотя я уже неприлично много времени на эту задачу потратил
Фидбеки приходят только в радиусе отрисовки, даже Dead

 

Погоди, ты типа думал, что если танк не в засвете, то сервер типа пришлет тебе какую-то инфу по изменению его состояния? Нет, конечно. Игра защищена от этого. Сервер присылает инфу только по условию механики игры. Пока танк не засветился, ты не узнаешь в каком он состоянии. Исключение - это смерть игрока-противника.

Share this post


Link to post

Short link
Share on other sites

 

8 минут назад, StranikS_Scan сказал:

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

Не не, не думал, очевидно что не пришлёт
Я имел ввиду событие Dead когда противник умирает за кругом отрисовки. Его тоже нет в фидбеке
 

А про инстанс Vehicle, я думал, что он кеширует в себе инфу на время боя. Как будто бы нет смысла каждый засвет аллоцировать память с нуля, так ещё и потом каждая подсистема кеширует одну и туже информацию локально

Share this post


Link to post

Short link
Share on other sites
1 минуту назад, SoprachevAK сказал:

Я имел ввиду событие Dead когда противник умирает за кругом отрисовки. Его тоже нет в фидбеке

 

Это есть, уведомления же приходят во время игры и уши меняются, когда противник умирает. Их цепляют на эвенты арены:

BigWorld.player().arena.onVehicleKilled += self.__onArenaVehicleKilled

Share this post


Link to post

Short link
Share on other sites
Только что, StranikS_Scan сказал:

 

Это есть, уведомления же приходят во время игры и уши меняются, когда противник умирает. Их цепляют на эвенты арены:

BigWorld.player().arena.onVehicleKilled += self.__onArenaVehicleKilled

Ирония в том, что прямо в момент сообщения я нашел в коде именно эту строчку) 
Но всё равно спасибо большое! Пойду пробовать

Share this post


Link to post

Short link
Share on other sites
7 минут назад, SoprachevAK сказал:

А про инстанс Vehicle, я думал, что он кеширует в себе инфу на время боя. Как будто бы нет смысла каждый засвет аллоцировать память с нуля, так ещё и потом каждая подсистема кеширует одну и туже информацию локально

 

Там только физика моделей кэшируется и сами модели, иначе тормозить будет при засвете. Какие-то "скелеты" там прописывали разрабы и внедряли с патчами, их кэширует система, но это всё связано только с визуальной частью с моделями.

2 минуты назад, SoprachevAK сказал:

Ирония в том, что прямо в момент сообщения я нашел в коде именно эту строчку) 
Но всё равно спасибо большое! Пойду пробовать

 

Там целая куча эвентов, посмотри может какие-то тебе и нужны для дела.

Share this post


Link to post

Short link
Share on other sites
On 3/27/2024 at 6:57 PM, SoprachevAK said:

IBattleFieldListener 

ViewComponentsController/SharedPage._onRegisterFlashComponent глянь и забудь про наследование этого класса без флешки.

Edited by Kurzdor
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
5 часов назад, Kurzdor сказал:

забудь про наследование этого класса без флешки

Даа, я так и подумал, что оно точку входа в UI имеет. Спасибо за разъяснение) 

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...