パーティコマンドにアイテムコマンドを追加したい

puipui
記事: 2
登録日時: 2021年12月01日(水) 18:41

パーティコマンドにアイテムコマンドを追加したい

投稿記事by puipui » 2021年12月01日(水) 20:04

始めてから日が浅く、手探りで弄ってる場所も自信がないので相談させてください。

デフォルトではアイテムコマンドはアクターコマンドにありますが
パーティコマンドでのみアイテムを使える様にしたいです。
そこでまずはパーティコマンドに項目を追加し、アイテムの呼び出しは流用しようと考え
Window_PartyCommand.prototype.makeCommandList に
this.addCommand(TextManager.item, "item")を追加し
Scene_Battle.prototype.createPartyCommandWindowに
commandWindow.setHandler("item", this.commandItem.bind(this));を追加し
呼び出されるcommandItemとその先のSchne_Itemを弄っていたのですが
どうしてもキャンセルやアイテム選択時にアクターコマンドとして認識されてるのか不具合がでてしまいます。

どこを書き換えていけばいいのか、
より簡単に実装する方法等ありましたらご教授お願いします。

名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: パーティコマンドにアイテムコマンドを追加したい

投稿記事by 名無し蛙 » 2021年12月02日(木) 16:54

なかなか難しい事にチャレンジしていますね…
puipui さんが書きました:Scene_Battle.prototype.createPartyCommandWindowに
commandWindow.setHandler("item", this.commandItem.bind(this));を追加し
呼び出されるcommandItemとその先のSchne_Itemを弄っていたのですが

Scene_BattleからはScene_Itemは呼び出していませんよ。
Scene_ItemはデフォルトではScene_Menu経由でのみ呼び出すシーンです。
Scene_Battle内ではWindow_BattleItem等をセットアップしてアイテム選択しています。
また、原則的に戦闘開始から終了までの間に他シーンの呼び出しは非推奨です。
戦闘シーンの仕様上、それを前提にしている部分があるので呼び出そうと思うと色々と改変する必要が生じます。

では、コアスクリプトの処理に準じて実装すれば良いのか、というとまた別の壁にぶつかります。
それは「誰が」「いつ」アイテムを使用するのか、という点です。
戦闘中に実行される全てのアクションには実行者(BattleManager._subject)の存在が必要不可欠になります。
アイテムデータベースにも計算式がある(使用者を参照する項目がある)通り、アイテム使用も例外ではありません。更に戦闘順序の決定、及び行動内容決定の仕様を考えるとパーティメンバーから実行者を選出する訳にも行かず…

閑話休題。現段階であまり込み入った事を言っても仕方がないですね。
要はツクールのデフォ戦とは非常に相性が悪く現行の仕様に反する高難度の改変になるので
コアスクリプトの解読が足りない内は手を出さない方が良いと思います。
コード量自体は大した事がなくても作成及び運用には仕様に対する深い理解が必要になります。
実装出来るようになったらプラグイン素材作者名乗って良いです。
puipui
記事: 2
登録日時: 2021年12月01日(水) 18:41

Re: パーティコマンドにアイテムコマンドを追加したい

投稿記事by puipui » 2021年12月03日(金) 00:41

ありがとうございます。
なるほどー自分が考えてるよりずっと複雑な問題だったんですね…。
模索は続けても固執はせずに
先頭に不要コマンド封印した透明アクターを用意するとかで
自分のできそうな形のものも探っていこうと思います。

“MZ:質問” へ戻る