eramakerのよいところは、スクリプトがテキスト形式で読めるので、だれでも簡単に編集ができること。
ただ遊ぶだけでもいいけど、せっかくだからいじってみようぜ!
ただ遊ぶだけでもいいけど、せっかくだからいじってみようぜ!
まずはじめに言っておく。メモ帳はやめとけ。
あれはテキストファイルを読むための最低限の機能しかないツール。スクリプトを書くのにはまったく向いてない。
スクリプトを編集するなら、少なくとも以下の機能はほしい。
サクラエディタ・K2Editor・EmEditor・Visual Studio Codeあたりを使うといいと思う。
あと、CSVを編集するのにExcel等の表計算ソフトを使うのもやめた方がいい。
文字列を読み書きした時に自動的に""を付けるなどの変換が、かえって邪魔になるからだ。
あれはテキストファイルを読むための最低限の機能しかないツール。スクリプトを書くのにはまったく向いてない。
スクリプトを編集するなら、少なくとも以下の機能はほしい。
- 全角スペース、タブ、EOFをはっきり見えるように画面に表示する
- コメントやキーワードを色分けする
- 改行したとき、インデントを自動的に入れてくれる
サクラエディタ・K2Editor・EmEditor・Visual Studio Codeあたりを使うといいと思う。
あと、CSVを編集するのにExcel等の表計算ソフトを使うのもやめた方がいい。
文字列を読み書きした時に自動的に""を付けるなどの変換が、かえって邪魔になるからだ。
簡単に言うと、GREPとはフォルダにある全ファイルの中から特定の文字列を検索する機能のこと。
要はWindows検索の「ファイルに含まれる単語または文」の強化版だ。詳しくはググれ。
こういう検索ツールがあると、例えば
「この関数、どのファイルのどこで呼ばれてるんだ?」とか
「この素質、どこでどんな風に使われてるんだろう?」とか
「あれ、このフラグ、もうどこかで使われてたっけ?」のような疑問が検索一発で解決する。
絶対必須ではないけれど、あると重宝するツール。
ベクター辺りで「GREP」で検索すれば、該当するツールは一杯見つかる。使いやすいのを選ぼう。
要はWindows検索の「ファイルに含まれる単語または文」の強化版だ。詳しくはググれ。
こういう検索ツールがあると、例えば
「この関数、どのファイルのどこで呼ばれてるんだ?」とか
「この素質、どこでどんな風に使われてるんだろう?」とか
「あれ、このフラグ、もうどこかで使われてたっけ?」のような疑問が検索一発で解決する。
絶対必須ではないけれど、あると重宝するツール。
ベクター辺りで「GREP」で検索すれば、該当するツールは一杯見つかる。使いやすいのを選ぼう。
readmeなどのドキュメントを除けば、eramakerの各フォルダの中身はいたってシンプルだ。
CSVフォルダの中には、キャラクターの初期データ、それに能力・素質・経験・アイテムなど
システムが使うデータがCSV形式(,で区切られたテキスト)のファイルに書かれている。
eramakerは起動したとき、まずこのCSVファイルを読み込む。
ERBフォルダの中には、実際の動作を記したスクリプトが、ERB(ERamaker Basic。実際はただのテキスト)
ファイルに書かれている。eramakerは起動してCSVを読み込み終わったら、次はこのERBファイルを読み込む。
平たく言えば、データを書き換えたいならCSVフォルダの中身を、
処理を書き換えたいならERBフォルダの中身をいじればいいということになる。
(実際はバリアントによって違ったり、色々複雑だが)
CSVとERBは読み込まれ方が違うので注意しないといけない。
CSVは、"元々あるファイル名(Chara○.csvやTalent.csvなど)しか読み込まれない。"
そのため、CSVフォルダ内にa.csvとか勝手に作っても読み込まれないので安心だ。
これに対してERBは、ERBフォルダ内にある拡張子.ERBのファイルが全部読み込まれる。
バックアップをERBフォルダ内に置く場合は、拡張子を変えておこう。
- eramaker.exe
- CSVフォルダ
- ERBフォルダ
CSVフォルダの中には、キャラクターの初期データ、それに能力・素質・経験・アイテムなど
システムが使うデータがCSV形式(,で区切られたテキスト)のファイルに書かれている。
eramakerは起動したとき、まずこのCSVファイルを読み込む。
ERBフォルダの中には、実際の動作を記したスクリプトが、ERB(ERamaker Basic。実際はただのテキスト)
ファイルに書かれている。eramakerは起動してCSVを読み込み終わったら、次はこのERBファイルを読み込む。
平たく言えば、データを書き換えたいならCSVフォルダの中身を、
処理を書き換えたいならERBフォルダの中身をいじればいいということになる。
(実際はバリアントによって違ったり、色々複雑だが)
CSVとERBは読み込まれ方が違うので注意しないといけない。
CSVは、"元々あるファイル名(Chara○.csvやTalent.csvなど)しか読み込まれない。"
そのため、CSVフォルダ内にa.csvとか勝手に作っても読み込まれないので安心だ。
これに対してERBは、ERBフォルダ内にある拡張子.ERBのファイルが全部読み込まれる。
バックアップをERBフォルダ内に置く場合は、拡張子を変えておこう。
CSVフォルダのChara○.csvを開いてみる。,で区切られた文字列が色々書かれているはずだ。
Chara0.csvは主人公、Chara1.csv以降が調教対象のキャラデータになる。
これはよほどのことがない限り、Chara○.csvの○と同じ数字にしておけばいい。
名前にはフルネームを、呼び名にはあだ名や短縮した呼び方を入れておく。
主人公や男キャラにしかないが、基礎,2は射精のゲージ。
基礎,2以降は無い場合は大抵適切な値で初期化されるので、わざわざ無いキャラに足さなくてもいい。
番号はTalent.csvと対応した値なので、Talent.csvを見ながら書き換えよう。
能力の番号はAbl.csv。
これはexp.csvを見るべし。
○番のキャラ→このキャラ であって、 ○番のキャラ←このキャラ ではないことに注意。
書かれてないキャラは100%、つまり±0。
とりあえず何を意味するのかわからない内は書き換えないのが無難。
気力を10倍にしたり、あなたとの相性を最高にしたり、
[処女]にしたり、[恋慕]を付けたり、[快感の否定]を消したり…好きにやってみよう。
保存する時には注意が必要。各行の行末を必ず改行で終わらせること。
ちなみに[EOF]はファイルの終端の意味。上で挙げたテキストエディタなら画面表示できるはずだ。
Chara0.csvは主人公、Chara1.csv以降が調教対象のキャラデータになる。
- 番号
これはよほどのことがない限り、Chara○.csvの○と同じ数字にしておけばいい。
- 名前
- 呼び名
名前にはフルネームを、呼び名にはあだ名や短縮した呼び方を入れておく。
- 基礎
主人公や男キャラにしかないが、基礎,2は射精のゲージ。
基礎,2以降は無い場合は大抵適切な値で初期化されるので、わざわざ無いキャラに足さなくてもいい。
- 素質
番号はTalent.csvと対応した値なので、Talent.csvを見ながら書き換えよう。
- 能力
能力の番号はAbl.csv。
- 経験
これはexp.csvを見るべし。
- 相性
○番のキャラ→このキャラ であって、 ○番のキャラ←このキャラ ではないことに注意。
書かれてないキャラは100%、つまり±0。
- フラグ
とりあえず何を意味するのかわからない内は書き換えないのが無難。
気力を10倍にしたり、あなたとの相性を最高にしたり、
[処女]にしたり、[恋慕]を付けたり、[快感の否定]を消したり…好きにやってみよう。
保存する時には注意が必要。各行の行末を必ず改行で終わらせること。
○○,△△,×× ○○,□□,◇◇[EOF]このように最後の行が改行されていないと、その行の内容は書かれていないことになる。
○○,△△,×× ○○,□□,◇◇ [EOF]しっかり改行すること。
ちなみに[EOF]はファイルの終端の意味。上で挙げたテキストエディタなら画面表示できるはずだ。
まず、Chara○.csvファイルを新しく作る。○が既存のキャラと被らないようにするのは当然だが、
○は0〜99しかeramakerが読み込んでくれないので、それにも注意すること。
あとは前項を見て、キャラデータを入力する。
だが、これだけではゲーム内にキャラは追加されない。
次に変更するのはItem.csv。開いて下のほうを見ると、キャラ名の付いたアイテムがずらっと並んでいるはず。
ここに、今作成したキャラをゲーム内で購入するためのアイテムを追加する。
アイテム番号,アイテム名,価格 の形式になっている。
キャラ番号とアイテム番号には規則性があるので、それをちゃんと守ること。
(例:キャラ番号:5→対応するアイテム:55 キャラ番号:6→対応するアイテム:56…)
これだけでは終わらない。次はERBフォルダの中を開く。
中にSHOP2.ERBがあるかどうかで、この後の作業が変わる。
○SHOP2.ERBが無い場合
SYSTEM.ERBを開いて、上の方に
○SHOP2.ERBがある場合(大人数版処理を採用している)
SYSTEM.ERBを開くのは同じだが、探すのは
○は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) = (さっき追加したアイテムの価格)を書き足す。
またまたSYSTEM.ERBを開く。最初の方に
MONEYには現在の所持金が入っている。このMONEYのような値の入れ物を変数という。
MONEY = 10000は「MONEYが10000だ」という数学の等式ではなく、「変数MONEYに10000という数値を入れる」という操作を表す。
この操作のことを代入という。 = はeramakerでは(というか、プログラミング言語一般では)代入を意味する記号なのだ。
この少し上に
@EVENTFIRSTは、eramakerを起動して[0]最初から始めるを選ぶと自動的に呼び出される関数。
つまり、ゲームの初期設定やゲームモードの選択をするのに適した関数というわけだ。
MONEY = 10000のような記述があるので、数字を好きな値に書き換える。
MONEYには現在の所持金が入っている。このMONEYのような値の入れ物を変数という。
MONEY = 10000は「MONEYが10000だ」という数学の等式ではなく、「変数MONEYに10000という数値を入れる」という操作を表す。
この操作のことを代入という。 = はeramakerでは(というか、プログラミング言語一般では)代入を意味する記号なのだ。
この少し上に
@EVENTFIRSTという行があるはずだ。このような記述から始まるスクリプトの部分を関数という。
@EVENTFIRSTは、eramakerを起動して[0]最初から始めるを選ぶと自動的に呼び出される関数。
つまり、ゲームの初期設定やゲームモードの選択をするのに適した関数というわけだ。
上記を応用すれば、何度買い物をしても所持金を減らさず、一定値にし続けることもできる。
要は、ゲーム中に何度も呼び出される関数にMONEY = 10000と書き込めばいいわけだ。
ここでは、ショップ画面に移動した時に所持金を一定値にする方法を説明する。
SHOP.ERBの最初の方にある@EVENTSHOPや@SHOW_SHOPが、ショップ画面に移るたびに呼び出される関数。
ここの中にMONEY = 10000と書けば、ショップ画面になるたびに所持金が10000になる。
「それだと買い物中にお金が尽きたらどうするんだ」という欲張りな奴は、下のほうにある@EVENTBUY関数に書き込めばいい。
これはなにかアイテムが買われるたびに呼び出される関数なので、関数の最後で所持金を設定すれば
何を買ってもお金が減らなくなる。
あるいは、以下のような方法でもいい。
ERBフォルダの中に、新しいERBファイルを作る(新規作成→テキストファイル→拡張子ごとリネームでOK)。
拡張子が.ERBなら名前はなんでもいい。
そしてその中に以下の3行を書き込む。
@EVENTSHOPや@EVENTBUY、さっきの@EVENTFIRST等はイベント関数と呼ばれる特別な関数で、
同じ名前の関数がいくつあっても全部実行されるという特徴がある。
なので、あるタイミング(調教開始時、調教コマンド実行時、調教終了時etc.)で
数パターンのイベントを起こしたい場合に大変重宝する。一番いい例が口上だ。
2行目の#LATERはイベント関数だけで使える性質の設定だ。
#LATERの意味は「@EVENTBUYが複数ある場合、この@EVENTBUYは一番最後に実行する」。
他にも最初に実行させる#PRI、他の同じイベント関数をもう実行させない#SINGLEという性質もある。
要は、ゲーム中に何度も呼び出される関数にMONEY = 10000と書き込めばいいわけだ。
ここでは、ショップ画面に移動した時に所持金を一定値にする方法を説明する。
SHOP.ERBの最初の方にある@EVENTSHOPや@SHOW_SHOPが、ショップ画面に移るたびに呼び出される関数。
ここの中にMONEY = 10000と書けば、ショップ画面になるたびに所持金が10000になる。
「それだと買い物中にお金が尽きたらどうするんだ」という欲張りな奴は、下のほうにある@EVENTBUY関数に書き込めばいい。
これはなにかアイテムが買われるたびに呼び出される関数なので、関数の最後で所持金を設定すれば
何を買ってもお金が減らなくなる。
あるいは、以下のような方法でもいい。
ERBフォルダの中に、新しいERBファイルを作る(新規作成→テキストファイル→拡張子ごとリネームでOK)。
拡張子が.ERBなら名前はなんでもいい。
そしてその中に以下の3行を書き込む。
@EVENTBUY「@EVENTBUYはSHOP.ERBにもうあるじゃん。同じ関数が2個あってもいいの?」いいんです。
#LATER
MONEY = 10000
@EVENTSHOPや@EVENTBUY、さっきの@EVENTFIRST等はイベント関数と呼ばれる特別な関数で、
同じ名前の関数がいくつあっても全部実行されるという特徴がある。
なので、あるタイミング(調教開始時、調教コマンド実行時、調教終了時etc.)で
数パターンのイベントを起こしたい場合に大変重宝する。一番いい例が口上だ。
2行目の#LATERはイベント関数だけで使える性質の設定だ。
#LATERの意味は「@EVENTBUYが複数ある場合、この@EVENTBUYは一番最後に実行する」。
他にも最初に実行させる#PRI、他の同じイベント関数をもう実行させない#SINGLEという性質もある。
SOURCE.ERBの最後の方に以下のような部分がある。
BASE:0、BASE:1はそれぞれ体力、気力を指し、
LOSEBASE:0、LOSEBASE:1はそれぞれ体力減少、気力減少を指す。
そこで次のように2行追加してみる。
/= 2 は2で割るという意味で、以下のようにも書けるがこちらのほうがスマートだろう。
;-------------------------------------------------
;体力・気力の減少
;-------------------------------------------------
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 / 2
最新コメント
2023-02-01
2022-03-31
2022-02-13
2022-02-03
2022-01-27