eramakerではおそらくキャラクタ作成用の配列が100個しか用意されていません。
そのため、chara3.csvとchara03.csvとchara3B.csvでそれぞれ別のキャラを定義しても一人しか有効になりません。
Emueraではキャラクタはメモリが許す限りいくらでも定義できます。
また、“chara*.csv”に該当すればchara101.csv、charaABC.csvなどどんなファイルでも読みに行きます。
キャラの番号が重複し、ADDCHARA又はADDSPCHARAの際に複数の候補がある場合、先に読み込まれた方のみが有効になります。
A:10 = 1,2,3 DA:0:0 = 1,2,3
上のように書いた場合、A:10〜A:12にそれぞれ1,2,3の値が代入されます
下のような多次元配列では、DA:0:0〜DA:0:2にそれぞれ1,2,3の値が代入されます
DA:0:0〜DA:0:99の次にDA:1:0に代入することはなく、配列外参照エラーになります
ただし、複合代入演算には使えません(A += 1,2,3 などは不可)。
また、文字列型配列変数への代入に一括代入を用いる場合、文字列式を用いた代入を行わなくてはなりません
;STR:20に「いちご,メロン,ブルーハワイ」という文字列が代入される STR:20 = いちご,メロン,ブルーハワイ ;STR:20〜STR22にそれぞれ「いちご」「メロン」「ブルーハワイ」が代入される STR:20 '= "いちご", "メロン", "ブルーハワイ"
以下の変数について、引数を*.csvで定義した文字列にして呼び出すことができます。
Emueraの新規変数についての詳細はEmueraで追加された拡張文法 - 定数・変数をご覧ください。
ITEM (item.csv) ITEMSALES (item.csv) LOSEBASE (base.csv) BASE (base.csv) MAXBASE (base.csv) ABL (abl.csv) TALENT (talent.csv) EXP (exp.csv) MARK (mark.csv) RELATION (chara*.csv) UP (palam.csv) DOWN (palam.csv) PALAM (palam.csv) JUEL (palam.csv) GOTJUEL (palam.csv) STAIN (stain.csv) SOURCE (source.csv) EX (ex.csv) NOWEX (ex.csv) TEQUIP (tequip.csv) EQUIP (equip.csv) FLAG (flag.csv) TFLAG (tflag.csv) CFLAG (cflag.csv) STR (strname.csv) SAVESTR (savestr.csv) 以下はEmueraから追加された変数 ITEMPRICE (item.csv) DOWNBASE (base.csv) CUP (palam.csv) CDOWN (palam.csv) TCVAR (tcvar.csv) TSTR (tstr.csv) CSTR (cstr.csv) CDFLAG (cdflag1.csv, cdflag2.csv) GLOBAL (global.csv) GLOBALS (globals.csv)
例えばabl.csvに“2,技巧”という定義があれば、以下の4つの行は同じ意味になります。
ABL:技巧 += 1 ABL:2 += 1 ABL:"技巧" += 1 ABL:(ABLNAME:2) += 1
RELATIONについてはNAME、CALLNAMEのいずれでも指定できます。
同名で複数の定義がある場合、先に定義されている方が呼ばれます。
例えばabl.csvに“2,技巧”と“4,技巧”があり、“2,技巧”の方が前の行で定義されているならば、“ABL:技巧”は“ABL:2”になります。
文字列は式や変数でも可能です。その場合は以下のように()を付けてください。
ABL:(RESULTS:0) = ABL:(RESULTS:0) + 1
()を省略した場合、アイテム名と変数名が同一になる場合があります。その場合は変数が優先されます。
例えばabl.csvに“0,ローター”という定義がある場合、
@HOGE
#DIM ローター, 0
ローター = 1
PRINTFORML {ABL:ローター}
この場合、0番目のABLではなく1番目のABLであると解釈されます。
同様に、アイテム名が数値の場合、数値としての解釈が優先されます。
例えばabl.csvに“0,10”という定義をしABL:10を参照した場合は0番目のABLとは解釈されず10番目のABLとなります。
これはchara*.csv内の定義においても使用できます。
例えばabl.csvに“2,技巧”という定義があれば、以下の2つの行は同じ意味になります。
能力,2,2 能力,技巧,2
ただし、相性(RELATION)には使えません。
chara*.csvを読んでいる段階ではシステムがcharaの名前とNOの対応を把握していないためです。
EmueraではcsvフォルダにVariableSize.csvという名前のファイルを置くことで既存の変数の要素数を指定できます。
また、要素数に-1を指定することにより、ERB中でのその変数の使用を禁止することができます。
禁止設定された変数をERB中で代入や参照するとエラーになります。 禁止設定された変数をシステムが必要とする場合、代入処理は無視され、値は常に-1と扱われます。
(MONEYやNEXTCOMを禁止した場合に発生する状況です)
ローカル変数(局所変数)です。
LOCALは整数、LOCALSは文字列となります
サイズは基本はLOCALが1000、LOCALSが100です。
また、「#LOCALSIZE <設定する要素数>」および「#LOCALSSIZE <設定する要素数>」
によって関数ごとに個別に要素数を変更できます。(ただし設定できる値は0より大きい整数)
セーブはされません。
@EVENTFIRST LOCAL:10 = 123 CALL FUNC001 PRINTV LOCAL:10 WAIT @FUNC001 LOCAL:10 = 567 RETURN
上のコードのPRINTVの結果は“123”になります。
FUNC001の中でLOCAL:10を変更していますが、EVENTFIRST内のLOCALには変更が及びません。
多くの言語のローカル変数とは異なり、関数の呼び出しの際に初期化はされません。
内部的には“LOCAL@関数名”という変数を作成しています。
なのでイベント関数など同じ名前の関数が複数ある場合は共用です。また、再帰的に呼び出された場合は同じ変数をつかうことになります。
LOCAL@EVENTFIRST:10 = 567のように他の関数用の変数も呼び出せますが推奨しません(デバッグ用の機能です)。
なお、他の関数のものを呼び出す時に、呼び出し先関数名に演算子等が含まれているとエラーとなります
ローカル変数です。
ARGは整数、ARGSは文字列となります
サイズは基本はARGが1000、ARGSが100でVariableSize.csvで変更できます。
また、関数の引数で定義された分だけを問題なく使えるだけの要素数を自動で確保します。(VariableSize.csvで指定した数未満にはなりません)
@FUNC002, ARG:0, ARG:1, ARG,1100 LOCAL = ARG:0 * ARG:1 / 100 RETURN LOCAL
この場合、ARGの要素数は本来1000ですが、@FUNC002においてARGの要素数は0〜1100の1101となります。
関数における引数指定のために使うことを想定しているので、それ以外の用途に用いると可読性が下がるかもしれません。
(ユーザー定義のプライベート変数)
特定の関数中で定義#DIMまたは#DIMSを用いて定義した変数はプライベート変数であるため、ローカル変数と同様に扱えます。
詳しくはユーザー定義の変数を参照してください。
異なるセーブデータ間で共有することができる変数です。
GLOBALは整数、GLOBALSは文字列となります
サイズは基本はGLOBALが1000、GLOBALSが100でVariableSize.csvで変更できます。
他のデータと一緒にはセーブ・ロードされません。
グローバル変数をセーブするにはSAVEGLOBAL命令を使います。
SAVEGLOBALを行うと、“global.sav”にGLOBALとGLOBALSが保存されます。
書き込むときに既に“global.sav”がある場合、上書きします
LOADGLOBAL命令により、“global.sav”からGLOBALとGLOBALSを読み込めます。
LOADGLOBALは@EVENTFIRSTおよび@EVENTLOADのタイミングで行うことを勧めます。
GLOBAL、GLOBALSを経由すれば異なるセーブデータ間でデータを共有することができます。
ERH中で定義“#DIM GLOBAL”または“#DIMS GLOBAL”を用いて定義した変数はグローバル変数となります。
また、“#DIM SAVEDATA GLOBAL”とすることでセーブされるグローバル変数となります。
詳しくはヘッダーファイル(ERH)を参照してください。
NAMEやCALLNAMEと同様のセーブされる文字列型変数です。
chara*.csvでは“NICKNAME”、“MASTERNAME”または“あだ名”、“主人の呼び方”として指定します。
セーブされる文字列配列変数です。
CFLAGの文字列版です。
chara*.csvでは“CSTR”として指定します。
数値型配列変数です。
それぞれ、UP、DOWN、LOSEBASE、TFLAGのキャラクタ変数版として使用することが想定されています。
そのため初期化タイミングやセーブの可不可もこれらの変数と同じです。
ただし、CUPとCDOWNはUPCHECK命令の代わりにCUPCHECK命令を使います。
数値型キャラクター三次元配列変数です。
CDFLAG:MASTER:0:2
などのように第一引数がキャラ登録番号なのは従来のキャラクター変数と同じですが、
第二引数と第三引数が必要になります。
(ユーザー定義のキャラクタ変数)
ERH中で定義“#DIM CHARADATA”または“#DIMS CHARADATA”を用いて定義した変数はキャラクタ変数となり、CFLAGなどと同様自由に扱えます。
詳しくはヘッダーファイル(ERH)を参照してください。
各csvで定義された値を参照するための変数です。
使い方は例えばTALENTNAMEとtalent.csvの関係と同じです。
全て代入不可でセーブされない1次元配列変数です。
csvで定義されていない場合、0または空文字列を返します。
変数名 ファイル 型 要素数 ITEMPRICE item.csv 整数型 1000 TRAINNAME train.csv 文字列型 1000 BASENAME base.csv 文字列型 100 EQUIPNAME equip.csv 文字列型 100 TEQUIPNAME tequip.csv 文字列型 100 STAINNAME stain.csv 文字列型 1000 EXNAME ex.csv 文字列型 100 SOURCENAME source.csv 文字列型 100 FLAGNAME flag.csv 文字列型 10000 TFLAGNAME tflag.csv 文字列型 1000 CFLAGNAME cflag.csv 文字列型 1000 TCVARNAME tcvar.csv 文字列型 100 STRNAME strname.csv 文字列型 20000 TSTRNAME tstr.csv 文字列型 100 CSTRNAME cstr.csv 文字列型 100 SAVESTRNAME savestr.csv 文字列型 100 CDFLAGNAME1 cdflag1.csv 文字列型 1 CDFLAGNAME2 cdflag2.csv 文字列型 1 GLOBALNAME global.csv 文字列型 100 GLOBALSNAME globals.csv 文字列型 100
cstr.csv等とstr.csvの役割を混同しないでください。
str.csvは変数STRに代入される値を決めるファイルですが、cstr.csvはCSTRNAMEを定めるファイルです。
STRNAMEを定めるファイルはstrname.csvとなっています。str.csv及びstrname.csvの使い方に注意してください。
gamebase.csvで定義された値を参照するための変数です。
すべて非配列、代入不可、セーブされない変数です。
変数名 キーワード 型 GAMEBASE_AUTHOR 作者 文字列型 GAMEBASE_INFO 追加情報 文字列型 GAMEBASE_YEAR 製作年 文字列型 GAMEBASE_TITLE タイトル 文字列型 GAMEBASE_GAMECODE コード 整数型 GAMEBASE_VERSION バージョン 整数型 GAMEBASE_ALLOWVERSION バージョン違い認める 整数型 GAMEBASE_DEFAULTCHARA 最初からいるキャラ 整数型 GAMEBASE_NOITEM アイテムなし 整数型
Emueraのウィンドウのタイトルバーに表示されている文字列です。
非配列の文字列型変数です。初期値はgamebase.csvの“ウィンドウタイトル”に設定された値です。
“ウィンドウタイトル”が設定されていなければ“タイトル”と“バージョン”から生成します。
“タイトル”も設定されていない場合、“Emuera”になります。
お金の単位が記録された変数です。
非配列の文字列型変数で、代入不可、セーブされない変数です。
初期値は_Replace.csvにて設定される“お金の単位”に設定された値です。
“お金の単位”が設定されていない場合、eramakerと同じ“$”になります。
DRAWLINE命令を行ったときに表示される文字列が記録された変数です。
非配列の文字列型変数で、代入不可、セーブされない変数です。
初期値は_Replace.csvにて設定される“DRAWLINE文字”に設定された値を繰り返したものです。
そのため“DRAWLINE文字”に設定された値そのままの文字列が入っているわけではありません。
“DRAWLINE文字”が設定されていない場合、eramakerと同じ、例えば
最後にロードしてデータの情報を参照するための変数です。
参照はできますが代入はできません。
全て初期値は-1または空文字列です。
ロードした時に更新され、RESETDATAやメニューの“タイトルに戻る”を実行すると初期値に戻ります。
最後にロードしたデータのバージョン(gamebase.csvで定義する値)
最後にロードしたデータの番号(save*.savの*に相当する番号)
テキスト(PUTFORMで追加するテキスト。SAVEDATA_TEXT)
セーブデータに保存され、セーブ/ロード画面で表示されるテキストです。
ロード後にLASTLOAD_TEXTで参照できるテキストでもあります。
参照も代入も可能です。
@SAVEINFOが呼ばれる時に現在時刻を表す文字列が代入され、PUTFORMで追記することができる文字列です。
@SAVEINFO中でこの文字列に直接代入することで時刻表示もカスタマイズできます。
SAVEGAMEとPUTFORMを使わない(SAVELOAD.ERBを使う場合)には出番がありません。
ERH中で定義“#DIM SAVEDATA”または“#DIMS SAVEDATA”を用いて定義した変数はセーブ可能な広域変数となります。
ただし、“#DIMS SAVEDATA”を用いてセーブ可能な多次元広域変数を定義する場合、オプション「セーブデータをバイナリ形式で保存する」が有効になっている必要があります。
詳しくはヘッダーファイル(ERH)を参照してください。
※この変数はobsoleteです。代わりに#DIM、#DIMSを使用して用途に応じた名前を付けることを検討してください。
詳しくはユーザー定義の変数を参照してください。
固定長の整数型二次元配列です。
DITEMTYPE:1:2 のように呼び出します。引数は省略できません。
eramakerの二重配列は第一引数にはキャラクタ登録番号を指定するのでCHARANUMによって配列の大きさが異なります。
DITEMTYPEなどの二次元配列はVariableSize.csvで指定した大きさのまま変化することはありません。
VARSIZE命令の対象にした場合、RESULT:0とRESULT:1にそれぞれ要素数が代入されます。
VariableSize.csvで DITEMTYPE,100,200としているとDITEMTYPE:99:199まで使用でき、VARSIZE命令ではRESULT:0とRESULT:1に100と200が代入されます。
※この変数はobsoleteです。代わりに#DIM、#DIMSを使用して用途に応じた名前を付けることを検討してください。
詳しくはユーザー定義の変数を参照してください。
固定長の整数型三次元配列です。
TA:1:2:3 のように呼び出します。引数は省略できません。
サイズは標準では100×100×100です。つまりTA:99:99:99まで使えます。
VariableSize.csvでサイズを変更することが可能ですが、100万を超えるサイズは指定できません。
VARSIZE命令の対象にした場合、RESULT:0とRESULT:1とRESULT:2にそれぞれの要素数が代入されます。
ver1.808以降、定義#DIMまたは#DIMSを用いて定義した変数を多次元とすることができるようになりました。
詳しくはユーザー定義の変数を参照してください。
デバッグ変数はデバッグ用の情報を提供するための変数です。
デバッグ変数はデバッグモードで起動したときのみ意味のある値を返します。
通常モードで起動したときには空文字列又は0を返します。
全て名前の前と後ろにアンダースコア“_“が2つ付いています。
一次元読み取り専用変数です。
現在実行中のスクリプトのファイル名を返します。
ファイル名はエラー情報などと同じようにフォルダ構造及び拡張子までを含む形式です。
システム入力待ち中にデバッグコマンドや変数ウォッチから参照した場合など、
現在実行中のスクリプトがない場合は空文字列を返します。
一次元読み取り専用変数です。
現在実行中のスクリプトの行番号を返します。
行番号はエラー情報などと同じように1から始まる数字です。
現在実行中のスクリプトがない場合は-1を返します。
一次元読み取り専用変数です。
現在実行中の関数名を返します。
関数名は”@“及び引数のリストを含みません。
現在実行中のスクリプトがない場合は空文字列を返します。
文字列型1次元配列です。一次元配列で、セーブはされません。
TFLAGと同じタイミングで初期化されます。
乱数の状態を記憶するための配列です。数値型の一次元配列で代入可、セーブされます。
DUMPRANDによって記録され、INITRANDによって読み出されます。
これまでにPRINTした行数を返す変数です。
LINECOUNTは起動直後から改行(ウインドウ幅による改行を含まない)のたび+1、CLEARLINEした数だけ-されます。
ログバッファー(標準5000)をあふれたことによる削除によっては変動しません。
非配列の数値型変数で、代入・セーブ共に不可能です。
また、行の数え方はCLEARLINEと同様です。
以下、私家改造版1809+v2に添付のreadmeより
○TINPUT系がタイムアウトしたかをチェックする変数ISTIMEOUT追加 TINPUT系が呼び出された時に0に初期化され、タイムアウトすると1となります。
ver1815現在、この変数は利用不能な可能性があります。
数値型変数の定義域最大値、最小値という定数が記録されている非配列の数値型変数で、代入・セーブ共に不可能です。
デバッグ変数ではないので普通に起動した場合でも使用できます。
ERH中で定義#DIMまたは#DIMSを用いて定義した変数は広域変数となり、一文字変数(Aなど)同様自由に扱えます。
詳しくはヘッダーファイル(ERH)を参照してください。
ERH中および特定の関数中で、定義#DIMまたは#DIMSを用いて定義した変数は1次元配列の定数となり、代入できない変数として扱えます。
詳しくはユーザー定義の変数を参照してください。
特定の関数中で定義”#DIM REF”または“#DIMS REF”を用いて定義した変数は参照型変数となります。
詳しくはユーザー定義の変数を参照してください。
NAME・CALLNAMEには代入できます。RAND・CHARANUMへの代入は禁止されています。
| 変数名 | 型 | 配列 | 代入 | セーブ | 禁止 | 初期値 | 初期化されるタイミング | 備考 |
|---|---|---|---|---|---|---|---|---|
| RESULT | 整数 | 一次元 | ○ | ○ | × | - | - | - |
| RESULTS | 文字列 | 一次元 | ○ | × | × | - | - | - |
| A〜Z | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| COUNT | 整数 | 一次元 | ○ | ○ | × | - | - | COUNT:0はREPEATにおいてカウンターとして使用される |
| DAY | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| TIME | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| MONEY | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| MASTER | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| TARGET | 整数 | 一次元 | ○ | ○ | × | :0 = 1 | - | - |
| ASSI | 整数 | 一次元 | ○ | ○ | ○ | :0 = -1 | - | - |
| PLAYER | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| ASSIPLAY | 整数 | 一次元 | ○ | ○ | ○ | :0 = 0 | BEGIN TRAIN | - |
| SELECTCOM | 整数 | 一次元 | ○ | ○ | × | - | - | - |
| PREVCOM | 整数 | 一次元 | ○ | ○ | ○ | :0 = -1 | BEGIN TRAIN | - |
| NEXTCOM | 整数 | 一次元 | ○ | ○ | ○ | :0 = -1 | BEGIN TRAIN | - |
| LOSEBASE | 整数 | 一次元 | ○ | ○ | ○ | 全て0 | @SHOW_USERCOM終了時 | BASENAMEによって要素の指定ができる |
| UP | 整数 | 一次元 | ○ | ○ | ○ | 全て0 | @SHOW_USERCOM終了時 UPCHECK時 | PALAMNAMEによって要素の指定ができる |
| DOWN | 整数 | 一次元 | ○ | ○ | ○ | 全て0 | @SHOW_USERCOM終了時 UPCHECK時 | PALAMNAMEによって要素の指定ができる |
| PALAMLV | 整数 | 一次元 | ○ | ○ | × | _replace.csv "PALAMLVの初期値" | - | - |
| EXPLV | 整数 | 一次元 | ○ | ○ | × | _replace.csv "EXPLVの初期値" | - | - |
| EJAC | 整数 | 一次元 | ○ | ○ | ○ | :0 = 10000 | - | - |
| FLAG | 整数 | 一次元 | ○ | ○ | ○ | - | - | FLAGNAMEによって要素の指定ができる |
| TFLAG | 整数 | 一次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN | TFLAGNAMEによって要素の指定ができる |
| ITEM | 整数 | 一次元 | ○ | ○ | ○ | - | - | ITEMNAMEによって要素の指定ができる |
| ITEMSALES | 整数 | 一次元 | ○ | ○ | ○ | - | - | ITEMNAMEによって要素の指定ができる |
| BOUGHT | 整数 | 一次元 | ○ | ○ | ○ | - | - | - |
| PBAND | 整数 | 一次元 | ○ | ○ | ○ | :0 = _replace.csv "PBANDの初期値" | - | - |
| CHARANUM | 整数 | 無次元 | × | × | × | - | - | どんな要素を指定してもキャラの登録数が返ってくる。 |
| RAND | 整数 | 無次元 | × | × | × | - | - | RAND:XのXが0や負の値の場合エラーとなるように それ以外の場合0〜(要素数-1)までのランダムな値が返ってくる。 |
| STR | 文字列 | 一次元 | ○ | × | ○ | STR.CSV | - | STRNAMEによって要素の指定ができる |
| SAVESTR | 文字列 | 一次元 | ○ | ○ | ○ | - | - | SAVESTRNAMEによって要素の指定ができる |
| NO | 数値 | キャラ+無次元 | ○ | ○ | × | - | - | CHARA**.CSVで「番号,**」により指定する |
| ISASSI | 数値 | キャラ+無次元 | ○ | ○ | × | - | - | CHARA**.CSVで「助手,1」と指定することで初期状態から助手として扱われる |
| NAME | 文字列 | キャラ+無次元 | ○ | ○ | × | - | - | CHARA**.CSVで「名前,**」により指定する |
| CALLNAME | 文字列 | キャラ+無次元 | ○ | ○ | × | - | - | CHARA**.CSVで「呼び名,**」により指定する |
| BASE | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | ADDCHARA時に全要素がMAXBASEと同じ値になる BASENAMEによって要素の指定ができる |
| MAXBASE | 数値 | キャラ+ー次元 | ○ | ○ | ○ | — | - | CHARA**.CSVで「基礎,*,**」により指定する BASENAMEによって要素の指定ができる |
| ABL | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「能力,*,**」により指定する ABLNAMEによって要素の指定ができる |
| TALENT | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「素質,*」により指定する 「素質,*,**」のように3番目の値も指定できるように TALENTNAMEによって要素の指定ができる |
| EXP | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「経験,*,**」により指定する EXPNAMEによって要素の指定ができる |
| MARK | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「刻印,*,**」により指定する MARKNAMEによって要素の指定ができる |
| RELATION | 数値 | キャラ+ー次元 | ○ | ○ | ○ | replace.csv "RELATIONの初期値" | - | CHARA**.CSVで「相性,*,**」により指定する NAMEまたはCALLNAMEによって要素の指定ができる |
| JUEL | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「珠,*,**」により指定できるように PALAMNAMEによって要素の指定ができる |
| CFLAG | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「フラグ,*,**」により指定する CFLAGNAMEによって要素の指定ができる |
| EQUIP | 数値 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「装着物,*,**」により指定できるように EQUIPNAMEによって要素の指定ができる |
| TEQUIP | 数値 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN | TEQUIPNAMEによって要素の指定ができる |
| PALAM | 数値 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN | PALAMNAMEによって要素の指定ができる |
| STAIN | 数値 | キャラ+ー次元 | ○ | ○ | × | _replace.csv "汚れの初期値" | BEGIN TRAIN | STAINNAMEによって要素の指定ができる |
| EX | 数値 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN | EXNAMEによって要素の指定ができる |
| SOURCE | 数値 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN @SOURCE_CHECK終了時 | SOURCENAMEによって要素の指定ができる |
| NOWEX | 数値 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | @EVENTCOM直前 | @USERCOM前には更新されない EXNAMEによって要素の指定ができる |
| GOTJUEL | 数値 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN | PALAMNAMEによって要素の指定ができる |
| ABLNAME | 文字列 | 一次元 | × | × | ○ | ABL.CSV | - | - |
| TALENTNAME | 文字列 | 一次元 | × | × | ○ | TALENT.CSV | - | - |
| EXPNAME | 文字列 | 一次元 | × | × | ○ | EXP.CSV | - | - |
| MARKNAME | 文字列 | 一次元 | × | × | ○ | MARK.CSV | - | - |
| PALAMNAME | 文字列 | 一次元 | × | × | ○ | PALAM.CSV | - | - |
| ITEMNAME | 文字列 | 一次元 | × | × | ○ | ITEM.CSV | - | - |
| NOITEM | 整数 | 一次元 | ○ | ○ | ○ | :0 = gamebase.csv "アイテムなし" | - | 0と1以外も指定できる アンダーライン付の部分はeramakerとEmueraで仕様が異なる部分である Emuera専用変数 |
| LOCAL | 整数 | 一次元 | ○ | × | ○ | - | - | #LOCALSIZEによって関数ごとに要素数が変化 |
| LOCALS | 文字列 | 一次元 | ○ | × | ○ | - | - | #LOCALSSIZEによって関数ごとに要素数が変化 |
| ARG | 整数 | 一次元 | ○ | × | ○ | 任意 | 関数が呼び出された時※ | ※引数に設定されている場合のみ 関数ごとに引数で定義された分だけの要素数を確保 |
| ARGS | 文字列 | 一次元 | ○ | × | ○ | 任意 | 関数が呼び出された時※ | ※引数に設定されている場合のみ 関数ごとに引数で定義された分だけの要素数を確保 |
| (Private) | 任意 | 任意 | 任意 | × | × | 任意 | ゲーム開始 関数が呼び出された時※ | ※引数に設定されている場合のみ 関数中の#DIMまたは#DIMSで定義 |
| (Refer) | 任意 | 任意 | ※ | ※ | × | - | - | ※参照先に依存 関数中の"#DIM REF"または"#DIMS REF"で定義 |
| (Wide_area) | 任意 | 任意 | 任意 | 任意 | × | 任意 | ゲーム開始 | ERH中の#DIMまたは#DIMSで定義 |
| GLOBAL | 整数 | 一次元 | ○ | ※ | × | - | - | ※SAVEGLOBALでセーブ、LOADGLOBALでロードする GLOBALNAMEによって要素の指定ができる |
| GLOBALS | 文字列 | 一次元 | ○ | ※ | × | - | - | ※SAVEGLOBALでセーブ、LOADGLOBALでロードする GLOBALSNAMEによって要素の指定ができる |
| LINECOUNT | 整数 | 無次元 | × | × | × | - | - | - |
| ISTIMEOUT | 整数 | 無次元 | × | × | × | 0 | TINPUT系命令実行時 | TINPUT系命令がタイムアウトした場合1が代入される |
| INT_MAX | 整数 | 無次元 | × | × | × | 9223372036854775807 | - | - |
| INT_MIN | 整数 | 無次元 | × | × | × | -9223372036854775808 | - | - |
| RANDDATA | 整数 | 一次元 | ○ | ○ | × | - | - | - |
| TSTR | 文字列 | 一次元 | ○ | × | ○ | 全て空文字列 | BEGIN TRAIN | TSTRNAMEによって要素の指定ができる |
| DA | 整数 | 二次元 | ○ | ○ | ○ | - | - | - |
| DB | 整数 | 二次元 | ○ | ○ | ○ | - | - | - |
| DC | 整数 | 二次元 | ○ | ○ | ○ | - | - | - |
| DD | 整数 | 二次元 | ○ | ○ | ○ | - | - | - |
| DE | 整数 | 二次元 | ○ | ○ | ○ | - | - | - |
| DITEMTYPE | 整数 | 二次元 | ○ | ○ | ○ | - | - | - |
| TA | 整数 | 三次元 | ○ | ○ | ○ | - | - | - |
| TB | 整数 | 三次元 | ○ | ○ | ○ | - | - | - |
| NICKNAME | 文字列 | キャラ+無次元 | ○ | ○ | × | - | - | CHARA**.CSVで「あだ名,**」により指定する |
| MASTERNAME | 文字列 | キャラ+無次元 | ○ | ○ | × | - | - | CHARA**.CSVで「主人の呼び方,**」により指定する |
| DOWNBASE | 整数 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | @SHOW_USERCOM終了時 | BASENAMEによって要素の指定ができる |
| CUP | 整数 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | @SHOW_USERCOM終了時 UPCHECK時 | PALAMNAMEによって要素の指定ができる |
| CDOWN | 整数 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | @SHOW_USERCOM終了時 UPCHECK時 | PALAMNAMEによって要素の指定ができる |
| TCVAR | 整数 | キャラ+ー次元 | ○ | ○ | ○ | 全て0 | BEGIN TRAIN | TCVARNAMEによって要素の指定ができる |
| CSTR | 文字列 | キャラ+ー次元 | ○ | ○ | ○ | - | - | CHARA**.CSVで「CSTR,*,**」により指定する CSTRNAMEによって要素の指定ができる |
| CDFLAG | 整数 | キャラ+二次元 | ○ | ○ | ○ | - | - | CFDLAGNAME1およびCDFLAGNAME2によって要素の指定ができる 要素数の初期設定値が1・1であることに注意 |
| ITEMPRICE | 整数 | 一次元 | × | × | ○ | item.csv | - | ITEMNAMEによって要素の指定ができる |
| TRAINNAME | 文字列 | 一次元 | × | × | ○ | train.csv | - | - |
| BASENAME | 文字列 | 一次元 | × | × | ○ | base.csv | - | - |
| EQUIPNAME | 文字列 | 一次元 | × | × | ○ | equip.csv | - | - |
| TEQUIPNAME | 文字列 | 一次元 | × | × | ○ | tequip.csv | - | - |
| STAINNAME | 文字列 | 一次元 | × | × | ○ | stain.csv | - | - |
| EXNAME | 文字列 | 一次元 | × | × | ○ | ex.csv | - | - |
| SOURCENAME | 文字列 | 一次元 | × | × | ○ | source.csv | - | - |
| FLAGNAME | 文字列 | 一次元 | × | × | ○ | flag.csv | - | - |
| TFLAGNAME | 文字列 | 一次元 | × | × | ○ | tflag.csv | - | - |
| CFLAGNAME | 文字列 | 一次元 | × | × | ○ | cflag.csv | - | - |
| TCVARNAME | 文字列 | 一次元 | × | × | ○ | tcvar.csv | - | - |
| STRNAME | 文字列 | 一次元 | × | × | ○ | strname.csv | - | str.csvで指定するのはSTRの中身であって要素名ではない |
| TSTRNAME | 文字列 | 一次元 | × | × | ○ | tstr.csv | - | - |
| CSTRNAME | 文字列 | 一次元 | × | × | ○ | cstr.csv | - | - |
| SAVESTRNAME | 文字列 | 一次元 | × | × | ○ | savestr.csv | - | - |
| CDFLAGNAME1 | 文字列 | 一次元 | × | × | ○ | cdflag1.csv | - | - |
| CDFLAGNAME2 | 文字列 | 一次元 | × | × | ○ | cdflag2.csv | - | - |
| GLOBALNAME | 文字列 | 一次元 | × | × | ○ | global.csv | - | - |
| GLOBALSNAME | 文字列 | 一次元 | × | × | ○ | globals.csv | - | - |
| 文字列 | 無次元 | × | × | × | gamebase.csv "作者" | - | - | |
| GAMEBASE_INFO | 文字列 | 無次元 | × | × | × | gamebase.csv "追加情報" | - | - |
| GAMEBASE_YEAR | 文字列 | 無次元 | × | × | × | gamebase.csv "製作年" | - | - |
| GAMEBASE_TITLE | 文字列 | 無次元 | × | × | × | gamebase.csv "タイトル" | - | - |
| GAMEBASE_GAMECODE | 整数 | 無次元 | × | × | × | gamebase.csv "コード" | - | - |
| GAMEBASE_VERSION | 整数 | 無次元 | × | × | × | gamebase.csv "バージョン" | - | - |
| GAMEBASE_ALLOWVERSION | 整数 | 無次元 | × | × | × | gamebase.csv "バージョン違い認める" | - | - |
| GAMEBASE_DEFAULTCHARA | 整数 | 無次元 | × | × | × | gamebase.csv "最初からいるキャラ" | - | - |
| GAMEBASE_NOITEM | 整数 | 無次元 | × | × | × | gamebase.csv "アイテムなし" | - | - |
| WINDOW_TITLE | 文字列 | 無次元 | ○ | × | × | gamebase.csv "ウィンドウタイトル"※ | - | ※ない場合は"タイトル"と"バージョン"から生成 "タイトル"もない場合は「Emuera」 |
| MONEYLABEL | 文字列 | 無次元 | × | × | × | _replace.csv "お金の単位"※ | - | ※ない場合は「$」 |
| DRAWLINESTR | 文字列 | 無次元 | × | × | × | _replace.csv "DRAWLINE文字"※ | - | ※ない場合は「-」の繰り返し |
| LASTLOAD_VERSION | 整数 | 無次元 | × | × | × | -1 | ゲーム開始 RESETDATA時 | ロード時に値が更新される |
| LASTLOAD_NO | 整数 | 無次元 | × | × | × | -1 | ゲーム開始 RESETDATA時 | ロード時に値が更新される |
| LASTLOAD_TEXT | 文字列 | 無次元 | × | × | × | 空文字列 | ゲーム開始 RESETDATA時 | ロード時に値が更新される |
| SAVEDATA_TEXT | 文字列 | 無次元 | ○ | ※ | × | ※※ | @SAVEINFO開始時 | ※セーブデータのタイトルとして保存される ※※現在時刻を表す文字列 |
#DIM および #DIMS を利用することで好きな変数を定義することが可能です。
関数内で定義した変数はその関数内でのみ使用可能なプライベート変数に、
ヘッダーファイル(ERH)内で定義した変数はERB中の全ての箇所から参照できる広域変数になります。
その変数を定義したい関数の宣言の下に「#DIM(S) <変数名>, <要素数>{, <要素数>{, <要素数>}}」を記述します。
<変数名>は関数名と同様に、先頭が数字でなく、記号は“_“のみで構成された任意の文字列です。
<要素数>はすべて1〜1000000の範囲内の任意の整数または定数式です。省略した場合、1となります。
<要素数>をいくつ与えたかによって、定義される変数の次元が変化します。最大は三次元で、四次元以上の変数を定義することはできません。
#DIM(S)によるプライベート変数は単一関数中に複数定義できます。
これにより、<変数名>で指定した名前の変数がその関数内で使用可能になります。
変数は<要素数>で指定した要素数で代入可能、セーブはされません。初期値は0または空文字列です。
#DIMで定義すると整数型変数に、#DIMSで定義すると文字列型変数になります。
#DIM(S)で定義した変数はその関数の引数に指定することも可能です。初期値も設定できます。
@FIND_CSTR(KEY, VALUE)
#FUNCTION
#DIM LCOUNT
#DIM KEY
#DIMS VALUE
SIF KEY < 0 || KEY >= VARSIZE("CSTR")
RETURNF -1
FOR LCOUNT, 0, CHARANUM
SIF LCOUNT == MASTER
CONTINUE
SIF CSTR:LCOUNT:KEY == VALUE
RETURNF LCOUNT
NEXT
上のスプリクトのように、用途に合わせた変数名をつけ、適切な要素数を設定することで
連続的でないLOCALの多用による可読性の低下を改善することができるかもしれません。
1次元配列変数を宣言する際、初期値を定義することができます。
初期値を定義した配列の要素数は省略することができ、その場合初期値の数が自動的に配列の要素数になります。
配列の要素数を省略しない場合はその数字が配列の要素数になります。
要素数が省略されておらず、かつ初期値の数が要素数より多い場合にはエラーになります。
;要素数を省略したためHOGEの要素数は3 #DIM HOGE = 1,2,3 ;要素数を省略しないためPUGEの要素数は100 #DIM PUGE,100 = 4,5,6 ;エラー(初期値の数が指定した要素数より多い) #DIM HIGE,1 = 7,8,9 ;文字列変数でも可能(文字列式で指定) #DIMS SHOGE = "A", "B", "C"
なお、多次元配列には初期値を定義できません。
「#DIM(S) DYNAMIC <変数名>, <要素数>」のように変数名の前にDYNAMICを入れると、定義された変数は動的に確保されます。
具体的には関数が呼ばれたときに確保され、関数が終了したときに変数とその中の値は消滅します。
(RESTART命令は「関数の最初に戻る命令」であるため、動的に確保した変数であってもリセットされることはありません)
関数中に自分自身を呼出(再帰)した場合も再帰した回数だけ変数が確保されるため再帰処理の挙動が安定します。
ただしDYNAMICを入れない場合(静的変数)に比べ動作が遅くなります。
1次元配列変数を定義する際に変数名の前にCONSTを入れると、1次元配列の定数が定義されます。
初期値同様に、1次元配列変数のみ定義することができます。
定数の宣言には必ず初期値が必要で、また途中で代入して変更することはできません。
またCONSTはその性質上、GLOBAL、SAVEDATA、REF、DYNAMICキーワードと同時には使用できません。
なお、配列の要素数を省略せずに指定することもできますが、要素数と初期値の数が一致しない場合エラーになります。
;1次元定数配列の定義 #DIM CONST HOGE = 1,2,3 ;エラー(初期値の数と要素数が一致しない) #DIM CONST PUGE,100 = 4,5,6 ;文字列変数でも可能(文字列式で指定) #DIMS CONST SHOGE = "A", "B", "C"
変数名の前にREFキーワードを用いることで、参照型変数を定義できます。
整数型1〜3次元配列、文字列型1〜3次元配列はそれぞれ以下のように宣言します。
#DIM REF HOGE1DIM,0 #DIM REF HOGE2DIM,0,0 #DIM REF HOGE3DIM,0,0,0 #DIMS REF PUGE1DIM,0 #DIMS REF PUGE2DIM,0,0 #DIMS REF PUGE3DIM,0,0,0
カンマの数があっていれば0は省略してもかまいません。1次元配列の場合はカンマも省略できます。
参照型変数は実体を持たず、参照型変数を操作するとREF命令(ver1.815現在は利用不能)又は参照渡しにより渡された変数が代わりに操作されることになります。
参照渡しの詳細は関数-引数の参照渡しを確認してください。
ヘッダーファイル(ERH)内に#DIM(S)を記述した場合、ERB中で定義するプライベート変数とは異なり、
ERB中の全ての箇所から参照できる広域変数になります。
プライベート変数とは異なりDYNAMIC、STATICの区別はなく、REFを用いた参照型変数を定義することもできませんが、CONSTを用いた定数は同様に定義できます。
関数中におけるDIMにはない機能としてセーブされる変数やグローバル変数、キャラ変数を定義することが可能です。
詳しくはヘッダーファイル(ERH)の項目をご確認ください。
以下のように、命令と同じ名前の変数を定義することはできません。
;エラー #DIM PRINTFORM #DIM SELECTCASE #DIM CALL #DIM RETURN #DIM GOTO #DIM SQRT #DIM DATAFORM #DIM NOSKIP #DIM FUNC #DIM ENDFUNC
関数名・プリプロセッサと同じ名前の変数は定義できますが、推奨できません。
;推奨しない #DIM EVENTFIRST #DIM COMF32 #DIM COMABLE15 #DIM SHOW_ABLUP_SELECT #DIM DIM #DIM PRI #DIM ONLY #DIM SKIPSTART
LOCAL@HOGEのあるLOCALと異なり、他の関数のプライベート変数を参照したり、代入したりする方法はありません。
関数ごとに個別にLOCALおよびLOCALSの要素数を指定するためのプリプロセッサです。
定数式の結果は0より大きい整数である必要があり、それ以外もしくは変数を含んだ式や解釈できない文字列が与えられた場合は無視されます。
無視された場合またはこのプリプロセッサを使用しなかった場合は通常通りVariableSize.csvの設定値を使用します。
イベント関数にこのプリプロセッサを使用した場合、一番最初に実行されるものの設定が使用されます(ver1800現在)。
ユーザー定義変数宣言です。ERB中の特定の関数内で使用することで、その関数内でのみ使用可能な数値型変数を定義できます。
詳しくはユーザー定義の変数を参照してください。
また、ERH中で使用することで、すべての関数で値を共有できる数値型変数を定義できます。
詳しくはファイル構成・定義を参照してください。
ユーザー定義変数宣言です。ERB中の特定の関数内で使用することで、その関数内でのみ使用可能な文字列型変数を定義できます。
詳しくはユーザー定義の変数を参照してください。 また、ERH中で使用することで、すべての関数で値を共有できる文字列型変数を定義できます。
詳しくはファイル構成・定義を参照してください。
VARI 変数名 VARS 変数名