「戦闘中イベントの発生」の編集履歴(バックアップ)一覧はこちら
戦闘中イベントの発生 - (2011/12/29 (木) 16:53:46) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
**&color(green){概要}
>senario s1 {
> fight = fight_event
>}
scenario構造体でfightに戦闘開始前イベントを設定し
>event fight_event {
> if (inBattle(goto, mukugaiya)) {
> battleEvent(btl_evt)
> }
>}
戦闘開始前イベントの中で任意の状態の時にbattleEvent関数を用いると
>event btl_evt {
> if (条件式) {
> 関数
> }
> rif (条件式) {
> 関数
> }
>}
その戦闘シーンで戦闘中イベントを発生出来ます。
if文は一度「真」が返り実行されたら消滅します。rif文は消滅せず繰り返し判定され実行されます。
戦闘中イベントを表すevent構造体の中ではif文ないしrif文のみを列挙してください。
ここではelseは無視されます。処理の高速化の為にあえて制限してます。
なお、if文とrif文の実行ブロックの中では通常通り全ての構文が仕えます。
**&color(green){戦闘中イベントの主な関数}
青色の引数には&color(blue){文字変数}が使えます(先頭に @ を付けると文字変数と見なされます)
:win()|
戦闘シーンから抜けます。
:resetTime()|
システム内部の戦闘カウントをゼロにします。
戦闘カウントとは戦闘開始からの経過時間を示すシステム内の数値です。
制限時間が1減ると戦闘カウントは10増えてます。
:setLimit(数値)|
制限時間を指定数値に戻します。
:addLimit(数値)|
制限時間を増やします。負の値だと減ります。
:addTroop(&color(blue){ユニット}、x座標, y座標, 向き(0~7), (red/blue))|
指定ユニット部隊を戦場マップに登場させます。
xy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
向きは、0=北、1=北西、2=西、3=南西、4=南、5=南東、6=東、7=北東、です。
redだと赤陣営に、blueだと青陣営に追加されます。
操作部隊にするにはリーダーの構造体に&color(blue){handle = on}としてください。
ただし追加先がプレイヤー陣営でないと無効になります。ダンジョンのプレイヤーは赤陣営です。
:eraseTroop(&color(blue){ユニット})|
指定ユニット部隊を消去します。
:moveTroop(&color(blue){ユニット}、x座標, y座標, 向き(0~7))|
:moveTroopFix(&color(blue){ユニット}、x座標, y座標, 向き(0~7))|
指定ユニット部隊を指定座標へ移動させます。
xy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
向きは、0=北、1=北西、2=西、3=南西、4=南、5=南東、6=東、7=北東、です。
moveTroopFixだと敵を攻撃しないで強行移動します。
:moveTroop(&color(blue){ユニット}、&color(blue){追尾ユニット})|
:moveTroopFix(&color(blue){ユニット}、&color(blue){追尾ユニット})|
指定ユニット部隊を追尾させます。
:smoveTroop(&color(blue){ユニット}、x座標, y座標, 向き(0~7))|
:smoveTroopFix(&color(blue){ユニット}、x座標, y座標, 向き(0~7))|
指定ユニット部隊を指定座標へ直線移動させます。
経路探索で行列になるのを回避してとにかく直進させたい時に使ってください。
:smoveTroop(&color(blue){ユニット}、&color(blue){目標ユニット})|
:smoveTroopFix(&color(blue){ユニット}、&color(blue){目標ユニット})|
指定ユニット部隊を目標ユニット位置へ直線移動させます。
:freeTroop(&color(blue){ユニット})|
指定ユニット部隊から&color(blue){moveTroop}で設定した目標座標ないし追尾ユニットをリセットします。
通常通り動くようになります。
:haltTroop(&color(blue){ユニット})|
指定ユニット部隊から&color(blue){moveTroop}で設定した目標座標ないし追尾ユニットをリセットします。
そして一時立ち止まらせます。
:activeTroop(&color(blue){ユニット})|
指定ユニット部隊をアクティブにします。アクティブとは部隊移動を行う稼働状態の事です。
:sleepTroop(&color(blue){ユニット})|
指定ユニット部隊をスリープにします。スリープだと部隊移動をしません。
スリープ状態からの条件付き稼働は、unit構造体でも設定できます。
:formTroop(&color(blue){ユニット}, 隊形(0~2))|
指定ユニット部隊の隊形を変更します。
隊形は、0=方陣、1=横列、2=縦列、です。
:retreatTroop(&color(blue){ユニット})|
指定ユニット部隊を退却モードにします。
:speedTroop(&color(blue){ユニット}, 数値)|
指定ユニット部隊の全ユニットのmoveを変更します。
:skillTroop(&color(blue){ユニット}, スキル名, (on/dead_ok))|
指定ユニットから指定スキルを発射させます。
第三引数をonにすると部隊全員が発射します。dead_okだと死亡してても死亡位置から発射されます。
:aimTroop(&color(blue){ユニット}、x座標, y座標)|
:aimTroop(&color(blue){ユニット}、&color(blue){標的ユニット})|
指定ユニット部隊の発射スキルの標的位置を決めます。
xy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:aimTroop(&color(blue){ユニット}、-1, -1)|
xy座標に-1を指定すると射撃標的設定が解除されます。
**&color(green){主に戦闘シーンの条件式の中で使われる関数}
赤色の引数には&color(red){文字変数}が使えます(先頭に @ を付けると文字変数と見なされます)
:inBattle(&color(red){ユニット}, &color(red){ユニット}, ‥)|
返値:&color(blue){1 = 全ている、0 = いない}
今の戦闘シーンに列挙されたユニットが全部いるか調べる
:getTime()|
返値:&color(blue){システム内の戦闘カウント}
戦闘カウントとは戦闘開始からの経過時間を示すシステム内の数値です。
画面左上ウィンドウの制限時間が1減ると戦闘カウントは10増えてます。
これは&color(blue){resetTime()}関数でゼロにできます。
:getLimit()|
返値:&color(blue){残り制限時間}
:isInterval(数値)|
返値:&color(blue){1 = 指定数値の間隔、0 = そうじゃない}
一定間隔毎に1が返る関数です。戦闘カウントが数値で割り切れたら1が返ります。
&color(blue){rif}の条件文で用いる必要があります。
:isDead(&color(red){ユニット}, &color(red){ユニット}, ‥)|
返値:&color(blue){1 = 全部やられた、0 = そうじゃない}
列挙されたユニットが全部やられてるか調べる
:isAllDead(&color(red){ユニット})|
返値:&color(blue){1 = 全滅した、0 = そうじゃない}
指定ユニットの所属陣営が全滅したか調べる
:isWhoDead(&color(red){ユニット}, &color(red){ユニット}, ‥)|
返値:&color(blue){1 = 誰かがやられた、0 = そうじゃない}
列挙されたユニットの中の一人でもやられていたら1が返る
:getLifePer(&color(red){ユニット})|
返値:&color(blue){残りHPの百分率(0~100)}
:countUnit(&color(red){ユニット})|
返値:&color(blue){指定ユニットの生存数。一般兵士の構造体の識別子を指定してください。}
:isRedAlive()|
返値:&color(blue){1 = 「赤」陣営が生存、0 = 「赤」陣営が全滅}
:isBlueAlive()|
返値:&color(blue){1 = 「青」陣営が生存、0 = 「青」陣営が全滅}
:getRedCount()|
返値:&color(blue){「赤」陣営の生存ユニット数}
:getBlueCount()|
返値:&color(blue){「青」陣営の生存ユニット数}
:getDistance(&color(red){ユニット}, &color(red){ユニット})|
返値:&color(blue){ユニットとユニットの距離ドット}
指定ユニット同士の距離ドットを返します。
:getDistance(&color(red){ユニット}, x座標, y座標)|
返値:&color(blue){ユニットと指定座標の距離ドット}
指定ユニットと指定座標の距離ドットを返します。
引数のxy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:isPostIn((red/blue), &color(red){ユニット}, 数値)|
返値:&color(blue){1 = 指定ユニットの数値半径内にいる、0 = そうじゃない}
指定ユニットの数値半径ドット以内に「赤」「青」陣営のユニットが一人でもいるか調べます。
:isPostIn((red/blue), x座標, y座標, 数値)|
返値:&color(blue){1 = 座標の数値半径内にいる、0 = そうじゃない}
指定座標の数値半径ドット以内に「赤」「青」陣営のユニットが一人でもいるか調べます。
引数のxy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:isPostIn((red/blue), left座標, top座標, right座標, bottom座標)|
返値:&color(blue){1 = 指定領域内にいる、0 = そうじゃない}
指定座標の四角形内に「赤」「青」陣営のユニットが一人でもいるか調べます。
引数の座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:isDungeon()|
返値:&color(blue){1 = ダンジョンにいる、0 = そうじゃない}
:isDungeon(dungeon構造体の識別子)|
返値:&color(blue){1 = 指定ダンジョンにいる、0 = そうじゃない}
:isDungeon(dungeon構造体の識別子, 数値)|
返値:&color(blue){1 = 指定ダンジョンの(数値)階にいる、0 = そうじゃない}
.
**&color(green){概要}
>senario s1 {
> fight = fight_event
>}
scenario構造体でfightに戦闘開始前イベントを設定し
>event fight_event {
> if (inBattle(goto, mukugaiya)) {
> battleEvent(btl_evt)
> }
>}
戦闘開始前イベントの中で任意の状態の時にbattleEvent関数を用いると
>event btl_evt {
> if (条件式) {
> 関数
> }
> rif (条件式) {
> 関数
> }
>}
その戦闘シーンで戦闘中イベントを発生出来ます。
if文は一度「真」が返り実行されたら消滅します。rif文は消滅せず繰り返し判定され実行されます。
戦闘中イベントを表すevent構造体の中ではif文ないしrif文のみを列挙してください。
ここではelseは無視されます。処理の高速化の為にあえて制限してます。
なお、if文とrif文の実行ブロックの中では通常通り全ての構文が仕えます。
.
#comment(size=60,vsize=2)
----