ページ 11

【解決済】スクリプト内で変数を引用する記述について

Posted: 2020年3月07日(土) 09:06
by dokuninjin
はじめまして。

いま、敵キャラのパラメーターをスクリプトで操作するようなイベントを作成しようと考えており、
このページの解説を参考にしています。

https://db.liberty-quest.com/rpgmakermv ... ript/#i-11

 $dataEnemies[1].params[0] = 500;// ID 1 の敵キャラの最大HPを 500 にする

とあるのですが、
パラメーターを操作する敵キャラを「1」のような定数ではなく、
変数1番の値のIDの敵キャラを指定したい場合、
どのように記述すればいいのでしょうか?

御教示のほど、どうぞよろしくお願いいたします。

Re: スクリプト内で変数を引用する記述について

Posted: 2020年3月07日(土) 09:39
by ムノクラ
dokuninjin さんが書きました:はじめまして。

いま、敵キャラのパラメーターをスクリプトで操作するようなイベントを作成しようと考えており、
このページの解説を参考にしています。

https://db.liberty-quest.com/rpgmakermv ... ript/#i-11

 $dataEnemies[1].params[0] = 500;// ID 1 の敵キャラの最大HPを 500 にする

とあるのですが、
パラメーターを操作する敵キャラを「1」のような定数ではなく、
変数1番の値のIDの敵キャラを指定したい場合、
どのように記述すればいいのでしょうか?

御教示のほど、どうぞよろしくお願いいたします。
実験できていませんが、下記でできないでしょうか?

$dataEnemies[String($gameVariables.value(1))].params[0] = 500;

参考記事
https://fungamemake.com/archives/7968

Re: スクリプト内で変数を引用する記述について

Posted: 2020年3月07日(土) 12:24
by Plasma Dark
$dataEnemies[String($gameVariables.value(1))].params[0] = 500;
String() は不要です。

コード: 全て選択

$dataEnemies[$gameVariables.value(1)]
これで、変数1番の値をIDとする敵キャラのデータを取得できます。

が、本当にこれをイベント中に書き換えるんでしょうか。
これは敵キャラ実体ではなく、敵キャラを作るための元データであって、しかも書き換えてもセーブデータには反映されません。
(つまり、イベントによって敵キャラのステータスを書き換え、セーブしてゲームを終了。そのデータをロードした後には敵キャラのステータスは元に戻っています)

要件次第では別のアプローチのほうが良いこともあります。
もちろん、イベントで一時的に書き換えるだけで良ければこの方法でも問題ありません。

Re: スクリプト内で変数を引用する記述について

Posted: 2020年3月07日(土) 12:45
by dokuninjin
質問者です。
みなさん早速ご回答いただき、誠にありがとうございます。

どういうイベントを作ろうとしているかと申しますと、
敵に疑似的な「レベル」を持たせようと思っています。

まず、戦闘開始直後に敵のIDを取得

  $gameTroop.members()[0]._enemyId

次に、敵キャラの各能力値を変数に格納。
その敵の「初期レベル」で各能力値を除算し、「1レベル当たりの能力値」を算出。
その後、「レベル上昇幅」と「1レベル当たりの能力値」を乗算して、
教えていただいた敵能力値を書き換えるスクリプトで「レベル上昇後の能力」に置き換えていく
……という処理を考えています。

と、ここまで書いて思ったのですが、
確かに、御指摘いただいているように、データベースそのものを書き換えてしまうと、
「もともとの能力値」が保持できないので、バグってしまいそうですね。
戦闘中だけインスタントに「指定した値分だけ」能力値を上昇させる処理ってできないものなのでしょうか。

質問の趣旨が変わってきてしまいましたね。
申し訳ありません。

Re: スクリプト内で変数を引用する記述について

Posted: 2020年3月07日(土) 14:08
by dokuninjin
すみません、ありがとうございました。

戦闘開始時点でいったんすべての能力値を「レベルアップ前」の能力値として変数に格納し、
教えていただいたスクリプトでレベルアップ処理を実行、
戦闘が完全に終わった後に能力値を「レベルアップ前」に戻してやるという手順で、
思い通りのものが実装できました。

たいへん助かりました。ありがとうございました。

Re: スクリプト内で変数を引用する記述について

Posted: 2020年3月07日(土) 15:39
by Plasma Dark
解決されたようですが、私の敵レベル設定プラグインを改修してみました。

https://github.com/elleonard/RPGtkoolMV ... myLevel.js

敵にレベルを設定でき、プラグインコマンドで動的にレベルを変化させられます。
変化後のステータス計算はプラグインが勝手にやってくれます。
デフォルト設定では、レベルに比例して変化します。
(レベルが倍になればステータスも倍になる)

ステータス種別によってはあまり変化幅が大きいと困ることもあろうと思い、ステータス種別ごとに変化幅に対して倍率をかけることもできます。

Re: スクリプト内で変数を引用する記述について

Posted: 2020年3月08日(日) 09:15
by dokuninjin
おおっ、便利そうなプラグインですね!
ありがとうございます! :D