Jump to content
Korean Random

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


GPCracker

Recommended Posts

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
Link to comment
Short link
Share on other sites

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

В 9.17 по плану было. Но вот почему именно сейчас им вожжа под хвост попала - непонятно.
Link to comment
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
Link to comment
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
Link to comment
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
Link to comment
Short link
Share on other sites

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

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

 

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

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

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

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

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

MinimapGunMarkers_0.9.15.1CT_alpha_#1.zip

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

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

Edited by GPCracker
Link to comment
Short link
Share on other sites

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

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

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

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

MinimapGunMarkers_0.9.15.1CT_alpha_#2.zip

Edited by GPCracker
Link to comment
Short link
Share on other sites

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

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

attachicon.gifMinimapGunMarkers_0.9.15.1CT_alpha_#2.zip

По KEY_M миникарта исчезает вообще. Стоп. Это и в чистом клиенте так)
Edited by ShadowHunterRUS
Link to comment
Short link
Share on other sites

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

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

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

Link to comment
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...