2018年01月09日
スクリプトを活用したイベントコマンド操作
◆スクリプトを活用したイベントコマンド操作
スクリプトを扱うための入門的な技術情報を調べ、実践してみました。
以下その覚書です。
■スクリプトで扱う利点
私の目的はスクリプトを活用することで効率化を図ることです。
調べる限り、スクリプトで扱うことでの利点は次のことが挙げられます。
・イベントコマンドにはない値を利用できる
小数点以下の値、変数、MAPID、イベントIDなど
特に変数は取得、代入でテンプレート化ができる
テンプレート化することで入力作業が減り、作業効率化、バグ減少に繋がる
・イベントコマンドにはない処理を実行できる
セルフスイッチ、スイッチの初期化
・内部処理の理解が進みトラブルに強くなる
コアスクリプトとの繋がりが分かるとトラブル解決が早くなる
・アイディアが広がる
可変箇所を知ることでアイディアが閃き、実践できる
◆基礎知識
スクリプトを扱ううえで必要と考える基礎知識を整理しました。
■記述に関する注意点
・半角入力で行う
・大文字/小文字の取り違えに注意する
$gameVariables.value//正しい
$gameVariables.Value//認識しない
・文字列やファイル名を指定する時に囲む「''」「""」はどちらでも可
$gameVariables.setValue(1,"battle1");
$gameVariables.setValue(1,'battle1');
・複数行を記述する場合、末尾に;をつける
$gameVariables.setValue(1,$gameVariables.value(1)+1);
$gameSwitches.setValue($gameVariables.value(5), true);
■便利な変数、スクリプトコマンド
・変数1番
$gameVariables.value(1)
・変数1番に1を加算
$gameVariables.setValue(1,$gameVariables.value(1)+1)
・0〜10の乱数
Math.floor(Math.random() * 11)
・10〜20の乱数
Math.floor(Math.random() * 11) + 10
0〜10の乱数に10を足すことで、乱数が0なら10、乱数が10なら20にすることで0〜9を除外
・20〜30の乱数
Math.floor(Math.random() * 11) + 20
・変数2番に0〜10の乱数を格納
$gameVariables.setValue(2,Math.floor(Math.random() * 11))
・変数3番に20〜30の乱数を格納
$gameVariables.setValue(3,Math.floor(Math.random() * 11) + 20)
・メンバーの数(メンバー…戦闘中は戦闘参加人数、移動中はパーティーの人数)
$gameParty.members().length
または
$gameParty.size()
・戦闘参加人数
$gameParty.battleMembers().length
・戦闘不参加も含めた、パーティーの人数
$gameParty.allMembers().length
・生きているメンバーの数
$gameParty.aliveMembers().length
・行動可能なメンバーの数
$gameParty.movableMembers().length
・敵キャラ総数(まだ出現していない敵キャラは含まない)
$gameTroop.members().length
・生きている敵キャラの数
$gameTroop.aliveMembers().length
・倒された敵キャラの数
$gameTroop.deadMembers().length
・行動可能な敵キャラの数
$gameTroop.movableMembers().length
・現マップIDの取得
this._mapId
・現イベントIDの取得
this._eventId
・ウェイト
this.wait(フレーム)
1秒=60フレーム
◆実践
スクリプトで有用そうなものを試してみました。
■スイッチの操作
$gameSwitches.setValue(スイッチ番号, true/false);
true:ON
false:OFF
例.変数5番のスイッチ番号をON
◆スクリプト:$gameSwitches.setValue($gameVariables.value(5), true);
□応用:全スイッチを初期化
$gameSwitches.clear();
マップ切り替えで画面更新後に反映
■セルフスイッチの操作
$gameSelfSwitches.setValue([マップID,イベントID,A〜D], true/false);
true:ON
false:OFF
A〜Dは一行につき一つのみ指定可能
例.マップID=変数5番、イベントID=変数6番のセルフスイッチAをON
$gameSelfSwitches.setValue([$gameVariables.value(5),$gameVariables.value(6),A], true);
□応用:全セルフスイッチを初期化
$gameSelfSwitches.clear();
マップ切り替えで更新処理後に反映
□応用:現マップの現IDを操作
$gameSelfSwitches.setValue([this._mapId,this._eventId,A〜D], true/false);
マップ切り替えで画面更新後に反映
■タイマーの操作
$gameTimer.start(フレーム);
始動:
・1秒は60フレーム
・画面上にタイマーが表示されカウントダウンが始まる
$gameTimer.stop();
停止:
・カウントダウン停止し、タイマーが消える
□応用:変数10のフレーム秒からカウントアップ
変数10番に毎秒1を足すカウントアップタイマー
以下の内容をコモンイベントの並列処理で実行する
◆スクリプト:$gameVariables.setValue(10,0)//変数10番に0を入れる
◆スクリプト:$gameTimer.start($gameVariables.value(10));//タイマーを開始
◆ループ
◆スクリプト:this.wait(60);//60フレーム=1秒ウェイトによりタイマーのカウントダウンを止める
◆スクリプト:$gameVariables.setValue(10,$gameVariables.value(10)+60);//止めている間に60=1秒を変数10番に加算
◆スクリプト:$gameTimer.start($gameVariables.value(10));//変数10番をタイマーに表示するためタイマーを再起動しループする
◆
:以上繰り返し
■遠景の変更
$gameMap.changeParallax("画像ファイル名",横方向にループする,縦方向にループする, 横方向のスクロール速度, 縦方向のスクロール速度);
横方向にループする:ループ→true ループしない→false
縦方向にループする:ループ→true ループしない→false
横方向のスクロール速度:フレーム(右から左の場合は正の値、右から左の場合は負の値、小数点以下も設定可)
縦方向のスクロール速度:フレーム(下から上の場合は正の値、上から下の場合は負の値、小数点以下も設定可)
※超高速や超スローな動きが設定可能
例.画像BlueSkyを遠景に設定、左から右へ横方向に0.5フレームの速度で動かす
◆スクリプト:$gameMap.changeParallax("BlueSky",true,false,-0.5,0);
■ピクチャの移動/ピクチャの回転/ピクチャの色調変更/ピクチャの消去
次の記事を参照
スクリプトを活用したピクチャの管理
https://fanblogs.jp/tabirpglab/archive/1075/0
今回は目的に沿って調べたので項目が偏っていますが、必要に応じてバトル関連や、データベース周りの部分も調べたいと思います。
以下サイト様が充実していますので、情報が必要な方はあわせてご覧ください。
謝辞:
RMMV Script Calls
https://goo.gl/3mSSGX
ツクールMVスクリプトリファレンスwiki
http://rpgmaker-script-wiki.xyz/mvscriptwiki.php
RPGツクールMV プラグインコマンド集リファレンス
https://docs.google.com/spreadsheets/d/1rOIzDuhLC6IqJPEFciYOmXWL_O7X9-hMValMs7DpWCk/edit#gid=1183699632
簡単なプラグインを作ってみよう 2(スマイル工房様)
http://blog.livedoor.jp/trb_surasura/archives/8842701.html
スクリプトを扱うための入門的な技術情報を調べ、実践してみました。
以下その覚書です。
■スクリプトで扱う利点
私の目的はスクリプトを活用することで効率化を図ることです。
調べる限り、スクリプトで扱うことでの利点は次のことが挙げられます。
・イベントコマンドにはない値を利用できる
小数点以下の値、変数、MAPID、イベントIDなど
特に変数は取得、代入でテンプレート化ができる
テンプレート化することで入力作業が減り、作業効率化、バグ減少に繋がる
・イベントコマンドにはない処理を実行できる
セルフスイッチ、スイッチの初期化
・内部処理の理解が進みトラブルに強くなる
コアスクリプトとの繋がりが分かるとトラブル解決が早くなる
・アイディアが広がる
可変箇所を知ることでアイディアが閃き、実践できる
◆基礎知識
スクリプトを扱ううえで必要と考える基礎知識を整理しました。
■記述に関する注意点
・半角入力で行う
・大文字/小文字の取り違えに注意する
$gameVariables.value//正しい
$gameVariables.Value//認識しない
・文字列やファイル名を指定する時に囲む「''」「""」はどちらでも可
$gameVariables.setValue(1,"battle1");
$gameVariables.setValue(1,'battle1');
・複数行を記述する場合、末尾に;をつける
$gameVariables.setValue(1,$gameVariables.value(1)+1);
$gameSwitches.setValue($gameVariables.value(5), true);
■便利な変数、スクリプトコマンド
・変数1番
$gameVariables.value(1)
・変数1番に1を加算
$gameVariables.setValue(1,$gameVariables.value(1)+1)
・0〜10の乱数
Math.floor(Math.random() * 11)
・10〜20の乱数
Math.floor(Math.random() * 11) + 10
0〜10の乱数に10を足すことで、乱数が0なら10、乱数が10なら20にすることで0〜9を除外
・20〜30の乱数
Math.floor(Math.random() * 11) + 20
・変数2番に0〜10の乱数を格納
$gameVariables.setValue(2,Math.floor(Math.random() * 11))
・変数3番に20〜30の乱数を格納
$gameVariables.setValue(3,Math.floor(Math.random() * 11) + 20)
・メンバーの数(メンバー…戦闘中は戦闘参加人数、移動中はパーティーの人数)
$gameParty.members().length
または
$gameParty.size()
・戦闘参加人数
$gameParty.battleMembers().length
・戦闘不参加も含めた、パーティーの人数
$gameParty.allMembers().length
・生きているメンバーの数
$gameParty.aliveMembers().length
・行動可能なメンバーの数
$gameParty.movableMembers().length
・敵キャラ総数(まだ出現していない敵キャラは含まない)
$gameTroop.members().length
・生きている敵キャラの数
$gameTroop.aliveMembers().length
・倒された敵キャラの数
$gameTroop.deadMembers().length
・行動可能な敵キャラの数
$gameTroop.movableMembers().length
・現マップIDの取得
this._mapId
・現イベントIDの取得
this._eventId
・ウェイト
this.wait(フレーム)
1秒=60フレーム
◆実践
スクリプトで有用そうなものを試してみました。
■スイッチの操作
$gameSwitches.setValue(スイッチ番号, true/false);
true:ON
false:OFF
例.変数5番のスイッチ番号をON
◆スクリプト:$gameSwitches.setValue($gameVariables.value(5), true);
□応用:全スイッチを初期化
$gameSwitches.clear();
マップ切り替えで画面更新後に反映
■セルフスイッチの操作
$gameSelfSwitches.setValue([マップID,イベントID,A〜D], true/false);
true:ON
false:OFF
A〜Dは一行につき一つのみ指定可能
例.マップID=変数5番、イベントID=変数6番のセルフスイッチAをON
$gameSelfSwitches.setValue([$gameVariables.value(5),$gameVariables.value(6),A], true);
□応用:全セルフスイッチを初期化
$gameSelfSwitches.clear();
マップ切り替えで更新処理後に反映
□応用:現マップの現IDを操作
$gameSelfSwitches.setValue([this._mapId,this._eventId,A〜D], true/false);
マップ切り替えで画面更新後に反映
■タイマーの操作
$gameTimer.start(フレーム);
始動:
・1秒は60フレーム
・画面上にタイマーが表示されカウントダウンが始まる
$gameTimer.stop();
停止:
・カウントダウン停止し、タイマーが消える
□応用:変数10のフレーム秒からカウントアップ
変数10番に毎秒1を足すカウントアップタイマー
以下の内容をコモンイベントの並列処理で実行する
◆スクリプト:$gameVariables.setValue(10,0)//変数10番に0を入れる
◆スクリプト:$gameTimer.start($gameVariables.value(10));//タイマーを開始
◆ループ
◆スクリプト:this.wait(60);//60フレーム=1秒ウェイトによりタイマーのカウントダウンを止める
◆スクリプト:$gameVariables.setValue(10,$gameVariables.value(10)+60);//止めている間に60=1秒を変数10番に加算
◆スクリプト:$gameTimer.start($gameVariables.value(10));//変数10番をタイマーに表示するためタイマーを再起動しループする
◆
:以上繰り返し
■遠景の変更
$gameMap.changeParallax("画像ファイル名",横方向にループする,縦方向にループする, 横方向のスクロール速度, 縦方向のスクロール速度);
横方向にループする:ループ→true ループしない→false
縦方向にループする:ループ→true ループしない→false
横方向のスクロール速度:フレーム(右から左の場合は正の値、右から左の場合は負の値、小数点以下も設定可)
縦方向のスクロール速度:フレーム(下から上の場合は正の値、上から下の場合は負の値、小数点以下も設定可)
※超高速や超スローな動きが設定可能
例.画像BlueSkyを遠景に設定、左から右へ横方向に0.5フレームの速度で動かす
◆スクリプト:$gameMap.changeParallax("BlueSky",true,false,-0.5,0);
■ピクチャの移動/ピクチャの回転/ピクチャの色調変更/ピクチャの消去
次の記事を参照
スクリプトを活用したピクチャの管理
https://fanblogs.jp/tabirpglab/archive/1075/0
今回は目的に沿って調べたので項目が偏っていますが、必要に応じてバトル関連や、データベース周りの部分も調べたいと思います。
以下サイト様が充実していますので、情報が必要な方はあわせてご覧ください。
謝辞:
RMMV Script Calls
https://goo.gl/3mSSGX
ツクールMVスクリプトリファレンスwiki
http://rpgmaker-script-wiki.xyz/mvscriptwiki.php
RPGツクールMV プラグインコマンド集リファレンス
https://docs.google.com/spreadsheets/d/1rOIzDuhLC6IqJPEFciYOmXWL_O7X9-hMValMs7DpWCk/edit#gid=1183699632
簡単なプラグインを作ってみよう 2(スマイル工房様)
http://blog.livedoor.jp/trb_surasura/archives/8842701.html
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7177073
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック