2018年10月27日
装備解除スキルの実装例
装備解除スキルの実装例
装備を強制解除するスキルの実装例です。
基本機能で組むと以下のようになります。
@スキルを受けた対象者に「装備解除」ステートを付与(このステートは条件分岐のためのマーキング)。
同ステートの有無で装備を解除するコモンイベント処理を実行(装備解除の対象アクターを判定して、解除させる)。
A@が正の場合、全装備を装備している/いないで条件分岐で判定★ここが基本機能では煩雑
B装備している場合、ラベルジャンプで装備解除の処理を実行(コマンド処理の共通化)
Aを解決するため、スクリプトでJavascriptを使用。
防具タイプのスロットの空き有無を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
【このカテゴリーの最新記事】
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/8242287
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック