下記以外の変数では使えません。
http://sourceforge.jp/projects/emuera/wiki/exetc
以下の変数について、引数を*.csvで定義した文字列にして呼び出すことができます。
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)
使えないんだけど、GETNUMを使えばこういうことはできる。
A:(GETNUM(PALAM, "恭順")) = PALAM:恭順
下記のような関数を定義しておくと便利。
@PALAMID, ARGS #FUNCTION LOCAL = GETNUM(PALAM, ARGS) RETURNF LOCAL
呼び出すときはこう。
A:(PALAMID("恭順")) = PALAM:恭順
CSVに定義されていない文字列を使いたい場合はSELECTCASEを使った関数を定義すればいい。
定義を列記する労力までは軽減できないものの、使用機会が多ければ多いほど、その労力を回収できるはず。
; A:(TIMEVALUE("早朝")) のように使う @TIMEVALUE, ARGS #FUNCTION VARSET LOCAL SELECTCASE ARGS CASE "早朝" LOCAL = 0 CASE "朝" LOCAL = 1 CASE "昼" LOCAL = 2 CASE "夕" LOCAL = 3 CASE "夜" LOCAL = 4 CASE "深夜" LOCAL = 5 ENDSELECT RETURNF LOCAL
問題は文字列そのものを変更したときに書き換えが必要になる点。
もっとも、数字を変更したときの書き換えに比べればいくぶんもマシではある。
ERHを使った黒魔術ならば、もうちょっといい書き方ができる。
;ERH #DEFINE SKILL CFLAG ;CFLAG.CSV 0,剣技 1,魔法 2,祈祷 ;ERB A = SKILL:剣技 B = SKILL:魔法 C = SKILL:祈祷
もちろんこれはCFLAG:剣技などと書くのと何も変わらないのだが、CFLAG内で番号を範囲ごとにカテゴリ分けして使うなら、CFLAG自体のエイリアスをERHで定義するのもひとつの手だろうと思う。
欠点がないわけでもない。
;ERH #DEFINE SKILL CFLAG #DEFINE CLASS CFLAG ;CFLAG.CSV 0,剣技 1,魔法 2,祈祷 10,剣士 11,魔法使い 12,僧侶
こういう定義をしたところで、CLASS:剣技という書き方でエラーにはならないし、SKILL:魔法使いという書き方もエラーにならない。そういうところまで制御できるわけではない、ということだ。その点に目を瞑れば、まあなんとか使えるんじゃないだろうか。少なくとも、ERHで文字列を数字を置き換えさせるよりはよさそうだし。
コメントをかく