Jump to content
Korean Random
GPCracker

Маркеры направления орудий на миникарте / Minimap Gun Markers

Recommended Posts

Ну как говорится - доберемся - пошуршим.

 

@GPCracker, как успехи? Есть хорошие новости?

Edited by AtotIK

Share this post


Link to post

Short link
Share on other sites

GPCracker, как успехи? Есть хорошие новости?

Ну они там и намутили. Уже думаю, а не сходить ли до магаза за пивом...

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

Они миникарту раздолбали на дофига классов... В общем и целом, написано довольно неплохо, но раскурить быстро не получится. Изменились сильно сами алгоритмы.

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

 

В общем, посмотрел я классы. Даже без углубленного анализа и поиска хвостов понятно, что если делать без костылей (а коих я делать не хочу), то только для адекватной обработки всего этого дела на питоне (чтобы без конфликтов на уровне IDшников и т.д.) потребуется как минимум создать пару классов.

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

Одно могу сказать точно - это не один патч пилили втихую, просто "очень неожиданно выкатили". Объем работы очень большой, и чтобы в этом всем разобраться придется достаточно приличное количество времени в этом порыться.

"Запилить обнову по-быстрому" однозначно не получится.

 

Upd 1. Докопался таки до вызовов флешки (ну насколько я понимаю, это оно)

def _addEntry(self, symbol, container, matrix = None, active = False, transformProps = settings.TRANSFORM_FLAG.FULL):
        return self._parentObj.addEntry(symbol, container, matrix=matrix, active=active, transformProps=transformProps)

    def _delEntry(self, entryID):
        self._parentObj.delEntry(entryID)

    def _invoke(self, entryID, name, *args):
        self._parentObj.invoke(entryID, name, *args)

    def _move(self, entryID, container):
        self._parentObj.move(entryID, container)

    def _setMatrix(self, entryID, matrix):
        self._parentObj.setMatrix(entryID, matrix)

    def _setActive(self, entryID, active):
        self._parentObj.setActive(entryID, active)
Аргументы совсем другие. Из старого осталось только МПшка, но без нее никак. Все остальное пока не ясно.

 

Upd 2. Нашел один "быстрый хвост" но он привел, как и в ангаре, на блок сеттингов UI. В текущей организации мод просто вызывает миникарту, в новой придется работать с поднятием класса и подпиской на ивенты. Напрямую получить адрес вьюшки - это тот еще костыль. Одно время дебажил что-то в ангаре, делал так - на WST/Орионе такое норм делать, но не в продакшне.

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

Edited by GPCracker
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

>Они миникарту раздолбали на дофига классов...
Вот вот, я тоже Оооочень "обрадоавлся" :-(

Share this post


Link to post

Short link
Share on other sites

пилили втихую, просто "очень неожиданно выкатили"

В 9.17 по плану было. Но вот почему именно сейчас им вожжа под хвост попала - непонятно.

Share this post


Link to post

Short link
Share on other sites

Напрямую получить адрес вьюшки - это тот еще костыль.

?

from gui.Scaleform.framework import ViewTypes
from gui.Scaleform.genConsts.BATTLE_VIEW_ALIASES import BATTLE_VIEW_ALIASES
from gui.app_loader.loader import g_appLoader

minimap = g_appLoader.getDefBattleApp().containerManager.getContainer(ViewTypes.VIEW).getView().components[BATTLE_VIEW_ALIASES.MINIMAP]
print minimap # <gui.Scaleform.daapi.view.battle.classic.minimap.ClassicMinimapComponent object at 0x30F53AD0>
или так:

from gui.shared import events, g_eventBus, EVENT_BUS_SCOPE
from gui.Scaleform.genConsts.BATTLE_VIEW_ALIASES import BATTLE_VIEW_ALIASES

def onComponentRegistered(event):
    if event.alias == BATTLE_VIEW_ALIASES.MINIMAP:
        minimap = event.componentPy

g_eventBus.addListener(events.ComponentEvent.COMPONENT_REGISTERED, onComponentRegistered)
Edited by ShadowHunterRUS
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

from gui.Scaleform.framework import ViewTypes
from gui.Scaleform.genConsts.BATTLE_VIEW_ALIASES import BATTLE_VIEW_ALIASES
from gui.app_loader.loader import g_appLoader

minimap = g_appLoader.getDefBattleApp().containerManager.getContainer(ViewTypes.VIEW).getView().components[BATTLE_VIEW_ALIASES.MINIMAP]
print minimap # <gui.Scaleform.daapi.view.battle.classic.minimap.ClassicMinimapComponent object at 0x30F53AD0>

 

Интересное предложение. Однако вопрос с тем, что там за новые параметры передаются, остается открытым.

Никто случаем в этом еще не копался? У меня тестового нет, а выкачивать тут инет не позволяет, да и некуда пока.

Кстати, может кто скинуть флешку тестовой миникарты?

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Никто случаем в этом еще не копался?

кто-то из xvm копался) Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

кто-то из xvm копался)

А они там у себя ничего не постили? А то может кто ссылочкой поделится?

Share this post


Link to post

Short link
Share on other sites

, а флешку они тоже весело запилили...

Кстати, тут попутно еще некоторые моменты проглядываются. С этой обновой возможно таки получится запилить смену заднего фона миникарты в реалтайме (ну я имею ввиду саму карту). Ну скажем запилить по хоткею тепловую карту высот, тепловую карту разьездов и т.д.

Была раньше такая идея, но раньше менять карту после создания миникарты было нельзя. М.б. сейчас можно будет... Надо будет как-нить затестить, как разберусь что к чему.

def as_setBackgroundS(self, path):
        """
        :param path:
        :return :
        """
        if self._isDAAPIInited():
            return self.flashObject.as_setBackground(path)
self.as_setBackgroundS(_IMAGE_PATH_FORMATTER.format(arenaVisitor.type.getMinimapTexture()))
 public function as_setBackground(param1:String) : void
      {
         this.background.source = param1;
      }
 public var background:UILoaderAlt = null;
тут так-то флеш-объект вызывается, а не Scaleform компонент как раньше.

Обнова однозначно положительная, но чтобы с ней разобраться нужно время.

У ХВМщиков там везде TODO стоит, тоже, видно "раскуривают" еще...

Из системы вызовов кое-чего таки проглядывается...

Часть вызовов идет напрямую на флешку, но подвижные элементы создаются через Scaleform компонент.

Раскурить логику не так-то просто...

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Ну скажем запилить по хоткею тепловую карту высот

которая в .cdata? Или отдельный пак в res_mods хранить?

Share this post


Link to post

Short link
Share on other sites

которая в .cdata? Или отдельный пак в res_mods хранить?

Я не особо шарю в структуре ресурсов игры, но как пример могу привести

U9MNUcrN7C_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

жаль эту карту...

Этому билду уже несколько патчей. Как основная, даже в наложении на нормальную, оно не очень, а менять карту в бою без пересборки UI раньше было нельзя. Потому на тему и подзабили на некоторое время.

 

Первый тестовый заход для всех желающих потестить.

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

Билд тестовый, за пределы темы не выносим, пока не отдебажим.

Оптимизация, понятное дело нулевая, основная цель - хотфикс.

Эта тестовая версия, и работает некорректно, нужна рабочая - ищите ниже.

MinimapGunMarkers_0.9.15.1CT_alpha_#1.zip

З.Ы. Я это вообще не запускал, ибо у меня просто нет тестового клиента. Так что не бомбим :)

Да, забыл сказать - конфиг не забудьте! В дефолте для противников отключено.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites
, да хрен с ним. Это побочка. Пока руки не дошли. Маркеры-то работают?

Share this post


Link to post

Short link
Share on other sites

у меня не заработали

Ошибки есть кроме этих?

Вобщем, залатал что ты сказал, версию поправил, сообщение закомментил просто.

Эта тестовая версия, и работает некорректно, нужна рабочая - ищите ниже.

MinimapGunMarkers_0.9.15.1CT_alpha_#2.zip

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Ошибки есть кроме этих?

Вобщем, залатал что ты сказал, версию поправил, сообщение закомментил просто.

attachicon.gifMinimapGunMarkers_0.9.15.1CT_alpha_#2.zip

По KEY_M миникарта исчезает вообще. Стоп. Это и в чистом клиенте так) Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

По Ctrl + M миникарта исчезает вообще. Лог пустой.

Возможно у картохи хоткей на миникарту срабатывает.

Хоткеи это все побочка. Просто включи все фильтры в конфиге, поставь enable activate True. Чтобы сразу по логике работало. Нужно маркеры отдебажить, остальное потом.

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