四限目・笑わないスクリプター

('A`)『さあさあ皆さんお立会い。ここからが本番のスクリプトですよ。』

('A`)『なんか胡散臭い物売りみたいだな。』

('A`)『一見するとタダのボールペン。しかしこれはNASAの開発した宇宙でも使える宇宙ボールペンだ!』

('A`)『一方ソ連は鉛筆を使った。』

('A`)『おおーすげーおじちゃんその宇宙ボールペンちょうだーい』

('A`)『そんなのに騙されんなよ。』

('A`)『まあまあ、今の若者に足りないのは彼のような純粋さですよ。』

('A`)『あれは頭が足りないだけだ。純粋な若者っていうと安田講堂とか浅間山荘が真っ先に思い浮かぶのであまりいいイメージが無いな。』

('A`)『たしかに警官が突入するかしないかという状況でバリケードの裏で生物的純粋さを発揮して腰を振ってたわけですからね。ってそういう純粋さとちゃうねん!』

('A`)『MAJIKA!ちょっと安田講堂行ってくる。』

('A`)『通報しますた。』









 __[警]
  (  ) ('A`)
  (  )Vノ )
   | |  | |








   _
   \ヽ, ,、
     `''|/ノ
      .|
 _    |
 \`ヽ、|
   \, V
      `L,,_
      |ヽ、)
     .|
    /           ,、
    /       ヽYノ
   .|      r''ヽ、.|
   |       `ー-ヽ|ヮ
    |           `|
   ヽ,          |
     ヽ,/ ̄ ̄ ヽノ
     /        ',
     {0}  /¨`ヽ {0},
     .l   ヽ._.ノ   ',     ┼ヽ  -|r‐、. レ |
    /   `ー'′   ',    d⌒) ./| _ノ  __ノ




















('A`)『終わるなーーーー!!!』

('A`)『さて、スクリプトを作る前に下準備をしておきましょう。』

('A`)『何事も無かったの様に話を進めるなよ!』

('A`)『え…何言ってんの?これから本編ですよ?それとも脱線が貴様の望みなのかー!』

('A`)『あ、あれ?なんかおかし…まあいいか。』

('A`)『下準備ってなにするんですかー?』

('A`)『スクリプト作成は長い戦いです。いちいち命令を手入力しているとうんざりしてくるので入力補完可能なテキストエディタをインストールして下さい。自分の使いやすいのを見つけましょう。ちなみに私はサクラエディタを使ってます。』

('A`)『!!サクラ!!カードキャタピラー!!!』

('A`)『二重にボケるな!』

('A`)『探すのめんどくさいからメモ帳でいくですー』

('A`)『お前夏休みの宿題をギリギリまで溜め込むタイプだろ。』

('A`)『いいえ、夏休みの宿題なんかやった事ありません。』

('A`)『…最初から提出する気なしか。肝だけは据わってるな。』

('A`)『担任の先生が若くて美人なおねいさんだったから怒られる方が…そして最後まで提出を拒否する事によって呆れはてて蔑みの目で見られたりしたらもう…』

('A`)『お前にとって世界は性欲処理場か!』

('A`)『ま、まあ本人がそれでいいというなら私も止めません。さて、本題に入りますよ。まずはsample1.sptファイルを開いてください。』

('A`)『ここで辞世の句を一つ。』

      も り も
      う か じ
      だ い ら
      め ふ れ
      ぽ の つ
        う
        で


('A`)『諦めるの早!』

('A`)『そんなに難しくないので大丈夫ですよ。このファイルを改変して作業していけば必ず完成します。』

('A`)『ホントにー?』

('A`)『ウソのようなホントの話です。まず最初は";"の使い方です。これの後に続く箇所はコメントとして扱われ、改行したところまでスクリプトに影響を与えません。命令などの見出しや注意書き等に使いましょう。つまり、"俺様用メモ"という事です。』

('A`)『続いて"settime"命令。これはミッションの制限時間を設定する命令で単位は秒です。このファイルで設定されている600というのは600秒、つまり10分です。自分が想定したクリア時間の約二、三倍くらいにしておくと良いかな。今回は600で行きます。』

('A`)『でも時間制限が重要なミッションなら割りとタイトな設定でも悪くないな。』

('A`)『次はミッション作成で最もお世話になる命令の一つgetstatus命令シリーズから、難易度の情報を取得するLEVELの登場です。この命令は、現在プレイしている難易度がEASYなら0,NORMALなら1,HARDなら2を、レジスタのR0に代入します。』

('A`)『えーと、レジスタとかR0とかって何ですかー?』

('A`)『そういえばお前、レジスタとかフラグとかの変数を説明してないじゃないか。』

('A`)『これからレジスタに関して説明します。プログラム未経験の人にとって変数は最初の難関です。私がそうでした。だから一度に全部言うとこんがらがる可能性が高いのでフラグやカウンターは必要になったらその時に解説します。』

('A`)『なるほど、それにドクオ(青)は通常の三倍アホだからな。』

('A`)『素数のときだけ賢くなります。』

('A`)『どんどん知性が失われていくのか…』

('A`)『さて、噂のレジスタですが、要は好きな数字として使えるワイルドカードみたいな物と考えてください。』

('A`)『ワイルド7思い出した』

('A`)『だからお前は幾つなんだ!?』

('A`)『そして自分で好きな数字か、ゲーム内の情報を取得したその数字を当てはめる事ができます。全部で8個、R0からR7まで使えます。』

('A`)『スルー力が高まってきたな。』

('A`)『今回は後者の難易度情報を"getstatus LEVEL"命令で取得して数値として使用しています。その数値は前述のとおりです。』

('A`)『好きな数字を使う場合はどうやるのー?』

('A`)『あとで教えますが、"set"命令というものがあります。これで数値を直接指定します。』

('A`)『なるほどー』

('A`)『そして取得した数値を使います。8行目の"jump R0==0,init_easy"を見てください。その後ろのコメントに内容が書いてありますが、"getstatus LEVEL"命令で取得した難易度情報がEASYならR0は0となり、"jump"命令で"init_easy"というラベルにジャンプするという事です。』

('A`)『ラベルとかジャンプとかわけわからないですー』

('A`)『ジャンプというのはゲームで例えるとシナリオの分岐先へ移動する、みたいな感じかな。で、ラベルがその行き先。ラベルはスクリプト上では#のあとに続く部分です。"#init_easy"というのが13行目にありますね。そこのスクリプト処理に移動するという事です。』

('A`)『なるほどー、つまりR0が1だと"init_normal"に移動すると。当てはめられた数値によって行き先が違うというわけですねー』

('A`)『うわ、ドクオ(青)があっさり理解している!?』

('A`)『10行目の"jump"命令の0==0ってどういう意味なんですかー?あと、何でR0=0じゃなくてR0==0という書き方なのかわかりません。』

('A`)『いいところに気がつきましたね。0==0というのは0は0に等しければという意味で、つまり無条件で"jump"命令を実行する、というわけです。この場合はEASYでもNORMALでもない場合、要するにHARDなら"init_hard"に移動という訳です。そしてR0==0の表記ですが、R0=0だと"R0に0を当てはめる"という意味になります。プログラムの決まりごとらしいので私も詳しくわかりませんが、そういうものと割り切りましょう。』

('A`)『ボクの目の付け所は常にシャープです。』

('A`)『お前の部屋のテレビはパナソニックだがな。』

('A`)『さあさあここから作業ですよ。12行目以下、それぞれの難易度ごとにユニットを配置して下さい。元の"putgroup"命令をコピペして数字を変えるだけでもOKです。』

('A`)『うーむ、ドクオ(赤)のスルー力が高いとなんか物足りないな。』

('A`)『こうですねわかります。』

;Easy用初期化ルーチン
#init_easy
putgroup 0 ;自機読み込み
putgroup 1 ;僚機読み込み
putgroup 10 ;補給車読み込み
putgroup 100 ;R-17読み込み
putgroup 110 ;R-27読み込み
jump 0==0, init_total ;init_totalへ無条件ジャンプ

;Normal用初期化ルーチン
#init_normal
putgroup 0 ;自機読み込み
putgroup 1 ;僚機読み込み
putgroup 10 ;補給車読み込み
putgroup 100 ;R-17読み込み
putgroup 101 ;R-17読み込み NORMAL
putgroup 110 ;R-27読み込み
putgroup 111 ;R-27読み込み NORMAL
jump 0==0, init_total ;init_totalへ無条件ジャンプ

;Hard用初期化ルーチン
#init_hard
putgroup 0 ;自機読み込み
putgroup 1 ;僚機読み込み
putgroup 10 ;補給車読み込み
putgroup 100 ;R-17読み込み
putgroup 101 ;R-17読み込み NORMAL
putgroup 102 ;R-17読み込み HARD
putgroup 110 ;R-27読み込み
putgroup 111 ;R-27読み込み NORMAL
putgroup 112 ;R-27読み込み HARD
jump 0==0, init_total ;init_totalへ無条件ジャンプ

('A`)『おいおい援軍のR-27を最初から配置するなよ。』

('A`)『援軍は登場するときに配置すればいいので今は置かないで下さい。さて、各難易度のユニット配置が終われば、次は全難易度共通の処理の"init_total"に進みます。まずは僚機を無敵にしておきましょう。僚機に台詞を喋らせる場合、撃墜されていると非常に困ります。やりかたは"#init_total"の下に"sethp"命令を追加すればOK。書き方は"sethp L* ,*****"です。Lのあとにはユニットのラベルが入ります。僚機に設定したラベルの数値を入れて下さい。,のあとにはそのユニットの装甲値が入ります。無敵にするなら9999にでもしておけば良いでしょう。僚機の数だけ繰り返してください。下のスクリプトのようになります。』

sethp L2, 9999 ;ウォーホーク2を無敵にする
sethp L3, 9999 ;ウォーホーク3を無敵にする
sethp L4, 9999 ;ウォーホーク4を無敵にする

('A`)『すげぇ、これこそペールゼン閣下が追い求めた異能生存体だ!』

('A`)『そういうお前は異能性欲体じゃないか。』

('A`)『なにを馬鹿な、ボクは全然ノーマルですよー』

('A`)『うん、お前のあの性癖が異端じゃないと思っている時点でアウトー!』

('A`)『オマエノドコガノーマルヤネン』

('A`)('A`)『うわ、何コイツ!?』

('A`)『ドクオ(アオ)ガムカシカイタハズカシイポエムヲヨムゾ』

('A`)『いいいいいいやあああああああああああああ』

('A`)『おいドクオ(赤)、あいつは一体なんなんだ!?』

('A`)『ドクオ(青)くんが言葉責めでいじめてくれるおねいさんを要求したのでそれに応えただけデスヨ?』

('A`)『ボクが言ってたのはこんなんじゃないですよー!』

('A`)『そういうことは性風俗ではよくある事。巨乳→デヴとか』

('A`)『(こいつ鬼や!情け容赦が全くないわ!)』

('A`)『さあ、性的に満足したようなので先に進みます。その下の"waittime"命令です。この命令ではスクリプトが指定された時間だけ停止します。単位は秒です。ここではコメントに書いてあるとおりなので触らずに進みます。その次は"playwave"命令です。"playwave"のあとに"BGM"とつけるとゲーム中のBGMを指定できます。一限目で紹介した本編BGMの他にも自分で用意した音楽を指定する事ができます。』

('A`)『…』

('A`)『その次に来るのが"message"命令です。これもミッションを作るときに最もお世話になる命令のうちの一つです。話者と会話文を赤青黄の三色のうちのどの色で表示するかという命令です。ファイルでは" message YELLOW, "Navigation", "全てのターゲットを破壊してください。" "と書かれていますね。これはメッセージを黄色、話者「Navigation」で内容は「全てのターゲットを破壊してください。」と表示しろ、という意味です。YELLOWの部分をBLUEかREDにすると表示される会話文の色が変わります。今回はこれを変えてみます。下のように変えてみて下さい。』

message BLUE, "ストーンヘッド","敵が補給部隊に接近中だ。\nすみやかに撃墜して安全を確保しろ。"

('A`)『…』

('A`)『精神的ダメージがでかいようだな。仕方ない、俺が代わりの生徒役を務めるぞ。というわけで質問。文章の途中にある"\n"ってなんだ?』

('A`)『"\n"というのは文章の改行を表します。上の例だと表示はこうなります。』

敵が補給部隊に接近中だ。
すみやかに撃墜して安全を確保しろ。

('A`)『別に何行にしてもいいですけど3行目以降はウィンドウからはみ出るのでやらない方がいいですね。で、次の行に"waittime"命令が鎮座してます。説明は先ほどしたのでわかりますね。メッセージはこれとその下の"closewindow"の三つがセットになって出来ています。"closewindow"は表示されたウィンドウを閉じる命令です。これをやらないとメッセージはずっとっ表示されたままになります。この場合は、"waittime"で四秒待った後に"closewindow"でウィンドウを消す、という流れになります。』

('A`)『なるほど、これだと文章の長さに応じて"waittime"の数字を変える必要があるな。』

('A`)『ですね。それではここまで出来た時点で一度テストプレイをしてみましょう。ちゃんと動くはずです。それでは今日はこの辺で。』

('A`)『…』

('A`)『なあ、こいつどうする?』

('A`)『まあ放っておきましょう。大人の事情で次回はちゃんと復活しますよ。』

('A`)『コンヤガヤマダ』

もういい帰る >三限目に戻る >五限目へ進む