プラグインパラメータの「@​type」について

ツクる上でのちょっとした小ネタや裏ワザなどを紹介してみましょう。
バナナ
記事: 16
登録日時: 2016年1月16日(土) 01:41

プラグインパラメータの「@​type」について

投稿記事by バナナ » 2017年6月22日(木) 01:26

2018-02-12
- 公式ブログへのリンクを移転先に修正しました。
- パラメータの一括型変換を簡略化しました。
2018-02-22
- 構造名には記号を使用できない旨を追記しました。

---

公式ブログにて情報が公開されました。

RPGツクールMV ver1.5.0以降のプラグインパラメータに関して
http://rpgtkool.hatenablog.com/entry/2017/09/27/165443

---

プラグインのパラメータは「@​type」によって入力ウィンドウのタイプを指定できます。
v1.5.0 時点で確認できた仕様は以下の通りです。

データ型に基づくタイプ

コード: 全て選択

@param 文字列型
@type string

@param 数値型
@type number
@min -255
@max 255
@decimals 1

@param 論理型
@type boolean
@on ON
@off OFF

@param 配列型
@type 任意のタイプ[]

@param 構造型
@type struct<構造名>

/*~struct~構造名:
 * @param パラメータ1
 * @param パラメータ2
 */

※構造名は記号不可

特殊なタイプ

コード: 全て選択

@param ファイル
@type file
@require 1
@dir img/animations

@param セレクトボックス
@type select
@option オプション1
@value 1
@option オプション2
@value 2
@default 1

@param コンボボックス
@type combo
@option オプション1
@option オプション2

@param ノート
@type note


データベースの参照

コード: 全て選択

@param 変数
@type variable

@param スイッチ
@type switch

@param アクター
@type actor

@param 職業
@type class

@param スキル
@type skill

@param アイテム
@type item

@param 武器
@type weapon

@param 防具
@type armor

@param 敵キャラ
@type enemy

@param 敵グループ
@type troop

@param ステート
@type state

@param アニメーション
@type animation
@require 1

@param タイルセット
@type tileset

@param コモンイベント
@type common_event


その他のタグ

コード: 全て選択

@param 親パラメータ
@param 子パラメータ
@parent 親パラメータ
@desc パラメータを階層化して表示します

@param sample
@text サンプル
@desc パラメータの表示名を変更します


おまけ:パラメータの一括型変換
値の型を自動で判定して変換します。入れ子対応。
値が計算式やJavaScriptであれば実行します。コアスクリプト非対応。

コード: 全て選択

var parameters = PluginManager.parameters(プラグイン名);

var param = JSON.parse(JSON.stringify(parameters, function(key, value) {
    try {
        return JSON.parse(value);
    } catch (e) {
        try {
            return eval(value);
        } catch (e) {
            return value;
        }
    }
}));


おまけ:パラメータの一括初期化
パラメータの設定値がnullであれば初期値を代入します。※処理に時間がかかります。

コード: 全て選択

var _parameters = {
    パラメータ名1: 初期値1,
    パラメータ名2: 初期値2,
        :
};

Object.keys(_parameters).forEach(function(key) {
    if (parameters[key] === null) parameters[key] = _parameters[key];
});


おまけ:パラメータの取得
パラメータ名がJavaScript準拠であればドット連結で参照できます。

コード: 全て選択

parameters.paramString
parameters.paramArray[0]
parameters.paramStruct.param1


確認バージョン
RPGツクールMV 1.5.0 ~ 1.6.0

サンプルについて
公式ヘルプには明記されていないタグを含みます。
ヘルプに明記されているタイプは file と animation のみです。
動作の保証、更新の保証はありません。

データ型について
従来通り、値はすべて文字列として保存されます。
false の扱いに注意してください。

number について
通常は自然数のみ扱います。
  min/max の最小値/最大値は片方のみの指定も可能です。
  min で指定範囲までのマイナス値を扱えるようになります。
  max をマイナス値にする場合は min もマイナス値にしてください。
  decimals で指定桁の小数を扱えるようになります。
number で扱える値
  最小値: -9,007,199,254,740,992 (-2^53)
  最大値: 9,007,199,254,740,992 (2^53)
JavaScript で安全に扱える値
  最小値: -9,007,199,254,740,991 (-2^53-1)
  最大値: 9,007,199,254,740,991 (2^53-1)
安全な値に整形する場合は Number.clamp() を使用してください。

file について
dir 以下のファイルパスまたはフォルダパスを取得します。拡張子は含みません。
未使用ファイルの処理に対応するには require を使用してください。
img, audio 以下の子フォルダは新規フォルダを参照できます。
img, audio 以外の親フォルダは参照できません。

参考元
マンカインド様 情報提供
  min/maxについて
  text/common_event/valueについて
SumRndmDde様 プラグイン
  SRD_CreditsPlugin.js
  SRD_GameUpgrade.js
  SRD_PreloaderCore.js
orzfly様 海外フォーラム投稿
とても参考になりました。ありがとうございます。

ダウンロード
各タイプのUIを確認できるサンプルプラグインを作成しました。
実用的なプラグインではないためTIPSとして投稿します。
添付ファイル
!ParamSample.js
v1.4.1 2018-02-12
(9.44 KiB) ダウンロード数: 122 回
!ParamSample.js
v1.4.0 2017-09-01
(9.87 KiB) ダウンロード数: 61 回
最後に編集したユーザー バナナ on 2018年2月22日(木) 10:04 [ 編集 15 回目 ]

アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プラグインパラメータの「@type」について

投稿記事by しぐれん » 2017年6月22日(木) 06:26

いい情報をありがとうございます。
手元のプラグインで、これらに対応するよう更新してみます。
現在、プラグイン依頼はお休み中です。
アバター
マンカインド
記事: 123
登録日時: 2016年6月01日(水) 23:58
お住まい: 電子の海
連絡を取る:

Re: プラグインパラメータの「@​type」について

投稿記事by マンカインド » 2017年6月25日(日) 10:55

素晴らしい情報をありがとうございます。
プラグイン作成の際に参考にさせていただきます。

@type number についてですが、調べたところ一緒に@min / @maxを記述することで選択可能な数値の最小値 / 最大値が指定できるようです。(最大値 / 最小値 片方だけの指定も可能)

コード: 全て選択

@type number
@min -10 // 最小値
@max 20 // 最大値

また、@minにマイナス値を設定した場合のみ、パラメーターの値にマイナス値が選択できるようになります。
@minによる最小値の指定は、最大値と同じ範囲の -9,007,199,254,740,992 で、
javascriptで安全に扱える最小値も -9,007,199,254,740,991 です。
パラメーターの値がマイナス値であっても他と同じく文字列として保存されるのは変わりません。
--------------------------------------------------------------------------------------------------------------
[Twitter] https://twitter.com/mankind_games/
[GitHub] https://github.com/mankindGames/
[Blog] http://mankind-games.blogspot.jp/

--ゲーム作るよりシステム作って満足しちゃう人--
バナナ
記事: 16
登録日時: 2016年1月16日(土) 01:41

Re: プラグインパラメータの「@​type」について

投稿記事by バナナ » 2017年6月25日(日) 14:18

情報提供ありがとうございます。
本文とサンプルに追加させていただきました。

マイナス値の扱いに困っていたので助かります。
また見つけましたらよろしくお願いします。
アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 【7/15更新】プラグインパラメータの「@​type」について

投稿記事by しぐれん » 2017年7月16日(日) 15:47

@type struct<struct1>[]
上記の記述は動くようですが、UIが不親切になりますね。
構造体を編集した後に配列に戻れません。
公式としても想定していないっぽいですね。

さらに配列型の挙動ですが[1,2,3]を取り出そうとすると
"["1","2","3"]"という二重に変換が必要な状態で格納するので、とても使いづらいです。
ここは修正を期待したいところです。
現在、プラグイン依頼はお休み中です。
バナナ
記事: 16
登録日時: 2016年1月16日(土) 01:41

Re: 【7/15更新】プラグインパラメータの「@​type」について

投稿記事by バナナ » 2017年7月16日(日) 18:28

Mac/Steam版で確認したところ、配列→構造→OKクリックで問題なく配列ウィンドウに戻りました。
「構造の配列中の構造の配列」なども同様です。

配列ウィンドウと構造ウィンドウは別窓で個別に移動可能でしょうか。
窓が重なっていてOKボタンがダブルクリックされていないか確認してみてください。

もし同じウィンドウの上書きになっていたり、別窓でもOKクリックで2窓とも閉じられてプラグインウィンドウに戻ったりするのであれば、お使いの環境による問題かもしれません。

Windowsや他の環境を持っていないため確認できないのですが、参考までに。

> 配列型の挙動
全体的に変換不要の形で保存されるのが理想的ですよね。
同じく修正に期待しています。
アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 【7/15更新】プラグインパラメータの「@​type」について

投稿記事by しぐれん » 2017年7月18日(火) 01:33

>バナナさん
間違えてダブルクリックしたパターンだったようです。
使い方次第では行ける感じはありますが、難しいですね。
現在、プラグイン依頼はお休み中です。
アバター
管理人:ゆみねこ
管理人
記事: 118
登録日時: 2015年11月10日(火) 09:51

Re: 【7/15更新】プラグインパラメータの「@​type」について

投稿記事by 管理人:ゆみねこ » 2017年7月18日(火) 03:37

有用な情報をありがとうございます。
@parentはパラメータをまとめる以上の使い方はできないんでしょうか。
パラメータを取得する際に@parentを参照できれば、子のパラメータ名が重複できるなあと思いまして……。
-----------------------------------------------------------------
ツクマテ管理人です。よろしくお願いします :D

【お問い合わせ】https://goo.gl/forms/J4aDIZlSNUot20NV2

-----------------------------------------------------------------
バナナ
記事: 16
登録日時: 2016年1月16日(土) 01:41

Re: 【7/15更新】プラグインパラメータの「@​type」について

投稿記事by バナナ » 2017年7月19日(水) 01:46

> しぐれんさん
解決したようで良かったです。
意図しないダブルクリック処理は頻発するので、エディタに何らかの問題があるのかもしれませんね。
入れ子型はいまのところ使用しないか、一括変換処理で乗り切るしかないようです。
バナナ
記事: 16
登録日時: 2016年1月16日(土) 01:41

Re: 【7/15更新】プラグインパラメータの「@​type」について

投稿記事by バナナ » 2017年7月19日(水) 02:05

> 弓猫さん
@parentによる参照はできませんが、構造体による参照は可能です。
処理は海外製プラグインのSRD_GameUpgrade.jsが参考になりそうです。
http://sumrndm.site/game-upgrade/

仕様上、@parentより構造体のほうが簡潔なデータと処理で実現できるため、
親子参照とパラメータ名重複=構造体と考えて問題ありません。

“MV:小ネタ・TIPS・講座” へ戻る