アフィリエイト広告を利用しています
検索
言葉を集めて世界を旅する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年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
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

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

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

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