AntonVK 359 Posted June 14, 2018 Добрый день! Достаточно продолжительное время поддерживаю мод Каких-либо ярко выраженных проблем с модом никогда не было, но в рамках последних патчей начались не совсем понятные вещи. Не так давно стали жаловаться пользователи PMOD, что у них, при определённой конфигурации PMOD, возникает артефакт в виде темного прямоугольника в боевом!!! интерфейсе игры в случае совместного использования с моими модами (здесь более подробные комментарии о проблеме и конфигурации PMOD http://forum.worldoftanks.ru/index.php?/topic/1241669-102x-часы-и-калькулятор-в-ангаре-с-конфигом/page__st__240#topmost). Проблема так и не была решена. И вот, в последнем актуальном патче мод перестал работать совместно с XVM. Пробовал ставить XVM, в логах python.log и xvm.log никаких, проясняющих данную ситуацию записей нет. Вроде как, согласно логам, мод загрузился, потом загрузился XVM и всё должно быть нормально. тем не менее, элементы моих модификаций в ангаре не отображаются. При этом, на чистом клиенте, мои модификации работают. К сожалению, я не располагаю большим ресурсом времени на доскональное изучение кода WG и не могу сам разобраться в проблеме. Также, я так и не понял, как сделать детальное логирование подгрузки модов, поэтому приходиться гадать почти вслепую. Поэтому прошу помощи более компетентных мододелов и разработчиков XVM. Как мне кажется, проблема заключается в методах инициализации и загрузки моих модификаций. Сейчас я поступаю следующим образом Python скрипт # import os # from gui.app_loader.loader import g_appLoader from gui.Scaleform import SCALEFORM_SWF_PATH from gui.Scaleform.Flash import Flash from gui.Scaleform.framework import g_entitiesFactories, ViewSettings, ViewTypes, ScopeTemplates from gui.Scaleform.framework.entities.abstract.AbstractViewMeta import AbstractViewMeta from gui.Scaleform.framework.entities.View import View from gui.Scaleform.framework.managers.loaders import SFViewLoadParams from gui.shared import events class hangarClock(View, AbstractViewMeta): def __init__(self): View.__init__(self) def _populate(self): View._populate(self) def _dispose(self): View._dispose(self) def py_log(self, text): print('[hangarClock]: %s' % text) def py_getWoTPath(self): __WoT__ = os.path.dirname(os.path.abspath(__file__)) __WoT__ = __WoT__[0:__WoT__.rfind('scripts')] return __WoT__ _windowAlias = 'hangarClock' _url = 'hangarClock.swf' _type = ViewTypes.WINDOW _event = None _scope = ScopeTemplates.GLOBAL_SCOPE _settings = ViewSettings(_windowAlias, hangarClock, _url, _type, _event, _scope) g_entitiesFactories.addSettings(_settings) old_init = Flash.__init__ def new_init(self, swf, className = 'Flash', args = None, path = SCALEFORM_SWF_PATH): old_init(self, swf, className, args, path) if swf == 'lobby.swf': self.addListener(events.AppLifeCycleEvent.INITIALIZED, lambda e: AppStarted(self, e)) Flash.__init__ = new_init def AppStarted(self, event): g_appLoader.getApp().loadView(SFViewLoadParams(_windowAlias, _windowAlias)) Код AS3, в котором далее непосредственно вызывается код моей модификации package { import flash.display.MovieClip; import flash.events.Event; import net.wg.gui.lobby.LobbyPage; import net.wg.infrastructure.base.AbstractView; import net.wg.infrastructure.events.LoaderEvent; import net.wg.infrastructure.interfaces.IView; public class hangarClock extends AbstractView { public function hangarClock() { super(); this.init(); } public var py_log:Function; public var py_getWoTPath:Function; private var lobby:LobbyPage = null; private var current_alias:String = ""; private var zClock:hClock; private function init(param1:Event = null):void { if(!stage) { addEventListener(Event.ADDED_TO_STAGE,this.init); return; } removeEventListener(Event.ADDED_TO_STAGE,this.init); App.containerMgr.loader.addEventListener(LoaderEvent.VIEW_LOADED,this.onViewLoaded); } private function onViewLoaded(param1:LoaderEvent):void { this.processView(param1.view,false); } private function processView(param1:IView, param2:Boolean):void { var view:IView = param1; var populated:Boolean = param2; var _WoT_:String = py_getWoTPath(); try { this.zClock = new hClock(_WoT_); this.current_alias = view.as_config.alias; if(this.current_alias == "lobby") { this.lobby = view as LobbyPage; this.lobby.header.addChild(this.zClock); //py_log("is loaded"); } } catch(error:Error) { py_log("processView" + error.getStackTrace()); } } override protected function nextFrameAfterPopulateHandler():void { if(this.parent != App.instance) { (App.instance as MovieClip).addChild(this); } visible = false; } } } Компиляцию я осуществляю в Adobe Flash Professional, используя декомпилированный код WG из актуального XFW. Если не затруднит, просьба прокомментировать: является ли верным и актуальным на сегодняшний день вышеописанный метод инициализации и загрузки своих флэшек? что такого произошло в последнем патче, что модификации перестали работать совместно с XVM, хотя раньше подобной проблемы не наблюдалось? Это какие-то кардинальные изменения самого XVM или кода WG? каким образом ангарные моды могут соприкасаться с боевым интерфейсом? Также, буду очень признателен, если укажите тынц, как можно организовать подробное логирование загрузки модов и вывода ошибок с небольшим примером. Благодарю за внимание! Share this post Link to post Short link Share on other sites
Lom 48 #433309 Posted June 14, 2018 кстати в этом патче проблема эта исчезла))) Share this post Link to post Short link Share on other sites
AntonVK 359 #433311 Posted June 14, 2018 4 minutes ago, ЛОМ said: кстати в этом патче проблема эта исчезла))) Какая именно проблема имеется в виду? Share this post Link to post Short link Share on other sites
Lom 48 #433312 Posted June 14, 2018 24 минуты назад, AntonVK сказал: Не так давно стали жаловаться пользователи PMOD, что у них, при определённой конфигурации PMOD, возникает артефакт в виде темного прямоугольника в боевом!!! вот эта проблема. Share this post Link to post Short link Share on other sites
AntonVK 359 #433313 Posted June 14, 2018 Just now, ЛОМ said: вот эта проблема. Понял. Ну это скорее всего что-то в PMOD поменялось. Share this post Link to post Short link Share on other sites
Lom 48 #433315 Posted June 14, 2018 6 минут назад, AntonVK сказал: Понял. Ну это скорее всего что-то в PMOD поменялось. ну да. он обновил свой мод и проблема исчезла. Share this post Link to post Short link Share on other sites
Mixaill 1,740 #433321 Posted June 14, 2018 Попробуйте 49 минут назад, AntonVK сказал: if swf == 'lobby.swf' or swf == 'xfw_lobby.swf' : self.addListener(events.AppLifeCycleEvent.INITIALIZED, lambda e: AppStarted(self, e)) 1 Share this post Link to post Short link Share on other sites
AntonVK 359 #436145 Posted July 12, 2018 On 6/14/2018 at 3:55 PM, Mixaill said: Попробуйте Добрый день! Спасибо за ответ, не было возможности заниматься! попробую в ближайшее время, хотя уже очевидно, это должно помочь. 1 Share this post Link to post Short link Share on other sites
AntonVK 359 #437029 Posted July 26, 2018 On 6/14/2018 at 3:55 PM, Mixaill said: Попробуйте Михаил, ещё раз спасибо за помощь, совместно с XVM работает. 1 Share this post Link to post Short link Share on other sites