#============================================================================== # ◆ WorldMap_VXA Ver.1.0.2(2016/05/13) #------------------------------------------------------------------------------ #  ワールドマップを表示するスキルやアイテムの処理を行います。 #============================================================================== =begin ◆ 使用方法 * ワールドマップのアイテム(またはスキル)を作成します。 効果範囲は[なし]、使用可能時は[メニューのみ]とします。 メモ欄には と入力して下さい。 (ワールドマップの識別用文字列を変更した場合はその文字列を入力して下さい) * Graphics/Systemフォルダにワールドマップ表示用の画像をインポートします。 (サイズは544×416(Pixel)以下、縮尺は元のマップと同じにして下さい) * 以下の設定で "◎ 定数" となっている項目を設定して下さい。 =end #============================================================================== # ◎ ユーザー設定 #============================================================================== =begin ◆ 以下、定数と明記された内容を設定することができます。 ◎ 定数(ワールドマップ使用可能マップID) ここで指定したIDのマップでのみ、ワールドマップが使えるようになります。 ワールドマップの元となるマップのIDを設定して下さい。 ◎ 定数(ワールドマップ画像)※ 保存先:Graphics/Systemフォルダ インポートしたワールドマップ表示用の画像の名前を入力します。 ◎ 定数(ワールドマップ使用可能判定スイッチ + α) ワールドマップの使用を可能にするスイッチと、乗り物の表示を可能にするスイッチ を設定して下さい。 ◎ 定数(町村・ダンジョン表示位置のデータテーブル) [表示許可スイッチID, イベントID, 矩形設定] を設定します。 ここで指定したスイッチIDが ON の時、対応するイベントIDの場所が表示されます。 矩形設定では 0 か 1 を指定して下さい。(0:町村 / 1:ダンジョン) それぞれ対応した色の矩形で表示されます。 ○ 定数(おまけ1:ワールドマップ呼び出しボタン) いわゆるショートカットボタンです。変更はお好みでどうぞ。 ○ 定数(おまけ2:位置情報用矩形の設定) 位置情報用矩形のサイズと色を変更できます。こちらもお好みでどうぞ。 (デフォルト設定は上から、緑、青、黄、赤となっています) ○ 定数(おまけ3:ワールドマップの識別用文字列) ここで指定した文字列がメモ欄に含まれている時、ワールドマップのアイテム(また はスキル)として識別されます。 =end #-------------------------------------------------------------------------- # ◎ 定数(ワールドマップ使用可能マップID) #-------------------------------------------------------------------------- WORLDMAP_ID = 1 #-------------------------------------------------------------------------- # ◎ 定数(ワールドマップ画像)※ 保存先:Graphics/Systemフォルダ #-------------------------------------------------------------------------- # WORLDMAP = "WorldMap" WORLDMAP = "WORLDMAP_001b" #-------------------------------------------------------------------------- # ◎ 定数(ワールドマップ使用可能判定スイッチ + α) #-------------------------------------------------------------------------- WORLDMAP_SWITCH = 13 # ワールドマップ使用可能判定 WORLDMAP_BOAT = 14 # 小型船 表示可能判定 WORLDMAP_SHIP = 15 # 大型船 表示可能判定 WORLDMAP_AIRSHIP = 16 # 飛行船 表示可能判定 #-------------------------------------------------------------------------- # ◎ 定数(町村・ダンジョン表示位置のデータテーブル) #-------------------------------------------------------------------------- WORLDMAP_PLACES = [ # [表示許可スイッチID, イベントID, 矩形設定(0:町村 / 1:ダンジョン)] [18, 1, 0], [19, 2, 1], [20, 3, 0], ] #-------------------------------------------------------------------------- # ○ 定数(おまけ1:ワールドマップ呼び出しボタン) #-------------------------------------------------------------------------- MAPCALL_BUTTON = :L # 使用しない場合は nil #-------------------------------------------------------------------------- # ○ 定数(おまけ2:位置情報用矩形の設定) #-------------------------------------------------------------------------- # POS_RECT_SIZE = 15 POS_RECT_SIZE = 2 # 矩形のピクセルサイズ PLAYER_COLOR = Color.new( 0, 255, 0, 192) # プレイヤー用矩形の色指定 VEHICLE_COLOR = Color.new( 0, 0, 255, 192) # 乗り物用矩形の色指定 TOWN_COLOR = Color.new(255, 255, 0, 192) # 町村用矩形の色指定 DUNGEON_COLOR = Color.new(255, 0, 0, 192) # ダンジョン用矩形の色指定 #-------------------------------------------------------------------------- # ○ 定数(おまけ3:ワールドマップの識別用文字列) #-------------------------------------------------------------------------- WORLDMAP_SIGNATURE = "" #/////////////////////////////////////////////////////////////////////////////# # # # 下記のスクリプトを変更する必要はありません。 # # # #/////////////////////////////////////////////////////////////////////////////# #============================================================================== # ■ ds_include #------------------------------------------------------------------------------ #  dsスクリプト素材の情報を取得し、コンソール画面に表示します。 #============================================================================== $ds_incrude = {} if $ds_incrude == nil $ds_incrude[:WorldMap_VXA] = 102 # バージョン情報 p "OK : WorldMap_VXA Version1.0.2" # コンソール画面に表示 #============================================================================== # ■ Scene_Map #------------------------------------------------------------------------------ #  マップ画面の処理を行うクラスです。 #============================================================================== class Scene_Map < Scene_Base alias dsmap_update_scene update_scene #-------------------------------------------------------------------------- # ○ シーン遷移に関連する更新(再定義) #-------------------------------------------------------------------------- def update_scene dsmap_update_scene update_call_worldmap unless scene_changing? end #-------------------------------------------------------------------------- # ● L ボタンによるワールドマップ呼び出し判定(新規定義) #-------------------------------------------------------------------------- def update_call_worldmap return if MAPCALL_BUTTON.nil? if $game_map.map_id == WORLDMAP_ID if $game_switches[WORLDMAP_SWITCH] == false || $game_map.interpreter.running? @worldmap_calling = false else @worldmap_calling ||= Input.trigger?(MAPCALL_BUTTON) call_worldmap if @worldmap_calling && !$game_player.moving? end end end #-------------------------------------------------------------------------- # ● ワールドマップ画面の呼び出し(新規定義) #-------------------------------------------------------------------------- def call_worldmap Sound.play_ok SceneManager.call(Scene_WorldMap) end end #============================================================================== # ■ Scene_WorldMap(新規定義) #------------------------------------------------------------------------------ #  ワールドマップ画面の処理を行うクラスです。 #============================================================================== class Scene_WorldMap < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super create_background create_sub_viewport create_position @blink = 0 end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super dispose_background dispose_sub_viewport dispose_position end #-------------------------------------------------------------------------- # ● 背景とワールドマップの作成 #-------------------------------------------------------------------------- def create_background @background_sprite = Sprite.new # 背景のぼかし @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) @worldmap_sprite = Sprite.new # ワールドマップ @worldmap_sprite.bitmap = Cache.system(WORLDMAP) center_sprite(@worldmap_sprite) end #-------------------------------------------------------------------------- # ● サブビューポートの作成 #-------------------------------------------------------------------------- def create_sub_viewport svx = (544 - @worldmap_sprite.bitmap.width) / 2 svy = (416 - @worldmap_sprite.bitmap.height) / 2 svw = @worldmap_sprite.bitmap.width svh = @worldmap_sprite.bitmap.height @sub_viewport = Viewport.new(svx, svy, svw, svh) @sub_viewport.z = 200 end #-------------------------------------------------------------------------- # ● 位置情報の作成 #-------------------------------------------------------------------------- def create_position pos_pbit = Bitmap.new(POS_RECT_SIZE, POS_RECT_SIZE) # プレイヤー用矩形 pos_pbit.fill_rect(pos_pbit.rect, PLAYER_COLOR) # デフォルト:緑 pos_vbit = Bitmap.new(POS_RECT_SIZE, POS_RECT_SIZE) # 乗り物用矩形 pos_vbit.fill_rect(pos_vbit.rect, VEHICLE_COLOR) # デフォルト:青 pos_tbit = Bitmap.new(POS_RECT_SIZE, POS_RECT_SIZE) # 町村用矩形 pos_tbit.fill_rect(pos_tbit.rect, TOWN_COLOR) # デフォルト:黄 pos_dbit = Bitmap.new(POS_RECT_SIZE, POS_RECT_SIZE) # ダンジョン用矩形 pos_dbit.fill_rect(pos_dbit.rect, DUNGEON_COLOR) # デフォルト:赤 pos_w = @worldmap_sprite.width / $game_map.width pos_h = @worldmap_sprite.height / $game_map.height @player_sprite = Sprite.new(@sub_viewport) # プレイヤーの位置情報 @player_sprite.bitmap = pos_pbit @player_sprite.x = $game_player.x * pos_w @player_sprite.y = $game_player.y * pos_h @player_sprite.z = @sub_viewport.z + 3 if $game_switches[WORLDMAP_BOAT] == true @boat_sprite = Sprite.new(@sub_viewport) # 小型船の位置情報 @boat_sprite.bitmap = pos_vbit @boat_sprite.x = $game_map.boat.x * pos_w @boat_sprite.y = $game_map.boat.y * pos_h @boat_sprite.z = @sub_viewport.z + 2 end if $game_switches[WORLDMAP_SHIP] == true @ship_sprite = Sprite.new(@sub_viewport) # 大型船の位置情報 @ship_sprite.bitmap = pos_vbit @ship_sprite.x = $game_map.ship.x * pos_w @ship_sprite.y = $game_map.ship.y * pos_h @ship_sprite.z = @sub_viewport.z + 2 end if $game_switches[WORLDMAP_AIRSHIP] == true @airship_sprite = Sprite.new(@sub_viewport) # 飛行船の位置情報 @airship_sprite.bitmap = pos_vbit @airship_sprite.x = $game_map.airship.x * pos_w @airship_sprite.y = $game_map.airship.y * pos_h @airship_sprite.z = @sub_viewport.z + 2 end @places_sprite = [] WORLDMAP_PLACES.each do |place| if $game_switches[place[0]] == true # 町ダンジョン用位置情報 @places_sprite[place[1]] = Sprite.new(@sub_viewport) case place[2] when 0 @places_sprite[place[1]].bitmap = pos_tbit # 町村用矩形 when 1 @places_sprite[place[1]].bitmap = pos_dbit # ダンジョン用矩形 end @places_sprite[place[1]].x = $game_map.events[place[1]].x * pos_w @places_sprite[place[1]].y = $game_map.events[place[1]].y * pos_h @places_sprite[place[1]].z = @sub_viewport.z + 1 end end end #-------------------------------------------------------------------------- # ● 背景とワールドマップの解放 #-------------------------------------------------------------------------- def dispose_background @background_sprite.dispose @worldmap_sprite.bitmap.dispose @worldmap_sprite.dispose end #-------------------------------------------------------------------------- # ● サブビューポートの解放 #-------------------------------------------------------------------------- def dispose_sub_viewport @sub_viewport.dispose end #-------------------------------------------------------------------------- # ● 位置情報の解放 #-------------------------------------------------------------------------- def dispose_position @player_sprite.bitmap.dispose @player_sprite.dispose if $game_switches[WORLDMAP_BOAT] == true @boat_sprite.bitmap.dispose @boat_sprite.dispose end if $game_switches[WORLDMAP_SHIP] == true @ship_sprite.bitmap.dispose @ship_sprite.dispose end if $game_switches[WORLDMAP_AIRSHIP] == true @airship_sprite.bitmap.dispose @airship_sprite.dispose end WORLDMAP_PLACES.each do |place| if $game_switches[place[0]] == true case place[2] when 0 @places_sprite[place[1]].bitmap.dispose @places_sprite[place[1]].dispose when 1 @places_sprite[place[1]].bitmap.dispose @places_sprite[place[1]].dispose end end end end #-------------------------------------------------------------------------- # ● スプライトを画面中央に移動 #-------------------------------------------------------------------------- def center_sprite(sprite) sprite.ox = sprite.bitmap.width / 2 sprite.oy = sprite.bitmap.height / 2 sprite.x = Graphics.width / 2 sprite.y = Graphics.height / 2 end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super blink(@player_sprite) goto_field if Input.trigger?(MAPCALL_BUTTON) || Input.trigger?(:B) end #-------------------------------------------------------------------------- # ● スプライトの点滅 #-------------------------------------------------------------------------- def blink(sprite) @blink += 1 if @blink >= 40 @blink = 0 if sprite.visible sprite.visible = false else sprite.visible = true end end end #-------------------------------------------------------------------------- # ● 通常マップ画面へ遷移 #-------------------------------------------------------------------------- def goto_field Sound.play_cancel SceneManager.goto(Scene_Map) end end #============================================================================== # ■ Scene_ItemBase #------------------------------------------------------------------------------ #  アイテム画面とスキル画面の共通処理を行うクラスです。 #============================================================================== class Scene_ItemBase alias dsmap_use_item use_item #-------------------------------------------------------------------------- # ○ アイテムの使用(再定義) #-------------------------------------------------------------------------- def use_item dsmap_use_item use_worldmap_item if item.note.include?(WORLDMAP_SIGNATURE) end #-------------------------------------------------------------------------- # ● ワールドマップ用メソッドの設定(新規定義) #-------------------------------------------------------------------------- def use_worldmap_item SceneManager.call(Scene_WorldMap) end end #============================================================================== # ■ Game_BattlerBase #------------------------------------------------------------------------------ #  バトラーを扱う基本のクラスです。主に能力値計算のメソッドを含んでいます。こ # のクラスは Game_Battler クラスのスーパークラスとして使用されます。 #============================================================================== class Game_BattlerBase alias dsmap_usable_item_conditions_met? usable_item_conditions_met? #-------------------------------------------------------------------------- # ○ スキル/アイテムの共通使用可能条件チェック(再定義) #-------------------------------------------------------------------------- def usable_item_conditions_met?(item) if item.note.include?(WORLDMAP_SIGNATURE) if $game_map.map_id != WORLDMAP_ID || $game_switches[WORLDMAP_SWITCH] == false false else dsmap_usable_item_conditions_met?(item) end else dsmap_usable_item_conditions_met?(item) end end end #/////////////////////////////////////////////////////////////////////////////# #  製作者:SOLA@DEEP SEASONS # #  配布元:http://deepseasons.seesaa.net/ # #  作成日:2012/10/11 # # 更新日:2016/05/13 # #/////////////////////////////////////////////////////////////////////////////#