Emueraで追加された記法¶
行末コメント¶
A = B ;AにBを代入
このように行の末尾にコメントを挿入できます
ただし、一部例外があり、PRINT
命令のように引数が単純文字列の命令の場合にはコメント化されず文字列の一部と評価されます
PRINT foobar;ほげほげ
この場合、foobar;ほげほげ
がPRINT
されます
行の連結¶
{
DIM CONST HOGE =
1,2,3,4
}
と書くと#DIM CONST HOGE = 1,2,3,4
と解釈されます
{
、}
の行にはホワイトスペース以外の他の文字が存在してはなりません
改行記号のある位置には半角スペースが補われます
つまり関数名・変数名の途中で行を分割することはできないほか、
PRINT
などを分割すると表示文字列の中に改行だった半角スペースが含まれます
Emueraの文法解釈において行連結処理はコメントの解釈より先に行われます
つまり
{
#DIM CONST HOGE =
1,2,3,4 ;コメント
,5,6,7,8
}
は#DIM CONST HOGE = 1,2,3,4 ;コメント ,5,6,7,8
となり、
`,5,6,7,8
は行末コメントの一部とみなされ無視されます
特別なコメント行¶
;!;
¶
Emuera、eramakerのいずれでも、;
で始まる行はコメント行とみなされますが、Emueraは;!;
で始まる行はコメントではなく有効な行とみなします。
eramakerでは実行してほしくない文を記述する際に使ってください。
例えば@SHOWSHOP
に以下のスクリプトを加えるとEmueraでの動作を禁止できます。
;!;PRINTW このスクリプトはEmueraでは実行できません
;!;QUIT
また、[SKIPSTART]
や[SKIPEND]
と併用することで、以下のスクリプトのようにEmuera以外での動作を禁止できます。
Emuera以外では実行してほしくない文を記述する際に使ってください。
;!;[SKIPSTART]
PRINTW このスクリプトはEmuera以外では実行できません
QUIT
;!;[SKIPEND]
;#;
¶
;#;
で始まる行はデバッグモード時のみ実行されます。
非デバッグモード時ではコメント行と見なされ実行されません。
ただし、DEBUG
系命令は元々非デバッグモード時には無視されるので、;#;
を行頭に付ける必要はありません。
同様にデバッグ変数も非デバッグモード時には空文字列又は0のため、エラーの心配はありません。
デバッグモードについてはこちらを参照してください。
キャラクタ配列¶
eramakerではおそらくキャラクタ作成用の配列が100個しか用意されていません。
そのため、chara3.csv
とchara03.csv
とchara3B.csv
でそれぞれ別のキャラを定義しても一人しか有効になりません。
Emueraではキャラクタはメモリが許す限りいくらでも定義できます。
また、chara*.csv
に該当すればchara101.csv
、charaABC.csv
などどんなファイルでも読みに行きます。
キャラの番号が重複し、ADDCHARA
又はADDSPCHARA
の際に複数の候補がある場合、先に読み込まれた方のみが有効になります。
整数型の値の範囲¶
eramakerで扱える整数は32ビット符号付整数、すなわち-2147483648~2147483647
の範囲です。
Emueraでは吉里吉里と同じく64ビット符号付整数、-9223372036854775808~9223372036854775807
の範囲の値を扱います。
配列変数への一括代入¶
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 '= "いちご", "メロン", "ブルーハワイ"
FORM構文を用いた文字列変数への代入¶
文字列変数への代入の際、PRINTFORM
と同じ形式で代入する文字列を指定できます。
SAVESTR:0 = %RESULTS%
この文でSAVESTR:0
にRESULTS
の中身を代入することができます。
同じ文はeramakerではSAVESTR:0
に%RESULTS%
という文字列そのものを代入したことになります。
Emueraで%RESULTS%
という文字列そのものを代入したい場合、以下のように書いてください。
SAVESTR:0 = \%RESULT\%
\
記号の直後の文字はシステム記号として扱われません。
\
記号自体を文字列に含めたい場合は\\
としてください。
あまりないケースですが、eramakerとEmueraで同じ動作をさせたい場合は以下のように書く必要があります。
;!;SAVESTR:0 = \%RESULT\%
;!;[SKIPSTART]
SAVESTR:0 = %RESULTS%
;!;[SKIPEND]
文字列式を用いた文字列変数への代入¶
ver1813以降のEmueraでは新たに、代入演算子'=
と文字列式を用いて文字列変数への代入を行うことができます。
;「STR = あいう」と同様
STR '= "あいう"
;「STR = %TSTR:0%いろは」と同様
STR '= TSTR:0 + "いろは"
文字列による配列変数の要素の指定¶
以下の変数について、引数を*.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
の対応を把握していないためです。
書式付文字列(FORM構文)拡張¶
PRINTFORM
などでつかわれる書式付文字列のうち、{}
、%%
に表示桁数(文字数)を指定できます。
{変数・数式等,表示桁数, 揃え(LEFT or RIGHT)}
、%変数、文字列式等, 表示桁数, 揃え(LEFT or RIGHT)%
という形式で指定します。
文字数は全角文字を2文字と数えます。
表示桁数(文字数)に足りない部分は半角スペースが追加されます。
通常は右揃えですが、キーワードLEFT
を指定すると左揃えになります。
指定された表示桁数よりもとの桁数の方が大きい場合、そのまま表示します。
例
A = 123456
STR:0 = あいう
PRINTFORML [{A}]
PRINTFORML [{A,10}]
PRINTFORML [{A,10,LEFT}]
PRINTFORML [%STR:0%]
PRINTFORML [%STR:0,10%]
PRINTFORML [%STR:0,10,LEFT%]
PRINTFORML [{A,2}]
PRINTFORML [%STR:0,2%]
結果
[123456]
[ 123456]
[123456 ]
[あいう]
[ あいう]
[あいう ]
[123456]
[あいう]
文字列式中での書式付文字列(FORM
構文)の使用¶
PRINTS
やユーザー定義の式中関数の引数といった文字列式中でFORM
構文を使用するとエラーになります。
そのため文字列式中で書式付文字列を使用する場合、文字列式中で定文字列を使うときに"~"
を使用するのと同じように
@"~"
を使用します。 また、@"~"
の中の文字列が\@~\@
を用いた三項演算子による記載のみである場合、@"~"
を省略して直接\@~\@
と書くことができます
正しい例
;代入はFORM構文
STR:0 = あいう
;加算は文字列式
RESULTS += STR:0
;文字列式に定文字列を使用する例
RESULTS += "えお"
;文字列式にFORM構文を使用する例
PRINTS @"%RESULTS%かきくけこ"
;以下の4行はすべて同じである
PRINTS STR:0 + "!"
PRINTFORM %STR:0%!
PRINTS @"%STR:0%!"
PRINTFORM %STR:0 + "!"%
間違った例
;中身が「RESULTS」になる
STR:0 = RESULTS
;エラーが出る
RESULTS += えお
;エラーが出る
RESULTS += %STR:0%
;「@"」と「"」も表示される
PRINTFORM @"%RESULTS%かきくけこ"
INPUTS
系でのマクロ構文の使用¶
INPUTS
やそれに類する入力受付命令で、マクロ式を用いることができます。
マクロの書式については利用方法のマクロの項目を確認してください。
マクロ構文を使わず、単なる文字列として()
を使用する場合、\
を用いてエスケープしてください。