('A`)『と、いうわけで前回はプレイヤー、僚機、補給車とターゲットのR-17を配置して最低限動くところまで進みました。なので次は一歩すすんで増援などを配置していきましょう。』
〜♪
('A`)『これは…マテリアルガール?』
('A`)『直接タイトル言っちゃらめぇぇぇぇぇ』
_ _ _
/ .| | .\
/____| |__ \
/ ___ ___ \
| / (●)|_|(●) \ | スタァァーップ!!
| | .(__人__) | |お前はJASRA○の利権を侵した!
| | |::::::| | |
.\| l;;;;;;l | /
/. `ー´ \
/ ヽ
ニア裁判所へ行く
支払いに抵抗する
著作物使用料を払う
♪ Å
♪ / \ ランタ タン
ヽ(´Д`;)ノ ランタ タン
( へ) ランタ ランタ
く タン
('A`)『おいこら、どうすんだよこのカオス…収集つけられるのか?』
('A`)『え?私が悪いんですか?』
|∀´> 何が何でもドクオ(赤)が悪いニダ
|ミササッ
('A`)『またなんか増えてるー!』
('A`)『にぎやかになってきましたねー』
('A`)『なにその他人事な態度』
('A`)『なけなしの小遣いをまきあげられましたー(泣)』
('A`)『あの著作権893どもを相手にしてなけなしの小遣いで済んでよかったな』
♪ Å
♪ / \ ランタ ランタ
ヽ(;´Д`)ノ ランタ タン
(へ ) ランタ タンタ
> タン
('A`)『あとはあいつだけだ。』
('A`)『なんでまだいるのーガクガクブルブル』
('A`)『まあ実害がないので放っておきましょう。さて、初期設定が終わるとスクリプトは次にどこへ移動しますか?』
('A`)『(ちらっ)えーと、jump 0==0 ,loopだから…#loopですー』
('A`)『そう、正解です。この#loopはスクリプトの中核になる場所です。ここからゲーム開始〜終了までの様々なサブルーチンを呼び出します。』
('A`)『サブルーチンって何ー?』
('A`)『条件判定によって呼び出させる色々な命令です。たとえば、今回ならR-17を撃墜すれば増援が現れる、というのを実行します。』
('A`)『よくわからないのでオブリビオンで例えて教えてー。』
('A`)『何だその要求…お前はかぐや姫か!』
('A`)『し、失敬な!ニートとちゃうわ!』
('A`)『お前も東方厨か!』
('A`)『あっなたーも東方厨 わたしも東方厨〜♪』
('A`)『うどんげ萌えまでおんなじねー♪』
('A`)『えー、あの露骨に狙ってるとしか思えないのはないわー』
('A`)『あーサザヱさんは火曜日にもやってたなー。それにしても昭和のかおりが漂うインターネッツだな…と言いたい所だがまた著作権がフンダララとかで奴らが来るぞ。』
('A`)『すまりかわねすでとこふいふか』
('A`)『昭和は昭和でもそれは戻りすぎだ!』
('A`)『ちなみにここで"白舟隷書教漢"をダウンロードしてくるとより味わい深くなりますよ。』
('A`)『お前はどこに向かって喋っているんだ。』
('A`)『さて、オブリビオンに例えてですが、ミッションクリアを家の購入としてみましょう。そのためにはゴールドを貯めないといけません。これがミッションクリアの条件にあたります。山賊のアジトを襲撃して金品を奪ったりなどお金を貯める行為=ターゲットの撃破に例えられ、魔法を作ったりたまねぎを弄って遊んだりするお金を貯めるのに直接関係ない行為がノンターゲットの撃破やレインボーブリッジをくぐったりするのにあたります。』
('A`)『で、サブルーチンはどうなった?』
('A`)『ぶっちゃけ言うとミッション達成のためにフィールドをうろつくのがメインループで、サブルーチンはダンジョンだったりクエストだったりフィールド上で起こる様々なイベントだと言えるでしょう。』
('A`)『なるほど、ある事柄を別の物に例えると例え先に引きずられて余計にわからなくなるという事ですねー』
('A`)『お ま え が 言 う な !』
('A`)『(ビキビキ)さて、それでは増援部隊出現イベントを追加してみましょう。まず増援登場の条件は何でした?』
('A`)『えーと、R-17の全滅?』
('A`)『アホ!それだとミッション終了じゃねーか!』
('A`)『R-17を一機撃墜したら増援登場でしたね。それでは増援を出現させるサブルーチンを作ります。まず、最終行の#endの上に#zouenというサブルーチンのラベルをつけて下さい。』
('A`)『ZOUENせよ!ZOUENせよ!』
('A`)『お前…ラベルに命名する度にいちいちそんな反応する気か?』
('A`)『続いてそのサブルーチンを呼び出す命令を#loop内に作ります。それには"getstatus AIR_TARGET_DESTROYED"を使います。これはターゲットの航空機が幾つ撃破されたかを調べる命令です。そして次の行にサブルーチンを呼び出す命令の"call"を入力します。使い方は"jump"と同じです。』
('A`)『じゃあ"jump"でもいいですねー』
('A`)『いいえ、違いがあるので混同しないようにして下さい。何が違うのかは後で説明しますよ。で、#loop内に以下の命令を追加します。』
getstatus AIR_TARGET_DESTROYED ;R0にR-17撃破数を代入
call R0==1 ,zouen ;R0が1であれば、増援処理を呼び出す
('A`)『これでR-17を一機撃墜すれば増援登場の処理を行なうようになりました。次はその増援を登場させる命令です。#zouenの次の行に"return 0==0"と入れてください。ここが"jump"と"call"の違いです。』
('A`)『どう違うのー?』
('A`)『"call"は"jump"と違って命令を実行すると"call"した次の行に"return"することができます。"return"は"jump"では使えないので注意してください。私もよく間違えます。というわけでそれを踏まえて増援を出現させてみます。まず、#zouenとreturn 0==0の間に以下の命令を追加してください。』
putgroup 110 ;R-27読み込み
message BLUE, "ストーンヘッド","注意!敵の増援が接近中だ。"
waittime 4
closewindow
('A`)『おお出来た!これで勝つる!さっそく遊んでくる!』
('A`)『あ、ちょっとまt』
('A`)『なにこの糞ゲー。増援が無限に湧いてくるんですけどー』
('A`)『人の話を最後まで聞かないからだ!』
('A`)『さっきの状態だと増援処理が終わったあとメインループに戻った後ももう一度R-17撃墜数の判定で増援処理が行なわれてR-17をもう一機撃墜するまで増援が出現し続けます。それを防ぐための処理を加えないといけません。』
('A`)『そういう大事な事は先に言って下さいよー』
('A`)『自分の迂闊さに対する自省とかそういうのは一切無いのな。』
('A`)『さて、これから本編でも使われている方法でそれをやります。この処理には"return"と"set"、それに変数の"フラグ"を使用します。』
('A`)『なんか新しいのキター』
('A`)『フラグというのはレジスタと同じように使える変数です。レジスタと違う点はレジスタが一時的なものである事に対して、フラグは設定された数値がこちらで変更するまでずっと保持されるところです。ただし、フラグは0〜127までしか使えません。表記はF***です。まずは下の命令を#zouenとputgroupの間に挿入してください。』
return F1!=0
set F1=1
('A`)『挿入…ドキドキ』
('A`)『…まーたエロイ事考えてるな。』
('A`)『さて、上の命令の説明をします。"return F1!=0"ですが、これはフラグ"F1"が0以外の時は元の場所に帰れという事です。そして次の行ではそのF1に1を代入します。フラグは数値を指定しないと0として扱われます。つまり、増援出現の一回目でF1が1になってしまうので二回目以降は"return F1!=0"によってメインループでcallされても追い返される事になります。』
('A`)『F1といえばF1弁当ですがあれって一体何が一万円もしたのかなー』
('A`)『知らんがな。そういえば増援の奴、EASYのしか呼んでなくね?』
('A`)『これもサブルーチンを使って解決です。putgroupのすぐ下にgetstatusで難易度情報を取得してNORMALとHARDそれぞれの増援登場のサブルーチンを自力で作ってみてください。これまでの講義をおさらいすればできるはずです。』
('A`)『なるほど、サブルーチンからサブルーチンを呼び出す訳か。』
('A`)『それが出来ればミッションの本筋は完成です。あとはお好みで会話文などを色々追加して試してみて下さい。習うより慣れろ、です。』
('A`)『おー、動いた。感動した!』
('A`)『次回はイベントシーンについて話します。それでは今日はこの辺で。』
('A`)『おっと、色々忘れてないか?』
('A`)『講義終了記念の打ち上げ会の焼肉パーティの準備ですね、わかります。』
('A`)『アホかお前は!いや、聞くまでもなかろうよ。』
('A`)『駅前でやってる声の出てない素人漫才よりつまらないトークはいいですから何を忘れているのか指摘してもらえると助かります。』
('A`)『ふはは、そんな事もわからんのか土郎よ。今お前が忘れているものは…敗北条件だ!』
('A`)『何だと!?』
('A`)『貴様が今作ったミッションでは補給車が全滅しても………ミッション失敗にならないっ!』
('A`)『!!!』
('A`)『勝利に酔いしれ技に溺れたお前が究極のミッションを作ろうなんて百年早いわ!』
('A`)『しまった…基本的なことを忘れていた…くそっ!よりによって海原雌山に指摘されるなんて!』
('A`)『ヤムァオカサン…』
('A`)『何美昧しんぼごっこしてるんですかー………うわぁぁぁぁぁぁまだいるのかー!』
('A`)『(ギラリ)』ぶちゅぅぅぅぅぅぅぅぅぅぅ
('A`)『UBUBUBUBUBUBUBUBUBUBUBUBUUUUUUUUUUUUUUUUUUUUUUUU!』
('A`)『キャラ二人分担当とはドクオ(桃)は頑張ってるな。』
('A`)『いやいやいや、どう見ても女なのになんでドクオなんですか!』
('A`)『漢字で書くと毒緒で女性名だから問題ないですね。』
('A`)『ヒデェ…これだよ…』
('A`)『よし、本題に戻るか。』
('A`)『ですね。さて、補給車が撃破されるとミッション失敗になるようにするには例によっておなじみ"getstatus"シリーズの"GROUND_FRIEND"を使います。ここで補給車の撃破を検知してミッション失敗のサブルーチンへ移動させればいいです。』
getstatus GROUND_FRIEND
call R0<=3 ,failed;補給車が3台以下になったらミッション失敗
#failed
return F10!=0
set F10=1
message BLUE, "ストーンヘッド","いかん、補給車がやられた!\n任務は失敗だ。これはまずいぞ。"
waittime 5
closewindow
finish FAILED
waittime 1000
('A`)『上の例だと4台ある補給車が3台になったら、つまり一つでも補給車が破壊されたらミッション失敗です。お好みにあわせて”全滅したら失敗”や”難易度ごとに許容範囲が違う”などと条件を変えてみましょう。』
('A`)『難易度ごとに変えるなら増援のときみたいにそれ用のサブルーチンを作らないとな。』
('A`)『よーし、今度こそ遊べますねー』
('A`)『あれ?師匠、敵のR-17が補給車を無視してこっちにばっかり構って来るんですー』
('A`)『あ、そうだ忘れてました。敵の攻撃目標の優先度を設定しないといけませんね。そのためには”attackstyle”命令を使います。標準では航空機優先になっているのでこれを利用して地上物優先に変えます。R-17を配置した直後に挿入しておきましょう。それでは今度こそ今日の講義は終了です。ではまた。』
('A`)『また何か忘れてたりしてな。』