Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # ** TDS Quick Travel
- # Ver: 1.2
- #------------------------------------------------------------------------------
- # * Description:
- # This script allows you to quickly travel to pre determined locations on a
- # map.
- #------------------------------------------------------------------------------
- # * Features:
- # Quickly changing locations in a map.
- #------------------------------------------------------------------------------
- # * Instructions:
- #
- # To add a quick travel location to a map use this in a script call:
- #
- # add_map_quick_travel(name, map_id, x, y, dir, index)
- #
- # name = name of the quick travel location
- # map_id = map id to add quick travel location to
- # x = X coordinate of the quick travel location on the map
- # y = Y coordinate of the quick travel location on the map
- # dir = facing direction after quick traveling (2, 4, 6, 8)
- #
- # To disable quick travel use this on a script call:
- #
- # disable_map_quick_travel
- #
- # To enable quick travel use this on a script call:
- #
- # disable_map_quick_travel
- #
- # To call the quick travel menu directly from an event use this in a script
- # call:
- #
- # call_map_quick_travel_menu
- #------------------------------------------------------------------------------
- # * Notes:
- # None.
- #------------------------------------------------------------------------------
- # WARNING:
- #
- # Do not release, distribute or change my work without my expressed written
- # consent, doing so violates the terms of use of this work.
- #
- # If you really want to share my work please just post a link to the original
- # site.
- #
- # * Not Knowing English or understanding these terms will not excuse you in any
- # way from the consequenses.
- #==============================================================================
- # * Import to Global Hash *
- #==============================================================================
- ($imported ||= {})[:TDS_Quick_Travel] = true
- #==============================================================================
- # ** Game_System
- #------------------------------------------------------------------------------
- # This class handles system-related data. Also manages vehicles and BGM, etc.
- # The instance of this class is referenced by $game_system.
- #==============================================================================
- class Game_System
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_accessor :map_quick_travel
- attr_accessor :disable_quick_travel
- #--------------------------------------------------------------------------
- # * Alias Listings
- #--------------------------------------------------------------------------
- alias tds_quick_travel_game_system_initialize initialize
- #--------------------------------------------------------------------------
- # * Object Initialization
- #--------------------------------------------------------------------------
- def initialize
- # Run Original Method
- tds_quick_travel_game_system_initialize
- # Initialize Quick Travel Values
- init_quick_travel
- end
- #--------------------------------------------------------------------------
- # * Initialize Map Quick Travel
- #--------------------------------------------------------------------------
- def init_quick_travel
- # Disable Quick Travel Flag
- @disable_quick_travel = false
- # Make Map Quick Travel Hash
- @map_quick_travel = {}
- end
- #--------------------------------------------------------------------------
- # * Determine if Map Quick Travel is possible
- #--------------------------------------------------------------------------
- def can_quick_travel?
- # Return false if map quick travel is disabled
- return false if @disable_quick_travel
- # Return false if Map Quick Travel has no quick travel points
- return false if !has_quick_travel? #@map_quick_travel[$game_map.map_id].nil? or @map_quick_travel[$game_map.map_id].empty?
- # Return true by default
- return true
- end
- #--------------------------------------------------------------------------
- # * Determine if Map has Quick Travel points
- #--------------------------------------------------------------------------
- def has_quick_travel?
- # Return false if Map Quick Travel List is nil or empty
- return false if @map_quick_travel[$game_map.map_id].nil? or @map_quick_travel[$game_map.map_id].empty?
- # Return true by default
- return true
- end
- #--------------------------------------------------------------------------
- # * Get Quick Travel Map List
- #--------------------------------------------------------------------------
- def quick_travel_map_list
- # Map List
- list = []
- quick_travel = @map_quick_travel[$game_map.map_id]
- # Go Through Quick Travel Points
- quick_travel.keys.each {|n|
- # Add Quick Travel Point to list
- list << [n] + quick_travel[n]
- }
- # Return list sorted by Index
- return list.sort {|a,b| a.at(4) <=> b.at(4)}
- end
- end
- #==============================================================================
- # ** Game_Interpreter
- #------------------------------------------------------------------------------
- # An interpreter for executing event commands. This class is used within the
- # Game_Map, Game_Troop, and Game_Event classes.
- #==============================================================================
- class Game_Interpreter
- #--------------------------------------------------------------------------
- # * Enable or Disable Map Quick Travel
- #--------------------------------------------------------------------------
- def enable_map_quick_travel ; $game_system.disable_quick_travel = false end
- def disable_map_quick_travel ; $game_system.disable_quick_travel = true end
- #--------------------------------------------------------------------------
- # * Call Map Quick Travel Menu
- #--------------------------------------------------------------------------
- def call_map_quick_travel_menu
- # If on Scene Map and there are quick travel points
- if SceneManager.scene_is?(Scene_Map) and $game_system.has_quick_travel?
- # Call Quick Travel Menu Process
- SceneManager.scene.process_quick_travel
- end
- end
- #--------------------------------------------------------------------------
- # * Add Map Quick Travel
- #--------------------------------------------------------------------------
- def add_map_quick_travel(name, map_id, x, y, dir = 2, index = 0)
- # Make Empty hash
- $game_system.map_quick_travel[map_id] ||= {}
- # Set Map Quick Travel Point
- $game_system.map_quick_travel[map_id][name] = [x, y, dir, index]
- end
- #--------------------------------------------------------------------------
- # * Remove Map Quick Travel
- #--------------------------------------------------------------------------
- def remove_map_quick_travel(name, map_id)
- # Return if there are quick travel points in the map
- return if $game_system.map_quick_travel[map_id].nil?
- # Delete Map Quick Travel Point
- $game_system.map_quick_travel[map_id].delete(name)
- end
- end
- #==============================================================================
- # ** Scene_Map
- #------------------------------------------------------------------------------
- # This class performs the map screen processing.
- #==============================================================================
- class Scene_Map < Scene_Base
- #--------------------------------------------------------------------------
- # * Alias Listings
- #--------------------------------------------------------------------------
- alias tds_quick_travel_scene_map_update update
- #--------------------------------------------------------------------------
- # * Frame Update
- #--------------------------------------------------------------------------
- def update
- # Update Quick Travel Input
- update_quick_travel_input
- # Run Original Method
- tds_quick_travel_scene_map_update
- end
- #--------------------------------------------------------------------------
- # * Update Quick Travel Input
- #--------------------------------------------------------------------------
- def update_quick_travel_input
- # Return if Interpreter is running or messages
- return if !$game_system.can_quick_travel? or $game_map.interpreter.running? or ($game_message.busy? or $game_message.visible)
- # If Input Trigger A
- if Input.trigger?(:X)
- # Play Ok Sound
- Sound.play_ok
- # Process Quick Travel
- process_quick_travel
- end
- end
- #--------------------------------------------------------------------------
- # * Process Quick Travel
- #--------------------------------------------------------------------------
- def process_quick_travel
- # Make Cutscene Cover Sprite
- @scene_cover = Sprite.new
- @scene_cover.bitmap = Graphics.snap_to_bitmap
- @scene_cover.bitmap.blur
- @scene_cover.opacity = 0
- @scene_cover.tone.set(-30, -30, -30)
- @scene_cover.z = 5000
- # Make Cutscene Skip Window
- @quick_travel_list_window = Window_Quick_Travel_List.new
- @quick_travel_list_window.x = (Graphics.width - @quick_travel_list_window.width) / 2
- @quick_travel_list_window.y = (Graphics.height - @quick_travel_list_window.height) / 2
- @quick_travel_list_window.z = 5100
- @quick_travel_list_window.openness = 0
- @quick_travel_list_window.open
- # Scene Cover Fade In
- 15.times do Graphics.update ; @scene_cover.opacity += 17 end
- # Opem Quick Travel Window
- 10.times do Graphics.update ; @quick_travel_list_window.update end
- loop do
- # Update Graphics and Input
- Graphics.update ; Input.update
- # Update Quick Travel List Window
- @quick_travel_list_window.update
- # If Input Trigger C (Confirm)
- if Input.trigger?(:C)
- # Play Ok Sound
- Sound.play_ok
- # Get Transfer Information
- transfer_info = @quick_travel_list_window.selected_transfer
- # Deactivate and Close Quick Travel List window
- @quick_travel_list_window.deactivate ; @quick_travel_list_window.close
- # Fadeout All Windows
- 10.times do Graphics.update ; @scene_cover.opacity -= 17 ; @quick_travel_list_window.update end
- # Dispose of Scene Cover
- @scene_cover.bitmap.dispose ; @scene_cover.dispose ; @scene_cover = nil
- # Dispose of Quick Travel List Window
- @quick_travel_list_window.dispose ; @quick_travel_list_window = nil
- # Start Transfer
- $game_player.reserve_transfer($game_map.map_id, transfer_info.at(1), transfer_info.at(2), transfer_info.at(3))
- $game_temp.fade_type = 0
- # Update Input
- Input.update
- break
- end
- # If Input Trigger B (Cancel)
- if Input.trigger?(:B)
- # Play Cancel Sound
- Sound.play_cancel
- # Deactivate and Close Quick Travel List window
- @quick_travel_list_window.deactivate ; @quick_travel_list_window.close
- # Fadeout All Windows
- 10.times do Graphics.update ; @scene_cover.opacity -= 17 ; @quick_travel_list_window.update end
- # Dispose of Scene Cover
- @scene_cover.bitmap.dispose ; @scene_cover.dispose ; @scene_cover = nil
- # Dispose of Quick Travel List Window
- @quick_travel_list_window.dispose ; @quick_travel_list_window = nil
- # Update Input
- Input.update
- break
- end
- end
- end
- end
- #==============================================================================
- # ** Window_Quick_Travel_List
- #------------------------------------------------------------------------------
- # This window handles Quick Travel List selection.
- #==============================================================================
- class Window_Quick_Travel_List < Window_Command
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_reader :quick_travel_list
- #--------------------------------------------------------------------------
- # * Object Initialization
- #--------------------------------------------------------------------------
- def initialize
- # Get Quick Travel List
- @quick_travel_list = $game_system.quick_travel_map_list
- super(0, 0)
- end
- #--------------------------------------------------------------------------
- # * Window Width and Height
- #--------------------------------------------------------------------------
- def window_width ; 300 end
- def window_height ; 48 + @quick_travel_list.size * item_height end
- #--------------------------------------------------------------------------
- # * Item Rect
- #--------------------------------------------------------------------------
- def item_rect(index)
- rect = Rect.new
- rect.width = item_width
- rect.height = item_height
- rect.x = index % col_max * item_width
- rect.y = 24 + index / col_max * item_height
- rect
- end
- #--------------------------------------------------------------------------
- # * Ok Enabled Handling
- #--------------------------------------------------------------------------
- def ok_enabled? ; false end
- #--------------------------------------------------------------------------
- # * Max Columns
- #--------------------------------------------------------------------------
- def col_max ; 1 end
- #--------------------------------------------------------------------------
- # * Command Text Alignment
- #--------------------------------------------------------------------------
- def alignment ; 0 end
- #--------------------------------------------------------------------------
- # * Make Commands List
- #--------------------------------------------------------------------------
- def make_command_list
- # Make Command List
- @quick_travel_list.each {|i| add_command(i.at(0), :i, true)}
- end
- #--------------------------------------------------------------------------
- # * Get Selected Transfer Information
- #--------------------------------------------------------------------------
- def selected_transfer ; @quick_travel_list[@index] end
- #--------------------------------------------------------------------------
- # * Refresh
- #--------------------------------------------------------------------------
- def refresh
- super
- contents.font.color = system_color
- draw_text(0, 0, contents_width, 24, "Quick travel list", 1)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement