改造初心者のためのera basic(ERB)構文講座
後編
(分岐と反復、関数と関数呼び出し、ラベルとキー入力、その他)
前編
1)基本
構文以前の部分です。『不明な~』などのエラーが出る時はこの部分が怪しいかも。
○構文の記述は半角で行う
日本語の文章以外の部分は全て半角で入力しましょう。
見落としやすいのは全角スペースが主です。テキストエディタの検索機能で
全角スペースを検索すれば簡単に見つけられるはず。
○各ファイルの最後の行には必ず1行以上の空行を入れる
eramakerの仕様上の問題で、ファイルの最後に空行がない場合
その直前の行が認識されなくなってしまいます。
『ENDIF~』というエラーのよくある原因の1つです。
○コメント部分の行頭には;(半角セミコロン)をつける
構文の行頭に;をつけることによってその行をコメント化することができます。
コメント部分とは書かれている処理が実行されない部分のことで
一時的にその処理を無効にしたり、付近の処理についての
メモ書き代わりに使われることがあります。
なお、コメント部分では全角文字を使っても構いません。
○分岐や反復にはインデントを行う
これは直接エラーには繋がりませんが、後述する分岐や反復を使う際には
インデントを使用しましょう。インデントとは行頭に決まった量の空白を
置くことによって記述の位置をずらし、ここからここまでが
一塊の処理です、というのをわかりやすくします。
インデントの空白にはTABキーを使用します。
インデントに処理上の効果はありませんが、デバッグで自分が見直す時や
他の人に見てもらう時などに役立ちます。
必要ないだろうと思っても一応はつけておきましょう。
○コメントは詳しく正確につけましょう
コメントを正しくつけることにより、なにか不具合があっても対処しやすくなります。
また自分自身や他人がソースを見直すときの理解の助けにもなります。
デバグや改造にも有用ですので、なるべくコメントはつけたほうがいいでしょう。
ただし、そのコメントの内容が間違っていてはいけません。
コメントの中身もしっかりとチェックすべきです。
2)変数
計算などの処理で使われる変数についてです。
○変数とは?
変数とは計算結果を保存したり、ある数値とある数値を比較したりする際に
使用する入れ物のようなものです。
文章による説明だけではわかりづらいので一例を。
A = 0
B = 0
C = 0
A = 0とは、変数Aに0を代入する、ということを表しています。
上のA,B,Cがそれぞれ変数です。現在はいずれも0が中に入っています。
B = A + 1
C = A + 2
B = A + 1とは、変数BにA+1の結果を代入する、ということを表しています。
ここで計算が行われ、BとCの中身が書き換えられました。Aは0なので
Bは0+1で1、Cは0+2で2となります。Aは0のまま変化していません。
A = C
A = B
次にAにC、つまり2が代入されました。これでAが2になります。
しかし、次の行でAにB、つまり1が代入されたため、Aは1となります。
このように、同じ変数に複数回代入が行われると結果は上書きされます。
C = C + 2
A = B + C
次に、CにC+2が代入されます。
計算前のCは2だったので、計算後のCは2+2で4です。
そしてAにB+C、つまり1+4が代入されます。
ここまでの処理の結果、Aは5、Bは1、Cは4となりました。
○変数の種類
変数には大きく分けて2種類のものがあります。
上のA,B,Cのように数字を格納する数値変数と
文字を格納する文字列変数です。
数値変数は計算や条件判断に、文字列変数は主に文章の表示に使われます。
また、変数には配列という概念があります。配列を使うことで変数に複数の値を
格納することができるようになります。
例えばAという変数の配列は、A:0,A:1,A:2,A:3,…という風に
(変数名):(配列番号)で表現します。(:は半角のコロンを使用します)
A:0 = 0
A:1 = 1
A:2 = 2
A:3 = 0
A:3 = A:0 + A:1 + A:2
この式はA:3にA:0+A:1+A:2の結果、つまり0+1+2を代入することを表します。
処理の結果、A:3は3になります。
一部の変数には、二重配列という形式のものもあります。二重配列は
A:0:0,A:0:1,…,A:1:0,A:1:1,…のように記述し、更に多くの値を格納できます。
どの変数がどの配列形式かは本家の変数リストのページに載っています。
○変数の使い方
基本的には本家の変数リストのページに書いてある通りです。
ここでは扱いに注意が必要なものを主に取り上げます。
・A-Z
本家では記述されていませんが、配列として使用できます。
AはA:0と同じです。
つまり、A:0を変化させたあとはAも同様に変化しています。
・FLAG/TFLAG/CFLAG
FLAG・TFLAGはゲームシステムに関する部分に使われるため
特定のキャラのみに使用するフラグを管理する際にはCFLAGを使用しましょう。
また、非常に被りやすいので使用の際はフラグ一覧表を良く確認しましょう。
フラグ一覧表はこのWikiの
追加機能のページにあります。
なお、仕様では0~999までの1000個の数字を使えるとなっていますが、実際にはeramakerのバグにより0~998までの999個しか使えません。
999を使うとセーブデータが破壊されてしまいますので絶対に使用しないでください。
TFLAGは調教ごとにリセットされることにも注意してください。
・TEQUIP
上のフラグ系と同様に被りやすいので使用の際はフラグ一覧表を確認しましょう。
・二重配列について
二重配列形式の変数は、主にキャラに関するデータに使われています。
そのため、二重配列変数の読み方は以下のようになっていることがほとんどです。
(能力の種類):(キャラの登録番号):(能力の番号)
例1)TALENT:5:20
これは登録番号5のキャラの20番の素質を表します。
ここで気をつけないといけないことは、キャラの登録番号とキャラ番号の違いです。
eratohoならキャラ番号5はチルノとなっていますが
登録番号5は常にチルノを指すとは限りません。
登録番号はSHOPでキャラを購入するなどして調教可能になった際に
割り振られる番号で、キャラリストの並び順を表しています。
例えば最初に霊夢を購入し、次にチルノを購入した場合
チルノの登録番号は2となり、その状態で霊夢を売却するとリスト全体が
1つ手前にずれ、チルノの登録番号は1となります。
例2)TALENT:100
見た感じこれは二重配列ではないように見えますね。
しかし、これはTALENT:TARGET:100の省略されたもので、現在調教中もしくは
調教予定のキャラの100番の素質を表しています。
TARGETは現在調教中もしくは調教予定のキャラの登録番号を示す変数です。
TARGETは指定されることが多いためか省略可能となっています。
ちなみに、例1でTALENT:5:20というのを説明しましたが
eramakerの仕様上の問題で実際にこう記述しても登録番号5の
キャラの20番の素質を表すことはできません。
その原因がこのTARGETの省略で、TALENT:5まで読み込んだ時点で
TALENT:TARGET:5の省略されたものと判断されてしまい
エラーの原因になってしまうようです。
実際に登録番号5のキャラの20番の素質を表したい場合は
A = 5
TALENT:A:20
というように、一旦変数に登録番号を格納するなどの工夫が必要となります。
3)演算
数値処理には欠かせない計算の方法です。
○基本的な四則演算
四則演算を行うための基本的な演算子
A + B |
AとBの和をとる。 |
A - B |
AとBの差をとる。 |
A * B |
AとBの積をとる。 |
A / B |
AとBの商をとる。 |
A % B |
AをBで割ったときの余りをとる。 |
○自身に対する四則演算
A = A + Bの様な形式は次のように省略できる。
A += B |
A = A + Bと同じ。 |
A -= B |
A = A - Bと同じ。 |
A *= B |
A = A * Bと同じ。 |
A /= B |
A = A / Bと同じ。 |
A %= B |
A = A % Bと同じ。 |
○論理演算子
ビット処理のために使う特殊な演算子です。
A | B |
AとBをOR演算したものを返す。 |
A & B |
AとBをAND演算したものを返す |
4)表示
主に口上で使用する、画面に文字などを表示させるPRINT系の構文です。
○PRINT系命令の種類
PRINT系の命令には主に以下のものがあります。
PRINT |
通常の文字列を表示します。変数等は使用できません。 |
PRINTV |
数値変数を表示します。 |
PRINTS |
文字列変数を表示します。 |
PRINTFORM |
通常の文字列に数値・文字列変数を複合して表示します。 |
あまり使われませんが、以下のようなものもあります。
PRINTFORMS |
文字列変数を表示します。 |
PUTFORM |
PRINTFORMと同様ですが、セーブデータ専用です。 |
各命令の後にLやWをつけると、改行や入力待ち(Enterキーを押すまで進まない)を
させることができます。例えば、
PRINT あ
PRINT い
PRINTL う
PRINTW え
PRINTL お
と記述すると、まず
あいう
え
と表示され、入力待ち状態になります。
ここでEnterキーを入力すると残りも表示され
あいう
え
お
と表示されます。
○PRINT系命令の使い方
上の項にある通り、PRINT系の命令にはそれぞれの用途がありますが
実際にはPRINTFORMでほとんどのものを代用することができます。
普通の文章を表示させるなら
PRINTFORM あいうえお
のようにそのまま記述します。この時、PRINTFORMと表示させる文章の間に
半角スペースを入れておくのを忘れないようにしましょう。
数値変数を組み合わせて表示させるなら
A = 5
PRINTFORM 変数Aは{A}です
のように変数名を半角の{}で括って記述します。
文字列変数なら
STR:0 = かきくけこ
PRINTFORM あいうえお%STR:0%さしすせそ
のように変数名を%%で括って記述します。
セーブデータに表示させるPUTFORMのみPRINTFORMでは代用できませんが
セーブデータの表示を変更する機会は少ないと思われるので割愛します。
○その他の表示
文字を表示した後改行させるにはPRINTFORMLを使いますが
文字を表示させずに改行させたい、つまり空白行を表示させたいという
場合にもPRINTFORMLを使います。
PRINTFORML あいう
PRINTFORML
PRINTFORML えお
2行目はPRINTFORMLの後に半角スペースのみを入力しており、これによって
あいう
えお
のように空白行を表示させることができます。
また、DRAWLINEを使用することで
-------------------------------------------------------------------------------
このように長い横線を表示させることができます。
最終更新:2009年10月12日 15:05