[s]タグでゲーム停止中にメッセージレイヤーを非表示にするとゲームの進行が不可になる
どういうことか
ティラノスクリプトのゲームはデフォルトでシステム画面へジャンプするボタンが付いています。
画像右下の歯車ボタンですね。
https://gyazo.com/a604c1958989729755b11c22437161e7
このボタンから移動できるシステム画面にはデフォルトだと以下の機能を持ったボタンが配置されています。
セーブ画面へのリンク
ロード画面へのリンク
メッセージレイヤーを非表示
既読メッセージのスキップ
タイトル画面へ戻る
通常、右クリックをすることでもメッセージレイヤーの表示・非表示の切り替えは可能ですが、選択肢の表示中など[s]タグを使い、ゲームを停止させている状態では右クリックは無効にされているようです。
また、[s]タグでゲーム停止中は、選択肢などのリンクをクリックする以外にはゲームの進行を再開させることはできません。
しかしゲーム停止中でも歯車ボタンからメッセージレイヤーを非表示にすることはできます。
つまりどういうことかというと、
1. [s]タグでゲームを停止させる
2. 歯車ボタンからメッセージレイヤーを非表示にする
3. 右クリック無効のため右クリックでメッセージレイヤーを表示させることができない
4. 通常のクリック操作も当然無効
5. 何もできなくなる
ということです。
ではどうするか
解決策は色々あると思いますが今回はシステム画面からメッセージレイヤーの表示・非表示切り替えができるようにしました。
code:kag.menu.js
layer_menu.find(".menu_window_close").click(function (e) {
//ここから追加
if(that.kag.stat.is_hide_message === false){
that.kag.layer.hideMessageLayers();
}else{
that.kag.layer.showMessageLayers();
}
//ここまで追加
layer_menu.hide();
if (that.kag.stat.visible_menu_button == true) $(".button_menu").show();
e.stopPropagation()
});
ただ操作が直感的でないなとは思います…が、右クリックでメッセージ非表示にできるのにわざわざシステム画面から非表示にする人なら同じボタンでメッセージ表示にすることにも気づいてくれるんじゃないかな……
問題はシステムメニューに限らない
しかしこの問題、歯車ボタンから表示されるシステムメニューに限りません。
メッセージ枠と一緒に常時システムボタンを表示するタイプのゲームでも起こり得ます。
1. 選択肢表示等で[s]タグによるゲーム停止
2. システムボタンからメッセージレイヤーを非表示にさせる
3. メッセージレイヤーおよび選択肢の再表示ができず、ゲーム進行不可
システムボタンを常時表示している場合、歯車ボタンを消していることが多いでしょうから、もう一度歯車ボタンを押してもらってメニュー画面からメッセージレイヤー再表示、という手は使えません。
じゃあどうするか。ちょうどいいものがあります。
こちらの記事にあるコードを応用して、ゲーム停止中はメッセージレイヤー非表示ボタンが押せないようにするのです。
ゲーム停止中かどうかを示す変数はtyrano.plugin.kag.stat.is_strong_stopです。trueなら停止中、falseなら進行中