MAT_artifactItem.jsのコスト0表示ほか

4031kfep53
記事: 9
登録日時: 2022年12月17日(土) 07:51

MAT_artifactItem.jsのコスト0表示ほか

投稿記事by 4031kfep53 » 2023年1月21日(土) 14:20

お世話になっております!

mattuup様の『MPやTPを要求するアイテムを作成する』プラグイン
MAT_artifactItem.js ( URL : https://plugin-mz.fungamemake.com/archives/858 ) を利用しているのですが、

MPコストが0だと表示が消えてしまいます(仕様です)↓
アイテムのコスト0の場合.png


アイテムをカードに見立てたバトルを行っているので、コストが0でもそれを表示したいと考えています。
コストが0のときにもコストを表示する方法はないでしょうか?↓
アイテムのコストを変更したい.png


また、アイテムの消費コストをゲーム中(主にバトル中)に後から変更したいとも考えています。
アイテムIDを使ったスクリプト等でアイテムコストを取得したり、後から変更したりできないでしょうか?
(特定のアイテムのコストを-2する、特定のアイテムのコストを元のコストに戻す、等)

以上、よろしくお願いいたします(_ _)

アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: MAT_artifactItem.jsのコスト0表示ほか

投稿記事by まっつUP » 2023年1月21日(土) 15:37

4031kfep53様

プラグインのご利用ありがとうございます。

お察しの通り、追加コストに関係ないアイテムへの表記に影響が出ないようにするため
単にノートタグがないかいずれも0以下の設定の場合追加コストの表示はありません。

記載いただいた内容は全てプラグイン内に手を加える必要があります。
表示について変更するにはプラグイン内の、
少なくともWindow_ItemList.prototype.drawItemCostに手を加える必要があります。
条件分岐についてさえ分ればご自身でも改変は容易かと思います。

MPコスト軽減に関しては、特徴「MP消費率」のみで解決できないのであればやはり改変が必要です。
これは4031kfep53様のゲームの処理や実装次第で仕様は変わってきてしまうため、特にこちらはご自身で実装方法を考えていただく他ないかと思います。(主にプラグイン内のGame_BattlerBase.prototype.itemMpCost参照。)
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
4031kfep53
記事: 9
登録日時: 2022年12月17日(土) 07:51

Re: MAT_artifactItem.jsのコスト0表示ほか

投稿記事by 4031kfep53 » 2023年1月21日(土) 18:43

まっつUP様、返信ありがとうございます!

色々試行錯誤して「コスト0」の表示ができるようになりました!
アドバイスありがとうございました!
コスト0は表示できた.png

また、消費MPの取得と変数による値の変更もできました!
ありがとうございました(_ _)

コード: 全て選択

◆変数の操作:#0058 消費MP = 0
◆変数の操作:#0033 選択カードID = 1
◆スクリプト:$gameVariables.setValue(58,$dataItems[$gameVariables.value(33)].meta["ItMPpay"]);
◆文章:なし, なし, ウィンドウ, 下
:  :アイテムID\V[33]の消費MPは\V[58]です

コード: 全て選択

Game_BattlerBase.prototype.itemMpCost = function(item) {
    if(!this.shouldPayitemCost(item)) return 0;
    const namacost = Math.max(Number(item.meta["ItMPpay"] - $gameVariables.value(1) || 0), 0);
    return Math.floor(namacost * this.mcr);
};

コストを変更することはできた.png

ですが、あるアイテムのコストだけを変更したい場合、
アイテムIDを使わないとダメだと思うんですが、色々調べてもやり方が分かりませんでした。
やりたいことはこんな感じです(※こんなスクリプトは存在しません)↓

コード: 全て選択

$dataItems[5].mpCost = 20
// アイテムID5番の消費MPを20に変更する

やはり、スクリプトではこのような処理はできないのでしょうか?
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: MAT_artifactItem.jsのコスト0表示ほか

投稿記事by まっつUP » 2023年1月21日(土) 20:57

$dataItems[5].Anothercondcost = 20;
みたいな感じで新しいプロパティを設定するといいんじゃないかなと思います。
なお、この変更はセーブデータに保存されないので、次回ロード直後には値は存在しません。
この値が存在する場合のみ、その値にコストを変更する処理を
Game_BattlerBase.prototype.itemMpCost内に実装すればよいと思います。
この値は戦闘始終いずれかに初期化しないといけなさそうなのが大変かもしれませんが。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
4031kfep53
記事: 9
登録日時: 2022年12月17日(土) 07:51

Re: MAT_artifactItem.jsのコスト0表示ほか

投稿記事by 4031kfep53 » 2023年1月22日(日) 13:02

まっつUP様、返信ありがとうございます!

プラグインについては分からないことが多いので、色々調べながら試行錯誤したいと思います( _ _)

“MZ:質問” へ戻る