条件分岐 / ツクールMZスクリプトリファレンスwiki
ツクールMZで条件分岐をスクリプトで行うなら以下の通りです。
目次
スイッチ
$gameSwitches.value(スイッチID)
サンプルコード(スイッチ4がonで条件分岐)
if($gameSwitches.value(4)){
//(処理)
}
変数
$gameVariables.value(変数ID)
サンプルコード(変数3の値が20以上で条件分岐)
if($gameVariables.value(3) >= 20){
//(処理)
}
セルフスイッチ
var key = [マップID, イベントID, セルフスイッチ]
$gameSelfSwitches.value(key)
サンプルコード(マップIDが2、イベントIDが4のイベントのセルフスイッチBがonで分岐)
var key = [2, 4, "B"]
if($gameSelfSwitches.value(key)){
//(処理)
}
タイマー
$gameTimer.seconds()
サンプルコード(タイマーが2秒以下で分岐)
if($gameTimer.seconds() <= 2){
//(処理)
}
アクターがパーティーにいるか
$gameParty.members().includes($gameActors.actor(アクターID))
サンプルコード(アクターIDが1のアクター(デフォルトでリード)がパーティーにいるかどうかで分岐)
if($gameParty.members().includes($gameActors.actor(1))){
//(処理)
}
アクターの名前
$gameActors.actor(アクターID).name()
サンプルコード(アクターIDが2のアクターの名前がプリシアかどうかで分岐)
if($gameActors.actor(2).name() == "プリシア"){
//(処理)
}
アクターの職業
$gameActors.actor(アクターID).isClass($dataClasses[職業ID])
サンプルコード(アクターIDが2のアクターの職業が職業ID3(デフォルトで僧侶)かどうかで分岐)
if($gameActors.actor(2).isClass($dataClasses[3])){
//(処理)
}
アクターのスキル
$gameActors.actor(アクターID).hasSkill(スキルID)
サンプルコード(アクターIDが2のアクターがスキルID18(デフォルトで瞑想)を習得しているかどうかで分岐)
if($gameActors.actor(2).hasSkill(18)){
//(処理)
}
アクターが武器を装備しているか
$gameActors.actor(アクターID).hasWeapon($dataWeapons[武器ID])
サンプルコード(アクターIDが2のアクターが武器ID3(デフォルトで氷の剣)を持っているかどうかで分岐)
if($gameActors.actor(2).hasWeapon($dataWeapons[3])){
//(処理)
}
アクターが防具を装備しているか
$gameActors.actor(アクターID).hasArmor($dataWeapons[防具ID])
サンプルコード(アクターIDが2のアクターが防具ID4(デフォルトで冒険者の服)を持っているかどうかで分岐)
if($gameActors.actor(2).hasArmor($dataWeapons[4])){
//(処理)
}
アクターのステート
$gameActors.actor(アクターID).isStateAffected(ステートID)
サンプルコード(アクターIDが1のアクターがステートID5(デフォルトで暗闇)かどうかで分岐)
if($gameActors.actor(1).isStateAffected(5)){
//(処理)
}
敵キャラが出現しているか
$gameTroop.members()[敵キャラID].isAlive()
サンプルコード(敵IDが3の敵が出現しているかどうかで分岐)
if($gameTroop.members()[2].isAlive()){
//(処理)
}
敵キャラのステート
$gameTroop.members()[敵キャラID].isStateAffected(ステートID)
サンプルコード(敵IDが1の敵がステートID5のステート(デフォルトで暗闇)かどうかで分岐)
if($gameTroop.members()[0].isStateAffected(5)){
//(処理)
}
キャラクターの向き
this.character(イベントID).direction()
イベントIDは負の数でプレイヤー、0でこのイベント、1~でイベントIDを指定します。
向きはテンキー(下:2 左:4 右:6 上:8)に対応しています。
サンプルコード(プレイヤーが下を向いているかどうかで分岐)
if(this.character(-1).direction() == 2){
//(処理)
}
乗り物
$gamePlayer.vehicle() === $gameMap.vehicle(乗り物ID)
乗り物IDは以下のように対応しています。
小型船:0
大型船:1
飛行船:2
サンプルコード(大型船に乗っているかどうかで分岐)
if($gamePlayer.vehicle() === $gameMap.vehicle(1)){
//(処理)
}
お金
$gameParty.gold()
サンプルコード(お金を1000以上持っているかどうかで分岐)
if($gameParty.gold() >= 1000){
//(処理)
}
アイテム
$gameParty.hasItem($dataItems[アイテムID])
サンプルコード(アイテムIDが4のアイテムを持っているどうかで分岐)
if($gameParty.hasItem($dataItems[4])){
//(処理)
}
武器を持っているか
$gameParty.hasItem($dataWeapons[武器ID], 装備品も含めるか(true/false))
サンプルコード(武器IDが2の武器(デフォルトで剣)を持っているかどうかで分岐。装備品も含める)
if($gameParty.hasItem($dataWeapons[2], true)){
//(処理)
}
防具を持っているか
$gameParty.hasItem($dataArmors[防具ID], 装備品も含めるか(true/false))
サンプルコード(防具IDが3の防具(デフォルトで盾)を持っているかどうかで分岐。装備品は含めない)
if($gameParty.hasItem($dataArmors[3], false)){
//(処理)
}
ボタン
ボタンを押下されているとき
Input.isPressed(ボタン)
ボタンを押下されたときのみ
Input.isTriggered(ボタン)
ボタンを押下され続けているとき
Input.isRepeated(ボタン)
ボタンは以下のように対応しています。
決定 "ok"
キャンセル "cancel"
シフト "shift"
下 "down"
上 "up"
右 "right"
左 "left"
ページアップ "pageup"
ページダウン "pagedown"
サンプルコード(シフトボタンが押されつづけているかどうかで分岐)
if(Input.isRepeated("shift")){
//(処理)
}
イベントコマンドでできる条件分岐は以上です。
MVから変更があったのは「アクターがパーティーにいるか」のスクリプト、「ボタン押下の条件」のみです。
オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。