通知センターにメッセージを表示する
mod から WoT クライアントの通知センターにメッセージを表示する方法について解説します。
通知センター Notification Center
通知センター (Notificatio Center) は WoT クライアントの画面右下にあるメッセージ表示欄です。
サンプル
ゲーム開始時に通知センターにグリーティングメッセージを出力するサンプルです。
以下のコードを mod_test.py という名前で保存し、
python2 -m compileall mod_test.py などで mod_test.pyc に変換したファイルを
res_mod/<WoT_version>/scripts/client/gui/mods フォルダに設置してください。
from PlayerEvents import g_playerEvents
from gui import SystemMessages
from gui.SystemMessages import SM_TYPE
def init():
g_playerEvents.onAccountBecomePlayer += __onAccountBecomePlayer
def __onAccountBecomePlayer():
SystemMessages.pushMessage('Hello World', type=SM_TYPE.GameGreeting)
mod_test.pyc の結果は以下のようになります。
通知センターに ‘Hello World’ の文字が出力されています。

サンプルの解説
関数 init は mod の初期化用として WoT 内部から呼び出される初期化ルーチンで、
定義されていなければ単に無視されます。
mod の主な初期化処理はここで行います。
def init():
g_playerEvents.onAccountBecomePlayer += __onAccountBecomePlayer
このサンプルでは、アカウントの処理が終了して有効なプレイヤーになるときに発生するイベント (onAccountBecomePlayer) に、
コールバック関数 __onAccountBecomePlayer
を追加登録しています。
__onAccountBecomePlayer というのは
この mod で定義している関数名で、
名前は任意です。
init が呼び出される時点では、通知センターはまだ存在していないので、
通知センターが作成された後のタイミングでメッセージを出力するようにしています。
def __onAccountBecomePlayer():
SystemMessages.pushMessage('Hello World', type=SM_TYPE.GameGreeting)
メッセージの出力処理です。
SystemMessages.pushMessage を使用して通知センターにメッセージを出力します。
gui.SystemMessages
通知欄へのメッセージ出力制御は、
モジュール gui.SystemMessages で提供されています。
Python のファイルでは scripts/client/gui/SystemMessages.py が対応します。
このモジュールには、メッセージ出力用に
pushMessage と pushI18nMessage
の2つの関数が提供されています。
両者の違いは、メッセージカタログを使用した翻訳機構を利用するか否かです。
通常は前者で問題ありません。
pushMessage
pushMessage の引数の定義は以下のようになっています。
text は必須、他の引数は省略可能な引数です。
def pushMessage(text, type = SM_TYPE.Information, priority = None, messageData = None):
text
出力するメッセージです。 プレーンテキストのほか、 ActionScript3 の Text コントロールで使われる html 風のタグを使用した装飾指定が可能です。
type
出力するメッセージのタイプ SM_TYPE を指定します。
SM_TYPE は SyetemMessages.py 内で定義されている列挙定数で、
表示するメッセージの種類を指定します。
指定しない場合は SM_TYPE.Information になります。
代表的なものを以下に示します。
完全なリストは SyetemMessages.py を参照してください。
| SM_TYPE.Error | エラー |
| SM_TYPE.Warning | 警告 |
| SM_TYPE.Information | 通常の通知 (デフォルト) |
| SM_TYPE.GameGreeting | ゲーム開始時のメッセージ |