RPGツクールMVのお話です。
JavaScriptを理解していなくても
サンプルゲームのプラグインや元のスクリプトを参考にすることで
プラグインが作れてしまうんじゃなかろーか?
というわけで、今回は
ロード回数をカウントするプラグインを作ってみようと思います。
カテゴリーは講座になってるけど
どっちかというと「やってみた」に近いものです。
当方、JavaScriptのJaの字も理解していないのでご注意下さい。
この通りやって何か問題がおきても責任はもちません。
よーと、一応免責しておきます。
今回参考にするプラグインは
サンプルゲーム「
ニナと鍵守の勇者」に同梱されている
「
SwitchOnLoad.js」です。(nina →js →pluginsフォルダ)
これはロードすると指定したスイッチをONにするプラグインです。
「羊の海」と「FantasicReverie」にも同梱されていますが、バージョンが違うので
必ず、「ニナと鍵守の勇者」に同梱されているものを参考にしてください。
(プロジェクトファイルはGamesフォルダ内のnina.exeを解凍してね)
というわけで、指定したIDの変数に1を加算するように改造します。
まず、スイッチIDを指定するのではなく、変数IDを指定するように変えたいので
変数IDの指定のパラメータが付いているプラグインを探します。
「
LastSubjectActor.js」が調度いいですね。
最後に行動したアクターのIDを変数に格納するプラグインです。
アイテムやスキルでコモンイベントを使用している場合に
誰がそのアイテムを使用したかがわかるという便利なプラグインです。
* @param で始まる3行分が、パラメータの設定項目のようです。
スイッチIDの部分を変数IDのパラメータ設定項目に入れ替えます。
次に、スイッチをONにする命令と変数を加算する命令を入れかえます。
スイッチをONにする命令は「
SwitchOnLoad.js」の35行目の
$gameSwitches.setValue(switchId, true);
switchIdに入ってる数値(ID)のスイッチをtrue・・・つまり、ONにするという意味です。
ちなみに、OFFの場合はfalseですかね。
変数を代入する命令は「LastSubjectActor.js」の36行目の
$gameVariables.setValue(variableId, subject.actorId());
variableIdに入ってる数値(ID)の変数に
subject.actorId()・・・つまりアクターIDを代入するという意味です。
これを、コピーしてスイッチの命令に上書きします。
アクターIDは無関係なので、とりあえず1を代入する命令に書き換えます。
$gameVariables.setValue(variableId, 1);
これで、variableIdに入ってる数値(ID)の変数に1が代入される命令になりました。
「variableIdに入ってる数値(ID)の変数」というのはちょっとややこしいと思うのですが
variableIdに入っているのは、変数のID番号なので、ご理解下さい。
とりあえず、variableIdに1を加算する式を考えます。
単純に考えると「$gameVariables.setValue(variableId, variableId+1);」
なのですが、先ほども言ったようにvariableIdに入っているのは、変数のID番号なので
例えば、ID10番の変数を指定していれば
いつロードしても10+1・・・つまり11が代入されることになってしまいます。
では、variableIdに入ってる数値(ID)の変数を指定するにはどう記述すれば良いのでしょう。
まずは、普通に変数10番を指定する方法を探してみます。
RPGツクールMV プラグインコマンド内制御文字 実装一覧さんによると
$gameVariables.value(10)
です。
ということは、10の部分をvariableIdに入れ替えればいいはずです。
$gameVariables.setValue(variableId, $gameVariables.value(variableId)+1);
できました。
これで、指定したIDの変数に1づつ加算されるので
ロード回数をカウントできます。
これにて完成! と、言いたいのですが
すでにお気づきのように、このままでは動作しません。
現段階ではそもそもvariableIdという変数が定義されていないっぽいのです。
スイッチswitchIdを定義する部分と
変数variableIdを定義する部分を入れ替える必要があります。
「SwitchOnLoad.js」の30行目の
var switchId = Number(parameters['Switch ID'] || 0);
が、switchIdを定義する部分のようです。
「LastSubjectActor.js」の20行目にある
変数variableIdを定義する部分と入れ替えます。
これで、変数は用意できました。
さて、これで保存すればOKのはずですが
名前が「SwitchOnLoad.js」のままでは少々わかりにくいので
好きな名前に変更します。
29行目が名前を指定する部分のようなので
ここの「SwitchOnLoad」の部分を好きな名前に変更し
それと同じ名前でプラグインを保存します。
保存時の注意点は、前回の「ゲームオーバーしないプラグイン」を参照してね。
今回は、変数やスイッチのIDを指定するオプションの作り方と
スイッチや変数の指定方法と、保存名の変更の仕方がわかりました。
ちなみに、プラグイン作成例がこちら。
ツクールシリーズでの利用に限り、ご自由にお使い下さい。
ただし、何か問題がおきても責任はもちません。
そうそう、RPG作る人のブログさんが
ツクールMVスクリプトリファレンスwiki を作ってくれているので
とっても参考になりますよ!
[1回]
PR