RPGツクールMVでレベルの増減をスクリプトから行う方法についてまとめていきます。
イベントコマンドの1ページ目、アクター > レベルの増減…と同様の操作を、
イベントコマンドの3ページ目、上級 > スクリプトから行う方法です。
Table of Contents
スクリプトコード
iterateActorExを使用する場合
以下のようにthis.iterateActorEx関数を使用して対象アクターを取得、アクタークラスのchangeExp関数を使用してスクリプトから経験値の増減を行うことができます。
iterateActorExの第一引数には、第二引数でアクターのIDを固定で指定するか、変数で指定するかを示す値を渡します。(固定の場合は0、変数の場合は1)
第二引数にはアクターのID、または変数のIDを指定します。
第三引数にはfunctionを渡していますが、この関数の引数に対象のアクターが渡されるため、その値を用いて対象アクターに処理を行っていきます。
changeLevel関数の第一引数には変更後のレベルを指定します。
以下の例では、アクターの現在のレベルをlevelで取得してその値に1を加算した値を設定しています。
第二引数にはレベルアップを表示するかをtrueまたはfalseで指定します。
this.iterateActorEx(0, 0, function(actor) {
actor.changeLevel(actor.level + 1, true);
}.bind(this));
iterateActorExを使用しない場合
上記の例は、実際にイベントコマンドでレベルの増減が設定されている場合に使用されている関数ですが、アクター単体であれば以下のようにアクターのデータは$gameActors.actor関数で取得し、取得したアクターのchangeLevel関数を呼び出すことでレベルの増減を行う方法もあります。
$gameActors.actor関数の引数にはアクターIDを指定します。
var actor = $gameActors.actor(1);
actor.changeLevel(actor.level + 1, true);
イベントコマンドの内容
イベントコマンドのレベルの増減を追加した場合、内部的には以下のようなデータが挿入されており、
js\rpg_objects.jsの10254行目に定義されているcommand316関数が呼び出され、引数にparametersの値が渡されています。
{"code":316,"indent":0,"parameters":[0,0,0,0,1,true]}
parametersの値の内容は以下の通りです。
インデックス | 内容 |
[0] | [1]に格納されている値が固定か変数かを示す値(0 : 固定、1 : 変数) |
[1] | アクターのID、または変数のID |
[2] | どの操作を行うかを示す値(0 : 増やす、1 : 減らす) |
[3] | [4]に格納されている値が定数か変数かを示す値(0 : 定数、1 : 変数) |
[4] | オペランドの定数の値、または変数のID |
[5] | レベルアップの表示をするか(true : する、false : しない) |