; 脱出ゲームサンプル ; byシフトアップネット ; ご自由にスクリプトを改造して使用してください ; 町 (クリッカブルマップで使用) town1_nm = "初めから" "宿屋" "酒場" "町の外へ" town1_x = 150 -175 0 -50 town1_y = 150 -100 -100 -100 town1_w = 150 100 200 50 town1_h = 100 100 100 100 town1_suu = 4 ; 宿屋 (クリッカブルマップで使用) town3_nm = "外へ出る" "ベッドの上" "イス" town3_x = 150 -200 50 town3_y = 150 -200 50 town3_w = 150 100 50 town3_h = 100 100 100 town3_suu = 3 ; 酒場 (クリッカブルマップで使用) town2_nm = "外へ出る" "絵画" "花瓶" town2_x = 150 -275 150 town2_y = 150 -125 -80 town2_w = 150 100 30 town2_h = 100 50 50 town2_suu = 3 ; モンスター (クリッカブルマップで使用) mons_nm = "逃げる" "アイテム" "攻撃" mons_x = 150 -300 -100 mons_y = 150 150 -100 mons_w = 150 150 200 mons_h = 100 100 200 mons_suu = 3 ; アイテム itm_nm = "手紙" "花束" "メモ" "" itm_img = "手紙2" "花束" "地図" "" itm_flg = 0 0 0 0 ; アイテムを持っているか itm_suu = 4 ; フラグ flg = 0 0 0 0 0 0 0 0 0 0 ; 0:手紙読んだ、1:メモ読んだ、2:ベッド見た、3:絵画見た、4:花瓶見た、5:天井に何か発見、 ; アイテムメニュー用 ary = 0 0 0 0 aryNm = "" "" "" "" ; 背景用 tgl_map = 0 ; 0と1を切り替える kasane = 100 ; 100〜999まで ; タイトル text 画面クリック機能サンプル 『町の外へ出よう』 . clear ;itm_flg = 1 1 1 0 ; デバッグ ; 町 *machi stopm music A16_039 arg = "town1_1b" gosub changeScreen *machi_50 modeMenu = 0 msg 2 425 350 150 1 FFFFFF 0000FF 0000FF left 初めから . clickmap m0 town1_suu town1_x town1_y town1_w town1_h ; クリッカブルマップ endclickmap modeMenu = -1 clear if m0 = 0 then end else if m0 = 1 then goto yadoya else if m0 = 2 then goto sakaba else if m0 = 3 then goto monstar endif goto machi_50 ; 宿屋 *yadoya stopm music B16_020 arg = "h_Childroom" gosub changeScreen *yadoya_50 modeMenu = 2 msg 2 425 350 150 1 FFFFFF 0000FF 0000FF left 外へ出る . clickmap m0 town3_suu town3_x town3_y town3_w town3_h ; クリッカブルマップ endclickmap modeMenu = -1 clear if m0 = 0 then goto machi else if m0 = 1 then if itm_flg[2] = 0 then if flg[5] = 0 then ベッドの上には何もなかった flg[2] = 1 else ベッドの上から天井に手を伸ばした arg = 2 gosub paintItem 古ぼけたメモを見つけた! itm_flg[2] = 1 gosub eraseItem メモの内容・・・ 『額縁の裏を調べろ』 flg[1] = 1 endif else もう何もなかった endif else if m0 = 2 then wk < flg[2] + flg[3] + flg[4] ; wkが3になれば、flg[2]〜flg[3]全て立っている if wk = 3 then 座って少し休もう・・・ if itm_flg[2] = 0 then 大きく伸びをした すると天井に何か貼り付けてあるのが見えた! flg[5] = 1 endif else まだ休むには早い endif endif clear goto yadoya_50 ; 酒場 *sakaba stopm music A16_076 arg = "h_Salon" gosub changeScreen *sakaba_50 modeMenu = 1 msg 2 425 350 150 1 FFFFFF 0000FF 0000FF left 外へ出る . clickmap m0 town2_suu town2_x town2_y town2_w town2_h ; クリッカブルマップ endclickmap modeMenu = -1 clear if m0 = 0 then goto machi else if m0 = 1 then if itm_flg[0] = 0 then if flg[1] = 0 then 絵画が飾られている flg[3] = 1 else 額縁の裏を調べてみた arg = 0 gosub paintItem 手紙を見つけた! itm_flg[0] = 1 gosub eraseItem 手紙の内容・・・ 『モンスターは美しい物に目がない』 flg[0] = 1 endif else もう何もない endif else if m0 = 2 then ; 花瓶 if itm_flg[1] = 0 then if flg[0] = 0 then たくさんの花が飾られている flg[4] = 1 else arg = 1 gosub paintItem 何本か抜き取って花束にした! itm_flg[1] = 1 gosub eraseItem endif else もう花束を持っている endif endif clear goto sakaba_50 ; モンスター遭遇 *monstar stopm music B16_115 load medosa.png grpMons 1000 paint grpMons wipe モンスターが現れた! clear *monstar_50 modeMenu = 3 msg 2 425 350 150 1 FFFFFF 0000FF 0000FF left 逃げる . msg 3 -40 350 150 1 FFFFFF 0000FF 0000FF right アイテム . clickmap m0 mons_suu mons_x mons_y mons_w mons_h ; クリッカブルマップ endclickmap modeMenu = -1 clear if m0 = 0 then あなたは逃げ出した・・・ erase grpMons wipe clear goto machi else if m0 = 1 then ; アイテムメニュー(持っているアイテムだけをメニューに出す) wk = 0 for i = 0 to 3 if itm_flg[i] = 1 then ary[wk] = i ; menuの戻り値と、アイテム番号を対応させるための配列 aryNm[wk] = itm_nm[i] ; アイテム名の配列 wk + 1 endif endfor if wk = 0 then アイテムを1つも持っていない! else modeMenu = 100 menu m0 aryNm wk 戻る endmenu modeMenu = -1 clear if m0 = wk then ; 戻る else arg = ary[m0] gosub paintItem あなたは$aryNm[m0]$を使った! gosub eraseItem if ary[m0] = 1 then ; 花束 モンスター『まあ、すてき!』 モンスター『どうぞ、ここをお通りになって』 erase grpMons wipe ; ゲームクリア! stopm music A16_058 あなたは無事に町を出ることができた! つづく・・・? fadeout 000000 このスクリプトは自由に改造してご使用ください タイトルに戻ります end else しかし、何も起こらなかった・・・ endif clear endif endif else if m0 = 2 then あなたの攻撃! ; エフェクト しかしモンスターには効かなかった モンスター「そう、そこがこってるのよ。もっと強くお願い」 clear endif clear goto monstar_50 ; ちょっと複雑な画面切替 ============================================ ; 引数 arg=ファイル名 *changeScreen ; grpMap[0]とgrpMap[1]の2つを使うことで、画面切替の効果を出す wk = tgl_map tgl_map + 1 if tgl_map > 1 then tgl_map = 0 endif load $arg$ grpMap[tgl_map] kasane fit grpMap[tgl_map] paint grpMap[tgl_map] wipe erase grpMap[wk] ; 重ね順を1つずつ増やすことで、新しい画面の方を上に描く ; だだしリミット時は例外 kasane + 1 if kasane = 1000 then kasane = 100 endif return ; アイテム表示 ============================================ ; 引数 arg=アイテム番号 *paintItem load $itm_img[arg]$ grpItem 2000 paint grpItem wipe return *eraseItem erase grpItem wipe return ; メニュー ============================================ ; このラベル内には、text、menu、wait、各load等、待ちの発生するコマンドを書かないでください(書くと動作がおかしくなる) *onMoveMenu ; この名前のラベルは、メニューやクリッカブルマップで自動的に呼ばれる(詳しくはマニュアル参照) if modeMenu = 0 then msg 1 175 0 200 1 444444 FFFF44 FFFF44 center $town1_nm[m0]$ . else if modeMenu = 1 then msg 1 175 0 200 1 444444 FFFF44 FFFF44 center $town2_nm[m0]$ . else if modeMenu = 2 then msg 1 175 0 200 1 444444 FFFF44 FFFF44 center $town3_nm[m0]$ . else if modeMenu = 3 then msg 1 175 0 200 1 444444 FFFF44 FFFF44 center $mons_nm[m0]$ . else if modeMenu = 100 then if m0 < wk then ; 「戻る」以外 omm0 = ary[m0] msg 1 175 0 200 1 444444 FFFF44 FFFF44 center $itm_nm[omm0]$ . else ; 戻る clear 1 endif endif return ; このラベル内には、text、menu、wait、各load等、待ちの発生するコマンドを書かないでください(書くと動作がおかしくなる) *onOutMenu ; この名前のラベルは、メニューやクリッカブルマップで自動的に呼ばれる(詳しくはマニュアル参照) if modeMenu != -1 then clear 1 endif return