SRPG Studio ~ シミュレーションRPG作成ソフト

メソッドの書き換え

Scriptフォルダの中にどのようなフォルダが存在するかを把握したら、 いよいよスクリプトファイルの中身を解析することになります。 スクリプトファイルはゲームの動作を司るため、 ファイルの中身を変更すればゲームの動作も変更されますが、 Scriptフォルダ内のファイルを直接修正してはならないことに注意してください。 理由は、Scriptフォルダ内のファイルは、プログラムのアップデートによって更新される可能性があり、 それによって修正した内容がアップデートで上書きされてしまうためです。 たとえば、次のようなコードを修正したいと仮定します。

var DefineControl = {
	getMaxSaveFileCount: function() {
	return 50;
},
		

上記はsingleton-wrapper.jsの一部であり、セーブファイルの上限を決定しているコードです。 このコードは、たとえば次のように修正できるように思えます。

var DefineControl = {
	getMaxSaveFileCount: function() {
	return 99;
},
		

これによって、確かにセーブファイルの上限は50から99になりますが、 修正を加えたsingleton-wrapper.jsは、アップデートによって初期化されることがあるため、 ファイルに対して直接修正することは推奨されません。

コードの正しい修正とは、上述のようなファイルの書き換えではなく、 プラグインとしての追加という形で行います。 プロジェクトフォルダにはScriptフォルダの他にPluginフォルダがありますが、 このフォルダ内に自作のスクリプトファイルを含んだフォルダを配置することになります。

フォルダ名については、コード作成者のwebサイトにするなど、自由に決定できます。 mysiteフォルダを作成したとしてPluginフォルダの中に配置します。

配置が完了すれば、mysiteフォルダ内にスクリプトファイルを作成します。 ファイル名については、自由に決定して問題ありません。 ファイルの中身には、プラグインとして追加するコードを記述します。

DefineControl.getMaxSaveFileCount = function() {
		return 99;
}
		

上記コードをファイルに保存し、ゲームを実行すれば、 セーブファイルの上限が99になったことを確認できます。

一言にスクリプトを記述するといっても、 独自に用意したオブジェクトを使用するタイプと、 既存のオブジェクトを修正するタイプがありますが、 今回の場合は後者にあたります。 そして、後者の場合は競合という問題について意識しておく必要があります。 仮に今回のスクリプトを導入したとしても、他に導入したスクリプトがreturn 70;とするコードを記述していれば、 そちらが優先される可能性があるためです。 スクリプトの優先順位についてはinfo.iniのOriginalOrderで指定可能であり、 個別に指定されていない場合は、名前順にロードされます。

今回の書き換えは、オブジェクトのメソッドを対象にしているため比較的規模は小さいといえますが、 ときにはオブジェクト全体を書き換えることもあります。 公式サンプルのcustom-map.jsはこれに該当します。

var ReinforcementAppearFlowEntry = defineObject(BaseFlowEntry,
		

RestScene = とすることによって、既存のオブジェクトを置き換えていますから、 既存のオブジェクトの内容は完全に失われることになります。

目次

スクリプト・マニュアル

ヘルプ・マニュアル