ページ 11

MKB_Gambit_SystemMZというプラグインの設定・改造について

Posted: 2023年7月16日(日) 12:11
by yuukitanaka
maker-b様のMKB_Gambit_SystemMZという、ガンビットプラグインを使ってRPGを作成中です。

今2つ困っていることがあって、
①「オートガンビットの値を0にしても、スイッチIDを設定しても戦闘で自動でガンビットが起動してしまう」
コードに問題があるのか、自分がパラメータなどの操作を誤っているのか分からず困っています。

②「戦闘中の画面上部のガンビットウインドウを消去したい」
消去するための削除部分の範囲と、修正コードが分からず詰まっています。

chatgptなど使って、自分の手の届く範囲で努力したのですが、どうしても分からず限界でした。
お時間のある方、ご教示いただけると幸いです。
コードは以下のリンクになります。
https://github.com/YuukiTanaka2023/Yuuk ... ystemMZ.js
どうぞよろしくお願いいたします。

Re: MKB_Gambit_SystemMZというプラグインの設定・改造について

Posted: 2023年7月16日(日) 15:54
by Plasma Dark
ガンビットプラグインは3000行オーバーの超大作かつ、整理されたコードとは言い難いので改造の難易度は非常に高い、ということはまず前提として認識しておいていただけると良いと思います。
「オートガンビットの値を0にしても、スイッチIDを設定しても戦闘で自動でガンビットが起動してしまう」
ガンビットが起動している状態とは、どういう状態か、を意識してコードを読む必要があります。

戦闘中の状態管理については、 Scene_Battle や BattleManager がその役割を担っていることが多いです。
それぞれのクラスに書かれたメソッドの名前から、なんとなくガンビットを起動するコードを推測して、そこを深掘りして読むのが手っ取り早いでしょう。
Scene_Battle には gambit_ON や activateAutoBattleGambit のように、それっぽい名前のメソッドが定義されているようです。

その状態変化のためと思われるメソッドがどこから呼ばれるのか、
そして、そこで行われる状態の変化を洗い出して、変化した状態を参照して何をしているか、を追っていくことになります。

あるいは、コアスクリプトの戦闘の流れを大まかに把握されているのであれば、「自動でガンビットが起動する」のはどういうタイミングか、からコードを追うこともできます。
「戦闘中の画面上部のガンビットウインドウを消去したい」
こちらのほうが難易度は低そうです。戦闘中のウィンドウが対象であるのなら、 Scene_Battle で作られるウィンドウのみに注目すれば解決の糸口が見つかるはずです。
createAutoBattleWindowGambit メソッドでガンビットに関連するウィンドウを生成しているようですね。
そのウィンドウ、例えば _autoBattleWindowGambit を操作している箇所を洗い出して、開く操作をしているところを潰していけば開かなくなりそうです。

たくさんウィンドウを作っているようなので、どれがお目当てのものなのかはいまいちはっきりしませんが、画面上部ということであれば、Y座標が0かそれに近い数値になっているはずです。
ウィンドウクラスインスタンスを作る箇所 (new Window_XXXXXXX(...)) の引数を見て、ウィンドウの位置とサイズを確認することでアタリをつけられそうです。
Window_AutoBattleGambit だけはMZの慣習を無視して、ウィンドウクラス自体が位置とサイズを決めるメソッドを持っているようですが……。

Re: MKB_Gambit_SystemMZというプラグインの設定・改造について

Posted: 2023年7月30日(日) 15:38
by yuukitanaka
お返事に気づかず、返信が遅れ申し訳ありません。

貴重な専門的意見をありがとうございます。
やはりかなり改造の難度は高いんですね。
教えていただいたヒントを手がかりに、少しずつ進めていきたいと思います。
ガンビットシステムへの思い入れが非常に強いので、なんとか実現したいです。
がんばります。