見出し画像

SRPG Studio プラグイン 任意のシーンを呼び出すイベントコマンドの作り方

こんにちは熱帯魚ことRYBAです。

好きなシーン呼び出したい方向け

作り方に興味ねーよという方はPluginのところまで飛んでください。

では呼び出し方法の作り方を解説します。
今回の例では任意のシーンは(経験値配分画面)とします。

オリジナルイベントコマンドの作成方法

実際にイベントコマンドを作る前に
オリジナルイベントコマンドの作成方法を解説

(function() {

	var alias1 = ScriptExecuteEventCommand._configureOriginalEventCommand;
	ScriptExecuteEventCommand._configureOriginalEventCommand = function(groupArray) {
		alias1.call(this, groupArray);
	
		groupArray.appendObject(Nettaigyo.ExperienceDistributionCallEventCommand);
	};

})();

Nettaigyo.ExperienceDistributionCallEventCommand

が今回作るオリジナルなイベントコマンドです。
(ここのクラス名は競合しなければ任意の名前でよい)

_configureOriginalEventCommand に
自作のコマンドを登録する必要があるのです。

任意のシーンを呼び出すためのクラスを作成

1.BaseEventCommandを継承して呼び出し用のクラスを作成します。
  この時メンバ変数_baseScreenを宣言しときます(初期値はnullでOK)

Nettaigyo.ExperienceDistributionCallEventCommand = defineObject(BaseEventCommand,
    _baseScreen: null,

2.enterEventCommandCycleは下記の記述でOK
  何をしてるかというと初期化と完了用の関数を呼び出ししてます。

enterEventCommandCycle: function() {
	this._prepareEventCommandMemberData();
		
	if (!this._checkEventCommand()) {
    	return EnterResult.NOTENTER;
	}
		
	return this._completeEventCommandMemberData();
},

3._prepareEventCommandMemberDataに初期化に必要な処理を記述
  ここが初期化の処理になります。
  経験値配分画面のクラス名はExperienceDistributionScreen
  別のシーンを呼び出したい場合、この記述を変更する

_prepareEventCommandMemberData: function() {
	this._baseScreen = createObject(ExperienceDistributionScreen);
},

4._completeEventCommandMemberDataの処理を記述
  この処理が完了したのちにシーンが実行されます

	_completeEventCommandMemberData: function() {
		var screenParam;
		
		screenParam = this._createScreenParam();
		this._baseScreen.setScreenData(screenParam);
		this._doCurrentAction();
		
		return EnterResult.OK;
	},

5.getEventCommandName関数の戻り値を設定します。
  これが実際にイベントコマンドで指定する文字列になります。

	getEventCommandName: function() {
		return 'Nettaigyo.ExperienceDistributionCallEventCommand';
	}

6.残りを記述
  基本コピペでいい。一応独自の処理を追加する場合、
  なるべく毎ループ処理に計算等を入れない方がよい。

moveEventCommandCycleは操作・完了判定用(毎ループ処理)
drawEventCommandCycleは描画用(毎ループ処理)
_checkEventCommandは基本trueを返す記述でOK
isEventCommandSkipAllowedはスキップ可能かどうか(falseでOK)
_createScreenParamはシーンの引数(イベントコマンドを複数作って引数で処理を分岐させたい時に記述する。よくわからなければこのままでOK)
	moveEventCommandCycle: function() {

		if (this._baseScreen.moveScreenCycle() === MoveResult.END) {
			return MoveResult.END;
		}
		
		return MoveResult.CONTINUE;

	},
	drawEventCommandCycle: function() {
		this._baseScreen.drawScreenCycle();
	},
	_checkEventCommand: function() {
		return true;
	},
	isEventCommandSkipAllowed: function() {
		return false;
	},
	_createScreenParam: function() {
		return {};
	},

これでクラスが完成する

使い方

スクリプトの実行を選ぶ

画像2

イベントコマンド呼び出しにチェックボックス
オブジェクト名を指定する
上記手順5のままならば
Nettaigyo.ExperienceDistributionCallEventCommand
と入力

画像1

これでイベントコマンドから任意のシーンを呼び出せます。

なお、この手法で呼び出すと下の説明部分が消えます。

応用

自作したシーンもこの方法で呼び出すことができます。

※シーンの自作方法は今後別の記事で紹介するかもしれません。

Plugin

まとめ

もしかしたら公式が対応してしまうかもしれませんが
一応作り方まで記載しておきました。

今後は作成方法も合わせて
Pluginをひっそりと公開していきます。

良かったらフォローお願い致します!
Twitterのほうもよろしくお願い致します!

参考までにこちらもどうぞ↓


この記事が気に入ったらサポートをしてみませんか?