アフィリエイト広告を利用しています
検索
言葉を集めて世界を旅するRPG「地図の時間〜言葉集めの冒険譚〜」
timeofmapworks_logo_2020.png
ハートフルRPG「地図の時間」

地図の時間スピンオフRPG「影泥棒と魔法の手記」

リソース管理ダンジョンRPG「琥珀の道具士」

現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
プロフィール/制作環境(3)
制作記(736)
ニュース(ツクールMV)(222)
技術情報(ツクールMV)(204)
JavaScript/スクリプト(ツクールMV)(9)
プラグイン情報(ツクールMV)(12)
素材情報(ツクールMV)(15)
アップデート情報(ツクールMV)(45)
トラブル&解決情報(ツクールMV)(18)
ツクール製作品(ツクールMV)(42)
関連情報(ツクールフェス)(2)
投稿イベント情報(ツクールMV)(4)
関連情報(ラノゲツクールMV)(9)
Benchmark MV(個人作品:試作)(1)
manurpg(個人作品:試作)(2)
ブックモービル(個人作品)(10)
重力ルーペ(個人作品)(11)
そして魔女に会う(個人作品)(7)
バンドワゴン(個人作品)(1)
地図の時間(個人作品)(14)
日向と香水(個人作品)(3)
ストーリーテラー(個人作品)(1)
嘘つきのノブレスオブリージュ(2)
お役立ちツール/素材サイト(創作全般)(12)
創作アイディア(創作全般)(7)
保存用コラム(創作全般)(10)
コラム(144)
オススメ作品(8)
当ブログへのお問い合わせ(contact me)(2)
琥珀の道具士(3)
最果てのギルド(1)
読書メモ(1)
Steam展開ノウハウ(21)
RPGツクールMZ(3)
地図の時間〜名前探しの物語(1)
プラグイン情報(ツクールMZ)(1)
技術情報(ツクールMZ)(13)
国内展開ノウハウ(1)
素材情報(ツクールMZ)(4)
AI(9)
RPG Maker Unite(2)
DAW(1)
翻訳(1)
リンク集

広告

posted by fanblog

2020年07月25日

YEP_X_BattleSysSTBとBeforeCommonの競合解決のメモ

YEP_X_BattleSysSTBとBeforeCommonの競合解決のメモ


YEP_X_BattleSysSTB:Yanfly様作、バトルシステムをSTBにカスタマイズするプラグイン
YEP_BattleEngineCore必要
BeforeCommon:やな様作、スキル使用前にコモンイベントを実行するプラグイン

プラグイン管理の順番は
YEP_BattleEngineCore
YEP_X_BattleSysSTB
BeforeCommon

目的

・スキル使用時に確率でカットイン演出:BeforeCommon.js
 スキルの使用者、対象者をBeforeCommon.jsの基本機能を使い変数で引き継ぎ、戦闘行動の強制のスクリプト版でカットイン後の処理を受け継ぐ

問題

・BeforeCommonで実行したコモンイベントでは連続して行動ができてしまう(ずっと俺のターン状態)
 行動不能のステートを使うも、次回行動者に行動が移らず2人以上のPTだと使えない

原因

・this._phase = 'turn'処理がYEP_X_BattleSysSTBとBeforeCommonで異なるため

YEP_X_BattleSysSTBは一人あたりの行動終了ごとにthis._phase = 'turn'の後にYanfly.BEC.BattleManager_endAction.call(this)で終了させなければならない

BeforeCommonで呼び出したコモンイベント実行後の処理には前述の処理が含まれていなかった

解決

BeforeCommon.jsの this._phase = 'turn'; 処理の後にYEP_X_BattleSysSTBの this._phase = 'turn'; 処理の後のコードを追記する。

BeforeCommon.jsでもYEP_X_BattleSysSTBと同じ処理をしてあげる。
具体的にはこう。

this._phase = 'turn';//この下に追加
if (this._stbInstantCast) {
this._stbInstantCast = false;
return Yanfly.BEC.BattleManager_endAction.call(this);
}
if (this._subject) {
this._performedBattlers.push(this._subject);
this._subject.spriteStepBack();
this._subject.onAllActionsEnd();
this._subject.removeCurrentAction();
}
if (this._processingForcedAction) {
this._phase = this._preForcePhase;
this._processingForcedAction = false;
}
if (this.loadPreForceActionSettings()) return;
this._subject = null;
Yanfly.BEC.BattleManager_endAction.call(this);//追加処理ここまで

気付き

今回はターン終了(行動終了)の処理に絞ることができ、解決の糸口に繋がった
競合しているプラグインに見当をつけたら、次は競合している処理を探す
探し方は二つのプラグインで使われている処理内容をキーワードにコードを検索する
今回はthis._phase = 'turn'が検索キーだった
×

この広告は30日以上新しい記事の更新がないブログに表示されております。