目次へ

イベントコマンド ? と ! と flag の使用例

イベントコマンド説明
? flagx x x条件分岐
x は左から
フラグ番号
符号
条件となる数値

フラグは、flag0 〜 flag4095 まであり、ユーザは、flag コマンドを使って各フラグに -20億 〜 20億までの数値を設定できる。符号には
== (イコール)
!= (等しくない)
< (未満)
> (超)
<= (以上)
>= (以下)
が使える。
条件式を満たす場合は、それ以下のイベントコマンドが実行される。満たさない場合は、! コマンドより下のイベントコマンドだけが実行される。条件分岐は入れ子にできない
!条件分岐(? コマンド)の終了
endイベントコマンドの終了(以降のイベントコマンドは実行されない)
flagx x xフラグに数値を設定する
x は左から
フラグ番号(0 〜 4095)
代入符号
整数値

代入符号には
= (代入)
+ (加算)
- (減算)
がある。
ゲーム開始時にフラグは総て 0 で初期化される。フラグに設定された値は、他の場面にPCが移動しても保持されるため、フラグの使い回しはしないようにする。(1フラグ1用途)

以下のデータを入力し、トーマスやリチャードと交互に二回ずつ会話する。


============= talk_list.txt の例 =============

<talk_number>
13
</talk_number>
<talk_data>
HP回復剤を1個入手した
トーマス#「こんばんわ」
リチャード#「こんにちわ」
「いらっしゃいませ」
「宿屋です#一泊60Gですが、泊まりますか?」
所持金が足りません
この先、町
平穏だった村に突如怪物軍団が現れた
ボス#「よくここまで来れたな。ほめてやろう。しかし、その運もここまでだ」
ボス#「ば、ばかな。この私がやられるとは」
かくして、勇者の戦いは終わった   完
リチャード#「トーマスは人間ではなくエルフだ」
トーマス#「エルフは耳が長いんだ」
</talk_data>


============= scene0.txt の例 =============

<scene_kind>
2
</scene_kind>
<scene_name>
町
</scene_name>
<filename_map_data>
map0.bin
</filename_map_data>
<filename_bg_map_chip>
map0_bk.bmp
</filename_bg_map_chip>
<lyer_map_chip>
map0_ly.bmp 2 0 0 0 0
</lyer_map_chip>
<midi_index>
3
</midi_index>
<scene_change_number>
4
</scene_change_number>
<scene_change_data>
0 1 1 4
10 17 3 5
16 17 3 6
27 1 3 7
</scene_change_data>
<treasure_index_number>
1
</treasure_index_number>
<treasure_index_data>
0
</treasure_index_data>
<npc_index_number>
2
</npc_index_number>
<npc_index_data>
0
1
</npc_index_data>
<flag_number>
12
</flag_number>
-------------------------
0
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
nar 0
</flag_cmd_data>
</flag_data>
-------------------------
1
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>

</flag_cmd_data>
</flag_data>
-------------------------
2
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
load
</flag_cmd_data>
</flag_data>
-------------------------
3
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
exit
</flag_cmd_data>
</flag_data>
-------------------------
4
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
scene 1 29 1
</flag_cmd_data>
</flag_data>
-------------------------
5
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
scene 2 5 7
</flag_cmd_data>
</flag_data>
-------------------------
6
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
scene 4 5 7
</flag_cmd_data>
</flag_data>
-------------------------
7
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
scene 5 5 7
</flag_cmd_data>
</flag_data>
-------------------------
8
-------------------------
<flag_data>
<flag_cmd_number>
1
</flag_cmd_number>
<flag_cmd_data>
message 9
</flag_cmd_data>
</flag_data>
-------------------------
9
-------------------------
<flag_data>
<flag_cmd_number>
3
</flag_cmd_number>
<flag_cmd_data>
talk 0
item0 1 0
wave 1 1
</flag_cmd_data>
</flag_data>
-------------------------
10
-------------------------
<flag_data>
<flag_cmd_number>
7
</flag_cmd_number>
<flag_cmd_data>
face 0
? flag0 == 1
flag0 = 2
talk 12
end
!
talk 1
</flag_cmd_data>
</flag_data>
-------------------------
11
-------------------------
<flag_data>
<flag_cmd_number>
7
</flag_cmd_number>
<flag_cmd_data>
face 1
? flag0 == 0
flag0 = 1
talk 11
end
!
talk 2
</flag_cmd_data>
</flag_data>