よくあるイベントスキップ

未熟なスズ
記事: 2
登録日時: 2023年5月22日(月) 18:35

よくあるイベントスキップ

投稿記事by 未熟なスズ » 2023年5月22日(月) 18:41

あるゲームを作っていて非常に行き詰まってしまったんですが、特定のボタンを押して現在のイベントをスキップするイベントのつくり方がわからないです…。
プラグインやスクリプト利用等も考えていろいろ調べてみましたがどうにもうまくいきません。
やりたい事としては

 ループしてるイベント
    ↓
 特定のキーを押す
    ↓
 どのイベント内の位置からでもループ解除またはイベント中断をする。

みたいなことをやりたいです。
ボタンを押してどの位置からでもループ解除。なんてことは難しいと思うので、せめてボタンを押して現在のコモンイベントを中断。これができればいいなと思っています。
気持ちとしては前者のほうが最善ですが、せめて後者の強制イベント終了をさせたいです。
何か方法はございませんか?スクリプト処理。プラグイン問いません。

ゆわか
記事: 306
登録日時: 2015年11月10日(火) 20:08
連絡を取る:

Re: よくあるイベントスキップ

投稿記事by ゆわか » 2023年5月23日(火) 10:41

特定のボタンを押してループを解除するイベント例

◆ループ
◆文章:なし, なし, ウィンドウ, 下
:  :キャンセルキーを押すとスキップ。
:  :ちなみに、メッセージ表示と合わせるなら
:  :キャンセルキーしか上手く動かないよ。
:  :他のキーだと、メッセージを閉じられないから。
◆条件分岐:ボタン[キャンセル]が押されている
◆ループの中断

:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :メッセージの表示やウェイトなどは
:  :即座に反応させるのは難しい。
:  :そういうのが全然ないかウェイトが1秒以下なら
:  :いけるかもしれない。
◆条件分岐:ボタン[キャンセル]が押されている
◆ループの中断

:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :コマンドの間に、せっせと分岐を挟む必要があるので
:  :マウスやタッチ操作も対象にするなら
:  :その分岐も追加することになるから大変だね。
◆条件分岐:ボタン[キャンセル]が押されている
◆ループの中断

:分岐終了

:以上繰り返し
◆文章:なし, なし, ウィンドウ, 下
:  :スキップしたぜ。


上記で理想通りに動かない場合
イベントスキップ等のワードでぐぐると、いくつかプラグインもヒットするので試してみるのも一つかも。
未熟なスズ
記事: 2
登録日時: 2023年5月22日(月) 18:35

Re: よくあるイベントスキップ

投稿記事by 未熟なスズ » 2023年5月23日(火) 13:36

返信ありがとうございます。
確かにその理論で動くのはわかるんですが…ループしてる箇所自体がまぁまぁ長いんですよね。
さらにループ内でさらにループする箇所も有るためこの方法でやるとそのループ内でループしてる場所に埋め込んだ場合、ループ解除キーを二回押さなくてはならなくなってしまうため望んだ実装ができそうもないです。

そのため、できることなら外部区あらコモンイベントを強制的に中断できるスクリプト。もしくは「イベントスキッププラグイン(PANDA_EventSkip.js)」の様に外部からラベルジャンプをいつでも作動できるようなプラグインとかがあればなと思ってます。
今のところ一番理想に近い「イベントスキッププラグイン(PANDA_EventSkip.js)」は呼び出された「コモンイベント」では引き起こせないみたいなので、今回実装したい結構長めのイベントには実装が難しくて悩んでいます。
ゆわか
記事: 306
登録日時: 2015年11月10日(火) 20:08
連絡を取る:

Re: よくあるイベントスキップ

投稿記事by ゆわか » 2023年5月23日(火) 21:05

>ループ内でループしてる場所に埋め込んだ場合、ループ解除キーを二回押さなくてはならなくなってしまう

一応、ループが入れ子になっている場合のイベントの組み方の例も書いておきます。
ループ解除直前にスイッチをONにします。
そして、ループの一番最初に、スイッチがONだったらループを解除するようにします。

イベント長いと間に挟んでいくの大変とは思いますが
まあ他に解決案がでなかったら、これで頑張るしかないでしょう。

◆ループ
◆条件分岐:スキップするがON
◆ループの中断

:分岐終了
◆ループ
◆文章:なし, なし, ウィンドウ, 下
:  :キャンセルを押したら実行される
:  :ループ中断の前に
:  :スイッチをONにするコマンドを入れて
◆条件分岐:ボタン[キャンセル]が押されている
◆スイッチの操作:#0001 スキップする = ON
◆ループの中断

:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :上位のループの一番最初に
:  :スキップボタンがONの時は
:  :ループを中断する命令を入れておく。
◆条件分岐:ボタン[キャンセル]が押されている
◆スイッチの操作:#0001 スキップする = ON
◆ループの中断

:分岐終了

:以上繰り返し

:以上繰り返し
◆文章:なし, なし, ウィンドウ, 下
:  :スキップしたぜ。
◆スイッチの操作:#0001 スキップする = OFF

ループだけでなく、コモンイベントも入れ子になっているということのようなので
コモンイベントの最初にもスキップスイッチがONになってたら
どう動くかを一番最初に指定してやればいいと思います。

元イベントから呼び出されたコモンイベント
◆ループ
◆条件分岐:スキップするがON
◆ループの中断

:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :最初のコモンイベントだぜ。
◆条件分岐:ボタン[キャンセル]が押されている
◆スイッチの操作:#0001 スキップする = ON
◆ループの中断

:分岐終了
◆コモンイベント:#0003 コモンイベントから呼び出されたコモンイベント

:以上繰り返し

コモンイベントから呼び出されたコモンイベント
◆ループ
◆条件分岐:スキップするがON
◆ループの中断

:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :コモンイベントから呼び出された
:  :コモンイベントだぜ。
◆条件分岐:ボタン[キャンセル]が押されている
◆スイッチの操作:#0001 スキップする = ON
◆ループの中断

:分岐終了

:以上繰り返し

こういう風に組むと、コモンイベントやループが入れ子でも
1回のキャンセルキーで、一番最初の元イベントに戻ってこれます。

実際のイベントを見てないから、上記でうまくいくかはわかりませんけど
何かしらの解決方法が見つかるよう祈っています。

イベント内容が結構複雑なようなので
プラグインを作ってもらうにせよ、他の解決策を考えてもらうにせよ
作成したイベント内容の情報をもっと出した方が良いかもしれません。
コモンイベントをどう使っていて、ループをどう使っていて
自分はどういう風にイベントを組んで、どのプラグインをどういう風に使って
それで結果、どうだめだったのか、詳しく説明する必要を感じます。
可能であれば、プロジェクトファイルをUPするのが良いんじゃないかな。
(見せたくない絵とか文章は何かに置き換えて)

がんばってねー。

“MZ:質問” へ戻る