Ekspoint 2,122 Posted June 29, 2016 (edited) # -*- coding: utf-8 -*- from gui.app_loader import g_appLoader from gui.Scaleform.framework import ViewTypes from gui.doc_loaders import messages_panel_reader def newReadSettings(ctx, root): data = oldReadSettings(ctx, root) data['useHtml'] = True return data oldReadSettings = messages_panel_reader._readSettings messages_panel_reader._readSettings = newReadSettings def showMessage(type, message, color='#FFD700'): ctrl = g_appLoader.getDefBattleApp() if ctrl is not None: messages = '<font color="%s">%s</font>' % (color, message) battle_page = ctrl.containerManager.getContainer(ViewTypes.VIEW).getView() if type == 'VehicleMessages': return battle_page.components['battle' + type].as_showPurpleMessageS(None, messages) if type == 'VehicleErrorMessages': return battle_page.components['battle' + type].as_showPurpleMessageS(None, messages) if type == 'PlayerMessages': return battle_page.components['battle' + type].as_showSelfMessageS(None, messages) showMessage('PlayerMessages', u'Тестовое сообщение над мини картой') showMessage('VehicleMessages', u'Тестовое сообщение над панелью снарядов') showMessage('VehicleErrorMessages', u'Тестовое сообщение в центре над прицелом, зелёного цвета', '#80D639') Edited July 2, 2016 by Ekspoint 1 Quote Share this post Link to post Short link Share on other sites
spoter 1,402 #335163 Posted July 1, 2016 (edited) Пока только такое решение нашёл: from gui.battle_control import g_sessionProvider from gui.doc_loaders import messages_panel_reader def newReadMessages(ctx, root): data = oldReadMessages(ctx, root) data['CUSTOM_MESSAGE'] = ('%(message)s', ('purple', 'purple')) return data def newReadSettings(ctx, root): data = oldReadSettings(ctx, root) data['useHtml'] = True return data oldReadMessages = messages_panel_reader._readMessages oldReadSettings = messages_panel_reader._readSettings messages_panel_reader._readMessages = newReadMessages messages_panel_reader._readSettings = newReadSettings def showMessage(message, color='#FFD700', type=0): ctrl = p__g_sessionProvider.shared.messages if ctrl is not None: if type ==1: return ctrl.onShowVehicleMessageByKey('CUSTOM_MESSAGE', {'message': '<font color="%s">%s</font>' % (color, message)}) if type == 2: return ctrl.onShowVehicleErrorByKey('CUSTOM_MESSAGE', {'message': '<font color="%s">%s</font>' % (color, message)}) return ctrl.onShowPlayerMessageByKey('CUSTOM_MESSAGE', {'message': '<font color="%s">%s</font>' % (color, message)}) showMessage('Тестовое сообщение над мини картой') showMessage('Тестовое сообщение над панелью снарядов', type=1) showMessage('Тестовое сообщение в центре над прицелом, зелёного цвета', color='#80D639', type=2) Но так-то не искал особо. Кстати, два цвета указываются для обычного режима и второй для режима цветовой слепоты Edited July 1, 2016 by spoter 2 Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #335164 Posted July 1, 2016 (edited) from gui.Scaleform.framework import ViewTypes from gui.app_loader import g_appLoader battle = g_appLoader.getDefBattleApp() battle_page = battle.containerManager.getContainer(ViewTypes.VIEW).getView() battle_page.components['battleVehicleMessages'].as_showGreenMessageS(None, 'Text') # battleVehicleMessages, battleVehicleErrorMessages, battlePlayerMessages Edited July 1, 2016 by IzeBerg 4 Quote Share this post Link to post Short link Share on other sites
spoter 1,402 #335173 Posted July 1, 2016 Разница в том что у меня можно HTML во все поля использовать, т.е. цвета, картинки и т.д. и т.п. но как вариант, тоже неплохо! Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #335237 Posted July 1, 2016 @spoter, спс Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #335322 Posted July 2, 2016 обновил шапку 1 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #341989 Posted August 3, 2016 (edited) Да, блин, через одно известное место как всегда сделали. Хрен подкопаешься по-нормальному. Либо подключать свое сообщение к приватному атрибуту, костыль одним словом, либо самому резолвить методы... Картошка как всегда. import gui.app_loader import gui.Scaleform.daapi.view.battle.shared.messages.fading_messages def showMessageOnPanel(msgType, msgKey, msgText, msgColor): if gui.app_loader.g_appLoader.getDefBattleApp() is not None and msgType in ['Vehicle', 'VehicleError', 'Player']: panel = gui.app_loader.g_appLoader.getDefBattleApp().containerManager.getContainer(ViewTypes.VIEW).getView().components['battle' + msgType + 'Messages'] methods = gui.Scaleform.daapi.view.battle.shared.messages.fading_messages._COLOR_TO_METHOD if msgColor in methods: getattr(panel, methods[msgColor])(msgKey, msgText) return showMessageOnPanel('Vehicle', None, 'Message!', 'purple') Edited August 3, 2016 by GPCracker Quote Share this post Link to post Short link Share on other sites
l_zubr 0 #365860 Posted November 15, 2016 from gui.Scaleform.framework import ViewTypes from gui.app_loader import g_appLoader battle = g_appLoader.getDefBattleApp() battle_page = battle.containerManager.getContainer(ViewTypes.VIEW).getView() battle_page.components['battleVehicleMessages'].as_showGreenMessageS(None, 'Text') # battleVehicleMessages, battleVehicleErrorMessages, battlePlayerMessages Как я долга это искал, спасибо бро Quote Share this post Link to post Short link Share on other sites
ahwa 26 #378302 Posted February 3, 2017 is 0.9.17.3 ERROR: g_appLoader.getDefBattleApp object has no attribute 'containerManager' Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #378518 Posted February 4, 2017 @ahwa, наверное, скобки (вызов) пропустил, не? Quote Share this post Link to post Short link Share on other sites
ahwa 26 #378588 Posted February 5, 2017 Каким образом? Quote Share this post Link to post Short link Share on other sites