eraシリーズ改造/バリアント開発の覚え書き

配列変数の添字に文字列を使いたい


下記以外の変数では使えません。

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)

妥協案1


使えないんだけど、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

問題は文字列そのものを変更したときに書き換えが必要になる点。
もっとも、数字を変更したときの書き換えに比べればいくぶんもマシではある。

妥協案2


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で文字列を数字を置き換えさせるよりはよさそうだし。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

リンク

漠々ト、獏
eramaker/eramaker2の開発元の公式サイト。

Emuera - emurator of eramaker
C#で書かれたeramakerのエミュレータ「Emuera」のプロジェクトページ。

eraシリーズを語るスレ まとめ
eraシリーズ全般のまとめ。バリアント情報、改造情報など。

eratoho まとめ
eramakerのバリアント「eratoho」のまとめ。

era板
eraシリーズについての掲示板。

サブページ

Rubiera
Bitbucket上のRubieraプロジェクトページ。Rubieraのソースコードのダウンロードはここで。

管理人/副管理人のみ編集できます