【MZ】追加スキルデータプラグイン
最終更新 : 2021/10/04
最終更新 : 2021/10/04
ツクールMZ向け。MITライセンスです。
スキルごとに独自データを追加し、アクターごとに保存します。
例えばスキルレベル、使用回数、アクターごとの説明文などを自由に設定できるようになります。
※スキル自体をアクターごとに分けて、メモ欄でがんばればどうにかなるケースも多いですので、導入前にご検討ください。
データ名を自分で決めて、プラグインコマンドで値を設定・取得します。値はメッセージに埋め込んだり、ダメージ計算式に利用したりできます。
スキルIDやデータ名を手入力する場面があります。スキルのデータベースとデータ名を固めてから作業するのがおすすめです。
なお、デフォルトでスキル名が自動登録されます(データ名は「name」)。
データ確認用の画面をメニューに追加したい場合は「スキル情報画面プラグイン」を使用してください。
ツクールの元々の機能で、スキルの「使用効果」欄からコモンイベントを呼び出せます。このコモンイベントで、スキルの使用回数をカウントしたいと思ったとします。しかし、コモンイベントのページでは、誰がどのスキルを使ったのか分かりません。
ここで、パラメータの変数の出番です。スキルを使用すると、自動的に使用者のアクターIDと使用したスキルIDが変数に入ります。この変数を使えば、コモンイベントで特定スキルのデータを操作できます。
なお敵がスキルを使った場合、アクターIDの変数にはゼロが入ります。必要に応じて、変数がゼロだったら処理しない、のように分岐させてください。
全スキルにコモンイベントを登録するのが面倒な場合は、パラメータの「バトル中スキル使用時コモンイベント」を登録してください。ここで登録したコモンイベントは全スキル使用時に自動で呼び出されます。
※「コモンイベントを実行してから戦闘終了するプラグイン」を導入してください。これを入れないと、敵を全滅させたスキルから呼び出されたコモンイベントはマップに戻ってから(連戦時は次の戦闘開始直後)に実行されます。
ツクールの仕様で、メニューで使用したスキルにコモンイベントが設定されていると、強制的にメニューが閉じてしまいます。コモンイベントはマップでないと実行できないからだと思います。ルーラみたいなスキルなら都合がいいんですけどね。
ということで、パラメータは「バトル中スキル使用時コモンイベント」となっています。
※アクターIDとスキルIDは、メニュー画面でのスキル使用時も、パラメータの変数に保存されます。
例)パラメータのタグが「sk」の場合
\sk[アクターID, スキルID,データ名]
※データ名はクォーテーションで囲みません。
a.sk(スキルID, "データ名")
イベントコマンド「スクリプト」にて次のように記述するとデータにアクセスできます。プラグインコマンドと同じ動作となります。
// 取得
this.getSkillDataEx(アクターID, スキルID, "データ名", 変数番号);
this.getSkillDataExParamV("データ名", 変数番号);
//設定
this.setSkillDataEx(アクターID, スキルID, "データ名", 操作番号, 値);
this.setSkillDataExParamV("データ名", 操作番号, 値);
なお、下記の記述でデータに直接アクセスできます。スクリプトを組める方はこちらを直接操作したほうがやりやすいと思います。
$gameActors.actor(アクターID)._skillDataEx[スキルID]["データ名"]
プラグインコマンド「データ確認」を実行してください。
アクター、スキル、データ名を指定できます。
↑指定しなければ全データを確認できます。
データはコンソール(ゲーム中にF8キーで表示)で確認できます。
今度作ろうと思っているRPGで、スキルレベル的なものを持たせたかったので作りました。
スキル○○システムプラグイン! までいくと大規模過ぎて、作るのも説明するのも難しそうなので、好きなデータを設定できるというものにしました。
コモンイベントやら何やらで、1からコントロールしていくと分かりやすいと思います。
ただ、やはりデータの設定は手間です。例えばスキルレベル1~3くらいに分けたいだけなら、スキルデータ自体を3つ作ったほうが早くて簡単です(ヒールⅠ~Ⅲのように)。導入前にじっくり検討してください。
作り終えてから思いましたが、データはアクターに持たせるのでなく、$gameSkillsExとかにして、データ側にアクターidを持たせても良かったなと。疲れたので気にしないことにします。
例として、戦闘中スキルの使用回数をカウントしてみます。
次の項目を設定します。
変数、コモンイベントを設定します。
データを初期設定するイベントを用意しましょう。
イベントの処理内容はプラグインコマンド「全アクター全スキル設定」です。
データ名は「count」、操作は0(代入)、値は0とします。
本番ではこれをコモンイベントに登録し、「コモンイベント自動実行プラグイン」でゲーム開始時に呼び出すとスムーズです。
↑コモンイベントとして登録した例です。
データ確認用のイベントを用意しましょう。
プラグインコマンド「データ確認」を実行します。
手順1を実行後に確認すると、全データに「count」が登録されているのを確認できます。
コンソールにデータが表示されます。「name」はデフォルトで自動登録されます。
手順0で「バトル中スキル使用時コモンイベント」に指定したコモンイベントで作業します。
プラグインコマンド「データを設定(パラメータ変数を使用)」で、使用回数を1増やします。
データ名「count」、操作「1(加算)」、値「1」とします。
↑データ設定をした画面です。
これで、戦闘中にスキルを使用する度にこのコモンイベントが呼び出され、countが1増えるようになりました。
試しに何回か戦闘してから、データ確認してみましょう。アクターごと、スキルごとにcountが増加するのを確認できます。
※countが増加しない場合、データ確認の直前に手順1の初期設定を再実行していないか確認してください。再実行してしまうと、データが元に戻ってしまいます。
補足:本来、データ設定のためには「どのアクター?」「どのスキル?」の指定が必要です。 「データを設定(パラメータ変数を使用)」 では、手順0で指定したパラメータの変数が自動的に使用されるために、指定が楽になっています。戦闘中にスキルを使用すると、アクターとスキルの情報が自動的に変数に保存される仕組みです。この変数をマップなどで手動変更して、 「データを設定(パラメータ変数を使用)」 を使うことも可能です。
ゲームの仕組みによってはデータの上限が必要になるかもしれません。
今回は例として、使用回数の上限を「999」にしてみましょう。そのためには、加算処理する/しないの「条件分岐」を追加すれば良いですね。
まずは現在の使用回数を取得する処理を追加します。先ほど作った加算処理の直前に、処理を追加します。
プラグインコマンド「データを取得(パラメータ変数を使用)」を使います。
データ名「count」、変数は任意のものを指定します。
↑取得した値は、指定した変数に保存されます。
↑手順3の加算処理の手前に、データ取得を追加した結果です。
次に条件分岐を追加します。
やり方は自由ですが、今回は条件を「変数の値<999」とします。
最初に作った加算する処理を、条件分岐の中に入れれば完成です。
↑完成です。この画面例では、変数50番の名前が「スキルデータ変数」となっています。
ところで上のイベント例について、何か心配ごとはないでしょうか。
処理が複雑な場合、例えば「count」が別のイベントで大きく増加するなどして、何かのはずみに1000を超えてしまうことも考えられますよね。ということで、「値が1000以上だったら999を設定する」という処理を追加すると、より安全でしょう。
……そういった心配をしなくてもいいように、データ設定はシンプルにやっていくことをおすすめします。
スキル使用時コモンイベントの内容が複雑になりそうなら、コモンイベントを小分けにして整理するのも良いでしょう。
コモンイベントが増えすぎてもアレなので、必要に応じて整理しましょう。
溟犬一六(めいけんいちろ)。雑種のクリエイター。ハンドル名はガバチョなど