【MZ】追加スキルデータプラグイン

MZ用プラグイン

ツクールMZ向け。
MITライセンスです。

↓右クリックして対象を保存
GABA_SkillDataEx.js

更新履歴

  • v1.0.0:2021/10/04 初版

ページ内リンク

概要

スキルごとに独自データを追加し、アクターごとに保存します。

例えばスキルレベル、使用回数、アクターごとの説明文などを自由に設定できるようになります。

※スキル自体をアクターごとに分けて、メモ欄でがんばればどうにかなるケースも多いですので、導入前にご検討ください。

データ名を自分で決めて、プラグインコマンドで値を設定・取得します。値はメッセージに埋め込んだり、ダメージ計算式に利用したりできます。

スキルIDやデータ名を手入力する場面があります。スキルのデータベースとデータ名を固めてから作業するのがおすすめです。

なお、デフォルトでスキル名が自動登録されます(データ名は「name」)。

データ確認用の画面をメニューに追加したい場合は「スキル情報画面プラグイン」を使用してください。

パラメータ

  • スキルデータのタグ:メッセージにデータを埋め込むためのタグ
  • アクターIDを保存する変数:スキル使用時に自動保存します
  • スキルIDを保存する変数:スキル使用時に自動保存します
  • バトル中スキル使用時コモンイベント:バトル中にスキルを使用するとこのコモンイベントが自動実行されます。
  • エラーメッセージを表示する:ONだと、不正なデータ操作をした際にコンソールにエラーを表示します

パラメータの変数の使い道

ツクールの元々の機能で、スキルの「使用効果」欄からコモンイベントを呼び出せます。このコモンイベントで、スキルの使用回数をカウントしたいと思ったとします。しかし、コモンイベントのページでは、誰がどのスキルを使ったのか分かりません。


ここで、パラメータの変数の出番です。スキルを使用すると、自動的に使用者のアクターIDと使用したスキルIDが変数に入ります。この変数を使えば、コモンイベントで特定スキルのデータを操作できます。

なお敵がスキルを使った場合、アクターIDの変数にはゼロが入ります。必要に応じて、変数がゼロだったら処理しない、のように分岐させてください。

全スキルにコモンイベントを登録するのが面倒な場合は、パラメータの「バトル中スキル使用時コモンイベント」を登録してください。ここで登録したコモンイベントは全スキル使用時に自動で呼び出されます。

※「コモンイベントを実行してから戦闘終了するプラグイン」を導入してください。これを入れないと、敵を全滅させたスキルから呼び出されたコモンイベントはマップに戻ってから(連戦時は次の戦闘開始直後)に実行されます。

ツクールの仕様で、メニューで使用したスキルにコモンイベントが設定されていると、強制的にメニューが閉じてしまいます。コモンイベントはマップでないと実行できないからだと思います。ルーラみたいなスキルなら都合がいいんですけどね。

ということで、パラメータは「バトル中スキル使用時コモンイベント」となっています。

※アクターIDとスキルIDは、メニュー画面でのスキル使用時も、パラメータの変数に保存されます。

プラグインコマンド

  • 設定
  • 取得
  • 設定(パラメータの変数を使用)
  • 取得(パラメータの変数を使用)
  • 全アクター全スキル設定
  • 全アクター特定スキル設定
  • データ確認

文章の表示でデータを埋め込む

例)パラメータのタグが「sk」の場合
\sk[アクターID, スキルID,データ名]
※データ名はクォーテーションで囲みません。

ダメージ計算式で参照する

a.sk(スキルID, "データ名")

  • データ名はクォーテーションで囲みます。
  • スキル使用者のスキルデータが参照されます
  • 敵がスキルを使った場合、「1」に置き換えて処理します。
  • パラメータのタグと連動しておらず、「a.sk」固定です。他のプラグインとの競合などで書き方を変更したい場合、プラグインの中の「Game_Actor.prototype.sk」と「Game_Enemy.prototype.sk」の「sk」を好きな文字に変更してください。
  • 通るはずのダメージが0になってしまう場合、データ名を間違ったり、クォーテーションで囲み忘れたりしている可能性が高いです。確認してみてください。

スクリプト

イベントコマンド「スクリプト」にて次のように記述するとデータにアクセスできます。プラグインコマンドと同じ動作となります。

// 取得
this.getSkillDataEx(アクターID, スキルID, "データ名", 変数番号);
this.getSkillDataExParamV("データ名", 変数番号);

//設定
this.setSkillDataEx(アクターID, スキルID, "データ名", 操作番号, 値);
this.setSkillDataExParamV("データ名", 操作番号, 値);
  • 「取得」では、データ値を指定の変数に保存します。
  • データ名など、文字列を設定する場合はクォーテーションで囲んでください。
  • 操作番号は次のとおりです。
    0:代入、1:加算、2:減算、3:乗算、4:除算
  • アクターID、スキルID、データ名、値は「"\\v[X]"」とすると変数の値を使えます。

なお、下記の記述でデータに直接アクセスできます。スクリプトを組める方はこちらを直接操作したほうがやりやすいと思います。

$gameActors.actor(アクターID)._skillDataEx[スキルID]["データ名"]

データ登録状況の確認

プラグインコマンド「データ確認」を実行してください。

アクター、スキル、データ名を指定できます。

指定しなければ全データを確認できます。

データはコンソール(ゲーム中にF8キーで表示)で確認できます。

メモ

  • 最初の「代入」でデータが登録されます。未登録のデータで代入以外の操作をするとエラーになります。なのでまずは「全アクター~」のプラグインコマンドを使ってデータを初期登録してください。
  • スキルデータの初期値を場面に応じて変更したくなるかもしれません。「コモンイベント自動実行プラグイン」を使うと便利です。
  • スクリプトで変数の値を使いたい時は「"\\v[X]"」と書きますが、プラグインコマンドでは単に「\v[X]」と入力します。
  • 値としてアイコン文字列を代入しておき、これをメッセージに埋め込めます。プラグインコマンドでは「\i[X]」と入力します。スクリプトでは「"\\i[X]"」とします。

経緯など

今度作ろうと思っているRPGで、スキルレベル的なものを持たせたかったので作りました。

スキル○○システムプラグイン! までいくと大規模過ぎて、作るのも説明するのも難しそうなので、好きなデータを設定できるというものにしました。
コモンイベントやら何やらで、1からコントロールしていくと分かりやすいと思います。

ただ、やはりデータの設定は手間です。
例えばスキルレベル1~3くらいに分けたいだけなら、スキルデータ自体を3つ作ったほうが早くて簡単です(ヒールⅠ~Ⅲのように)。導入前にじっくり検討してください。

作り終えてから思いましたが、データはアクターに持たせるのでなく、$gameSkillsExとかにして、データ側にアクターidを持たせても良かったなと。疲れたので気にしないことにします。

チュートリアル

例として、戦闘中スキルの使用回数をカウントしてみます。

0、プラグインパラメータを設定する

次の項目を設定します。

  • アクターIDを保存する変数
  • スキルIDを保存する変数
  • バトル中スキル使用時コモンイベント
変数、コモンイベントを設定します。

1、初期設定イベント

データを初期設定するイベントを用意しましょう。

イベントの処理内容はプラグインコマンド「全アクター全スキル設定」です。

データ名は「count」、操作は0(代入)、値は0とします。

本番ではこれをコモンイベントに登録し、「コモンイベント自動実行プラグイン」でゲーム開始時に呼び出すとスムーズです。

コモンイベントとして登録した例

2、データ確認イベント

データ確認用のイベントを用意しましょう。

プラグインコマンド「データ確認」を実行します。

データ確認イベント

手順1を実行後に確認すると、全データに「count」が登録されているのを確認できます。

コンソールにデータが表示されます。「name」はデフォルトで自動登録されます。

3、使用回数をカウントする

手順0で「バトル中スキル使用時コモンイベント」に指定したコモンイベントで作業します。

プラグインコマンド「データを設定(パラメータ変数を使用)」で、使用回数を1増やします。

データ名「count」、操作「1(加算)」、値「1」とします。

データ設定をした画面

これで、戦闘中にスキルを使用する度にこのコモンイベントが呼び出され、countが1増えるようになりました。

試しに何回か戦闘してから、データ確認してみましょう。アクターごと、スキルごとにcountが増加するのを確認できます。

※countが増加しない場合、データ確認の直前に手順1の初期設定を再実行していないか確認してください。再実行してしまうと、データが元に戻ってしまいます。

補足:本来、データ設定のためには「どのアクター?」「どのスキル?」の指定が必要です。 「データを設定(パラメータ変数を使用)」 では、手順0で指定したパラメータの変数が自動的に使用されるために、指定が楽になっています。戦闘中にスキルを使用すると、アクターとスキルの情報が自動的に変数に保存される仕組みです。この変数をマップなどで手動変更して、 「データを設定(パラメータ変数を使用)」 を使うことも可能です。

4、処理調整

ゲームの仕組みによってはデータの上限が必要になるかもしれません。

今回は例として、使用回数の上限を「999」にしてみましょう。そのためには、加算処理する/しないの「条件分岐」を追加すれば良いですね。

まずは現在の使用回数を取得する処理を追加します。先ほど作った加算処理の直前に、処理を追加します。

プラグインコマンド「データを取得(パラメータ変数を使用)」を使います。
データ名「count」、変数は任意のものを指定します。

データを取得。取得した値は、指定した変数に保存されます。
手順3の加算処理の手前に、データ取得を追加した結果。

次に条件分岐を追加します。

やり方は自由ですが、今回は条件を「変数の値<999」とします。

最初に作った加算する処理を、条件分岐の中に入れれば完成です。

完成です。この画面例では、変数50番の名前が「スキルデータ変数」となっています。

ところで上のイベント例について、何か心配ごとはないでしょうか。

処理が複雑な場合、例えば「count」が別のイベントで大きく増加するなどして、何かのはずみに1000を超えてしまうことも考えられますよね。ということで、「値が1000以上だったら999を設定する」という処理を追加すると、より安全でしょう。

……そういった心配をしなくてもいいように、データ設定はシンプルにやっていくことをおすすめします。


スキル使用時コモンイベントの内容が複雑になりそうなら、コモンイベントを小分けにして整理するのも良いでしょう。

コモンイベントが増えすぎてもアレなので、必要に応じて整理しましょう。

ツクール 一覧に戻る

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。

RPGツクール
【MZ】スキル情報画面プラグイン

ツクールMZ向け。MITライセンスです。 ↓右クリックして対象を保存GABA_SceneSkillI …

RPGツクール
【MZ】メッセージ中のタグで名前表示プラグイン

ツクールMZ向け。MITライセンスです。 ↓右クリックして対象を保存GABA_SpeakerName …

RPGツクール
雑談:ツクールプラグインを作る時の話、nullチェック

RPGツクールMV/MZのプラグインを作る時の話です。 最初は誰でも、コアスクリプトや他のプラグイン …