Difference between revisions of "Emuera/eramaerb"

From Era Wiki
Jump to: navigation, search
(Created page with ". <br>They’re highly effective canines that can be a bit dominating. Nonetheless, they’re relaxed adequate for you to cuddle with when you want to. Listed here is what you...")
 
(page created)
Line 1: Line 1:
. <br>They’re highly effective canines that can be a bit dominating. Nonetheless, they’re relaxed adequate for you to cuddle with when you want to. Listed here is what you must do if your pet is heading outside.<br><br>Look at my web blog; [http://r.utopiie.com/post445143130196894 puppies]
+
<B>eramaker ERBファイル書式(暫定版)</B><BR>
 +
<em><b>このファイルの説明を見るだけではイメージが沸きづらい</b></em>と思います。まずサンプルゲームをプレイし、その後でサンプルゲームのERBファイルをながめながら見ていくとわかりやすいです。<BR>
 +
 
 +
==基本情報==
 +
===ERBファイルについて===
 +
* eramaker.exeの直下に、ERBという名前のフォルダをおき、そのなかにERBファイルを入れます。<BR>
 +
* 拡張子が.ERBとなっていればどんなファイル名でもかまいません。<BR>
 +
* メモ帳などのテキストエディタで編集してください。<BR>
 +
<BR>
 +
 
 +
===ERBファイルの書き方===
 +
====コメントとスペース====
 +
すべてのERBファイルにおいて、<BR>
 +
<BR>
 +
* 1文字目が半角の;(セミコロン)だった場合、その行は無視されます。また、空行も無視されます。<BR>
 +
* 行の終わりにセミコロンをつけたり、そのあとにコメントを書いたりしないでください。<BR>
 +
* 行頭にある半角スペースやタブは何個つづいても無視されます。<BR>
 +
 
 +
<nowiki>
 +
; CORRECT
 +
 
 +
;お金の設定
 +
MONEY = 500
 +
  時刻の設定
 +
  DAY = 10
 +
  TIME = 1
 +
;ゲーム開始
 +
PRINT どうする?
 +
 
 +
; MISTAKE
 +
 
 +
MONEY = 500;
 +
TIME = 5;(5日目からスタート)</nowiki>
 +
 
 +
====半角での入力====
 +
数値、命令、変数名、関数名などを入力するときは半角にしてください。<BR>
 +
 
 +
<nowiki>
 +
; CORRECT
 +
 
 +
MONEY = 500
 +
PRINT ゲームをはじめます。
 +
 
 +
; MISTAKE
 +
 
 +
MONEY = 500
 +
PRINT ゲームをはじめます。</nowiki>
 +
 
 +
====文字列の入力====
 +
文字列を""でくくるとCORRECT常に動作しません。
 +
 
 +
<nowiki>
 +
; CORRECT
 +
 
 +
PRINT 一日が終わった* * *
 +
 
 +
; MISTAKE
 +
 
 +
PRINT "一日が終わった* * * "</nowiki>
 +
 
 +
====1行で完結====
 +
長い命令を書くときも、2行以上に分けないでください。<BR>
 +
<nowiki>
 +
; CORRECT
 +
 
 +
PRINT 名雪の身体は敏感だったし経験も豊富だったから、多少乱暴にしても悦ぶ。口では否定していても、名雪はどんどん乱れていく。だが、眠っているという特殊な状況が俺に大胆な動きをためらわせた。
 +
 
 +
; MISTAKE
 +
 
 +
PRINT
 +
名雪の身体は敏感だったし経験も豊富だったから、多少乱暴にしても悦ぶ。口では否定していても、名雪はどんどん乱れていく。だが、眠っているという特殊な状況が俺に大胆な動きをためらわせた。</nowiki>
 +
 
 +
 
 +
==変数と命令==
 +
===変数について===
 +
 
 +
調教SLGではパラメータの変化が命です。そのため、データを記憶し、足したり掛けたりといった計算ができる「変数」の使い方を覚えなくてはなりません。<BR>
 +
<BR>
 +
====変数に数値を入れる====
 +
=(イコール)を使います。半角で入力してください。=の前後は半角スペースかタブで区切ります。<BR>
 +
eramakerで使える数値は基本的に整数です。小数を入力しないでください。<BR>
 +
<nowiki>
 +
; CORRECT
 +
 
 +
MONEY = 500
 +
 
 +
; MISTAKE
 +
 
 +
MONEY = 500
 +
MONEY=500
 +
MONEY = 3.14</nowiki>
 +
 
 +
====変数に計算した数値を入れる====
 +
同じく=を使います。*が掛け算、/が割り算、%があまりを求めるということに注意してください。<BR>
 +
計算結果が小数になるときは端数切捨てです。<BR>
 +
<nowiki>
 +
; CORRECT
 +
 
 +
;MONEYを74にする
 +
MONEY = 15+34+25
 +
;MONEYを650にする
 +
MONEY = 150+(100-50)*10
 +
;MONEYを3にする
 +
MONEY = 10/3
 +
;MONEYをTIMEの10倍にする
 +
MONEY = TIME*10
 +
;DAYが0,1,2...となるとMONEYが0,10,20...となって7を超えると0に戻る
 +
MONEY = DAY%7*10
 +
 
 +
; MISTAKE
 +
 
 +
MONEY = 500×10÷4</nowiki>
 +
 
 +
====変数に数を足したり掛けたりする====
 +
+=,-=,*=,/=,%=を使います。<BR>
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
MONEY = 100
 +
TIME = 12
 +
;MONEYを150にする
 +
MONEY += 50
 +
;MONEYを750にする
 +
MONEY *= 7-2
 +
;MONEYを80にする
 +
MONEY -= 670
 +
;MONEYを8にする
 +
MONEY %= TIME
 +
;MONEYを1にする
 +
MONEY /= TIME-4</nowiki>
 +
 
 +
====配列について====
 +
* 変数は「配列」としてアクセスすることができます。「配列」は同じ名前の変数で複数のデータを管理するためのものです。<BR>
 +
* 配列へのアクセスは:(コロン)を使います。半角で入力してください。間にスペースを入れないでください。<BR>
 +
* 配列の後に入れられる数字は最低で0です。最大値は変数によって決まっています。詳しくはリストを参照してください。<BR>
 +
* 配列の後に数字ではなく変数を入れることもできます。ただし、配列の後に配列を持ってくることはできません。
 +
 
 +
<nowiki>
 +
; CORRECT
 +
 
 +
A = 35
 +
;FLAGに値を設定にする
 +
FLAG:0 = 0
 +
FLAG:2 = 10
 +
FLAG:35 = 440
 +
;FLAGで計算する
 +
FLAG:A += 100/FLAG:2
 +
FLAG:2 *= FLAG:A
 +
 
 +
; MISTAKE
 +
 
 +
FLAG:0 = 10
 +
FLAG : 52 = 1000
 +
FLAG:FLAG:20 = 10000
 +
FLAG:91881816 = 1</nowiki>
 +
 
 +
====二重配列について====
 +
* 例外的にコロンを2つ使ってアクセスできる変数もあります。キャラのデータに絡む変数です。<BR>
 +
* (変数名):(所持キャラ番号):(変数番号)という形でアクセスします。<BR>
 +
 
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
A = 2
 +
;5番目のキャラの0番目の能力をLV3にする
 +
ABL:5:0 = 3
 +
;A番目(2番目)のキャラの1番目の経験を+1する
 +
EXP:A:1 += 2</nowiki>
 +
 
 +
 
 +
====変数を画面に表示する====
 +
* もっとも簡単なのはPRINTVとPRINTVLという命令を使うことです。命令については後で詳しく述べます。<BR>
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
A = 2
 +
PRINTV A
 +
A = 30
 +
PRINTVL A
 +
B = 400
 +
PRINTVL B
 +
 
 +
; RESULTS
 +
 
 +
230
 +
400</nowiki>
 +
 
 +
====文字列変数について====
 +
* 普通の変数は整数しか扱えませんが、文字列を扱える文字列変数もあります。ただし機能は限定的です。<BR>
 +
* 文字列変数を画面に表示するにはPRINTSかPRINTSLという命令を使います。<BR>
 +
<nowiki>
 +
; CORRECT
 +
 
 +
STR:0 = あいうえお
 +
PRINTSL STR:0
 +
 
 +
; MISTAKE
 +
 
 +
;+=で付け加えたりはできない
 +
STR:0 += うえお</nowiki>
 +
<BR>
 +
 
 +
====変数リスト====
 +
* [[Emuera/eramavar|こちら]]を参照してください。
 +
 
 +
===命令について(基本)===
 +
命令を使うことで、画面に文字を表示したり、条件判断をしたりすることができます。
 +
====命令の書き方====
 +
* (命令名) (命令内容)という書き方が基本です。(命令名)と(命令内容)は半角スペースかタブで区切ってください。<BR>
 +
* (命令内容)がない命令の場合、そのまま改行してください。
 +
 
 +
<nowiki>
 +
; CORRECT
 +
 
 +
PRINT これはテストです。
 +
SIF 3 == 1+2
 +
  PRINT 当たり前です。
 +
WAIT
 +
 
 +
; MISTAKE
 +
 
 +
PRINTこれはテストです。
 +
;入力待ち
 +
WAIT 0</nowiki>
 +
 
 +
====文字を表示する====
 +
* PRINTは文字を表示する命令です。PRINTLは文字を表示し、改行します。PRINTWは文字を表示し、入力待ちにします。<BR>
 +
* PRINTVは変数の内容を表示する命令です。PRINTVLは変数の内容を表示し、改行します。PRINTVWは変数の内容を表示し、入力待ちにします。<BR>
 +
* PRINTSは文字列変数の内容を表示する命令です。PRINTSLは文字列変数の内容を表示し、改行します。PRINTSWは文字列変数の内容を表示し、入力待ちにします。<BR>
 +
* PRINTFORMは文字、変数、文字列変数などが組み合わさったものを表示できます。PRINTFORMLは同様にした上で改行し、PRINTFORMWは同様にした上で入力待ちにします。<BR>
 +
* PRINTFORMSはPRINTFORMと同じように文字列変数の内容を変換して表示をします。PRINTFORMSLは同様にした上で改行し、PRINTFORMSWは同様にした上で入力待ちにします。<BR>
 +
(末尾にWがつく命令で入力待ちのときは、Enterを押すことで次に進むので、結局改行されます)<BR>
 +
 
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
MONEY = 500
 +
NAME:0 = 佐藤
 +
PRINT お金は
 +
PRINTV MONEY
 +
PRINTL 円です。
 +
PRINT 名前は
 +
PRINTS NAME:0
 +
PRINTL です。
 +
PRINTFORML 繰り返すと、名前は%NAME:0%で、お金は{MONEY}円です。
 +
PRINTFORMW 1000円もらって600円払うと、残りは{MONEY+1000-600}円です。
 +
STR:0 = そのお金を5倍にすると、{(MONEY+1000-600)*5}円です。
 +
PRINTFORMSW STR:0
 +
 
 +
 
 +
; RESULTS
 +
 
 +
お金は500円です。
 +
名前は佐藤です。
 +
繰り返すと、名前は佐藤で、お金は500円です。
 +
1000円もらって600円払うと、残りは900円です。
 +
そのお金を5倍にすると、4500円です。</nowiki>
 +
 
 +
====条件判断する====
 +
 
 +
* 条件判断は; EXAMPLE</B>を見ながら理解するのが早
 +
 
 +
* SIFは条件式が0でなければ(成立した場合)次の行を実行します。0の場合(成立しない場合)、次の行をスキップします。<BR>
 +
* IFは条件式が0でなければ(成立した場合)、次の行からELSE、ELSEIF、ENDIFを迎えるまで実行していきます。0である場合(成立しない場合)、ELSE、ELSEIF、ENDIFを迎えるまでスキップします。(ELSEならその次の行からENDIFを迎えるまで実行します。ELSEIFで条件式が成立している場合、その次の行からELSEかELSEIFかENDIFを迎えるまで実行します。成立していなければELSEかELSEIFかENDIFを迎えるまでスキップし、同じことを繰り返します)<BR>
 +
 
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
A = 1
 +
B = 2
 +
C = 4
 +
 
 +
SIF A == 1
 +
  PRINTL テスト1
 +
SIF B != 1
 +
  PRINTL テスト2
 +
SIF C < 5
 +
  PRINTL テスト3
 +
IF A+B > 2
 +
  IF C >= 6
 +
      PRINTL テスト4
 +
  ELSE
 +
      PRINTL テスト5
 +
  ENDIF
 +
  IF A == 1 && B == 3
 +
      PRINTL テスト6
 +
  ELSEIF A == 1 || B == 3
 +
      PRINTL テスト7
 +
  ELSEIF A > 1 || (B > 2 && C > 2)
 +
      PRINTL テスト8
 +
  ENDIF
 +
ELSEIF A+B == 2
 +
  PRINTL テスト9
 +
ELSE
 +
  PRINTL テスト10
 +
ENDIF
 +
 
 +
; RESULTS
 +
 
 +
テスト1
 +
テスト2
 +
テスト3
 +
テスト5
 +
テスト7</nowiki>
 +
 
 +
* 「等しい」には==を、「等しくない」には!=を、「左が大きい」には>を、「左が右以上」には>=を、「右が大きい」には<を、「右が左以上」には<=を使います。すべて半角で入力してください。<BR>
 +
* 「かつ」には&&を、「または」には||を使います。すべて半角で入力してください。<BR>
 +
* カッコを使い、複雑な条件を記述することもできます。
 +
 
 +
====入力と入力待ち====
 +
* 文章を表示するなどして、入力を待つときにはWAITを使います。<BR>
 +
(※普段はPRINTWなどを使うと、少ない行数で表現できるため見やすいです)<BR>
 +
* 整数をプレイヤーに入力させたいときはINPUTを使います。入力された結果はRESULTに格納されます。<BR>
 +
* 文字列をプレイヤーに入力させたいときはINPUTSを使います。入力された結果はRESULTSに格納されます。<BR>
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
PRINT データ入力開始。
 +
WAIT
 +
PRINTL 年齢を入力してください。
 +
INPUT
 +
PRINTL 名前を入力してください。
 +
INPUTS
 +
PRINTFORML %RESULTS%さんは{RESULT}歳ですね。</nowiki>
 +
 
 +
====繰り返しとGOTO====
 +
* 同じ命令を繰り返したいときはREPEATを使います。RENDがあるまで繰り返されます。繰り返した回数はCOUNTに格納されます。<BR>
 +
* REPEATの中にREPEATは作れませんので注意してください。<BR>
 +
* REPEATからRENDまでの途中でCONTINUEを使うと、REPEATのあるところまで戻ります。BREAKを使うと、繰り返しをやめてRENDの次の行までスキップします。<BR>
 +
* 別のところに一気に移動したいときはGOTOを使います。GOTOを使うときは、$を使って「ラベル」を登録しておく必要があります。<BR>
 +
<nowiki>
 +
; Example 1
 +
 
 +
REPEAT 10
 +
  PRINT あいう
 +
REND
 +
;0文字をPRINTLで書くことで改行
 +
PRINTL
 +
REPEAT 5
 +
  PRINTFORML 点数:{COUNT*5}
 +
REND
 +
 
 +
; Results Of Example 1
 +
 
 +
あいうあいうあいうあいうあいうあいうあいうあいうあいうあいう
 +
点数:0
 +
点数:5
 +
点数:10
 +
点数:15
 +
点数:20
 +
 
 +
; Example 2
 +
 
 +
MONEY = 300
 +
REPEAT 5
 +
  SIF MONEY <= COUNT*100
 +
      BREAK
 +
  PRINTFORML {COUNT*100}円よりは金が多い。
 +
REND
 +
REPEAT 5
 +
  SIF MONEY == COUNT*100
 +
      CONTINUE
 +
  PRINTFORML 所持金は{COUNT*100}円ではない。
 +
REND
 +
 
 +
; Results Of Example 2
 +
 
 +
0円よりは金が多い。
 +
100円よりは金が多い。
 +
200円よりは金が多い。
 +
所持金は0円ではない。
 +
所持金は100円ではない。
 +
所持金は200円ではない。
 +
所持金は400円ではない。
 +
 
 +
; Example 3
 +
 
 +
$INPUT_LOOP
 +
PRINTL 0から9までの数字を入力してください。
 +
INPUT
 +
SIF RESULT < 0 || RESULT > 9
 +
  GOTO INPUT_LOOP
 +
PRINTFORML {RESULT}が入力されました。</nowiki>
 +
 
 +
====関数について====
 +
* プログラムを最初から最後まで続けて書くとわかりづらいものです。<BR>
 +
* 部分部分に切り分けてわかりやすくするためには、「関数」を使います。<BR>
 +
* 関数は@を使って登録します。@の後に、アルファベットと_(アンダーバー)を使って関数名を書いてください。関数名は半角で入力してください。<BR>
 +
* ゲームの最初に呼ばれる関数は「EVENTFIRST」という名前にします(これについては後に詳述)。<BR>
 +
* 他の関数に移動するには、JUMPを使います。<BR>
 +
* 他の関数に移動し、その関数が終わったら再び元の位置から再開したいときはCALLを使います。<BR>
 +
* CALLで呼ばれた関数の中でRETURNを使うと、その関数を途中で終えることができます。そのとき、RESULTにRETURNで指定した数値が格納されます。RETURNを使わずに関数が終了した場合、RESULTには0が格納されます。<BR>
 +
* RESTARTを使うと、その関数の最初からやり直します。
 +
 
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
@EVENTFIRST
 +
PRINTW ゲームスタート。
 +
 
 +
CALL OPENING
 +
PRINTFORMW オープニングの結果は{RESULT}でした。
 +
CALL GAME_MAIN
 +
PRINTFORMW ゲームの結果は{RESULT}でした。
 +
JUMP ENDING
 +
 
 +
PRINTL JUMPしたのでこの部分は表示されない。
 +
 
 +
@OPENING
 +
PRINTW オープニングです。
 +
RETURN 25
 +
 
 +
@GAME_MAIN
 +
PRINTW ゲーム中です。
 +
PRINTL RETURNなしで終わります。
 +
 
 +
@ENDING
 +
PRINTW エンディングです。
 +
RESTART
 +
 
 +
; RESULTS
 +
 
 +
ゲームスタート。
 +
オープニングです。
 +
オープニングの結果は25でした。
 +
ゲーム中です。
 +
RETURNなしで終わります。
 +
ゲームの結果は0でした。
 +
エンディングです。
 +
エンディングです。
 +
エンディングです。
 +
エンディングです。
 +
エンディングです。
 +
.......(以下無限)
 +
</nowiki>
 +
 
 +
====その他、基本的な命令====
 +
* QUITを使うとゲームを終了します。<BR>
 +
* DRAWLINEを使うと画面の左端から右端まで----と線を引きます。<BR>
 +
* TIMESを使うと、小数を使った掛け算ができます。eramakerでは基本的に数値を整数で扱うので、小数を絡めたいときはこの命令を使ってください。TIMES (変数) , (小数値)という形で使います。<BR>
 +
* BARを使うと、[*****....]のようにグラフが表示できます。BARLの場合は改行されます。BAR (変数) , (最大値), (長さ)という形で使います。<BR>
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
MONEY = 500
 +
DRAWLINE
 +
BARL MONEY , 1000 , 20
 +
PRINTFORMW {MONEY}円持っていました。
 +
DRAWLINE
 +
TIMES MONEY , 1.25
 +
BARL MONEY , 1000 , 20
 +
PRINTFORMW {MONEY}円になりました。ゲームを終了します。
 +
QUIT
 +
 
 +
; RESULTS
 +
 
 +
---------------------------------------------------------------------
 +
[**********..........]
 +
500円持っていました。
 +
---------------------------------------------------------------------
 +
[************........]
 +
625円になりました。ゲームを終了します。</nowiki>
 +
 
 +
 
 +
===命令について(調教用)===
 +
* eramakerには、調教のために使う特殊な命令がいくつかあります。
 +
 
 +
====調教用データの表示====
 +
* PRINT_ABLはキャラの能力を表示します。<BR>
 +
* PRINT_TALENTはキャラの素質を表示します。<BR>
 +
* PRINT_MARKはキャラの刻印を表示します。<BR>
 +
* PRINT_EXPはキャラの経験を表示します。<BR>
 +
* PRINT_PALAMはキャラの調教中パラメータを表示します。<BR>
 +
* 以上の命令を使うときには、どのキャラのデータを表示したいのかを指定してください。たとえばPRINT_ABL 0なら、大体の場合は主人公の能力を表示することになります。<BR>
 +
<BR>
 +
* PRINT_ITEMは所持しているアイテムを表示します。<BR>
 +
* PRINT_SHOPITEMはショップで売っているアイテムを表示します。<BR>
 +
<BR>
 +
* UPCHECKは調教コマンドによる調教中パラメータの変化を表示します。<BR>
 +
<BR>
 +
====キャラの管理====
 +
* ADDCHARAはキャラを追加します。キャラ番号3のキャラを追加したいならADDCHARA 3のようにします。<BR>
 +
* ADDSPCHARAはSPキャラを追加します。キャラ番号3のSPキャラを追加したいならADDSPCHARA 3のようにします。<BR>
 +
(SPキャラとは、キャラフラグの0番が1であるキャラのことを指します)<BR>
 +
* DELCHARAはADDCHARAなどで追加したキャラを削除します。<BR>
 +
<nowiki>
 +
; EXAMPLE
 +
 
 +
;キャラ番号0のキャラの名前が浩之で主人公。
 +
;キャラ番号3のキャラの名前が智子、5のキャラの名前がレミィ、6のキャラの名前が琴音だとする
 +
PRINTFORML 今いるキャラは{CHARANUM}人です。
 +
 
 +
ADDCHARA 3
 +
ADDCHARA 5
 +
ADDCHARA 6
 +
PRINTFORML 今いるキャラは{CHARANUM}人です。
 +
REPEAT CHARANUM
 +
  PRINTFORML {COUNT}番目に%NAME:COUNT%。
 +
REND
 +
DELCHARA 2
 +
PRINTFORML 今いるキャラは{CHARANUM}人です。
 +
REPEAT CHARANUM
 +
  PRINTFORML {COUNT}番目に%NAME:COUNT%。
 +
REND
 +
 
 +
; RESULTS
 +
 
 +
今いるキャラは1人です。
 +
今いるキャラは4人です。
 +
0番目に浩之。
 +
1番目に智子。
 +
2番目にレミィ。
 +
3番目に琴音。
 +
今いるキャラは3人です。
 +
0番目に浩之。
 +
1番目に智子。
 +
2番目に琴音。</nowiki>
 +
 
 +
====セーブ関係====
 +
* SAVEGAMEはセーブ画面を、LOADGAMEはロード画面を呼びます。いずれもSHOPでないと呼び出せません。<BR>
 +
* PUTFORMは@SAVEINFOという特殊な関数でのみ使えます。PRINTFORMと同様の書式で書くことにより、セーブデータに概要をつけることができます。何日目か、キャラの能力はどれくらいか、どのキャラを調教しているかなどのデータを書き込むとよいでしょう。<BR>
 +
 
 +
====BEGIN====
 +
* BEGINはさまざまなシステム命令を呼び出すことにより、ゲームを進行させます。<BR>
 +
* BEGINを呼んだ時点で実行中の関数は終了します。CALLでどこからか呼ばれてきたとしても、元の関数に戻ることはありません。<BR>
 +
<BR>
 +
* BEGIN TRAINは調教を開始します。<BR>
 +
* BEGIN AFTERTRAINは調教を終了します。<BR>
 +
* BEGIN ABLUPは能力アップ画面を呼び出します。<BR>
 +
* BEGIN TURNENDはそのターンを終了します。<BR>
 +
* BEGIN SHOPはSHOPを呼び出します。<BR>
 +
 
 +
 
 +
==更新履歴==
 +
* 06/05/05 暫定版公開。

Revision as of 19:07, 4 April 2020

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

基本情報

ERBファイルについて

  • eramaker.exeの直下に、ERBという名前のフォルダをおき、そのなかにERBファイルを入れます。
  • 拡張子が.ERBとなっていればどんなファイル名でもかまいません。
  • メモ帳などのテキストエディタで編集してください。


ERBファイルの書き方

コメントとスペース

すべてのERBファイルにおいて、

  • 1文字目が半角の;(セミコロン)だった場合、その行は無視されます。また、空行も無視されます。
  • 行の終わりにセミコロンをつけたり、そのあとにコメントを書いたりしないでください。
  • 行頭にある半角スペースやタブは何個つづいても無視されます。
; CORRECT

;お金の設定
MONEY = 500
   時刻の設定
   DAY = 10
   TIME = 1
;ゲーム開始
PRINT どうする?

; MISTAKE

MONEY = 500;
TIME = 5;(5日目からスタート)

半角での入力

数値、命令、変数名、関数名などを入力するときは半角にしてください。

; CORRECT

MONEY = 500
PRINT ゲームをはじめます。

; MISTAKE

MONEY = 500
PRINT ゲームをはじめます。

文字列の入力

文字列を""でくくるとCORRECT常に動作しません。

; CORRECT

PRINT 一日が終わった* * * 

; MISTAKE

PRINT "一日が終わった* * * "

1行で完結

長い命令を書くときも、2行以上に分けないでください。

; CORRECT

PRINT 名雪の身体は敏感だったし経験も豊富だったから、多少乱暴にしても悦ぶ。口では否定していても、名雪はどんどん乱れていく。だが、眠っているという特殊な状況が俺に大胆な動きをためらわせた。

; MISTAKE

PRINT 
名雪の身体は敏感だったし経験も豊富だったから、多少乱暴にしても悦ぶ。口では否定していても、名雪はどんどん乱れていく。だが、眠っているという特殊な状況が俺に大胆な動きをためらわせた。


変数と命令

変数について

調教SLGではパラメータの変化が命です。そのため、データを記憶し、足したり掛けたりといった計算ができる「変数」の使い方を覚えなくてはなりません。

変数に数値を入れる

=(イコール)を使います。半角で入力してください。=の前後は半角スペースかタブで区切ります。
eramakerで使える数値は基本的に整数です。小数を入力しないでください。

; CORRECT

MONEY = 500

; MISTAKE

MONEY = 500
MONEY=500
MONEY = 3.14

変数に計算した数値を入れる

同じく=を使います。*が掛け算、/が割り算、%があまりを求めるということに注意してください。
計算結果が小数になるときは端数切捨てです。

; CORRECT

;MONEYを74にする
MONEY = 15+34+25
;MONEYを650にする
MONEY = 150+(100-50)*10
;MONEYを3にする
MONEY = 10/3
;MONEYをTIMEの10倍にする
MONEY = TIME*10
;DAYが0,1,2...となるとMONEYが0,10,20...となって7を超えると0に戻る
MONEY = DAY%7*10

; MISTAKE

MONEY = 500×10÷4

変数に数を足したり掛けたりする

+=,-=,*=,/=,%=を使います。

; EXAMPLE

MONEY = 100
TIME = 12
;MONEYを150にする
MONEY += 50
;MONEYを750にする
MONEY *= 7-2
;MONEYを80にする
MONEY -= 670
;MONEYを8にする
MONEY %= TIME
;MONEYを1にする
MONEY /= TIME-4

配列について

  • 変数は「配列」としてアクセスすることができます。「配列」は同じ名前の変数で複数のデータを管理するためのものです。
  • 配列へのアクセスは:(コロン)を使います。半角で入力してください。間にスペースを入れないでください。
  • 配列の後に入れられる数字は最低で0です。最大値は変数によって決まっています。詳しくはリストを参照してください。
  • 配列の後に数字ではなく変数を入れることもできます。ただし、配列の後に配列を持ってくることはできません。
; CORRECT

A = 35
;FLAGに値を設定にする
FLAG:0 = 0
FLAG:2 = 10
FLAG:35 = 440
;FLAGで計算する
FLAG:A += 100/FLAG:2
FLAG:2 *= FLAG:A

; MISTAKE

FLAG:0 = 10
FLAG : 52 = 1000
FLAG:FLAG:20 = 10000
FLAG:91881816 = 1

二重配列について

  • 例外的にコロンを2つ使ってアクセスできる変数もあります。キャラのデータに絡む変数です。
  • (変数名):(所持キャラ番号):(変数番号)という形でアクセスします。
; EXAMPLE

A = 2
;5番目のキャラの0番目の能力をLV3にする
ABL:5:0 = 3
;A番目(2番目)のキャラの1番目の経験を+1する
EXP:A:1 += 2


変数を画面に表示する

  • もっとも簡単なのはPRINTVとPRINTVLという命令を使うことです。命令については後で詳しく述べます。
; EXAMPLE

A = 2
PRINTV A
A = 30
PRINTVL A
B = 400
PRINTVL B

; RESULTS

230
400

文字列変数について

  • 普通の変数は整数しか扱えませんが、文字列を扱える文字列変数もあります。ただし機能は限定的です。
  • 文字列変数を画面に表示するにはPRINTSかPRINTSLという命令を使います。
; CORRECT

STR:0 = あいうえお
PRINTSL STR:0

; MISTAKE

;+=で付け加えたりはできない
STR:0 += うえお


変数リスト

命令について(基本)

命令を使うことで、画面に文字を表示したり、条件判断をしたりすることができます。

命令の書き方

  • (命令名) (命令内容)という書き方が基本です。(命令名)と(命令内容)は半角スペースかタブで区切ってください。
  • (命令内容)がない命令の場合、そのまま改行してください。
; CORRECT

PRINT これはテストです。
SIF 3 == 1+2
   PRINT 当たり前です。
WAIT

; MISTAKE

PRINTこれはテストです。
;入力待ち
WAIT 0

文字を表示する

  • PRINTは文字を表示する命令です。PRINTLは文字を表示し、改行します。PRINTWは文字を表示し、入力待ちにします。
  • PRINTVは変数の内容を表示する命令です。PRINTVLは変数の内容を表示し、改行します。PRINTVWは変数の内容を表示し、入力待ちにします。
  • PRINTSは文字列変数の内容を表示する命令です。PRINTSLは文字列変数の内容を表示し、改行します。PRINTSWは文字列変数の内容を表示し、入力待ちにします。
  • PRINTFORMは文字、変数、文字列変数などが組み合わさったものを表示できます。PRINTFORMLは同様にした上で改行し、PRINTFORMWは同様にした上で入力待ちにします。
  • PRINTFORMSはPRINTFORMと同じように文字列変数の内容を変換して表示をします。PRINTFORMSLは同様にした上で改行し、PRINTFORMSWは同様にした上で入力待ちにします。

(末尾にWがつく命令で入力待ちのときは、Enterを押すことで次に進むので、結局改行されます)

; EXAMPLE

MONEY = 500
NAME:0 = 佐藤
PRINT お金は
PRINTV MONEY
PRINTL 円です。
PRINT 名前は
PRINTS NAME:0
PRINTL です。
PRINTFORML 繰り返すと、名前は%NAME:0%で、お金は{MONEY}円です。
PRINTFORMW 1000円もらって600円払うと、残りは{MONEY+1000-600}円です。
STR:0 = そのお金を5倍にすると、{(MONEY+1000-600)*5}円です。
PRINTFORMSW STR:0


; RESULTS

お金は500円です。
名前は佐藤です。
繰り返すと、名前は佐藤で、お金は500円です。
1000円もらって600円払うと、残りは900円です。
そのお金を5倍にすると、4500円です。

条件判断する

  • 条件判断は; EXAMPLEを見ながら理解するのが早
  • SIFは条件式が0でなければ(成立した場合)次の行を実行します。0の場合(成立しない場合)、次の行をスキップします。
  • IFは条件式が0でなければ(成立した場合)、次の行からELSE、ELSEIF、ENDIFを迎えるまで実行していきます。0である場合(成立しない場合)、ELSE、ELSEIF、ENDIFを迎えるまでスキップします。(ELSEならその次の行からENDIFを迎えるまで実行します。ELSEIFで条件式が成立している場合、その次の行からELSEかELSEIFかENDIFを迎えるまで実行します。成立していなければELSEかELSEIFかENDIFを迎えるまでスキップし、同じことを繰り返します)
; EXAMPLE

A = 1
B = 2
C = 4

SIF A == 1
   PRINTL テスト1
SIF B != 1
   PRINTL テスト2
SIF C < 5
   PRINTL テスト3
IF A+B > 2
   IF C >= 6
      PRINTL テスト4
   ELSE
      PRINTL テスト5
   ENDIF
   IF A == 1 && B == 3
      PRINTL テスト6
   ELSEIF A == 1 || B == 3
      PRINTL テスト7
   ELSEIF A > 1 || (B > 2 && C > 2)
      PRINTL テスト8
   ENDIF
ELSEIF A+B == 2
   PRINTL テスト9
ELSE
   PRINTL テスト10
ENDIF

; RESULTS

テスト1
テスト2
テスト3
テスト5
テスト7
  • 「等しい」には==を、「等しくない」には!=を、「左が大きい」には>を、「左が右以上」には>=を、「右が大きい」には<を、「右が左以上」には<=を使います。すべて半角で入力してください。
  • 「かつ」には&&を、「または」には||を使います。すべて半角で入力してください。
  • カッコを使い、複雑な条件を記述することもできます。

入力と入力待ち

  • 文章を表示するなどして、入力を待つときにはWAITを使います。

(※普段はPRINTWなどを使うと、少ない行数で表現できるため見やすいです)

  • 整数をプレイヤーに入力させたいときはINPUTを使います。入力された結果はRESULTに格納されます。
  • 文字列をプレイヤーに入力させたいときはINPUTSを使います。入力された結果はRESULTSに格納されます。
; EXAMPLE

PRINT データ入力開始。
WAIT
PRINTL 年齢を入力してください。
INPUT
PRINTL 名前を入力してください。
INPUTS
PRINTFORML %RESULTS%さんは{RESULT}歳ですね。

繰り返しとGOTO

  • 同じ命令を繰り返したいときはREPEATを使います。RENDがあるまで繰り返されます。繰り返した回数はCOUNTに格納されます。
  • REPEATの中にREPEATは作れませんので注意してください。
  • REPEATからRENDまでの途中でCONTINUEを使うと、REPEATのあるところまで戻ります。BREAKを使うと、繰り返しをやめてRENDの次の行までスキップします。
  • 別のところに一気に移動したいときはGOTOを使います。GOTOを使うときは、$を使って「ラベル」を登録しておく必要があります。
; Example 1

REPEAT 10
   PRINT あいう
REND
;0文字をPRINTLで書くことで改行
PRINTL 
REPEAT 5
   PRINTFORML 点数:{COUNT*5}
REND

; Results Of Example 1

あいうあいうあいうあいうあいうあいうあいうあいうあいうあいう
点数:0
点数:5
点数:10
点数:15
点数:20

; Example 2

MONEY = 300
REPEAT 5
   SIF MONEY <= COUNT*100
      BREAK
   PRINTFORML {COUNT*100}円よりは金が多い。
REND
REPEAT 5
   SIF MONEY == COUNT*100
      CONTINUE
   PRINTFORML 所持金は{COUNT*100}円ではない。
REND

; Results Of Example 2

0円よりは金が多い。
100円よりは金が多い。
200円よりは金が多い。
所持金は0円ではない。
所持金は100円ではない。
所持金は200円ではない。
所持金は400円ではない。

; Example 3

$INPUT_LOOP
PRINTL 0から9までの数字を入力してください。
INPUT
SIF RESULT < 0 || RESULT > 9
   GOTO INPUT_LOOP
PRINTFORML {RESULT}が入力されました。

関数について

  • プログラムを最初から最後まで続けて書くとわかりづらいものです。
  • 部分部分に切り分けてわかりやすくするためには、「関数」を使います。
  • 関数は@を使って登録します。@の後に、アルファベットと_(アンダーバー)を使って関数名を書いてください。関数名は半角で入力してください。
  • ゲームの最初に呼ばれる関数は「EVENTFIRST」という名前にします(これについては後に詳述)。
  • 他の関数に移動するには、JUMPを使います。
  • 他の関数に移動し、その関数が終わったら再び元の位置から再開したいときはCALLを使います。
  • CALLで呼ばれた関数の中でRETURNを使うと、その関数を途中で終えることができます。そのとき、RESULTにRETURNで指定した数値が格納されます。RETURNを使わずに関数が終了した場合、RESULTには0が格納されます。
  • RESTARTを使うと、その関数の最初からやり直します。
; EXAMPLE

@EVENTFIRST
PRINTW ゲームスタート。

CALL OPENING
PRINTFORMW オープニングの結果は{RESULT}でした。
CALL GAME_MAIN
PRINTFORMW ゲームの結果は{RESULT}でした。
JUMP ENDING

PRINTL JUMPしたのでこの部分は表示されない。

@OPENING
PRINTW オープニングです。
RETURN 25

@GAME_MAIN
PRINTW ゲーム中です。
PRINTL RETURNなしで終わります。

@ENDING
PRINTW エンディングです。
RESTART

; RESULTS

ゲームスタート。
オープニングです。
オープニングの結果は25でした。
ゲーム中です。
RETURNなしで終わります。
ゲームの結果は0でした。
エンディングです。
エンディングです。
エンディングです。
エンディングです。
エンディングです。
.......(以下無限)

その他、基本的な命令

  • QUITを使うとゲームを終了します。
  • DRAWLINEを使うと画面の左端から右端まで----と線を引きます。
  • TIMESを使うと、小数を使った掛け算ができます。eramakerでは基本的に数値を整数で扱うので、小数を絡めたいときはこの命令を使ってください。TIMES (変数) , (小数値)という形で使います。
  • BARを使うと、[*****....]のようにグラフが表示できます。BARLの場合は改行されます。BAR (変数) , (最大値), (長さ)という形で使います。
; EXAMPLE

MONEY = 500
DRAWLINE
BARL MONEY , 1000 , 20
PRINTFORMW {MONEY}円持っていました。
DRAWLINE
TIMES MONEY , 1.25
BARL MONEY , 1000 , 20
PRINTFORMW {MONEY}円になりました。ゲームを終了します。
QUIT

; RESULTS

---------------------------------------------------------------------
[**********..........]
500円持っていました。
---------------------------------------------------------------------
[************........]
625円になりました。ゲームを終了します。


命令について(調教用)

  • eramakerには、調教のために使う特殊な命令がいくつかあります。

調教用データの表示

  • PRINT_ABLはキャラの能力を表示します。
  • PRINT_TALENTはキャラの素質を表示します。
  • PRINT_MARKはキャラの刻印を表示します。
  • PRINT_EXPはキャラの経験を表示します。
  • PRINT_PALAMはキャラの調教中パラメータを表示します。
  • 以上の命令を使うときには、どのキャラのデータを表示したいのかを指定してください。たとえばPRINT_ABL 0なら、大体の場合は主人公の能力を表示することになります。


  • PRINT_ITEMは所持しているアイテムを表示します。
  • PRINT_SHOPITEMはショップで売っているアイテムを表示します。


  • UPCHECKは調教コマンドによる調教中パラメータの変化を表示します。


キャラの管理

  • ADDCHARAはキャラを追加します。キャラ番号3のキャラを追加したいならADDCHARA 3のようにします。
  • ADDSPCHARAはSPキャラを追加します。キャラ番号3のSPキャラを追加したいならADDSPCHARA 3のようにします。

(SPキャラとは、キャラフラグの0番が1であるキャラのことを指します)

  • DELCHARAはADDCHARAなどで追加したキャラを削除します。
; EXAMPLE

;キャラ番号0のキャラの名前が浩之で主人公。
;キャラ番号3のキャラの名前が智子、5のキャラの名前がレミィ、6のキャラの名前が琴音だとする
PRINTFORML 今いるキャラは{CHARANUM}人です。

ADDCHARA 3
ADDCHARA 5
ADDCHARA 6
PRINTFORML 今いるキャラは{CHARANUM}人です。
REPEAT CHARANUM
   PRINTFORML {COUNT}番目に%NAME:COUNT%。
REND
DELCHARA 2
PRINTFORML 今いるキャラは{CHARANUM}人です。
REPEAT CHARANUM
   PRINTFORML {COUNT}番目に%NAME:COUNT%。
REND

; RESULTS

今いるキャラは1人です。
今いるキャラは4人です。
0番目に浩之。
1番目に智子。
2番目にレミィ。
3番目に琴音。
今いるキャラは3人です。
0番目に浩之。
1番目に智子。
2番目に琴音。

セーブ関係

  • SAVEGAMEはセーブ画面を、LOADGAMEはロード画面を呼びます。いずれもSHOPでないと呼び出せません。
  • PUTFORMは@SAVEINFOという特殊な関数でのみ使えます。PRINTFORMと同様の書式で書くことにより、セーブデータに概要をつけることができます。何日目か、キャラの能力はどれくらいか、どのキャラを調教しているかなどのデータを書き込むとよいでしょう。

BEGIN

  • BEGINはさまざまなシステム命令を呼び出すことにより、ゲームを進行させます。
  • BEGINを呼んだ時点で実行中の関数は終了します。CALLでどこからか呼ばれてきたとしても、元の関数に戻ることはありません。


  • BEGIN TRAINは調教を開始します。
  • BEGIN AFTERTRAINは調教を終了します。
  • BEGIN ABLUPは能力アップ画面を呼び出します。
  • BEGIN TURNENDはそのターンを終了します。
  • BEGIN SHOPはSHOPを呼び出します。


更新履歴

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