【解決済み】スキルの使用者のMATに依存してスキルのバフ量を変更したい

返信する
よこしま
記事: 3
登録日時: 2024年8月17日(土) 10:30

【解決済み】スキルの使用者のMATに依存してスキルのバフ量を変更したい

投稿記事 by よこしま »

ツクールMZでスキルの使用者のMATに依存してスキルの効果量を変化させるコモンイベントを作りたいです。

素人ながら流れを考えてみました。
①バフの効果量を1%もしくは0.1%に変更し、バフの上限数も大幅に増やす
②スキル使用者のMATの数値を取得する
③バフの効果量が1%であればMATの数値を1/10にする
④指定されたバフを対象に数値分付与する
といった流れです。
具体的に言うとMATが100であるならば1%のバフを10回付与する/0.1%のバフを100回付与するといった形です。

①はRYBA(熱帯魚)様の「BuffSetting.js」を利用することにしましたが、②以降の処理をどうすらばいいか困っています。

以下はchatGPTに出力してもらったものを少し書き換えたコモンイベント(変数の操作+スクリプト)です
変数の操作:#12=直前に行動したアクターのID
スクリプト:
const param = PluginManagerEx.createParameter(script);

const n=$gameVariables.value(12);

// そのアクターのMATを取得
const ActorMat = $gameActors.actor(n).param(4)

// MATの1/10の値をバフ回数として計算
const buffCount = Math.floor(ActorMat / 10);

// バフを付与するターン数を固定(例: 3ターン)
const buffTurns = 3;

// バフを複数回付与
for (let i = 0; i < buffCount; i++) {
target.addBuff(2, buffTurns);
}

このコモンイベントをスキルで実行すると「TypeError Cannot read property 'replace' of undefined」が発生してしまいます。

もしよろしければどなたかこのスクリプトの間違っている部分が分かれば教えていただけませんか?
最後に編集したユーザー よこしま [ 2024年8月20日(火) 02:26 ], 累計 1 回
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: スキルの使用者のMATに依存してスキルのバフ量を変更したい

投稿記事 by WTR »

ツクールMZでスキルの使用者のMATに依存してスキルの効果量を変化させる
ここだけ読むとプラグインもコモンイベントも不要に見えてしまうので
質問の回答は一旦置いといてやりたいことを正確に理解するフェーズが必要な気がしました。

ダメージ計算式に MAT を組み込むのでは実現できないでしょうか。
勝手にシンプルな例にしてしまいますが使用者の MAT の 10% をダイレクトにダメージとして与えるだけなら

コード: 全て選択

Math.floor(a.mat / 10)
ダメージ計算式にこんな感じに書くことができます。
ダメージを与えた後にバフをかけることが目的だとすると元のアプローチに近い形にせざるを得ないかと思いますが…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
Plasma Dark
記事: 736
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: スキルの使用者のMATに依存してスキルのバフ量を変更したい

投稿記事 by Plasma Dark »

使用効果「強化」でバトラーに付加する強化状態の効果量がデフォルトで1段階25%、最大2段階であるところを、使用効果のついたアクションの使用者の魔法力ステータスの値に応じて何らか変更したい、ということだと思われますが、実現したいことの説明よりもそのためのアプローチに関する説明が多く、回答者にうまく伝わるものではなさそうです。
1%であったり1/10であったり0.1%であったりと、似た数字がポロポロ出てくるのも混乱を招く要素ですね。
このスクリプトの間違っている部分
残念ですが、AIにコードを書かせて使うことができるのは、出力されたコードを検証できる場合に限られます。
そういった意味で、コードを読まずにAIに書かせたコードが使えるという考えそれ自体が間違っている、と言わざるを得ません。
ご提示頂いたコード中の script とはいったい何を表すシンボルですか? と聞かれて、エラーの原因に思い当たらないようであれば、そのコードは捨ててしまいましょう。

ご自身で考案したアプローチを貫くのであれば、手順の2と3についてはイベントコマンド変数の操作によって処理できるので、4以外の部分をまずはイベントエディタ上で組んでみてはいかがでしょう。
そうすれば、あとは対象に指定回数分の強化を付加するだけです。
強化の付加はイベントコマンドに存在しないので、スクリプトを書く必要があります。

そうは言ってもコードやリファレンスを読まずにコードを書くことはできませんから、そのつもりがないならNRP_StateEX.jsとかでステートを使って実現されるのも手段のひとつかなと思います。
よこしま
記事: 3
登録日時: 2024年8月17日(土) 10:30

Re: スキルの使用者のMATに依存してスキルのバフ量を変更したい

投稿記事 by よこしま »

ご自身で考案したアプローチを貫くのであれば、手順の2と3についてはイベントコマンド変数の操作によって処理できるので、
自分の中では手順の2が一番の難関だったのでそれが変数の操作で可能と教えていただいただけでもありがたかったです。
自分で試行錯誤した結果無事機能を実装することができました。
もし自分と同じことがしたいと考える人が居るかもしれないので参考として画像を残しておこうと思います。
ご協力ありがとうございました。
添付ファイル
全体へのバフ
全体へのバフ
単体へのバフ
単体へのバフ
返信する

“MZ:質問”に戻る