Difference between revisions of "Emuera/EmuDic"

From Era Wiki
Jump to: navigation, search
(imported japanese page)
 
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= 一般 =
+
This is a summary of the terms used in this wiki.</br>
== 行末コメント ==
+
I wrote it as a memo because the original coined words have increased with the extension of Emuera.</br>
  
A = B ;AにBを代入
+
==Startup Mode==
 +
===Normal Mode===
 +
This is the mode when Emuera is started normally.</br>
 +
You will be in this mode when you double-click on EmueraXXXX.exe to launch it.
  
このように行の末尾にコメントを挿入できます</br>
+
===Analysis Mode===
ただし、一部例外があり、「PRINT」命令のように引数が単純文字列の命令の場合にはコメント化されず文字列の一部と評価されます
+
This is the mode when a file is passed as a command line argument.</br>
 +
It also becomes this mode when a file is drag and dropped into EmueraXXXX.exe.</br>
 +
In analysis mode, a grammar check is performed for dragged and dropped files.</br>
 +
This allows you to check for grammatical errors in the files you are developing.</br>
 +
However, you will need the CSV folder of the variant you plan to use to check the type of the elements string.</br>
 +
Just drag and drop the file into the EmueraXXXX.exe of the variant you plan to use.</br>
 +
In addition, from 1738g, when "Report is displayed when loading" is enabled in the analysis mode, it is possible to display the report when loading.</br>
 +
The list of functions used in each loaded ERB file is now displayed.</br>
 +
If you have too many functions, increase the number of lines in the log in your config.
  
PRINT foobar;ほげほげ
+
===Debug Mode===
 +
This is the mode when the command is started by passing "-debug" as command line argument. See [[Emuera/debug|Debug Mode]] for details.
 +
[[Category:EmuEra]] [[Category:Contributing]] [[Category:Untranslated]]
 +
==Windows / Dialogs==
 +
===Main Window===
 +
This is the first window that opens when you normally start up.
  
この場合、「foobar;ほげほげ」がPRINTされます
+
===Main Console===
 +
The name of the part of the Main Window that is used for input and output.
  
== 行の連結 ==
+
===Debug Window===
 +
This is a window that can be opened when started in Debug Mode.
  
{
+
===Debug Console===
DIM CONST HOGE =
+
The name of the input/output part that is displayed when the "Console" tab is selected in the Debug Window.
1,2,3,4
 
}
 
  
と書くと「#DIM CONST HOGE = 1,2,3,4」と解釈されます</br>
+
===Configuration Dialog===
'{'、'}'の行にはホワイトスペース以外の他の文字が存在してはなりません</br>
+
It is a dialog that can be opened from the main window menu help or settings.
改行記号のある位置には半角スペースが補われます</br>
 
つまり関数名・変数名の途中で行を分割することはできないほか、</br>
 
PRINTなどを分割すると表示文字列の中に改行だった半角スペースが含まれます</br>
 
Emueraの文法解釈において行連結処理はコメントの解釈より先に行われます</br>
 
つまり
 
  
{
+
===Clipboard Dialog===
#DIM CONST HOGE =
+
It is a dialog that can be opened by Ctrl+C from the main console.
1,2,3,4 ;コメント
 
,5,6,7,8
 
}
 
  
は「#DIM CONST HOGE = 1,2,3,4 ;コメント ,5,6,7,8」となり、</br>
+
==Functions==
「,5,6,7,8」は行末コメントの一部とみなされ無視されます
+
===Commands===
 +
PRINT or WAIT, for example.
  
== 特別なコメント行 ==
+
===Functions===
=== ;!; ===
+
It is a name that is defined in an ERB script with @~~ statements and called with a CALL instruction, etc.</br>
Emuera、eramakerのいずれでも、;で始まる行はコメント行とみなされますが、Emueraは;!;で始まる行はコメントではなく有効な行とみなします。</br>
+
Among the functions that can be used in expressions, those that define their names in sentences @~~ are included.
eramakerでは実行してほしくない文を記述する際に使ってください。</br>
 
例えば@SHOWSHOPに以下のスクリプトを加えるとEmueraでの動作を禁止できます。</br>
 
  
;!;PRINTW このスクリプトはEmueraでは実行できません
+
===Event Functions===
;!;QUIT
+
A function whose name starts with "EVENT" and is called by the system.</br>
 +
If you define more than one, all of them will be called.
  
また、[SKIPSTART][SKIPEND]と併用することで、以下のスクリプトのようにEmuera以外での動作を禁止できます。</br>
+
===Preprocessor===
Emuera以外では実行してほしくない文を記述する際に使ってください。
+
A line in a file in the ERB folder that is processed before any other instruction.</br>
 +
A line that begins with # or consists of a phrase enclosed in [].</br>
 +
Lines that begin with # are divided into attributes and definitions. Please see them for more information.</br>
 +
Lines consisting of words or phrases enclosed in [] represent special blocks.</br>
 +
See the page [[Emuera/exfunc#h3-E7.89.B9.E6.AE.8A.E3.81.AA.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF.E3.82.92.E8.A1.A8.E3.81.99.E8.A1.8C|here]] for more information</br>
  
;!;[SKIPSTART]
+
===Property (Preprocessor)===
PRINTW このスクリプトはEmuera以外では実行できません
+
A preprocessor that determines the type and behavior of a function with a line beginning with a # specified for the function.</br>
QUIT
+
There are #PRI, #LATER, #SINGLE, and #ONLY to control the behavior of when the event function is executed,</br>
;!;[SKIPEND]
+
and #FUNCTION and #FUNCTIONS to specify the type of the function in the expression.</br>
  
=== ;#; ===
+
===Definitions (Preprocessor)===
<nowiki>;#;</nowiki>で始まる行はデバッグモード時のみ実行されます。</br>
+
A preprocessor that defines the name of a variable and its type on a line beginning with #.</br>
非デバッグモード時ではコメント行と見なされ実行されません。</br>
+
Functions include #LOCALSIZE and #LOCALSSIZE to specify the number of elements in a LOCAL or LOCALS variable,</br>
ただし、DEBUG系命令は元々非デバッグモード時には無視されるので、;#;を行頭に付ける必要はありません。</br>
+
<nowiki>#DIM</nowiki> and #DIMS to define a variable, and #DEFINE to define a DEFINE macro in the ERH.</br>
同様にデバッグ変数も非デバッグモード時には空文字列又は0のため、エラーの心配はありません。</br>
 
デバッグモードについては[debug こちら]を参照してください。
 
  
== キャラクタ配列 ==
+
===Functions that can be used in expressions===
eramakerではおそらくキャラクタ作成用の配列が100個しか用意されていません。</br>
+
It is a "function" that can be called from within an expression.</br>
そのため、chara3.csvとchara03.csvとchara3B.csvでそれぞれ別のキャラを定義しても一人しか有効になりません。</br>
+
The "function" includes not only the above functions but also the built-in functions described below.</br>
Emueraではキャラクタはメモリが許す限りいくらでも定義できます。</br>
+
In many programming languages they are simply called "functions".
また、"chara*.csv"に該当すればchara101.csv、charaABC.csvなどどんなファイルでも読みに行きます。</br>
 
キャラの番号が重複し、ADDCHARA又はADDSPCHARAの際に複数の候補がある場合、先に読み込まれた方のみが有効になります。
 
  
== 整数型の値の範囲 ==
+
===Functions in an Expression===
eramakerで扱える整数は32ビット符号付整数、すなわち-2147483648~2147483647の範囲です。</br>
+
Abbreviation for a function that can be used in an expression.</br>
Emueraでは吉里吉里と同じく64ビット符号付整数、-9223372036854775808~9223372036854775807の範囲の値を扱います。
+
It has nothing to do with inexpression functions (anonymous functions) or inline functions in programming languages.
  
 +
===組み込み関数===
 +
式中関数のうち、Emueraにもともと組み込まれていて@~~文による定義なしで使えるものです。</br>
 +
ABS(X)やGETTIME()などのことです。</br>
 +
ややこしいですが、上記の関数の定義には該当しません。</br>
 +
「式中で使える命令」と考えるとわかりやすいかもしれません。
  
== 配列変数への一括代入 ==
+
===ユーザー定義関数===
 +
ユーザーが定義した関数のことです。</br>
 +
ERBスクリプト中で@~~文で名称を定義してCALL命令などで呼び出すもののことです。</br>
 +
つまり上記の関数と同じ概念です。
  
A:10 = 1,2,3
+
===#FUNCTION(S)関数===
DA:0:0 = 1,2,3
+
@~~文で名称を定義し、#FUNCTION(S)属性を持つものです。</br>
 +
関数かつ式中関数である関数です。
  
上のように書いた場合、A:10~A:12にそれぞれ1,2,3の値が代入されます</br>
 
下のような多次元配列では、DA:0:0~DA:0:2にそれぞれ1,2,3の値が代入されます</br>
 
DA:0:0~DA:0:99の次にDA:1:0に代入することはなく、配列外参照エラーになります</br>
 
ただし、複合代入演算には使えません(A += 1,2,3 などは不可)。</br>
 
また、文字列型配列変数への代入に一括代入を用いる場合、[exetc#h4-.E6.96.87.E5.AD.97.E5.88.97.E5.BC.8F.E3.82.92.E7.94.A8.E3.81.84.E3.81.9F.E6.96.87.E5.AD.97.E5.88.97.E5.A4.89.E6.95.B0.E3.81.B8.E3.81.AE.E4.BB.A3.E5.85.A5 文字列式を用いた代入]を行わなくてはなりません
 
  
;STR:20に「いちご,メロン,ブルーハワイ」という文字列が代入される
+
==行・文・式==
STR:20 = いちご,メロン,ブルーハワイ
+
===行===
;STR:20~STR22にそれぞれ「いちご」「メロン」「ブルーハワイ」が代入される
+
改行コードから次の改行コードまでのことです。</br>
STR:20 '= "いちご", "メロン", "ブルーハワイ"
+
プログラミング関連では物理行とも呼ばれます。</br>
 +
ややこしいことにエディター関係ではこれを論理行と呼ぶことが多いです。</br>
  
 +
===文===
 +
文あるいは論理行はEmueraにおける1つの処理単位です。</br>
 +
多くの文は、命令1つとその引数、あるいは変数と代入演算子と式からなります。</br>
 +
ERBでは1行につき1文という鉄則のため、行と文はほぼ同じ意味です。</br>
 +
当Wikiでも特に区別しません。
  
== FORM構文を用いた文字列変数への代入 ==
+
======
文字列変数への代入の際、PRINTFORMと同じ形式で代入する文字列を指定できます。
+
変数、定数、式中関数、非代入演算子、括弧とその組み合わせです。</br>
 +
代入演算子は代入文の最初の演算子としてのみ使用可能で式中では使えません。
  
SAVESTR:0 = %RESULTS%
+
===数式===
 +
式の評価結果(演算結果)が数値になる式です。</br>
 +
例えば、A+B、STR == "あいう" などです。
  
この文でSAVESTR:0にRESULTSの中身を代入することができます。</br>
+
===文字列式===
同じ文はeramakerではSAVESTR:0に%RESULTS%という文字列そのものを代入したことになります。</br>
+
式の評価結果(演算結果)が文字列になる式です。</br>
Emueraで%RESULTS%という文字列そのものを代入したい場合、以下のように書いてください。
+
例えば、STR + STR:1、"あ" * 10 などです。
  
SAVESTR:0 = \%RESULT\%
+
==変数==
 +
===擬似変数===
 +
RANDやCHARANUMのように変数のように記述できるが実態は変数ではないものです。</br>
 +
内部の動作としては式中関数に近い動きをしています。
  
\記号の直後の文字はシステム記号として扱われません。</br>
+
===配列変数===
\記号自体を文字列に含めたい場合は\\としてください。
+
複数の要素を持つ変数です。</br>
 +
配列変数の要素数は!VariableSize.csvで変更でき、通常はスクリプト中では増減しませんが、</br>
 +
一部ローカル変数については、スクリプト中で配列要素数を指定できます。
  
あまりないケースですが、eramakerとEmueraで同じ動作をさせたい場合は以下のように書く必要があります。</br>
+
===キャラクタ変数===
 +
キャラクタの状態を記録する変数です。</br>
 +
C言語などのchar型変数とは無関係です。</br>
 +
その性質上、ADDCHARAやDELCHARAによるキャラの増減に伴い、要素数が増減します。</br>
 +
NO:TARGETなど、配列変数と同じ形式で要素を指定するためにeramakerの解説では配列変数の一つと扱われていますが、当Wikiではキャラクタ変数と配列変数とを区別しています。</br>
  
;!;SAVESTR:0 = \%RESULT\%
+
===二重配列変数===
;!;[SKIPSTART]
+
キャラクタ変数かつ、配列変数である変数のことです。</br>
SAVESTR:0 = %RESULTS%
+
CFLAG:TARGET:2のように、2つの引数をとります(省略可)。</br>
;!;[SKIPEND]
+
キャラクタ変数なので第一引数はキャラNoを表わします。</br>
 +
また、キャラの増減に伴い第一次元の要素数が増減します。</br>
 +
第二次元の要素数は!VariableSize.csvでのみ変更でき、スクリプト中では増減しません。</br>
 +
</br>
 +
当Wikiではeramakerの仕様の説明を除き、"二重配列"という用語を使用しません。</br>
 +
代わりに"キャラクタ変数かつ配列変数"のような呼び方をします。
  
 +
===多次元配列変数===
 +
DITEMYTPEなどの二次元配列変数及びTAなどの三次元配列変数のことです。</br>
 +
DA:0:1やTA:1:2:3のように2つまたは3つの引数をとります。</br>
 +
多次元配列変数の要素数は!VariableSize.csvでのみ変更でき、スクリプト中で増減しません。</br>
 +
また、多次元配列変数の引数は省略できません。
  
== 文字列式を用いた文字列変数への代入 ==
+
===キャラクタ多次元配列変数===
ver1813以降のEmueraでは新たに、代入演算子'=と文字列式を用いて文字列変数への代入を行うことができます。
+
キャラクタ変数かつ、多次元配列変数である変数のことです。</br>
 +
CFLAG:TARGET:0:2のように、3つの引数をとります(省略不可)。</br>
 +
キャラクタ変数なので第一引数はキャラNoを表わします。</br>
 +
また、キャラの増減に伴い第一次元の要素数が増減します。</br>
 +
第二次元・第三次元の要素数は!VariableSize.csvでのみ変更でき、スクリプト中では増減しません。</br>
 +
</br>
 +
ver1807現在、この変数に当てはまるものは[[Emuera/exvar#h5-CDFLAG|CDFLAG]]のみです。</br>
 +
詳しくは[[Emuera/exvar#h5-CDFLAG|CDFLAG]]をご覧ください。
  
;「STR = あいう」と同様
+
===ローカル変数===
STR '= "あいう"
+
LOCALやLOCALSやプライベート変数など、関数(関数名)ごとに用意される変数です。</br>
;「STR = %TSTR:0%いろは」と同様
+
プライベート変数については別項を参照してください。</br>
STR '= TSTR:0 + "いろは"
+
プライベート変数以外のLOCALやLOCALSに関しては、実際にはいわゆるローカル変数ではなく、</br>
 +
"LOCAL@関数名"や"LOCALS@関数名"という名のpublic staticな変数です。</br>
 +
関数を抜けても値は保持され関数の外からでも代入、参照できてしまいます。</br>
 +
また、再帰呼び出しのように複数回呼んだ場合にも値が共有されてしまいます。
  
 +
===広域変数===
 +
LOCALやLOCALSやプライベート変数などを除くほとんどの変数が属する、すべての関数で値が共有の変数です。</br>
 +
一般的なプログラミング言語におけるグローバル変数の概念ともいえます。</br>
 +
また、ERH中で#DIMもしくは#DIMSを用いることで広域変数を定義することができます。</br>
 +
詳しくは[[Emuera/ERH|ヘッダーファイル(ERH)]]のページを参照してください。
  
== 文字列による配列変数の要素の指定 ==
+
===グローバル変数===
以下の変数について、引数を*.csvで定義した文字列にして呼び出すことができます。</br>
+
異なるセーブデータ間で値を共有することができる変数です。グローバル変数も広域変数に含まれます。</br>
Emueraの新規変数についての詳細は[exvar Emueraで追加された拡張文法 - 定数・変数]をご覧ください。
+
通常の変数とはセーブロードや初期化のタイミングが異なります。</br>
 +
Emueraのグローバル変数はこれは一般的なプログラミング言語におけるグローバル変数の概念とは無関係です。
  
ITEM (item.csv)
+
===プライベート変数===
ITEMSALES (item.csv)
+
関数(関数名)ごとに#DIMもしくは#DIMSによって定義される変数です。</br>
LOSEBASE (base.csv)
+
これらもローカル変数でありますので、関数ごとに別個のものです。</br>
BASE (base.csv)
+
ただし、同じローカル変数とされているLOCALなどとは異なり、@関数名などを使っての関数の外からの代入、参照はできません。</br>
MAXBASE (base.csv)
+
詳しくは[[Emuera/UserVars|ユーザー定義の変数]]のページを参照してください。
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のいずれでも指定できます。</br>
 
同名で複数の定義がある場合、先に定義されている方が呼ばれます。</br>
 
例えばabl.csvに"2,技巧"と"4,技巧"があり、"2,技巧"の方が前の行で定義されているならば、"ABL:技巧"は"ABL:2"になります。</br>
 
文字列は式や変数でも可能です。その場合は以下のように()を付けてください。
 
 
 
ABL:(RESULTS:0) = ABL:(RESULTS:0) + 1
 
 
 
()を省略した場合、アイテム名と変数名が同一になる場合があります。その場合は変数が優先されます。</br>
 
例えばabl.csvに"0,ローター"という定義がある場合、
 
 
 
@HOGE
 
#DIM ローター, 0
 
ローター = 1
 
PRINTFORML {ABL:ローター}
 
 
 
この場合、0番目のABLではなく1番目のABLであると解釈されます。</br>
 
同様に、アイテム名が数値の場合、数値としての解釈が優先されます。</br>
 
例えばabl.csvに"0,10"という定義をしABL:10を参照した場合は0番目のABLとは解釈されず10番目のABLとなります。</br>
 
 
 
これはchara*.csv内の定義においても使用できます。</br>
 
例えばabl.csvに"2,技巧"という定義があれば、以下の2つの行は同じ意味になります。
 
 
 
能力,2,2
 
能力,技巧,2
 
 
 
ただし、相性(RELATION)には使えません。</br>
 
chara*.csvを読んでいる段階ではシステムがcharaの名前とNOの対応を把握していないためです。
 
 
 
== 書式付文字列(FORM構文)拡張 ==
 
PRINTFORMなどでつかわれる書式付文字列のうち、{}、%%に表示桁数(文字数)を指定できます。</br>
 
{変数・数式等, 表示桁数, 揃え(LEFT or RIGHT)}、%変数、文字列式等, 表示桁数, 揃え(LEFT or RIGHT)%という形式で指定します。</br>
 
文字数は全角文字を2文字と数えます。</br>
 
表示桁数(文字数)に足りない部分は半角スペースが追加されます。</br>
 
通常は右揃えですが、キーワードLEFTを指定すると左揃えになります。</br>
 
指定された表示桁数よりもとの桁数の方が大きい場合、そのまま表示します。
 
 
 
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構文を使用するとエラーになります。</br>
 
そのため文字列式中で書式付文字列を使用する場合、文字列式中で定文字列を使うときに"~"を使用するのと同じように</br>
 
@"~"を使用します。
 
また、@"~"の中の文字列が\@~\@を用いた三項演算子による記載のみである場合、@"~"を省略して直接\@~\@と書くことができます</br>
 
 
 
正しい例
 
;代入は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やそれに類する入力受付命令で、マクロ式を用いることができます。</br>
 
マクロの書式については[howto 利用方法]のマクロの項目を確認してください。</br>
 
マクロ構文を使わず、単なる文字列として()を使用する場合、\を用いてエスケープしてください。
 

Latest revision as of 04:09, 2 July 2020

This is a summary of the terms used in this wiki.
I wrote it as a memo because the original coined words have increased with the extension of Emuera.

Startup Mode[edit]

Normal Mode[edit]

This is the mode when Emuera is started normally.
You will be in this mode when you double-click on EmueraXXXX.exe to launch it.

Analysis Mode[edit]

This is the mode when a file is passed as a command line argument.
It also becomes this mode when a file is drag and dropped into EmueraXXXX.exe.
In analysis mode, a grammar check is performed for dragged and dropped files.
This allows you to check for grammatical errors in the files you are developing.
However, you will need the CSV folder of the variant you plan to use to check the type of the elements string.
Just drag and drop the file into the EmueraXXXX.exe of the variant you plan to use.
In addition, from 1738g, when "Report is displayed when loading" is enabled in the analysis mode, it is possible to display the report when loading.
The list of functions used in each loaded ERB file is now displayed.
If you have too many functions, increase the number of lines in the log in your config.

Debug Mode[edit]

This is the mode when the command is started by passing "-debug" as command line argument. See Debug Mode for details.

Windows / Dialogs[edit]

Main Window[edit]

This is the first window that opens when you normally start up.

Main Console[edit]

The name of the part of the Main Window that is used for input and output.

Debug Window[edit]

This is a window that can be opened when started in Debug Mode.

Debug Console[edit]

The name of the input/output part that is displayed when the "Console" tab is selected in the Debug Window.

Configuration Dialog[edit]

It is a dialog that can be opened from the main window menu help or settings.

Clipboard Dialog[edit]

It is a dialog that can be opened by Ctrl+C from the main console.

Functions[edit]

Commands[edit]

PRINT or WAIT, for example.

Functions[edit]

It is a name that is defined in an ERB script with @~~ statements and called with a CALL instruction, etc.
Among the functions that can be used in expressions, those that define their names in sentences @~~ are included.

Event Functions[edit]

A function whose name starts with "EVENT" and is called by the system.
If you define more than one, all of them will be called.

Preprocessor[edit]

A line in a file in the ERB folder that is processed before any other instruction.
A line that begins with # or consists of a phrase enclosed in [].
Lines that begin with # are divided into attributes and definitions. Please see them for more information.
Lines consisting of words or phrases enclosed in [] represent special blocks.
See the page here for more information

Property (Preprocessor)[edit]

A preprocessor that determines the type and behavior of a function with a line beginning with a # specified for the function.
There are #PRI, #LATER, #SINGLE, and #ONLY to control the behavior of when the event function is executed,
and #FUNCTION and #FUNCTIONS to specify the type of the function in the expression.

Definitions (Preprocessor)[edit]

A preprocessor that defines the name of a variable and its type on a line beginning with #.
Functions include #LOCALSIZE and #LOCALSSIZE to specify the number of elements in a LOCAL or LOCALS variable,
#DIM and #DIMS to define a variable, and #DEFINE to define a DEFINE macro in the ERH.

Functions that can be used in expressions[edit]

It is a "function" that can be called from within an expression.
The "function" includes not only the above functions but also the built-in functions described below.
In many programming languages they are simply called "functions".

Functions in an Expression[edit]

Abbreviation for a function that can be used in an expression.
It has nothing to do with inexpression functions (anonymous functions) or inline functions in programming languages.

組み込み関数[edit]

式中関数のうち、Emueraにもともと組み込まれていて@~~文による定義なしで使えるものです。
ABS(X)やGETTIME()などのことです。
ややこしいですが、上記の関数の定義には該当しません。
「式中で使える命令」と考えるとわかりやすいかもしれません。

ユーザー定義関数[edit]

ユーザーが定義した関数のことです。
ERBスクリプト中で@~~文で名称を定義してCALL命令などで呼び出すもののことです。
つまり上記の関数と同じ概念です。

#FUNCTION(S)関数[edit]

@~~文で名称を定義し、#FUNCTION(S)属性を持つものです。
関数かつ式中関数である関数です。


行・文・式[edit]

[edit]

改行コードから次の改行コードまでのことです。
プログラミング関連では物理行とも呼ばれます。
ややこしいことにエディター関係ではこれを論理行と呼ぶことが多いです。

[edit]

文あるいは論理行はEmueraにおける1つの処理単位です。
多くの文は、命令1つとその引数、あるいは変数と代入演算子と式からなります。
ERBでは1行につき1文という鉄則のため、行と文はほぼ同じ意味です。
当Wikiでも特に区別しません。

[edit]

変数、定数、式中関数、非代入演算子、括弧とその組み合わせです。
代入演算子は代入文の最初の演算子としてのみ使用可能で式中では使えません。

数式[edit]

式の評価結果(演算結果)が数値になる式です。
例えば、A+B、STR == "あいう" などです。

文字列式[edit]

式の評価結果(演算結果)が文字列になる式です。
例えば、STR + STR:1、"あ" * 10 などです。

変数[edit]

擬似変数[edit]

RANDやCHARANUMのように変数のように記述できるが実態は変数ではないものです。
内部の動作としては式中関数に近い動きをしています。

配列変数[edit]

複数の要素を持つ変数です。
配列変数の要素数は!VariableSize.csvで変更でき、通常はスクリプト中では増減しませんが、
一部ローカル変数については、スクリプト中で配列要素数を指定できます。

キャラクタ変数[edit]

キャラクタの状態を記録する変数です。
C言語などのchar型変数とは無関係です。
その性質上、ADDCHARAやDELCHARAによるキャラの増減に伴い、要素数が増減します。
NO:TARGETなど、配列変数と同じ形式で要素を指定するためにeramakerの解説では配列変数の一つと扱われていますが、当Wikiではキャラクタ変数と配列変数とを区別しています。

二重配列変数[edit]

キャラクタ変数かつ、配列変数である変数のことです。
CFLAG:TARGET:2のように、2つの引数をとります(省略可)。
キャラクタ変数なので第一引数はキャラNoを表わします。
また、キャラの増減に伴い第一次元の要素数が増減します。
第二次元の要素数は!VariableSize.csvでのみ変更でき、スクリプト中では増減しません。

当Wikiではeramakerの仕様の説明を除き、"二重配列"という用語を使用しません。
代わりに"キャラクタ変数かつ配列変数"のような呼び方をします。

多次元配列変数[edit]

DITEMYTPEなどの二次元配列変数及びTAなどの三次元配列変数のことです。
DA:0:1やTA:1:2:3のように2つまたは3つの引数をとります。
多次元配列変数の要素数は!VariableSize.csvでのみ変更でき、スクリプト中で増減しません。
また、多次元配列変数の引数は省略できません。

キャラクタ多次元配列変数[edit]

キャラクタ変数かつ、多次元配列変数である変数のことです。
CFLAG:TARGET:0:2のように、3つの引数をとります(省略不可)。
キャラクタ変数なので第一引数はキャラNoを表わします。
また、キャラの増減に伴い第一次元の要素数が増減します。
第二次元・第三次元の要素数は!VariableSize.csvでのみ変更でき、スクリプト中では増減しません。

ver1807現在、この変数に当てはまるものはCDFLAGのみです。
詳しくはCDFLAGをご覧ください。

ローカル変数[edit]

LOCALやLOCALSやプライベート変数など、関数(関数名)ごとに用意される変数です。
プライベート変数については別項を参照してください。
プライベート変数以外のLOCALやLOCALSに関しては、実際にはいわゆるローカル変数ではなく、
"LOCAL@関数名"や"LOCALS@関数名"という名のpublic staticな変数です。
関数を抜けても値は保持され関数の外からでも代入、参照できてしまいます。
また、再帰呼び出しのように複数回呼んだ場合にも値が共有されてしまいます。

広域変数[edit]

LOCALやLOCALSやプライベート変数などを除くほとんどの変数が属する、すべての関数で値が共有の変数です。
一般的なプログラミング言語におけるグローバル変数の概念ともいえます。
また、ERH中で#DIMもしくは#DIMSを用いることで広域変数を定義することができます。
詳しくはヘッダーファイル(ERH)のページを参照してください。

グローバル変数[edit]

異なるセーブデータ間で値を共有することができる変数です。グローバル変数も広域変数に含まれます。
通常の変数とはセーブロードや初期化のタイミングが異なります。
Emueraのグローバル変数はこれは一般的なプログラミング言語におけるグローバル変数の概念とは無関係です。

プライベート変数[edit]

関数(関数名)ごとに#DIMもしくは#DIMSによって定義される変数です。
これらもローカル変数でありますので、関数ごとに別個のものです。
ただし、同じローカル変数とされているLOCALなどとは異なり、@関数名などを使っての関数の外からの代入、参照はできません。
詳しくはユーザー定義の変数のページを参照してください。