eramaker era basic変数リスト(暫定版)
このファイルの説明を見るだけではイメージが沸きづらいと思います。まずサンプルゲームをプレイし、その後でサンプルゲームのERBファイルをながめながら見ていくとわかりやすいです。

基本変数

汎用変数

A-Z
・AからZまで、アルファベット一文字の変数です。
・使い捨てのデータ入れとして、好きなように使ってください。ただし、どこで書き換えられるかわからないので長い時間のデータ記憶には向きません。

COUNT
・REPEAT命令を使うとき、繰り返した回数を数える変数です。
・誤動作につながるので、REPEAT〜RENDの内部でCOUNTの中身を書き換えることは避けてください。

RESULT
・さまざまな結果を記録する変数です。
・どこで書き換えられるかわからないので、その場で使うときを除くと別の変数にデータを移して扱うのが望ましいです。

RESULTS(文字列変数)
・さまざまな結果を記録する文字列変数です。
・どこで書き換えられるかわからないので、その場で使うときを除くと別の変数にデータを移して扱うのが望ましいです。

基礎情報変数

DAY
・日付を記録します。単位などは決まっていないので、自由に扱ってかまいません。
TIME
・時刻を記録します。単位などは決まっていないので、自由に扱ってかまいません。
MONEY
・お金を記録します。ショップでの買い物のときにプログラムが参照するので、お金を手に入れたり失ったとき以外はむやみに書き換えないでください。

調教基礎情報変数

MASTER
・主人公のキャラの登録番号を指します。CharaXX.csvで指定した番号とは違うことがあるので注意してください。通常は0です。
TARGET
・調教中のキャラの登録番号を指します。CharaXX.csvで指定した番号とは違うことがあるので注意してください。
ASSI
・助手のキャラの登録番号を指します。CharaXX.csvで指定した番号とは違うことがあるので注意してください。
PLAYER
・調教している人間のキャラの登録番号を指します。通常はMASTERかASSIと一致するはずです。CharaXX.csvで指定した番号とは違うことがあるので注意してください。
CHARANUM
・現在登録されているキャラの数を指します。主人公を含みます。この変数はユーザーが変更できません。

ASSIPLAY
・助手が現在調教しているかどうかです。1なら助手が調教しており、0ならそうではありません。
SELECTCOM
・選択されたコマンドです。TRAIN.CSVで登録したコマンド番号と同じものが入っています。
PREVCOM
・前回選択されたコマンドです。同じコマンドを連続で実行することによるペナルティなどに使用します。

調教変数

LOSEBASE(配列、0〜999)
・調教コマンドによって基礎パラメータがどれだけ失われるかです。通常はLOSEBASE:0が体力の消耗、LOSEBASE:1が気力の消耗です。
UP(配列、0〜999)
・調教コマンドによって調教中パラメータがどれだけ上がるかです。UP:AのAがPALAM.CSVで指定したパラメータ番号になります。
DOWN(配列、0〜999)
・調教コマンドによって調教中パラメータがどれだけ下がるかです。DOWN:AのAがPALAM.CSVで指定したパラメータ番号になります。

PALAMLV(配列、0〜999)
・調教中パラメータのレベルわけの境界値です。調教中パラメータがこの境界値を越えると、調教終了後にもらえる珠の数が飛躍的に多くなります。
EXPLV(配列、0〜999)
・経験のレベルわけの境界値です。経験がこの境界値を超えると、調教の効果が上がることがあります(特にV経験やA経験)。

EJAC
・射精チェックのときに使う一時変数です。可読性のために独立した変数にしてありますが、実質はただのデータ入れです。

フラグ

FLAG(配列、0〜9999)
・ゲームのさまざまな状態を記録します。サンプルゲームではFLAG:0が調教中のキャラを休ませたかどうかの判定に使われています。他にも、イベントが発生したかどうかなどで頻繁に使います。
TFLAG(配列、0〜999)
・ゲームのさまざまな状態を記録します。サンプルゲームではどのように射精させたかの記録や、奉仕系調教を実行したかどうかの記録に使われています。Temporary Flag、もしくはTraining Flagと考えてください。要するに、FLAGよりも一時的な用途に使うフラグです。

キャラデータ

・キャラデータはほとんどが二重配列であり、EXP:1:2のようにしてアクセスします(1番目のキャラの2番目の経験をみる)。
・しかし、EXP:0のように書くこともできます。この場合、EXP:TARGET:0として解釈されます。すなわち、調教中のキャラのデータにアクセスするにはTARGET:を書かなくてもよいということです。

NO(配列、0〜99)
・キャラ番号です。二重配列ではないので、NO:TARGETやNO:ASSIのようにしてアクセスします。
BASE(二重配列、0〜99)
・キャラの基礎パラメータです。サンプルゲームではBASE:0が体力、BASE:1が気力、BASE:2が射精ゲージを表しています。
MAXBASE(二重配列、0〜99)
・キャラの基礎パラメータの最大値です。
ABL(二重配列、0〜99)
・キャラの能力です。ABL.CSVで登録された能力番号でアクセスします。
TALENT(二重配列、0〜999)
・キャラの素質です。TALENT.CSVで登録された素質番号でアクセスします。
EXP(二重配列、0〜99)
・キャラの経験です。EXP.CSVで登録された経験番号でアクセスします。
MARK(二重配列、0〜99)
・キャラの刻印です。MARK.CSVで登録された刻印番号でアクセスします。
RELATION(二重配列、0〜99)
・キャラの刻印です。RELATION:TARGET:3は調教中キャラとキャラ番号3のキャラの相性を指します。キャラの登録番号3のキャラとの相性を指すわけではないことに注意してください。
JUEL(二重配列、0〜199)
・キャラの持っている珠です。PALAM.CSVで登録されたパラメータ番号でアクセスします。
CFLAG(二重配列、0〜999)
・キャラごとのフラグです。キャラごとにさまざまなデータを記録できます。サンプルゲームではCFLAG:0が1であるキャラをSPキャラとしています。
ISASSI(配列、0〜99)
・助手かどうかです。0なら助手ではなく、1なら助手です。二重配列ではないので、ISASSI:TARGETやISASSI:ASSIのようにしてアクセスします。

NAME(文字列変数、配列、0〜99)
・キャラの名前です。二重配列ではないので、NAME:TARGETやNAME:ASSIのようにしてアクセスします。
CALLNAME(文字列変数、配列、0〜99)
・キャラの呼び名です。二重配列ではないので、CALLNAME:TARGETやCALLNAME:ASSIのようにしてアクセスします。

TEQUIP(二重配列、0〜99)
・キャラのつけているアイテムです。調教中バイブを入れるなどしているときに使いますが、キャラ強化アイテムなどにも使えるでしょう。サンプルゲームでは、媚薬を使ったことの判定にも使用しています。
PALAM(二重配列、0〜99)
・キャラの調教中パラメータです。PALAM.CSVで登録されたパラメータ番号でアクセスします。
STAIN(二重配列、0〜99)
・調教により発生した「汚れ」です。フェラチオで射精したり、アナルセックスをしたりすると変化します。サンプルゲームではSTAIN:0は口、STAIN:1は手、STAIN:2はペニス、STAIN:3はヴァギナ、STAIN:4はアナルの汚れを指しています。汚れ表記の詳細はこちらを参照してください。
EX(二重配列、0〜99)
・この調教の間に何回絶頂に達したかです。サンプルゲームではEX:0がC絶頂、EX:1がV絶頂、EX:2がA絶頂です。

SOURCE(二重配列、0〜99)
・このコマンドを実行することによって発生した調教ソースです。内部処理で使っています。COMxx.ERBとSOURCE.ERBを見れば、調教ソースから調教パラメータのUPにつながる流れがわかるでしょう。
NOWEX(二重配列、0〜99)
・このコマンドの間に何回絶頂に達したかです。サンプルゲームではNOWEX:0がC絶頂、NOWEX:1がV絶頂、NOWEX:2がA絶頂です。
GOTJUEL(二重配列、0〜99)
・この調教を終えて獲得した珠です。PALAM.CSVで登録されたパラメータ番号でアクセスします。

アイテムデータ

ITEM(配列、0〜99)
・所持しているアイテムの数です。ITEM.CSVで登録されたアイテム番号でアクセスします。
ITEMSALES(配列、0〜99)
・そのアイテムがショップで売っているかどうかです。1なら売っており、0なら売っていません。ITEM.CSVで登録されたアイテム番号でアクセスします。

BOUGHT
・今何のアイテムを買ったかです。@EVENTBUYで今買ったアイテムをショップから消す場合などに使います。

NOITEM
・GAMEBASE.CSVでアイテムなしを指定すると1になります。その場合、コマンドの実行判定でアイテムの有無を無視するようにします。
PBAND
・ペニスバンドのアイテム番号です。最初は4になっています。ペニスバンドが調教の実行判定に絡むことが多いので独立した変数として扱っています。

名称データ

ABLNAME(文字列変数、配列、0〜99)
・能力の名前です。ABL.CSVで登録されたパラメータ番号でアクセスします。
TALENTNAME(文字列変数、配列、0〜99)
・素質の名前です。TALENT.CSVで登録されたパラメータ番号でアクセスします。
EXPNAME(文字列変数、配列、0〜99)
・経験の名前です。EXP.CSVで登録されたパラメータ番号でアクセスします。
MARKNAME(文字列変数、配列、0〜99)
・刻印の名前です。MARK.CSVで登録されたパラメータ番号でアクセスします。
PALAMNAME(文字列変数、配列、0〜199)
・調教中パラメータの名前です。PALAM.CSVで登録されたパラメータ番号でアクセスします。
ITEMNAME(文字列変数、配列、0〜99)
・アイテムの名前です。ITEM.CSVで登録されたパラメータ番号でアクセスします。

文字列データ

STR(文字列変数、配列、0〜19999)
・文字列データです。STR.CSVのデータがここに格納されます。この変数を改変してもセーブはされないので注意が必要です。
SAVESTR(文字列変数、配列、0〜99)
・文字列データです。ここに記録したデータはセーブのときに保存されます。ずっと使いたい文字列変数はここに格納しましょう。

文字列データ

RAND(擬似配列)
・これは特殊な変数で、乱数を返します。たとえばPRINTV RAND:10とすると、0から9までの数がランダムに表示されます。
・返されるのはRAND:Aの場合0からA-1までの整数であると覚えてください。

キャラの登録番号

キャラの登録番号とキャラ番号の違い

実体のないキャラデータ
・CharaXX.CSVでは「番号」が指定されています。ここで指定された番号が「キャラ番号」です。
・しかし、CharaXX.CSVにいるキャラが調教開始時にすべて実体を持っているわけではありません。ADDCHARAという命令が呼ばれることで、はじめて実体を持つのです。
キャラを登録する
・ゲーム開始時、実体を持っているキャラは主人公のみです。そして、主人公の「キャラの登録番号」は0です。
・ここにADDCHARAで「キャラ番号」が5であるキャラが登録されたとしましょう。このキャラの「キャラ番号」は5ですが、「キャラの登録番号」は主人公の次になるので1です。さらにもう1人「キャラ番号」が7のキャラが加われば、そのキャラの登録番号は2です。
キャラを削除する
・さて、DELCHARAという命令で「キャラの登録番号」が1のキャラを削除したとしましょう。すると、後で加えた「キャラ番号」7のキャラの「登録番号」は1になるのです。
・このように、今登録されているキャラに対して「キャラの登録番号」が0から隙間なく与えられていくということをしっかり覚えておいてください。

汚れについて

汚れデータの特殊性

汚れの種類
・汚れデータはSTAINで管理します。STAIN:TARGET:0なら調教中キャラの口の汚れを指します。
・しかし、ここで考えられる汚れの種類は色々あります。フェラチオすれば精液の汚れが、レズ調教でクンニをすれば愛液の汚れがつくのです。
・サンプルゲームでは、「ヴァギナ(愛液)」「ペニス」「精液」「アナル」の4種類の汚れを想定しています。
汚れデータの記述方法
・さて、この汚れに、1,2,4,8という数値が割り当てられています。つまり、アナルと精液の汚れがあるなら4+8で12。愛液と精液の汚れがあるなら1+4で5といった具合です。
・このように表現すれば、ひとつの変数で4種類の汚れを上手く処理できます。しかし、「口に精液の汚れが加わった」「口に愛液の汚れがあるかどうか判定する」などは従来の+−*/%ではうまくいきません。
汚れデータの判定方法
・そこで、&と|という記号を使います。&&(かつ)と||(または)に似ていますが、これは単独で使います。
・たとえば、STAIN:TARGET:0が12だとしましょう。ここでSTAIN:TARGET:0 & 4とすると、4の部分だけが抽出されます。すなわち、STAIN:TARGET:0 & 4 == 4です。
・次に、STAIN:TARGET:0が1+2+8=11だとしましょう。ここでSTAIN:TARGET:0 & 4とすると、4の部分だけが抽出されます。すなわち、STAIN:TARGET:0 & 4 == 0です。
・こうすれば、どの汚れがあるかどうか簡単に知ることができるわけです。
汚れデータの追加方法
・次に、STAIN:TARGET:0が1+4=5だとしましょう。ここでSTAIN:TARGET:0 | 2とすると、2の部分が追加されます。すなわち、STAIN:TARGET:0 | 2 == 7です。
・そして、STAIN:TARGET:0が1+2+4=7だとしましょう。ここでSTAIN:TARGET:0 | 2とすると、2の部分が追加されます。しかし2の部分はすでに含まれているので、変化しません。すなわち、STAIN:TARGET:0 | 2 == 7です。
・なお、STAIN:TARGET:0 |= 2のように書くこともできます。
・こうすることで、すでに汚れが含まれているかどうかを気にせずに汚れの追加処理が出来ます。

更新履歴

  • 06/05/05 暫定版公開。