最終更新:ID:635BjldN0Q 2011年08月10日(水) 22:34:46履歴
eramakerにおいて文字列変数に関わる操作は、直接の代入と表示しかできない。
STR:0 = ほげほげや、
PRINTS STR:0は可能であるが、たとえば比較
IF STR:0 == ほげほげ (処理) ENDIFや、変数の中身を他の変数に代入すること
STR:0 = ほげほげ STR:1 = STR:0はできない。(変数を介した代入に関しては、エラーこそ出ないものの、意図した動作はしない。上の場合では、STR:1に保存されているのは「STR:0」という文字列である。)
eramakerには、Train.csv ファイルに書かれた調教コマンド名を表示する変数(仮に TRAINNAME とする)が用意されていない。そのため、たとえば eratohoRR v.1317 では、各調教コマンドの本体となる関数(COMxx.ERB 内の @COMxx)の中で、STR:0 に直接調教コマンド名を代入して、履歴などに表示させている。
例)調教コマンド「愛撫」における実際の例 :
これに代わる方法として、各調教コマンド名を Str.csv や専用の関数(仮に @TRAINNAME とする)で管理し、履歴では STR:x の x に、調教コマンドに対応する数値を代入することで、調教コマンド名を表示させるというものがある。
例)Str.csv :
例)調教コマンド「愛撫」における実際の例 :
@COM0 (中略) STR:0 = 愛撫履歴を表示させるとき :
@SHOW_EQUIP (中略) PRINT 前回調教コマンド: PRINTS STR:0
これに代わる方法として、各調教コマンド名を Str.csv や専用の関数(仮に @TRAINNAME とする)で管理し、履歴では STR:x の x に、調教コマンドに対応する数値を代入することで、調教コマンド名を表示させるというものがある。
例)Str.csv :
0,愛撫 1,クンニ 2,アナル愛撫表示させるとき :
PRINTS STR:SELECTCOM
eramakerにおいて、主人の呼び名を表示するために使われる変数は CALLNAME:MASTER である。しかしこれは Chara0.csv の「呼び名」を見ているため、相手からの呼ばれ方を変更するためにはCSVを直接書き換えなければならなかった(しかもこの場合、相手ごとに呼ばれ方を変える、ということはできない)。
そこで、CALLNAME の替わりに SAVESTR を用いることで、より柔軟に対応できるようにすることができる。
例)呼び方を指定する :
ただし、これを実装するためには、口上や地の文における CALLNAME:MASTER をすべて SAVESTR:TARGET に置き換えなければならない。また、CALLNAME:PLAYER に関してはまた別個の処理をしなければならなくなる。
方法は異なるものの、eratohoのフランドール口上やeraElona、era☆staなどが呼び名を変える試みを行っているので、そちらも参照されたし。
「eratohoJ用咲夜口上」では、ひらがな・カタカナ・英数字に限り、10文字まで自由に入力できる、というシステムを実現している。その手法をかいつまんで説明すると、
そこで、CALLNAME の替わりに SAVESTR を用いることで、より柔軟に対応できるようにすることができる。
例)呼び方を指定する :
PRINTFORML %NAME:TARGET%に%NAME:MASTER%を何と呼ばせますか? PRINTFORML [0] %CALLNAME:MASTER% PRINTFORML [1] %NAME:MASTER%さん PRINTFORML [2] ご主人様 PRINTFORML [3] お兄ちゃん $INPUT_LOOP INPUT IF RESULT == 0 SAVESTR:TARGET = %CALLNAME:MASTER% ELSEIF RESULT == 1 SAVESTR:TARGET = %NAME:MASTER%さん ELSEIF RESULT == 2 SAVESTR:TARGET = ご主人様 ELSEIF RESULT == 3 SAVESTR:TARGET = お兄ちゃん ELSE GOTO INPUT_LOOP ENDIF表示させるとき :
PRINTFORML 「%SAVESTR:TARGET%……」
ただし、これを実装するためには、口上や地の文における CALLNAME:MASTER をすべて SAVESTR:TARGET に置き換えなければならない。また、CALLNAME:PLAYER に関してはまた別個の処理をしなければならなくなる。
方法は異なるものの、eratohoのフランドール口上やeraElona、era☆staなどが呼び名を変える試みを行っているので、そちらも参照されたし。
「eratohoJ用咲夜口上」では、ひらがな・カタカナ・英数字に限り、10文字まで自由に入力できる、というシステムを実現している。その手法をかいつまんで説明すると、
- ポケベル入力のように各文字を数値と一対一対応させ、入力・保存を可能にする(入力・保存に、文字列ではなく数値を使用する)。
- CFLAG:300に1文字目の番号、CFLAG:301に2文字目の番号、……という形で名前を保存する。
- STR:700〜709に、各数値に対応させた文字を代入する。
- 「STR:310 = %STR:300%%STR:301%……%STR:309%」とし、名前を呼び出すときは「STR:310」を使用する。
まず、STR (SAVESTR) の中には、文字列変数を%でくくった形(PRINTFORM で文字列変数の中身を展開させるときの方法)で代入しなければならない。
そして、これを展開できる書式は以下の2つのみである。
また、多重の入れ子にすることも可能。
ただし、上の場合は入れ子にした元の部分を参照しているだけなので、STR:0を変更するとSTR:1, STR:2の表示結果も変わってしまうことに注意。
なお、以下のようにやると、
STR:0 = %CALLNAME:MASTER%
そして、これを展開できる書式は以下の2つのみである。
PRINTFORMS STR:0
PRINTFORM %STR:0%この2つのどちらかであれば、正常に展開されて表示される。ちなみに、改行させること (PRINTFORMSL, PRINTFORML) や、入力待ちにさせること (PRINTFORMW, PRINTFORMSW) も可能。
また、多重の入れ子にすることも可能。
STR:0 = ほげほげ STR:1 = %STR:0% STR:2 = %STR:1% PRINTFORM %STR:2%は正常に「ほげほげ」と表示される。
ただし、上の場合は入れ子にした元の部分を参照しているだけなので、STR:0を変更するとSTR:1, STR:2の表示結果も変わってしまうことに注意。
なお、以下のようにやると、
STR:0 = ほげほげ STR:1 = STR:0 PRINTS STR:1「ほげほげ」とは表示されず、替わりに「STR:0」と表示される(STR:0 は変数ではなく単なる文字列として認識される)ので注意。
Emueraでは、文字列変数に関する仕様が(主にユーザーや口上作者、開発者にとって使いやすくなるように)変更されている。
たとえば、SAVESTR:0を用いて主人の名前を変更したい場合、
また、NAMEやCALLNAMEをERBの方から変更できるようになっているので、
※ただし、特に呼び名(CALLNAME)について、あるキャラの口上で変更すると、他のキャラからも同じ呼ばれ方をするようになる、という問題が発生する。たとえば自身が作成する口上では、
Emueraの仕様の詳細については、Emuera公式ページを参照。
たとえば、SAVESTR:0を用いて主人の名前を変更したい場合、
PRINTL 名前を入力してください INPUTS SAVESTR:0 = %RESULTS%で、SAVESTR:0にキーボードから入力した文字列が保存される。以後RESULTSの中身を変更しても、SAVESTR:0の中身は保たれる。
また、NAMEやCALLNAMEをERBの方から変更できるようになっているので、
PRINTL 名前を入力してください INPUTS NAME:MASTER = %RESULTS%という形でも通る。変更後も、デフォルトの名前・呼び名(CSVで指定したもの)はCSVNAME・CSVCALLNAMEで呼べる。
※ただし、特に呼び名(CALLNAME)について、あるキャラの口上で変更すると、他のキャラからも同じ呼ばれ方をするようになる、という問題が発生する。たとえば自身が作成する口上では、
- キャラ番号に対応したSAVESTR:xxを使用する
- CFLAGの文字列変数版である「CSTR」を使用する(Emueraのみ)
- 文字列変数「MASTERNAME」を使用する(Emueraのみ。「MASTERNAME」は「MASTERNAME:TARGET」とみなされるため、干渉は起こらない)
Emueraの仕様の詳細については、Emuera公式ページを参照。
最新コメント
2024-05-20
2023-02-01
2022-03-31
2022-02-13
2022-02-03