忍者ブログ
windowsやFlash のゲーム作ったりとか。
RPGツクールMVのイベントコマンドで使える便利なスクリプトの備忘録です。

プラグインを使わずにちょこちょこっとイベントを拡張できるので
とっても便利です。

教えてくださった皆様、ありがとうございます。

・各種メニュー画面の呼び出し(参考/ツクマテ投稿記事

 セーブ画面呼び出し SceneManager.push(Scene_Save);
 ロード画面呼び出し SceneManager.push(Scene_Load);
 ステータス画面呼び出し SceneManager.push(Scene_Status);
 スキル画面呼び出し SceneManager.push(Scene_Skill);
 アイテム画面呼び出し SceneManager.push(Scene_Item);
 装備画面呼び出し SceneManager.push(Scene_Equip);
 オプション画面呼び出し SceneManager.push(Scene_Option);

・アイテムの大事なもののページを開く(参考/ツクマテ投稿記事
SceneManager.push(Scene_Item);
SceneManager.update();
SceneManager._scene._categoryWindow.select(3);
SceneManager._scene.onCategoryOk();
SceneManager._scene._categoryWindow.deactivate();

・オートイベントでメッセージをスキップしても移動が終わるまで待つ(参考/シロップ様)

 this.setWaitMode('route')
 会話直後に記述。

・イベントの位置をリセット(参考/ツクマテ投稿記事

 $gamePlayer.requestMapReload();

・画面のフェードイン・アウトを黒以外で(参考/ツクマテ投稿記事

 SceneManager._scene._spriteset._fadeSprite.setColor(255, 255, 255);
 フェードイン・アウトの直前に記述。
 255, 255, 255はRGB値で、数字を変更することで色を変えることができ
 変更した色は、メニューを開いたり、マップ移動したり
 戦闘に入ったりするなど、シーンが変わるまで維持される。

・乗り物の「向き」を変更(参考/ツクマテ投稿記事

 小型船 $gameMap.boat().setDirection(2);
 大型船 $gameMap.ship().setDirection(2);
 飛行船 $gameMap.airship().setDirection(2);
 下に向けるなら2、上なら8、左なら4、右なら6

・「このイベント」に当たるイベントを途中で別イベントに差し替え(参考/卑弥呼テクニック

 this._eventId = 別イベントのID

・移動ルートの設定でアニメーション再生(参考/卑弥呼テクニック
 this.requestAnimation(アニメーションID);

・移動ルートの設定で指定したIDのイベントに近づく(参考:くらむぼん様)

 1番のイベントに一歩近づく this.moveTowardCharacter($gameMap.event(1))
 1番のイベントから一歩遠ざかる this.moveAwayFromCharacter($gameMap.event(1))
 1番のイベントの方を向く this.turnTowardCharacter($gameMap.event(1))
 1番のイベントの逆を向く this.turnAwayFromCharacter($gameMap.event(1))
 座標(変数1番,変数2番)に向かって歩く
  this.moveTowardCharacter({x: $gameVariables.value(1), y: $gameVariables.value(2)})

・移動ルートの設定で最短ルートで指定の場所へ移動する(参考/ツクマテ投稿記事

 this.moveStraight(this.findDirectionTo(x,y))

・移動ルートの設定で、指定した座標にジャンプ(参考/ツクマテ投稿記事

 this.jump(10 - this.x, 20 - this.y)

・スクリプトでSEの音量を調節(参考/ツクマテ投稿記事
◆変数の操作:#0001 SE音量 = AudioManager.seVolume(変更前の音量を取得)
◆スクリプト:ConfigManager['seVolume'] = 100;//音量を変更
◆SEの演奏:Absorb2 (90, 100, 0)
◆スクリプト:ConfigManager['seVolume'] = $gameVariables.value(1);//音量を戻す

・プレイヤーが直接入力することなく決定、キャンセルキーを入力(参考/ツクマテ投稿記事
  ◆キャンセルキーを押して離した
  スクリプト「Input._currentState['escape'] = true;」
  イベントコマンド「ウェイト(1)」
  スクリプト「Input._currentState['escape'] = false;」

 イベント例
 プレイヤーの左にこの作成したイベントがいたとして、決定ボタンを押すと
 プレイヤーは下を向き正面にいるイベントに話しかける。
 ◆移動ルートの設定:プレイヤー (ウェイト)
 :        :◇下を向く
 ◆スクリプト:Input._currentState['ok'] = true;
 ◆ウェイト:1フレーム
 ◆スクリプト:Input._currentState['ok'] = false;

 使用できるキーは、rpg_core.jsにある
 2996行目キーボードと3030行目ゲームパッドの定義

・スマホを振動させる(参考/ツクマテ投稿記事

 navigator.vibrate(2000);
 ※単位はミリ秒

・マップ名の変更(参考/ツクマテ投稿記事

 変更 $dataMap.displayName = 'マップ名'
 表示 SceneManager._scene._mapNameWindow.open();
 ※情報はセーブされない、マップを移動する度リセットされる。

・ダッシュの許可と禁止(参考/ツクマテ投稿記事

 許可 $dataMap.disableDashing = true;
 禁止 $dataMap.disableDashing = false;
 ※情報はセーブされない、マップを移動する度リセットされる。

・戦闘イベント中にステータスウインドウを更新(参考/ツクマテ投稿記事

 SceneManager._scene.refreshStatus

・フォロワーにアニメ表示(参考/ツクマテ投稿記事

 $gamePlayer.followers().follower(index).requestAnimation(id);
 indexには「フォロワーのindex」を、idにはアニメーションIDを記入

・フォロワーに噴出し表示(参考/ツクマテ投稿記事
 $gamePlayer.followers().follower(n).requestBalloon(m);
 n:フォロワー番号(パーティの2番目が0、3番目が1...)、m:バルーンID

・連続する変数に連番をランダムに代入(参考/ツクマテ投稿記事

var i1 = 1;     // 変数番号の最初
var i2 = 10;    // 変数番号の最後
var v1 = 1;     // 連番の開始値
var v2 = 10;    // 連番の終了値
var value = Array.apply(null,Array(v2-v1+1)).map(function(v,i){return i+v1});
for(var i=i1;i<=i2;i++){
  var v = value.splice(Math.randomInt(value.length),1)[0];
  $gameVariables.setValue(i,v);
}

イベントコマンド「条件分岐」で使える条件スクリプト


 決定キーが押された瞬間 Input.isTriggered('ok')
 (okの部分をcancel,up, down, left, right, pageup, pagedownなどに置き換え可)
・マウス入力の判定(参考/ツクマテ投稿記事

 左クリック TouchInput.isTriggered();
 右クリック TouchInput.isCancelled();

・今戦闘中かどうか(尾島様)

 $gameParty.inBattle()

・キャラクターが移動中かどうかを判定(参考/ツクマテ投稿記事

 this.character(id).isMoving()

 移動中ならtrue、停止中ならfalse。
 idに-1でプレイヤー、0でイベント自身、1以上で対応するイベントID。
 停止中かどうかを判定する場合は、以下。

 this.character(id).isStopping()

・イベントのメモ欄の文章を判定(参考/ツクマテ投稿記事

 ■イベント3番のメモ欄に あいうえお と書かれてあるかどうかを判定
 $gameMap.event(3).event().note === 'あいうえお'

 ■イベント3番のメモ欄に書かれている文章の中に あいうえお が含まれているかどうかを判定
 $gameMap.event(3).event().note.match(/あいうえお/)

 ■イベント3番のメモ欄に <ABCD> と書かれているかどうかを判定
 $gameMap.event(3).event().meta['ABCD']

 ■イベント3番のメモ欄に <ABCD:1> と書かれているかどうかを判定
 $gameMap.event(3).event().meta['ABCD'] === '1'

・複数の変数を比べる(参考/ツクマテ投稿記事

◆変数#0001~#0004のいずれかが0より大きかったらOK
[1,2,3,4].some(function(id){return $gameVariables.value(id) > 0});

◆変数#0001~#0004のすべてが0より大きかったらOK
[1,2,3,4].every(function(id){return $gameVariables.value(id) > 0});

◆スイッチ#0001~#0004の全てがONならOK
[1,2,3,4].every(function(id){return $gameSwitches.value(id) > 0});

・変数1が3から44の間の値のとき(参考/ツクマテ投稿記事

 3 <=$game_variables[1] &&  $game_variables[1] <=44

イベントコマンド「変数の操作」で使える情報取得スクリプト

・日時の取得(尾島様)

 年   new Date().getFullYear()
 月  new Date().getMonth() + 1
 日   new Date().getDate()
 曜日   new Date().getDay()
 時   new Date().getHours()
 分   new Date().getMinutes()
 秒   new Date().getSeconds()

 曜日も数値で取得されるので、数字から文字列に変更して下さい。
 0なら日、1なら月、3なら火・・・

・マウスの位置を取得(ニナと鍵守の勇者ミニゲームより)

 画面X座標 TouchInput.x
 画面Y座標 TouchInput.y
 指定位置の情報を取得するために
 マス目を割り出すには、取得した数値を48で除算。

・パーティのアクターIDの取得(参考/ツクマテ投稿記事

 $gameParty.members()[i].actorId();

 「i」並び順(0~)
 エネミーのIDを取得する場合は、以下。

 $gameTroop.members()[i]._enemyId

・敵グループに勝利した時の合計金額(参考/ツクマテ投稿記事

 $gameTroop.goldTotal();
 敵グループに勝利した後イベントで代入

・パーティ先頭キャラの武器タイプ1にセットされている装備名を取得(参考/ツクマテ投稿記事

 $gameParty.members()[0].equips()[0].name

・パーティ先頭キャラの1番目のステート名を取得(参考/ツクマテ投稿記事

 $gameParty.members()[0].states()[0].name

・パーティ先頭キャラの職業を取得(参考/フォーラム投稿記事

 $gameParty.members()[0].currentClass().name

・BGMを取得(参考/ツクマテ投稿記事

 AudioManager.saveBgm();

 保存したBGMを再生(コマンド「スクリプト」)
 AudioManager.replayBgm($gameVariables.value(n));
 n:保存した変数番号

・セーブデータがあるか(参考/ツクマテ投稿記事

 DataManager.isAnySavefileExists();

ダメージ計算式基礎知識

・最低でも1のダメージを与える(参考/初心者講座

 Math.max(m,1)

 mにダメージ計算式を入れる

・1から a.atk * 4 までの間でランダムにダメージを与える(参考/初心者講座
 (a.atk * 4) * Math.random() + 1

・動ける仲間の数を基本ダメージに(参考/初心者講座

 100 * $gameParty.movableMembers().length

・残りHPが20%以下になると、威力が2倍になる(参考/ツクマテ投稿記事

 a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2

・防御している敵には通常の2倍の威力のダメージを与え、それ以外の敵には通常のダメージを与える
 (参考/ツクマテ投稿記事

 a.atk * (b.isGuard() ? 4 * b.grd : 1)

・敵が12番(眠り)ステートの場合ダメージが100、それ以外は1(参考/ツクマテ投稿記事

 b.isStateAffected(12) ? 100 : 1

・敵が3番目のステートにかかってたら威力が2倍に、それ以外は通常の威力(参考/ツクマテ投稿記事

 a.mat * (b.isStateAffected(3) ? 2 : 1)

・毒、暗闇、沈黙の場合ダメージが10000加算(参考/ツクマテ投稿記事

 a.atk * 4 - b.def * 2 + (b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6) ? 10000 : 0)

・毒、暗闇、沈黙の場合ダメージが2倍(参考/ツクマテ投稿記事

 (a.atk * 4 - b.def * 2) * (b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6) ? 2 : 1)

・敵が4番(毒)のステートでなければ毒を付加、それ以外は14番(猛毒)のステートに変更(参考/ツクマテ投稿記事

 b.isStateAffected(4) ? b.removeState(4)||b.addState(14)||0 : b.addState(4)||0

・敵を決して倒すことが出来ない「みねうち」(参考/ツクマテ投稿記事

 Math.min(元々の計算式 , b.hp - 1)

・相手のHPを1にする(参考/ツクマテ投稿記事

 b.hp - 1

・攻撃系スキル使用時、使用者にステートを付与(参考/RPGツクールMVwiki

 a.addState(ステート番号);攻撃系スキルの計算式

 例)防御しながら通常攻撃 a.addState(2);a.atk * 4 - b.def * 2

・指定IDのアクターがいれば対象に40ダメージ(参考/ツクマテ投稿記事

 $gameParty.members().contains($gameActors.actor(id)) ? 40 : 10

・敵HPの下一桁が0か偶数か奇数かによってダメージをそれぞれ、0、100、5000に(参考/ツクマテ投稿記事

 if(a.hp % 10 == 0){0} else if(a.hp % 2 == 0){100} else {5000}

・indexの大きいバトラーほどダメージが大きい(参考/ツクマテ投稿記事

 10 * (b.index() + 1)

・クリティカル時のダメージを変更する(参考/ツクマテ投稿記事

 b.result().critical ? クリティカル時の計算式 : 通常の計算式

 ※クリティカル時の3倍ダメージ効果は適用されてしまうので、それを考えた上で式を作る

拍手[0回]

PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
オススメGAME
広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


Flash Game 館

ソフトウェア制作講座






Copyright ©   YUWAKA'S SOFT   All Rights Reserved
Design by MMIT / TemplateB3  Powered by NINJA TOOLS
忍者ブログ [PR]