カスタムメニュー作成プラグインについて

返信する
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

カスタムメニュー作成プラグインについて

投稿記事 by ドラムカン »

いつもお世話になります。

トリアコンタン様作成の「カスタムメニュー作成プラグイン」につきまして
ご質問させていただきます。

所持アイテム一覧を作成し、
対象アイテムを選んだら、そのアイテムを使用するようにしたいのですが
「アイテムを使用する」というスクリプトが、私が検索した限りでは見つけることができませんでした。
(「アイテムの増減処理」や「アイテムを使用した後にスクリプトを実行」などの記事はたくさん出てくるのですが)

そもそも、バトル画面ではなくメニュー画面で「アイテムを強制的に使用する」スクリプトは
存在しないのでしょうか?

カスタムメニュー作成プラグインで直接使用する処理を組めない場合は、
選択したアイテムのオブジェクト変数からID取得→アイテム使用スクリプトを実行、という流れを希望しております。

ご指南のほど、よろしくお願いいたします。
chro
記事: 107
登録日時: 2021年2月14日(日) 11:26

Re: カスタムメニュー作成プラグインについて

投稿記事 by chro »

【解決済み】「カスタムメニュー作成プラグイン」で作成したアイテム一覧から、アイテムを使用する方法
viewtopic.php?f=23&t=12049

単純なスクリプトはないです。
アイテム画面を開かずに、マップ画面でアイテムを使用するのも(プラグインで可能ではありますが)難しいくらいです。
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: カスタムメニュー作成プラグインについて

投稿記事 by ドラムカン »

chro 様

ご回答ありがとうございます。

少なからず危惧しておりましたが
そこまで難しいものだったとは……。

需要はかなりありそうなので、是非とも何らかの形にできたらと思っております。

メニュー画面での「アイテムの使用」処理は、コアスクリプトのどの部分で処理されているのか
もしもお分かりでしたらご教示いただけますと幸いです。

よろしくお願いいたします。
chro
記事: 107
登録日時: 2021年2月14日(日) 11:26

Re: カスタムメニュー作成プラグインについて

投稿記事 by chro »

ドラムカン さんが書きました: メニュー画面での「アイテムの使用」処理は、コアスクリプトのどの部分で処理されているのか
もしもお分かりでしたらご教示いただけますと幸いです。
カスタムメニュー作成プラグインは、Scene_MenuBaseをベースにしています。
アイテム画面は、Scene_ItemBase、Scene_Itemで、そもそも違います。

戦闘中のアイテム使用は、BattleManagerで実装されていたり。

Window_ItemListクラスでウィンドウのアイテム選択可否や対象キャラ、
Game_Actionクラスでアイテムの実装、
例えば、
Game_BattlerBase.prototype.isOccasionOkで常時/戦闘中/メニュー画面/使用不可の判定を行っています。

アイテムID2が、現在のバトル/メニュー画面で使用可能かを判定するスクリプト
$gameActors.actor(1).isOccasionOk($dataItems[2]):

クラスによってアイテムとスキルの区別があったり、アイテムもスキルも装備も一緒の場合もあったりします。
使用効果のコモンイベントは、HP回復とは別に実装されていたりもします。


独自に実装すると、アイテム画面やバトル中にアイテムを使用した場合のプラグインも動作しなくなる場合もあります。

コストやテストプレイの手間を考えると、アイテム画面を改造するプラグインが現実的になってきます。

RPGにおいてアイテムやスキル、装備は根幹の部分になってきます。
最後に編集したユーザー chro [ 2022年1月10日(月) 00:35 ], 累計 1 回
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: カスタムメニュー作成プラグインについて

投稿記事 by ドラムカン »

chro 様

詳しくご説明くださり、ありがとうございます。

バトル画面でのアイテムの使用は無関係かと思っておりましたが
そこまで入り組んでいると、そうもいかないようですね。

使用する処理は、Game_Actionクラスで行なっているということでしたら
カスタムメニュー作成プラグインで取得したアイテム情報(対象含む)を割り当てればいけそうな気もしますが、そう簡単なものではないのですね。

何を実装したいかというと、
プレイヤーがよく使うアイテムをカスタムウインドウに登録して、
ワンボタンで一覧を呼び出すものを所望しております。

すでに「アイテムの使用」処理以外は、
SceneCustomMenu.js他、以下プラグインを駆使して実装できておりますが
実現が難しいのでしたら、別の方法を考えるしかなさそうですね。
・FTKR_ItemSubCommand.js
・Mano_OneButtonCommonEvent.js

お気に入りをソートして上位に持ってくるプラグイン等もありますが、
それは当方の希望するものとは、少し違っておりましたので
他に何か方法がないか、引き続きご教示をお待ちしております。
chro
記事: 107
登録日時: 2021年2月14日(日) 11:26

Re: カスタムメニュー作成プラグインについて

投稿記事 by chro »

Game_ActionはActionになるので、行動や振る舞いのような意味合いを持っていて、アクターやエネミーに関係ないものになります。

アイテムを使用するというのは、例えばHP回復だと
・アイテムが使用可能か判定
・対象を選択(戦闘中かメニュー画面か)
・回復量の計算
・対象アクターでHP回復
・ウィンドウのゲージなどを更新
・効果音
・アイテムを減らす

HP回復はスキルでも同様になるので、
・アイテムが使用可能か判定→スキルタイプや封印、MPの判定
・アイテムを減らす→MPを減らす
・ウィンドウのゲージなどを更新→ログ表示
・効果音→アニメーション


コアスクリプトの中でも広範囲が対象になり、きれいに分かれるようなものでもないです。


プレイヤーがよく使うアイテムは、
お気に入りというカテゴリーや特定のアイテムのみを表示させるようにして、
カテゴリーの表示を改造するアプローチがいいと思います。
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: カスタムメニュー作成プラグインについて

投稿記事 by ドラムカン »

chro 様

重ね重ね、詳しくご説明くださり、ありがとうございます。

ご説明いただいた[アイテムを使用する]という一連の処理は、
カプセル化されているものといいますか
実行時にまとめて処理されるかと思うのですが
それらをスクリプトで実行しようとすると、自前での割り当てが必要で
結局はアイテム画面上でなければ難しいということなのですね。

マンカインド様作のマップアイテムスロットプラグインも
かなり大掛かりなプラグインのようですので、
数行のスクリプト程度では実現できるはずもなかったのですね。

カテゴリ分けは最初に試したのですが、CRUD処理が実現できなかったのと
別ウィンドウで表示させたかったという理由から断念しました。

無理なご質問に丁寧にお答えくださって、本当にありがとうございました。
今後の開発の参考にさせていただきます。
chro
記事: 107
登録日時: 2021年2月14日(日) 11:26

Re: カスタムメニュー作成プラグインについて

投稿記事 by chro »

アイテムを使用するというのが、プレイヤーにとって一連の体験になるだけです。

アイテムを使用したのがわかるように、ステータスやゲージ更新をする必要がある。
アイテムを使用する為に、バトル画面やメニュー画面を作る必要がある。
みたいな考え方になります。

マップ画面でステータスやゲージを表示するのも、プラグインが必要になる理由でもあります。
プラグイン製作者にとって、割と簡単な部類なので多くあります。

アイテム画面の改造は、難しい部類になります。


実装上はオブジェクト指向になり、
//アイテムID2が、現在のバトル/メニュー画面で使用可能かを判定するスクリプト
$gameActors.actor(1).isOccasionOk($dataItems[2]):
//アクター1のHPを100回復
$gameActors.actor(1).gainHp(100)

同じ$gameActors.actor(1)(アクター)になるのは、直感的には違和感があると思います。


カスタムメニュー作成プラグインについてですので、
アイテム画面の改造は別トピックにしたほうがいいと思っての発言です。
そちらの方でプラグイン化など可能です。
返信する

“MV:質問”に戻る