ページ 11

イベントの強制終了

Posted: 2017年9月16日(土) 16:45
by よしだとものり
方法はあるようなのですが、コードの書き方が分かりません。

現在、ツクールのエディタでイベントからプラグインを呼び出しています。
以下のようなイベントがあったとして、プラグインコマンドからイベントを
終了できたら楽なのですが、簡単な方法があれば教えて頂けたら助かります。

手間がかかるのであれば、プラグインコマンドで変数にエラーコードを
入れて、イベント側でエラー処理を行いますが、できればプラグインコマンド側で
イベントを抜けられれば助かります。


イベント

処理1
プラグインコマンド 1

処理2
...

Re: イベントの強制終了

Posted: 2017年9月16日(土) 19:15
by しぐれん
全てのイベントコマンドはcommand000の形でイベントコードIDと1対1の形で対応しています。
Game_Interpreterクラスのメソッドを調べて、イベントの中断の処理に該当するイベントを探せば行けます。

command115が該当します。
プログラムカウンタを末尾に移動させるみたいな処理をしています。

Re: イベントの強制終了

Posted: 2017年9月16日(土) 19:23
by よしだとものり
ちょっと調べてみます。
ただ、それ以外にもプラグイン側で
this.setupChoices([["選択肢1","選択肢2","選択肢3","選択肢4","選択肢5","選択肢6"],キャンセル時の選択,デフォルト,ウィンドウ位置,背景]);

↑が動けば問題ないのですが、thisは渡してもダメみたいですし、そのままthisと書いてもダメでした;;

Re: イベントの強制終了

Posted: 2017年9月16日(土) 19:35
by しぐれん
プラグイン側であれば、thisが状況によって異なります。
thisがGame_Interpriterを指す形にならないとsetupChoices()は機能しません。
プラグインコマンドを呼び出した部分ではthisはGame_Interpriterを指しますが、実際のコードがないと分かりません。
それと.txtだとコードが整形されてないので読めないです。

また、setupChoices()の引数はString[]ではないです。
command102にブレイクポイントを置いて確認してください。

Re: イベントの強制終了

Posted: 2017年9月16日(土) 20:23
by よしだとものり
ありがとうございます。
画像が見にくいですが添付します。
ソースは少し長いと思います。

init関連は無視しても大丈夫です
lobby_ListViewからlobby_List_switch→lobby_List_switch2と流れています。
lobby_ListViewでリストを出しlobby_List_switchが選択肢のswitch文にあたるところです。
lobby_List_switch2は同じようなことをしてるので見なくてもいいと思います。

あと動作確認していないので、変な箇所があると思います。

Re: イベントの強制終了

Posted: 2017年9月16日(土) 20:28
by よしだとものり
追記ですが、プログラムではthisの渡し方が分からなかったので書いていません。

プラグインコマンドから
lobby_List_switch this
としてプラグイン関数からthisをlobby_List_switchに渡して

lobby_List_switch(thisobj){
thisobj.setupChoices([["選択肢1","選択肢2","選択肢3","選択肢4","選択肢5","選択肢6"],キャンセル時の選択,デフォルト,ウィンドウ位置,背景]);
としていました。

Re: イベントの強制終了

Posted: 2017年9月16日(土) 20:44
by しぐれん
プラグインコマンドで渡された情報は全て文字列になるので、このままでは動きません。
thisと書いても、ただの文字列のthisとして評価されます。
プラグインコマンドの部分にブレークポイントを置いて確認してみてください。

Re: イベントの強制終了

Posted: 2017年9月16日(土) 21:45
by よしだとものり
いつも有難うございます。

今のところ、本格的にthisとかprototypeの使い方を覚える時間も頭脳も
ないので、今回はプラグイン側から変数にエラーコードを保存して
イベント側でエラー処理することにします。

オンラインバトルとバザーが形になって、あるていど余裕ができたら
考えてみます。