アフィリエイト広告を利用しています
検索
言葉を集めて世界を旅するRPG「地図の時間〜言葉集めの冒険譚〜」
timeofmapworks_logo_2020.png
ハートフルRPG「地図の時間」

地図の時間スピンオフRPG「影泥棒と魔法の手記」

リソース管理ダンジョンRPG「琥珀の道具士」

現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
プロフィール/制作環境(3)
制作記(679)
ニュース(ツクールMV)(222)
技術情報(ツクールMV)(203)
JavaScript/スクリプト(ツクールMV)(9)
プラグイン情報(ツクールMV)(11)
素材情報(ツクールMV)(15)
アップデート情報(ツクールMV)(45)
トラブル&解決情報(ツクールMV)(18)
ツクール製作品(ツクールMV)(42)
関連情報(ツクールフェス)(2)
投稿イベント情報(ツクールMV)(4)
関連情報(ラノゲツクールMV)(9)
Benchmark MV(個人作品:試作)(1)
manurpg(個人作品:試作)(2)
ブックモービル(個人作品)(10)
重力ルーペ(個人作品)(11)
そして魔女に会う(個人作品)(7)
バンドワゴン(個人作品)(1)
地図の時間(個人作品)(14)
日向と香水(個人作品)(3)
ストーリーテラー(個人作品)(1)
嘘つきのノブレスオブリージュ(2)
お役立ちツール/素材サイト(創作全般)(12)
創作アイディア(創作全般)(7)
保存用コラム(創作全般)(10)
コラム(144)
オススメ作品(8)
当ブログへのお問い合わせ(contact me)(2)
琥珀の道具士(3)
最果てのギルド(1)
読書メモ(1)
Steam展開ノウハウ(21)
RPGツクールMZ(3)
地図の時間〜名前探しの物語(1)
プラグイン情報(ツクールMZ)(1)
技術情報(ツクールMZ)(13)
国内展開ノウハウ(1)
素材情報(ツクールMZ)(4)
AI(8)
RPG Maker Unite(2)
DAW(1)
翻訳(1)
リンク集

2018年10月27日

装備解除スキルの実装例

装備解除スキルの実装例

装備を強制解除するスキルの実装例です。
基本機能で組むと以下のようになります。

@スキルを受けた対象者に「装備解除」ステートを付与(このステートは条件分岐のためのマーキング)。
同ステートの有無で装備を解除するコモンイベント処理を実行(装備解除の対象アクターを判定して、解除させる)。
20181027_3.jpg

A@が正の場合、全装備を装備している/いないで条件分岐で判定★ここが基本機能では煩雑
20181027_1.png

B装備している場合、ラベルジャンプで装備解除の処理を実行(コマンド処理の共通化)
20181027_2.jpg

Aを解決するため、スクリプトでJavascriptを使用。
20181027_4.jpg

防具タイプのスロットの空き有無をsomeメソッドで調査する方法で解決。

アクター1番が防具タイプID5の防具を身に着けている場合


条件分岐のスクリプトで以下を入力。
$gameActors.actor(1).armors().some(function(armor) {
return armor.atypeId === 5;
});

1行にまとめた場合。
$gameActors.actor(1).armors().some(function(armor) {return armor.atypeId === 5;});

アクター1番が防具タイプID5の防具を身に着けていない場合

!をつけて構文を反転させる。

!$gameActors.actor(1).armors().some(function(armor) {
return armor.atypeId === 5;
});

解説


$gameActors.actor(1)
rpg_object.jsにあるアクターの管理人(gameActor=GameActor)が持つアクター1(actor(1))の情報の呼出。
gameActorsという部署に所属するactor1番さんを名指しで呼び出している。

armors()
防具情報一覧の呼び出し。
Excelやスプレッドシートのセルでデータが整列されている状態に対する処理のイメージ。

some
一致するものがあればtrueを返す関数。
Excelの中からCtrf+Fで一致する文字列を探すイメージ。

function(armor)
"armor"という関数を作り、後に続く構文を処理する。

すなわち……

$gameActors.actor(1).armors().some(function(armor) {
return armor.atypeId === 5;
});


$gameActors.actor(1).armors().
GameActorsに所属するアクター1番が、

some(function(armor)
{
return armor.atypeId === 5;
});


防具タイプに防具タイプ5番の情報を持っているか(ゲーム上は装備しているか)
という構文になります。
装備している=trueなので、条件分岐のスクリプトに入力すると、
アクター1が防具タイプ5を装備している場合、と読み替えられて処理が進むのです。


参考:
ツクールMVコアスクリプト解析
https://sites.google.com/site/rpgmakercorescript/game_/game_battlerbase/game_battler/game_actor-1

謝辞:
奏 ねこま様
http://makonet.sakura.ne.jp/rpg_tkool/

terunon様
https://tri-nitroterunon37.wixsite.com/terunon
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/8242287
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック