この記事では、RPGツクールMVのプラグインからアイテム(武器・防具)の情報を取得する方法を紹介します。
RPGツクールMVのアイテムの情報は、グローバル変数に配列として格納されています。
変数名 | 内容 |
---|---|
$dataItems | データベースで設定したアイテムのオブジェクト配列 |
$dataWeapons | データベースで設定した武器のオブジェクト配列 |
$dataArmors | データベースで設定した防具のオブジェクト配列 |
$gameParty._items | パーティが持っているアイテムのオブジェクト配列 |
グローバル変数とは、プログラム全体から参照できる変数のことです。
配列の中身は、アイテム・武器・防具それぞれのオブジェクトになっています。
オブジェクトは特定のものについて情報と処理を集めたものです。
アイテムオブジェクトだったら、アイテム名や価格などの情報があつまっています。
オブジェクトの情報はプロパティに格納されており、オブジェクト.プロパティ名で取得することができます。
var item = $dataItems[1]; // データベースから1番のアイテムを取得 var itemName = item.name; // nameプロパティからアイテム名を取得
アイテムの情報を取得するには、オブジェクトにどんなプロパティがあるかを知っておかなければいけません。
そこで、アイテムオブジェクト、武器オブジェクト、防具オブジェクトにどんなプロパティがあるかをまとめました。
プロパティのほとんどがデータベース→アイテム(武器・防具)から設定できる項目と対応しているので、わりとわかりやすいんじゃないでしょうか。
ちなみに、オブジェクトのプロパティに別のオブジェクトが入っている場合もあります。
アイテムオブジェクトのdamageプロパティにはダメージオブジェクト、effectsプロパティは配列にエフェクトオブジェクトが入っています。
アイテムオブジェクト
┣アイテムオブジェクトのプロパティ
┣ダメージオブジェクト
┃ ┗ダメージオブジェクトのプロパティ
┃
┗エフェクトオブジェクト
┗エフェクトオブジェクトのプロパティ
プロパティ名をピリオドでつなげることで、入れ子になっているオブジェクトのプロパティを取得できます。
アイテムオブジェクトにのdamegeプロパティに入っているダメージオブジェクトから属性IDを取得するには、 item.damage.elementId となります。
アイテム関連のオブジェクト
アイテムオブジェクトのプロパティ
プロパティ名 | データ型 | 内容 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
animationId | Number | 使用時のアニメーションID | ||||||||||||||||||||||||||
consumable | Boolean | 消耗するか (する:true / しない:false) |
||||||||||||||||||||||||||
damage | Object | ダメージ(オブジェクト) | ||||||||||||||||||||||||||
description | String | アイテムの説明 | ||||||||||||||||||||||||||
effects | [Object]Array | エフェクト(オブジェクト)の配列 | ||||||||||||||||||||||||||
hitType | Number | 命中タイプ
|
||||||||||||||||||||||||||
iconIndex | Number | アイコン画像のID番号 | ||||||||||||||||||||||||||
id | Number | アイテムID | ||||||||||||||||||||||||||
itypeId | Number | アイテムタイプID
|
||||||||||||||||||||||||||
meta | Object | メモ欄のノートタグ | ||||||||||||||||||||||||||
name | String | アイテム名 | ||||||||||||||||||||||||||
note | String | メモ | ||||||||||||||||||||||||||
occasion | Number | 使用可能時
|
||||||||||||||||||||||||||
price | Number | アイテムの価格 | ||||||||||||||||||||||||||
repeats | Number | 連続回数(1~9) | ||||||||||||||||||||||||||
scope | Number | 効果範囲
|
||||||||||||||||||||||||||
speed | Number | 速度補正 | ||||||||||||||||||||||||||
successRate | Number | 成功率(0〜100) | ||||||||||||||||||||||||||
tpGain | Number | 得TP(0~100) |
ダメージオブジェクトのプロパティ
アイテムオブジェクトのdamageプロパティに代入されているオブジェクトです。
プロパティ | データ型 | 内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
critical | Boolean | 会心 (あり:true / なし:false) |
||||||||||||||||
elementId | Number | -1または0または属性ID
|
||||||||||||||||
formula | String | 計算式 | ||||||||||||||||
type | Number | ダメージタイプ
|
||||||||||||||||
variance | Number | 分散度(0〜100) |
エフェクトオブジェクトのプロパティ
アイテムオブジェクトのeffectsプロパティに代入されているオブジェクトです。
プロパティ | データ型 | 内容 |
---|---|---|
code | Number | 使用効果コード |
dataId | Number | codeごとに使うID |
value1 | Number | codeごとに使う値1 |
value2 | Number | codeごとに使う値2 |
code | 使用効果 | dataId | value1 | value2 |
---|---|---|---|---|
11 | HP回復 | 0 | 回復量 (0〜100(%)) |
回復量 (固定値) |
12 | MP回復 | 0 | 回復量 (0〜100(%)) |
回復量 (固定値) |
13 | TP回復 | 0 | 回復量 (固定値) |
0 |
21 | ステート付与 | 0またはステートID ※0は通常攻撃 |
確率(0〜100) | 0 |
22 | ステート解除 | ステートID | 確率(0〜100) | 0 |
31 | 能力強化 | ステータスID | ターン数(1~1000) | 0 |
32 | 能力弱体 | ステータスID | ターン数(1~1000) | 0 |
33 | 能力強化の解除 | ステータスID | 1 | 0 |
34 | 能力弱体の解除 | ステータスID | 1 | 0 |
41 | 特殊効果(逃げる) | 0 | 1 | 0 |
42 | 成長 | ステータスID | 上昇値 | 0 |
43 | スキル習得 | スキルID | 1 | 0 |
44 | コモンイベント | コモンイベントID | 1 | 0 |
武器・防具関連のオブジェクト
武器オブジェクトのプロパティ
プロパティ名 | データ型 | 内容 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
animationId | Number | アニメーションID(なしの時は0) | ||||||||||||||||||
description | String | 武器の説明 | ||||||||||||||||||
etypeId | Number | 装備タイプ(武器の場合:1) | ||||||||||||||||||
iconIndex | Number | アイコン画像のインデックス番号 | ||||||||||||||||||
id | Number | 武器ID | ||||||||||||||||||
meta | Object | メモ欄のノートタグ | ||||||||||||||||||
name | String | 武器名 | ||||||||||||||||||
note | String | メモ欄 | ||||||||||||||||||
params | [Number]Array | 能力値の配列
|
||||||||||||||||||
price | Number | 価格 | ||||||||||||||||||
traits | [Object]Array | 特徴(オブジェクト)の配列 | ||||||||||||||||||
wtypeId | Number | 0または武器タイプ
|
防具オブジェクトのプロパティ
プロパティ名 | データ型 | 内容 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
atypeId | Number | 0または防具タイプID
|
||||||||||||||||||
description | String | 防具の説明 | ||||||||||||||||||
etypeId | Number | 装備タイプID(2以降) | ||||||||||||||||||
iconIndex | Number | アイコン画像のインデックス | ||||||||||||||||||
id | Number | 防具ID | ||||||||||||||||||
meta | Object | メモ欄のノートタグ | ||||||||||||||||||
name | String | 防具名 | ||||||||||||||||||
note | String | メモ欄 | ||||||||||||||||||
params | [Number]Array | 能力値の配列
|
||||||||||||||||||
price | Number | 価格 | ||||||||||||||||||
traits | [Object]Array | 特徴(オブジェクト)の配列 |
特徴オブジェクトのプロパティ
武器・防具のtraitsプロパティに代入されているオブジェクトです。
valueが確率(%)、上昇率(%)のものはプロパティの値が小数で代入されています。
(例)10%の場合→プロパティの値は0.1
プロパティ名 | データ型 | 内容 |
---|---|---|
code | Number | 特徴タイプのID |
dataId | Number | codeで使うID |
value | Number | codeで使う値 |
code | 内容 | dataId | value | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
11 | 属性有効度 | 属性ID | 確率(%) | ||||||||||||||||||||||
12 | 弱体有効度 | ステータスID | 確率(%) | ||||||||||||||||||||||
13 | ステート有効度 | ステートID | 確率(%) | ||||||||||||||||||||||
14 | ステート無効化 | ステートID | 1 | ||||||||||||||||||||||
21 | 通常能力値 | ステータスID | 上昇率(%) | ||||||||||||||||||||||
22 | 追加能力値 |
|
上昇率(%) | ||||||||||||||||||||||
23 | 特殊能力値 |
|
上昇率(%) | ||||||||||||||||||||||
31 | 攻撃時属性 | 属性ID | 1 | ||||||||||||||||||||||
32 | 攻撃時ステート | ステートID | 確率(%) | ||||||||||||||||||||||
33 | 攻撃速度補正 | 0 | 補正値 | ||||||||||||||||||||||
34 | 攻撃追加回数 | 0 | 攻撃追加回数 (-9.0〜9.0) |
||||||||||||||||||||||
41 | スキルタイプ追加 | スキルタイプID | 1 | ||||||||||||||||||||||
42 | スキルタイプ封印 | スキルタイプID | 1 | ||||||||||||||||||||||
43 | スキル追加 | スキルID | 1 | ||||||||||||||||||||||
44 | スキル封印 | スキルID | 1 | ||||||||||||||||||||||
51 | 武器タイプ装備 | 武器タイプID | 1 | ||||||||||||||||||||||
52 | 防具タイプ装備 | 防具タイプID | 1 | ||||||||||||||||||||||
53 | 装備固定 | 装備タイプID | 1 | ||||||||||||||||||||||
54 | 装備封印 | 装備タイプID | 1 | ||||||||||||||||||||||
55 | スロットタイプ |
|
1 | ||||||||||||||||||||||
61 | 行動回数追加 | 0 | 確率(%) | ||||||||||||||||||||||
62 | 特殊フラグ |
|
1 | ||||||||||||||||||||||
63 | 消滅エフェクト |
|
1 | ||||||||||||||||||||||
64 | パーティ能力 |
|
1 |
各種IDまとめ
ID | 内容 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
アイテムID | データベース→アイテムのID (データベース順に1から連番) |
||||||||||||||||||
武器ID | データベース→武器のID (データベース順に1から連番) |
||||||||||||||||||
防具ID | データベース→防具のID (データベース順に1から連番) |
||||||||||||||||||
ステータスID |
|
||||||||||||||||||
スキルID | データベース→スキルのID (データベース順に1から連番) |
||||||||||||||||||
ステートID | データベース→ステートのID (データベース順に1から連番) |
||||||||||||||||||
属性ID | データベース→タイプ→属性のID (データベース順に1から連番) |
||||||||||||||||||
スキルタイプID | データベース→タイプ→スキルタイプのID (データベース順に1から連番) |
||||||||||||||||||
武器タイプID | データベース→タイプ→武器タイプのID (データベース順に1から連番) |
||||||||||||||||||
防具タイプID | データベース→タイプ→防具タイプのID (データベース順に1から連番) |
||||||||||||||||||
装備タイプID | データベース→タイプ→装備タイプのID (データベース順に1から連番) |
ノートタグ(metaプロパティ)を使って独自の項目を設定する
アイテムや武器、防具は設定できる項目が決まっていますが、ゲームによってはオリジナルの項目を設定したいこともあるかと思います。
アイテムに独自の項目を設定するには、アイテム(武器、防具)のメモ欄にノートタグを書きます。
<タグ名:値>
ノートタグの値は文字列でも、クォーテーションで囲む必要はありません。
設定したノートタグの値は、アイテム(武器、防具)オブジェクトのmetaプロパティから取得できます。
metaプロパティの値はオブジェクトで、ノートタグと同じ名前のプロパティを持っています。
アイテムID1番のメモ欄に<MyItemProp:テスト> と書くと、metaプロパティのオブジェクトにMyItemPropというプロパティができ、値にテストという文字が入っているということです。
あとは変数に取得するなりして使えばよいです。
var content = $dataItems[1].meta['MyItemProp'];
- metaプロパティとnoteプロパティの違い
-
アイテム(武器、防具)のメモ欄はmetaプロパティだけではなく、noteプロパティにも代入されています。
noteプロパティにはノートタグ以外の内容も含めて、メモ欄の内容が文字列としてすべて入ります。
metaプロパティにはオブジェクトがはいっていて、メモ欄の内容のうちノートタグで記載したものがオブジェクトのプロパティとして追加されます。
ノートタグを使う時の注意点
ほかのプラグインとかぶらない名前をつける
プラグインは全体を関数化することで変数をローカル化することができましたが、ノートタグはローカル化できません。
そのため、ノートタグ名にプラグインの頭文字をつけるなどして、ほかのプラグインとノートタグ名がかぶらないようにする必要があります。
<MyPluginContent:テスト>
<content:テスト>
値が数値の場合は、数値に変換する
ノートタグの値は文字列として代入されています。
ノートタグの値に数値を入れて計算をする場合は、ノートタグの値をNumberオブジェクトで数値に変換する必要があります。
(例)アイテムID1番のメモ欄に
<MyItemProp:1>
と入れ、MyItemPropの値に1を足す場合:
var content = Number($dataItems[1].meta['MyItemProp']) + 1; // -> 2
数値変換をしないでそのまま1を足してしまうと、数値の足し算ではなく、文字列の連結として扱われてしまいます。
そのため1という文字と1という文字をつなげて「11」という文字ができてしまいます。
var content = $dataItems[1].meta['MyItemProp'] + 1; // -> 11