【解決済み】選択肢を強制的に閉じたい

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

【解決済み】選択肢を強制的に閉じたい

投稿記事by にゃたま » 2019年2月03日(日) 21:24

製作中ちょっとわからない点がありましたのでお聞きします。
メニュー画面をマップ画面で作成して「選択肢の表示」コマンドから
アイテム等の選択肢が表示されるようにしてます。
(詳細は以下の<メニュー画面の呼び出し方>を参照ください)
このときスクリプトコマンドで「SceneManager.push(Scene_Item);」
としてアイテム画面が表示されるようにしていますが、
アイテムの使用効果にコモンイベントを設定しコモンイベントが
実行されるとマップ画面に遷移しますが、当然メニュー画面自体が
マップのためこのメニュー画面に戻ってしまいます。
このときメニューの選択肢がアクティブになりますが
メニューの選択肢がアクティブになった瞬間、
選択肢を強制的にキャンセルしたいと思います。
このようにアイテムの使用効果のコモンイベントを実行して、
Scene_Itemから戻った際、メニューの選択肢を消すことはできるでしょうか?

説明が下手ですみません。お手数おかけしますがよろしくお願いいたします。



<メニュー画面の呼び出し方>
詳しくはマップ画面からキー入力した際コモンイベントに記載した以下のスクリプト(一部のみ記載)を
呼び出してオリジナルのメニューを表示させます。

コード: 全て選択

◆ループ
  ◆選択肢の表示:持ち物, ゲーム終了 (ウィンドウ, 右, #1, -)
  :持ち物のとき
    ◆スクリプト:SceneManager.push(Scene_Item);
    ◆
  :ゲーム終了のとき
    ◆スクリプト:SceneManager.push(Scene_GameEnd);
    ◆
  :キャンセルのとき
    ◆コモンイベント:メニュー閉じる
    ◆ループの中断
    ◆
  :分岐終了
  ◆
:以上繰り返し
最後に編集したユーザー にゃたま on 2019年2月07日(木) 23:23 [ 編集 1 回目 ]

アバター
くろうど
記事: 259
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by くろうど » 2019年2月05日(火) 15:07

こんにちは。
にゃたまさんのメニュー画面がどのような物が分かりませんが、質問内容を解釈した所、以下の図のような動作をしている物と考えました。
この解釈が合っていれば、ループ内の選択肢の表示をスイッチで切り替えれば選択肢を再表示せずに済むのではないでしょうか?
(強制的に閉じるのではなく、そもそも再表示しない)

ツクマテ質問190205A.png


よろしくお願いします。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 選択肢を強制的に閉じたい

投稿記事by まっつUP » 2019年2月05日(火) 20:36

にゃたま様

くろうど様ご投稿の内容の捕捉になりますが

おそらくキー入力を条件としてコモンイベントの実行が行われていると思うのですが
実行するコモンイベントを「メニュー画面の呼び出し」でなく
スイッチのオンオフが行われるものにすることでメニュー画面の制御を変更できると思います。

キー入力でスイッチのオンオフを行うようにする目的は
そのスイッチをトリガーとして「メニュー画面の呼び出し」を自動実行させるためです。
そのスイッチがオフにならない限りはイベントコマンド「ループ」を入れていない場合に
ループ同様に実行内容(今回は選択表示等)が繰り返されますが
この場合にはコモンイベントの実行内容が終点にたどり着くため
アイテムの使用効果によるコモンイベントの実行を処理することができます。
(いずれのコモンイベント内でもスイッチをオンオフを制御する権利があります。)

追記:この内容が好ましくない場合はほかの方法になってしまうわけですがScene_ItemBase.prototype.checkCommonEventが制御の参考になると思います。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by にゃたま » 2019年2月06日(水) 02:36

くろうど様、まっつUP様

ご連絡ありがとうございます。

くろうど様の言われるように修正してみましたが確かに
選択肢は消えましたがその後、選択肢が表示されなくなりました。
あとループ内の選択肢は消えましたが、常にループが回っており動作が遅くなります。

まっつUP様のも試しましたがスイッチをオンにするとゲームが固まって動作しなくなってしまいました。

説明が悪かったと思いますのでプロジェクトを新規に作成して症状が発生するようにしました。
くろうど様の修正版も入れましたが修正の仕方が違っているのかもしれません。
よろしければご確認いただけないでしょうか?

尚、キーボードのSキーでマップを開きますが、メニューから持ち物の「だいじなもの」のマップを使用して
コモンイベントを実行しています。このときに症状が発生します。
選択肢が消えてマップが表示されれば正常ですが…
尚、メニューはAキーでひらきます。

(プロジェクトの公開を終了しました)
最後に編集したユーザー にゃたま on 2019年2月08日(金) 23:22 [ 編集 1 回目 ]
アバター
くろうど
記事: 259
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by くろうど » 2019年2月06日(水) 13:05

こんにちは。

「修正版」となっている方を確認し、画像のように修正しました。

解説すると、並列処理で常時キャンセルボタン待ちしてる部分と、ループしてる部分にスイッチの条件分岐を付けたのですが、そのままだと永遠にループに戻って来れないので、条件分岐に「それ以外のとき」の処理を追加して、スイッチを切り替えています。

ツクマテ質問A_コモン.png
ツクマテ質問A_コモン.png (11.83 KiB) 閲覧数: 5181 回

ツクマテ質問A_コモン2.png
ツクマテ質問A_コモン2.png (21.51 KiB) 閲覧数: 5181 回


尚、シーケンス図の方には認識違いがあったようなので、参考にこちらも修正しておきました。
(アイテム使用後に、マップに戻したいのかメニューに戻したいのか、分かっていませんでした)

ツクマテ質問A_シーケンス.png
ツクマテ質問A_シーケンス.png (9.83 KiB) 閲覧数: 5181 回


よろしくお願いします。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by にゃたま » 2019年2月06日(水) 14:50

くろうど様

お返事ありがとうございます。
たしかにこちらの画像のように変更してみたところ選択肢が表示されなくなり
完全に元のマップのみ表示できました。

スクリーンショット 2019-02-06 14.44.36.png


但し、上記画像のようにして持ち物のマップを使用(コモンイベント実行)してみたところ
マップが表示されず、選択肢が表示されてしまいました。
これはSWの操作がどこか抜けているのでしょうか?

追記
そういえば、メニューを開くコモンイベントの上の方にあった条件分岐やピクチャの表示は削除されたのですか?
画像からはスクロールバーがみえず、そのように判別されます。
アバター
くろうど
記事: 259
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by くろうど » 2019年2月06日(水) 16:03

こんにちは。

私の確認したプロジェクトでは、「アイテムからマップを開く」は、以下のようになっていました。
こちらは、変更しておりません。

コード: 全て選択

◆スイッチの操作:#0010 SW = ON
◆コモンイベント:メニュー閉じる


また、「メニューを開く」については、以下のように条件分岐に「それ以外のとき」を追加しただけです。

コード: 全て選択

◆注釈:<Config Key: メニュー>
:  :<Config Text: メニューを開きます>
:  :<Config Required> 設定必須
◆条件分岐:メニュー開き中がON
  ◆イベント処理の中断
  ◆
:分岐終了
◆条件分岐:スクリプト:$gameMap.isEventRunning()
  ◆イベント処理の中断
  ◆
:分岐終了
◆スイッチの操作:#0005 メニュー開き中 = ON
◆SEの演奏:Decision1 (90, 100, 0)
◆ピクチャの表示:#80, 09bg_green_bg, 左上 (0,0), (100%,100%), 255, 通常
◆ループ
  ◆条件分岐:SWがOFF
    ◆プラグインコマンド:ChoicePos 580 0
    ◆選択肢の表示:持ち物, ゲーム終了 (ウィンドウ, 右, #1, -)
    :持ち物のとき
      ◆スクリプト:SceneManager.push(Scene_Item);
      ◆
    :ゲーム終了のとき
      ◆スクリプト:SceneManager.push(Scene_GameEnd);
      ◆
    :キャンセルのとき
      ◆注釈:メニューをキャンセルキーで閉じたときの処理
      ◆コモンイベント:メニュー閉じる
      ◆ループの中断
      ◆
    :分岐終了
    ◆
  :それ以外のとき
    ◆コモンイベント:メニュー閉じる
    ◆ループの中断
    ◆スイッチの操作:#0010 SW = OFF
    ◆
  :分岐終了
  ◆
:以上繰り返し


尚、もう片方のリンク先プロジェクトは見ていません。

よろしくお願いします。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by にゃたま » 2019年2月06日(水) 19:45

くろうど様

くろうど さんが書きました:私の確認したプロジェクトでは、「アイテムからマップを開く」は、以下のようになっていました。
こちらは、変更しておりません。

コード: 全て選択

◆スイッチの操作:#0010 SW = ON
◆コモンイベント:メニュー閉じる




失礼しました。確かにアップしたプロジェクトにはそのような表示になっておりました。
こちらは後に変更したものでした。これは私のミスです。こちらをアップするべきでした。
メニューを閉じた後にマップを開くのコモンイベントが必要でした。
そうでないとなんのための「アイテムからマップを開く」なのかわかりません。
最終的にアイテムからマップが開きたかったのでこの処理がないとマップが開けませんね。
すごく大事な処理なのにこちらに更新する前のファイルをアップしてしまったようです。
本当に申し訳ございませんorz

…もう少しこちらでも調査してみたいと思います。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 選択肢を強制的に閉じたい

投稿記事by まっつUP » 2019年2月06日(水) 20:04

にゃたま様
私の方でもプロジェクトを拝見いたしました。

二つのうち修正版ではないプロジェクトですが
コモンイベントの実行内容中で
◆条件分岐:スクリプト:$gameMap.isEventRunning()
◆イベント処理の中断

:分岐終了
が大きな負担になっていると認められます。
これではコモンイベントを自動実行で走らせることができないためです。
(私が提示した方法を試す場合にこの条件分岐がそのままの時に
自動実行条件を満たしている場合に事実上の無限再帰が行われています。)

追記:上記の分岐を削除することで
使用効果のコモンイベントでマップを開くコモンイベントをすぐに実行することも可能になりました。
ただ、それなりに変更箇所が多いので、不明な点がありましたらどうぞ。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 選択肢を強制的に閉じたい

投稿記事by にゃたま » 2019年2月06日(水) 21:48

まっつUP様


色々実験してみたのですがどこをどう修正していいのかわからない点が多々あるので
よろしければ修正点など画面キャプチャかコードでもいいので教えていただけないでしょうか?
$gameMap.isEventRunning()の条件分岐も削除はしてみたんですが状況は変わりませんでした。
あと何故こちらの条件分岐があるのかといえば無論おわかりかと思いますが
NPCと会話したりするとイベント実行状態になる為、NPCと会話中などイベント実行中は
メニュー画面、及びマップ画面を開かせたくなかった為です。
これがないといつでもどこでも開けてしまうかと思います。
(マップを持ち物から使用してではなくマップ表示キーを押した場合です)

追記
試してみたことはコモンイベント2の中身をコモンイベント7に移植(切り取って移動)して
コモンイベント7の$gameMap.isEventRunning()を削除、
コモンイベント7のトリガーを自動実行にしてスイッチに10 SWを設定
コモンイベント7のループを削除
コモンイベント2の「メニュー開く」にスイッチの操作で10 SWをオンに設定
コモンイベント3の「メニュー閉じる」にスイッチの操作で10 SWをオフに設定
コモンイベント6の「アイテムからマップを開く」は前述したとおりの修正です

“MV:質問” へ戻る