用意するもの

eramakerバリアント
シンプルなものはいじる箇所が少なくてわかりやすい。
機能が豊富なものは複雑だけど、慣れるといじりがいがあって楽しい。
……でも結局は、自分が好きなものを選ぶのが最強。
使いやすいテキストエディタ
まずはじめに言っておく。メモ帳はやめとけ。
あれはテキストファイルを読むための最低限の機能しかないツール。スクリプトを書くのにはまったく向いてない。
スクリプトを編集するなら、少なくとも以下の機能はほしい。
  • 全角スペース、タブ、EOFをはっきり見えるように画面に表示する
  • コメントやキーワードを色分けする
  • 改行したとき、インデントを自動的に入れてくれる
これらは巷のテキストエディタならたいてい完備している機能で、どれもメモ帳にはない機能。

サクラエディタ・K2Editor・EmEditor・Visual Studio Codeあたりを使うといいと思う。

あと、CSVを編集するのにExcel等の表計算ソフトを使うのもやめた方がいい。
文字列を読み書きした時に自動的に""を付けるなどの変換が、かえって邪魔になるからだ。
GREPのできる検索ツール
簡単に言うと、GREPとはフォルダにある全ファイルの中から特定の文字列を検索する機能のこと。
要はWindows検索の「ファイルに含まれる単語または文」の強化版だ。詳しくはググれ。
こういう検索ツールがあると、例えば
「この関数、どのファイルのどこで呼ばれてるんだ?」とか
「この素質、どこでどんな風に使われてるんだろう?」とか
「あれ、このフラグ、もうどこかで使われてたっけ?」のような疑問が検索一発で解決する。
絶対必須ではないけれど、あると重宝するツール。

ベクター辺りで「GREP」で検索すれば、該当するツールは一杯見つかる。使いやすいのを選ぼう。

改造してみよう

最初にこれだけは肝に銘じよう
何かする時はバックアップを忘れずに。
基本的なファイル構造を理解する
readmeなどのドキュメントを除けば、eramakerの各フォルダの中身はいたってシンプルだ。
  • 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の○と同じ数字にしておけばいい。
  • 名前
  • 呼び名
「○○調教中」などのメニュー表示には名前が、調教中の口上などには呼び名が使われる。
名前にはフルネームを、呼び名にはあだ名や短縮した呼び方を入れておく。
  • 基礎
基礎,0は体力の最大値、基礎,1は気力の最大値。
主人公や男キャラにしかないが、基礎,2は射精のゲージ。
基礎,2以降は無い場合は大抵適切な値で初期化されるので、わざわざ無いキャラに足さなくてもいい。
  • 素質
素質の有無。素質,○,で「○番の素質がある」ということになる。
番号はTalent.csvと対応した値なので、Talent.csvを見ながら書き換えよう。
  • 能力
初期能力。能力,○,△で「○番の能力が△レベル」ということ。
能力の番号はAbl.csv。
  • 経験
初期経験。経験,○,△で「○番の(ry
これは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を開いて、上の方に
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 = 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行を書き込む。
@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 / 2

Menu

メニュー







他OSで動かす方法



リンク

どなたでも編集できます