改造入門¶
元となったページ
eraシリーズを語るスレ まとめWiki V3 改造入門
eraのよいところは、だれでも簡単に編集ができること。
ただ遊ぶだけでもいいけど、せっかくだからいじってみようぜ!
用意するもの¶
era バリアント¶
あなたの弄りたいバリアントを用意しましょう
バックアップは忘れずに
コードエディタ¶
サクラエディタ や Visual Studio Code がおすすめです。
Visual Studio Code(以下VSCode)の方が機能面では便利ですが、
デフォルト設定が英語なのでセットアップが大変かもしれません。
CSVファイルはExecl等の表計算ソフトでも開けますが、 自動的に行う処理が悪さをするので推奨しません。
改造してみよう¶
何かする前にバックアップを忘れずに。¶
基本的なファイル構造を理解する¶
eraの基本的なファイル構造は以下の通り - Emuera◯◯.exe - CSVフォルダ - ERBフォルダ
CSVフォルダには、 キャラクターのステータス、能力、素質、経験、アイテムなど
システムが使うデータがCSV形式(,で区切られたテキスト)で置かれています。
ERBフォルダには、動作を記したプログラムのコードが置かれています。
基本的には キャラクタなどのデータだけを書き換えたいならCSVフォルダの中身を、
処理を書き換えたいならERBフォルダの中身を書き換えることになるでしょう。
CSVは、決まったファイル名(Chara○.csvやTalent.csvなど)しか読み込まれないので、a.csvなどを作っても問題ありませんが、
ERBは、ERBフォルダ内にある拡張子.ERBのファイルが全部読み込まれます
バックアップをERBフォルダ内に置く場合は、拡張子を変えておこう。
キャラクターを編集する¶
CSVフォルダのChara○.csvを開いてみましょう。,で区切られた文字列が色々書かれているはずです。
Chara0.csvは、ほとんどのバリアントでは主人公で、Chara1.csv以降が調教対象のキャラデータになます。
キャラクターのデータは以下の様な順番で、,で区切られて書かれています。
-
番号
キャラ番号。スクリプトで参照します。
多くの場合これは、Chara○.csvの○と同じ数字です。 -
名前
-
呼び名
「○○調教中」などのメニュー表示には名前が、調教中の口上などには呼び名が使われます。
なので、名前にはフルネームを、呼び名にはあだ名や短縮した呼び方を入れておきましょう。 -
基礎
ほとんどのバリアントでは基礎,0は体力の最大値、基礎,1は気力の最大値。
主人公や男キャラにしかないが、基礎,2は射精のゲージ。
基礎,2以降は無い場合は大抵適切な値で初期化されるので、わざわざ無いキャラに足さなくてもいい。 -
素質
素質の有無。素質,○で「○番の素質がある」ということ。
番号はTalent.csvと対応した値なので、Talent.csvを見ながら書き換えましょう。 -
能力
初期能力。能力,○,△で「○番の能力が△レベルある」ということ。
番号はAbl.csvと対応した値なので、Abl.csvを見ながら書き換えましょう。 -
経験
初期経験。経験,○,△で「○番の経験が△ある」ということ。
番号はexp.csvと対応した値なので、exp.csvを見ながら書き換えましょう。 -
相性
バリアントにもよりますが、相性,○,△で「キャラ番号○番のキャラに調教されたときの効果が通常の△%」という意味で使われることが多いです。
○番のキャラ→このキャラ であって、 ○番のキャラ←このキャラ ではないことに注意。
書かれてないキャラは100%、つまり±0。 -
フラグ
スクリプトから参照するためのデータを書く部分です。
バリアントによって全く意味が変わるので、 気力を10倍にしたり、あなたとの相性を最高にしたり、
[処女]にしたり、[恋慕]を付けたり、[快感の否定]を消したり…好きにやってみよう。
新しくキャラクターを追加する¶
この手順はバリアントに大きく依存するため詳しくは解説しません
eratoho系においての例
まず、Chara○.csvファイルを新しく作る。○が既存のキャラと被らないようにするのは当然だが、
○は0~99しかeramakerが読み込んでくれないので、それにも注意すること。
あとは前項を見て、キャラデータを入力する。
だが、これだけではゲーム内にキャラは追加されない。
次に変更するのはItem.csv。開いて下のほうを見ると、キャラ名の付いたアイテムがずらっと並んでいるはず。
ここに、今作成したキャラをゲーム内で購入するためのアイテムを追加します。
アイテム番号,アイテム名,価格 の形式になっています。
キャラ番号とアイテム番号には規則性があるので、それをちゃんと守ること。
(例:キャラ番号:5→対応するアイテム:55 キャラ番号:6→対応するアイテム:56…)
これだけでは終わらない。次はERBフォルダの中を開く。
中にSHOP2.ERBがあるかどうかで、この後の作業が変わます。
○SHOP2.ERBが無い場合
SYSTEM.ERBを開いて、上の方に
>ITEMSALES:51 = 1~~
>ITEMSALES:52 = 1~~
>ITEMSALES:53 = 1~~
> :
という記述があるはずなので、そこに
>ITEMSALES:(さっき追加したアイテムの番号) = 1
を書き足す。これで終了だ。
○SHOP2.ERBがある場合(大人数版処理を採用している)
SYSTEM.ERBを開くのは同じだが、探すのは
>FLAG:1000 = 1000~~
>FLAG:1001 = 500~~
>FLAG:1002 = 300~~
> :
のような記述。ここに、
>FLAG:(キャラ番号+999) = (さっき追加したアイテムの価格)
を書き足す。
所持金を増やす¶
ERB内をMONEY =で検索等してみると、
MONEY = 10000
のような記述があるので、数字を好きな値に書き換えてみましょう
多くのバリアントではMONEYに現在の所持金の値が入っています。このMONEYのような値の入れ物を変数と呼びます。
MONEY = 10000は「MONEYと10000が等しい」という意味ではなく、 「変数MONEYに10000という数値を入れる」という処理を表します。
また、ファイルを探して見ると、
@EVENTFIRST
という行があるはずです。このように@xxxから始まるスクリプトの塊を関数といいます。
@EVENTFIRSTは、[0]最初から始めるを選ぶと呼び出される関数です。
多くの場合、ゲームの初期設定やゲームモードの選択をこの関数で行っています
所持金を減らさない¶
上記を応用すれば、何度買い物をしても所持金を減らさず、一定値にし続けることもできます。
要は、ゲーム中に何度も呼び出される関数にMONEY = 10000と書き込めばいいわけです。
ここでは、ショップ画面に移動した時に所持金を一定値にする方法を説明します。
SHOP.ERB(ファイル名はバリアントによる)の最初の方にある@EVENTSHOPや@SHOW_SHOPが、ショップ画面に移るたびに呼び出される関数。
ここの中にMONEY = 10000と書けば、ショップ画面になるたびに所持金が10000になます。
「それだと買い物中にお金が尽きたらどうするんだ」という欲張りな奴は、下のほうにある@EVENTBUY関数に書き込めばいい。(バリアントによっては別関数の場合もあり)
これはなにかアイテムが買われるたびに呼び出される関数なので、関数の最後で所持金を設定すれば
何を買ってもお金が減らなくなります。
あるいは、以下のような方法でもできます。
ERBフォルダの中に、新しいERBファイルを作る(新規作成→テキストファイル→拡張子ごとリネームでOK)。
拡張子が.ERBなら名前は自由に設定できます。
そしてその中に以下の3行を書き込みます。
@EVENTBUY
LATER¶
MONEY = 10000
「@EVENTBUYはSHOP.ERBにもうあるじゃん。同じ関数が2個あってもいいの?」いいんです。
@EVENTSHOPや@EVENTBUY、さっきの@EVENTFIRST等はイベント関数と呼ばれる特別な関数で、
同じ名前の関数がいくつあっても全部実行されるという特徴があります。
なので、あるタイミング(調教開始時、調教コマンド実行時、調教終了時etc.)で
数パターンのイベントを起こしたい場合に大変重宝します。一番いい例が口上です。
2行目の#LATERはイベント関数だけで使える性質を設定する行です。
#LATERの意味は「@EVENTBUYが複数ある場合、この@EVENTBUYは一番最後に実行する」。
他にも最初に実行させる#PRI、他の同じイベント関数をもう実行させない#SINGLEという性質もあります。
体力・気力の減少を半分にする¶
SOURCE.ERB(ファイル名はバリアントによる)の最後の方に以下のような部分があります。
;-------------------------------------------------
;体力・気力の減少
;-------------------------------------------------
BASE:0 -= LOSEBASE:0
BASE:1 -= LOSEBASE:1
;PRINT 体力-
;PRINTV LOSEBASE:0
;PRINT 気力-
;PRINTVL LOSEBASE:1
BASE:0、BASE:1はそれぞれ体力、気力を指し、
LOSEBASE:0、LOSEBASE:1はそれぞれ体力減少、気力減少を指します。
そこで次のように2行追加してみます。
;-------------------------------------------------
;体力・気力の減少
;-------------------------------------------------
LOSEBASE:0 /= 2 ;追加した部分
LOSEBASE:1 /= 2 ;追加した部分
BASE:0 -= LOSEBASE:0
BASE:1 -= LOSEBASE:1
;PRINT 体力-
;PRINTV LOSEBASE:0
;PRINT 気力-
;PRINTVL LOSEBASE:1
/= 2は2で割るという意味で、以下のようにも書けるがこちらのほうがスマートです。
LOSEBASE:0 = LOSEBASE:0 / 2