
ゲーム起動直後に演出用のマップを表示できるようになります。
また、タイトル画面の背景にも演出用のマップを指定して表示できます。
「凝った前置きを作りたい!」「タイトル画面が一枚絵だと物寂しい!」
そんな人におすすめです。
オープニングでもマップ!
注意点
- デフォルト設定では何も機能しません。各自設定してください。
- 背景として表示されるマップですが、普通に動けます。メニューも開けます。
→トリガー「自動実行」に設定したイベントなどでロックしてください。 - オープニングデモを終了する場合
→イベントの「タイトル画面に戻す」を使用してください。
更新履歴 | 内容 |
---|---|
2023/09/19 | ロード画面などの背景に マップが表示されない不具合の修正 |
2023/09/03 | シーン遷移時、スプライトが解放されずに 余分な更新処理が行われていた不具合の修正 |
2023/08/21 | 初版 |
→スクリプト一覧へ
↓スクリプト(ダブルクリックで全選択)↓
=begin ========================================================================= ■ 「オープニングデモマップ」- OpeningDemoMap by 地上の洞窟 ================================================================================ タイトル画面の前やタイトル画面の背景にマップを読み込み、演出として表示します。 ================================================================================ ■ 設定項目 =end #========================================================================== module OpeningDemoMap #=============================================================================== # ★ 全ての設定項目は文字列で指定することで、指定された値を動的に取得します。 #------------------------------------------------------------------------------- # 例: OPDEMO_MAP_ID = 'rand(3) + 1' # 1~3番のマップをランダムに表示 #=============================================================================== # オープニングデモ ============================================================= # OPDEMO_ENABLE : オープニングデモを有効にする # true → 有効 | false → 無効 OPDEMO_ENABLE = false # OPDEMO_EVERY_TIME : オープニングデモを何度も表示 # オープニングデモをタイトル画面が呼び出される度に呼び出します。 # true → 有効 | false → 無効 OPDEMO_EVERY_TIME = false #------------------------------------------------------------------------------- # OPDEMO_MAP_ID : オープニングデモのマップのID OPDEMO_MAP_ID = 7 # OPDEMO_PLAYER_POS_X : オープニングデモのプレイヤーの初期X座標 # OPDEMO_PLAYER_POS_Y : オープニングデモのプレイヤーの初期Y座標 OPDEMO_PLAYER_POS_X = 8 OPDEMO_PLAYER_POS_Y = 6 # OPDEMO_PLAYER_DIR : オープニングデモのマップのプレイヤーの初期の向き # 8 = ↑ | 2 = ↓ | 4 = ← | 6 = →| OPDEMO_PLAYER_DIR = 8 #------------------------------------------------------------------------------- # OPDEMO_SETUP_PARTY : オープニングデモ時、初期パーティのセットアップ実行 # true → 有効 | false → 無効 OPDEMO_SETUP_PARTY = false #------------------------------------------------------------------------------- # OPDEMO_FADEIN_ENABLE : オープニングデモ開始時のフェードインを有効にする # true → 有効 | false → 無効 OPDEMO_FADEIN_ENABLE = true # OPDEMO_FADEIN_SPEED : フェードインにかけるフレーム数 OPDEMO_FADEIN_SPEED = 60 # OPDEMO_COLORED_FADEIN : オープニングデモ開始時のフェードインの色を変更 # true → 変更する | false → 変更しない OPDEMO_COLORED_FADEIN = false # OPDEMO_FADEIN_COLOR : フェードインの色の設定 # OPDEMO_COLORED_FADEINが有効な時に適用されます。 # [Red, Green, Blue] | 配列で指定 | 例 → [255, 128, 0] OPDEMO_FADEIN_COLOR = [0, 0, 0] #------------------------------------------------------------------------------- # OPDEMO_FADEOUT_ENABLE : オープニングデモ終了時のフェードアウトを有効にする # true → 有効 | false → 無効 OPDEMO_FADEOUT_ENABLE = true # OPDEMO_FADEOUT_SPEED : フェードアウトにかけるフレーム数 OPDEMO_FADEOUT_SPEED = 60 # OPDEMO_COLORED_FADEOUT : オープニングデモ終了時のフェードアウトの色を変更 # true → 変更する | false → 変更しない OPDEMO_COLORED_FADEOUT = true # OPDEMO_FADEOUT_COLOR : フェードアウトの色の設定 # OPDEMO_COLORED_FADEOUTが有効な時に適用されます。 # [Red, Green, Blue] | 配列で指定 | 例 → [255, 128, 0] OPDEMO_FADEOUT_COLOR = [255, 255, 255] # タイトル画面 ================================================================= # TITLE_ENABLE : タイトル画面の背景にマップを使用する # true → 有効 | false → 無効 TITLE_ENABLE = true # TITLE_MAP_ID : タイトル背景マップのID TITLE_MAP_ID = 8 # TITLE_PLAYER_POS_X : タイトル背景マップのプレイヤーの初期X座標 # TITLE_PLAYER_POS_Y : タイトル背景マップのプレイヤーの初期Y座標 TITLE_PLAYER_POS_X = 8 TITLE_PLAYER_POS_Y = 6 # TITLE_PLAYER_DIR : タイトル背景マップのプレイヤーの初期の向き # 8 = ↑ | 2 = ↓ | 4 = ← | 6 = →| TITLE_PLAYER_DIR = 2 #------------------------------------------------------------------------------- # TITLE_SETUP_PARTY : タイトル背景マップ時、初期パーティのセットアップ実行 # true → 有効 | false → 無効 TITLE_SETUP_PARTY = false #------------------------------------------------------------------------------- # TITLE_TRANSITION_SPEED : タイトル画面への遷移へかかるフレーム数 # 未指定の場合はデフォルト(20)が使用されます TITLE_TRANSITION_SPEED = nil #=============================================================================== # ■ ここからソースコード #=============================================================================== class << self attr_accessor :opdemo_played def eval_value(value) value.is_a?(String) ? eval(value, TOPLEVEL_BINDING) : value end def opdemo_enable eval_value(OPDEMO_ENABLE) end def opdemo_every_time eval_value(OPDEMO_EVERY_TIME) end def opdemo_map_id eval_value(OPDEMO_MAP_ID) end def opdemo_x eval_value(OPDEMO_PLAYER_POS_X) end def opdemo_y eval_value(OPDEMO_PLAYER_POS_Y) end def opdemo_direction eval_value(OPDEMO_PLAYER_DIR) end def opdemo_setup_party eval_value(OPDEMO_SETUP_PARTY) end def opdemo_fadein_enable eval_value(OPDEMO_FADEIN_ENABLE) end def opdemo_fadein_speed eval_value(OPDEMO_FADEIN_SPEED) end def opdemo_colored_fadein eval_value(OPDEMO_COLORED_FADEIN) end def opdemo_fadein_color eval_value(OPDEMO_FADEIN_COLOR) end def opdemo_fadeout_enable eval_value(OPDEMO_FADEOUT_ENABLE) end def opdemo_fadeout_speed eval_value(OPDEMO_FADEOUT_SPEED) end def opdemo_colored_fadeout eval_value(OPDEMO_COLORED_FADEOUT) end def opdemo_fadeout_color eval_value(OPDEMO_FADEOUT_COLOR) end def title_enable eval_value(TITLE_ENABLE) end def title_map_id eval_value(TITLE_MAP_ID) end def title_x eval_value(TITLE_PLAYER_POS_X) end def title_y eval_value(TITLE_PLAYER_POS_Y) end def title_direction eval_value(TITLE_PLAYER_DIR) end def title_setup_party eval_value(TITLE_SETUP_PARTY) end def title_transition_speed eval_value(TITLE_TRANSITION_SPEED) end def setup_opdemo DataManager.create_game_objects $game_party.setup_starting_members if opdemo_setup_party $game_map.setup(opdemo_map_id) $game_player.moveto(opdemo_x, opdemo_y) $game_player.set_direction(opdemo_direction) $game_player.refresh Graphics.frame_count = 0 end def setup_title_map DataManager.create_game_objects $game_party.setup_starting_members if title_setup_party $game_map.setup(title_map_id) $game_player.moveto(title_x, title_y) $game_player.set_direction(title_direction) $game_player.refresh Graphics.frame_count = 0 end def opdemo_playable? opdemo_enable && (opdemo_every_time || !@opdemo_played) end end class Scene_OpeningDemo < Scene_Map def initialize @next_scene = nil end def start Graphics.freeze OpeningDemoMap.setup_opdemo OpeningDemoMap.opdemo_played = true super end def colored_fadein(duration, r, g, b) fade_loop(duration) {|v| @viewport.color.set(r, g, b, 255 - v)} end def colored_fadeout(duration, r, g, b) fade_loop(duration) {|v| @viewport.color.set(r, g, b, v) } end def perform_transition if @next_scene super else if OpeningDemoMap.opdemo_fadein_enable Graphics.transition(0) if OpeningDemoMap.opdemo_colored_fadein colored_fadein( OpeningDemoMap.opdemo_fadein_speed, *OpeningDemoMap.opdemo_fadein_color ) else fadein(OpeningDemoMap.opdemo_fadein_speed) end else Graphics.transition(0) end end end def pre_title_scene if OpeningDemoMap.opdemo_fadeout_enable if OpeningDemoMap.opdemo_colored_fadeout colored_fadeout( OpeningDemoMap.opdemo_fadeout_speed, *OpeningDemoMap.opdemo_fadeout_color ) else fadeout(OpeningDemoMap.opdemo_fadeout_speed) end end end def terminate Graphics.freeze @next_scene = SceneManager.scene super end end class Scene_TitleMap < Scene_Map def initialize(viewport) @viewport = viewport end def scene_changing? !SceneManager.scene.instance_of?(Scene_Title) end def create_main_viewport # do nothing end def update_basic # Graphics.update # Input.update update_all_windows end def update_for_fade Graphics.update Input.update update_basic $game_map.update(false) @spriteset.update end def update_transfer_player perform_transfer if $game_player.transfer? end end end class Scene_Title < Scene_Base alias odm_initialize initialize def initialize odm_initialize @prev_scene = SceneManager.scene end alias odm_main main def main if OpeningDemoMap.opdemo_playable? SceneManager.goto(OpeningDemoMap::Scene_OpeningDemo) return end odm_main end def odm_setup_title_map if OpeningDemoMap.title_enable OpeningDemoMap.setup_title_map @title_map = OpeningDemoMap::Scene_TitleMap.new(@viewport) @title_map.start end end alias odm_start start def start odm_start odm_setup_title_map end alias odm_pre_terminate pre_terminate def pre_terminate @title_map.pre_terminate if @title_map odm_pre_terminate end # (☆再定義) alias odm_terminate terminate def terminate @title_map.terminate if @title_map @next_scene = SceneManager.scene dispose_background dispose_foreground end alias odm_update update def update @title_map.update if @title_map odm_update end alias odm_transition_speed transition_speed def transition_speed if !@next_scene && (speed = OpeningDemoMap.title_transition_speed) speed else odm_transition_speed end end # (☆再定義) def command_new_game close_command_window fadeout_all DataManager.setup_new_game $game_map.autoplay SceneManager.goto(Scene_Map) end end class Scene_Battle < Scene_Base alias am_pre_terminate pre_terminate def pre_terminate am_pre_terminate Graphics.fadeout(30) if SceneManager.scene_is?(OpeningDemoMap::Scene_OpeningDemo) end end