Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Map Name Popup

Status
Not open for further replies.
Location Name Popup
Version: 1.0.0

Introduction

This script makes the map name pop up when the player enters a new map.  The script is highly customizable.

Features
  • Can use an image file or text
  • Two types of display modes: Fade and Scroll
    Fade - Fades the location in, then fades out
    Scroll - Scrolls the location from the right, then scrolls out to the right
  • Customizable display and transition lengths
  • Can use a prefix and/or suffix for images
  • Images can use the Map ID or the Map name as their name
  • You can exempt maps from having the popup!
Screenshots

No screenshots available.

Demo

Download
Thank you to Q-Man for making and hosting the demo.

Script

Code:
#============================================================================
# ** Map Location Popup
#----------------------------------------------------------------------------
# Yeyinde
# 1.0.0
# 06/07/07
# SDK Version : (2.2) - Parts: I, III
#============================================================================

#-----------------------------------------------------------------------------
# SDK Auto-installer
#-----------------------------------------------------------------------------
unless Object.const_defined?(:SDK)
  begin
    require 'SDK'
  rescue LoadError
    print 'This script (Map Location Popup) requires the SDK to run.'
    exit 1
  end
end

#-----------------------------------------------------------------------------
# SDK Log
#-----------------------------------------------------------------------------
SDK.log('Map Location Popup', 'Yeyinde', '1.00', '06/07/07')

#-----------------------------------------------------------------------------
# SDK Check Requirements
#-----------------------------------------------------------------------------
SDK.check_requirements(2.2, [1, 3])

#-----------------------------------------------------------------------------
# SDK Enabled Check
#-----------------------------------------------------------------------------
if SDK.enabled?('Map Location Popup')

#==============================================================================
# ** Location_Popup
#------------------------------------------------------------------------------
#  Customization module
#==============================================================================

module Location_Popup
  # Display Type (0:text 1:image)
  DISPLAY_TYPE = 0
  # Show Type (0:fade 1:scroll)
  SHOW_TYPE = 1
  # Showing Duration (Excludes transition time) - Units: Frames
  SHOW_TIME = 100
  # Transition Duration (For one transition) - Units: Frames
  TRANSITION_TIME = 10
  # Image Type (0:MapID 1:MapName)
  IMAGE_TYPE = 0
  # Image Prefix (For DISPLAY_TYPE 1)
  IMAGE_PREFIX = 'Location_'
  # Image Sufix (For DISPLAY_TYPE 1)
  IMAGE_SUFFIX = ''
  # Popup exemptions (Syntax: [map_id1, mapid2, etc.] EX. [1, 5, 6])
  NO_POPUP_MAPS = []
end

#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  This class handles temporary data that is not included with save data.
#  Refer to "$game_temp" for the instance of this class.
#==============================================================================

class Game_Temp
  #---------------------------------------------------------------------------
  # * Aliasing
  #---------------------------------------------------------------------------
  alias_method :map_name_popup_int, :initialize
  #---------------------------------------------------------------------------
  # * Public Instance Variables
  #---------------------------------------------------------------------------
  attr_accessor :new_location_name
  attr_accessor :location_popup_show
  #---------------------------------------------------------------------------
  # * Object Initialization
  #---------------------------------------------------------------------------
  def initialize
    # Call aliased method
    map_name_popup_int
    # Crate new variables
    @new_location_name = ''
    @location_popup_show = false
  end
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles the map. It includes scrolling and passable determining
#  functions. Refer to "$game_map" for the instance of this class.
#==============================================================================

class Game_Map
  #---------------------------------------------------------------------------
  # * Aliasing
  #---------------------------------------------------------------------------
  alias_method :map_name_popup_setup, :setup
  #--------------------------------------------------------------------------
  # * Setup
  #     map_id : map ID
  #--------------------------------------------------------------------------
  def setup(map_id)
    # Call aliased method
    map_name_popup_setup(map_id)
    # Set temporary variable
    if Location_Popup::DISPLAY_TYPE == 0 || 
        (Location_Popup::DISPLAY_TYPE == 1 && Location_Popup::IMAGE_TYPE == 1)
      location_text = $data_mapinfos[@map_id].name
    else
      location_text = @map_id.to_s
    end
    $game_temp.new_location_name = location_text
    $game_temp.location_popup_show = true
  end
end

#==============================================================================
# ** Sprite_LocationPopup
#------------------------------------------------------------------------------
#  This sprite is used to display the current location when it is entered.  It
#  observes $game_temp.new_location_name to know when to refresh
#==============================================================================

class Sprite_LocationPopup < Sprite
  #---------------------------------------------------------------------------
  # * Object Initialization
  #---------------------------------------------------------------------------
  def initialize
    # Call superclass method
    super()
    # Set co-ordinates
    self.x = 640
    self.y = 16
    self.z = 999999
    # Set some variables to save space
    @show_time = Location_Popup::SHOW_TIME
    @transition_time = [Location_Popup::TRANSITION_TIME, 1].max
    # Refresh
    refresh
  end
  #---------------------------------------------------------------------------
  # * Reset Variables
  #---------------------------------------------------------------------------
  def reset_variables
    @current_location = $game_temp.new_location_name
    @frames_remaining = @show_time + @transition_time * 2
  end
  #---------------------------------------------------------------------------
  # * Refresh
  #---------------------------------------------------------------------------
  def refresh
    # Clear existing bitmap
    if self.bitmap != nil
      self.bitmap.dispose
      self.bitmap = nil
    end
    # Reset variables
    reset_variables
    # Stop if the location is not to be displayed on this map
    if Location_Popup::NO_POPUP_MAPS.include?($game_map.map_id) ||
        !$game_temp.location_popup_show
      @frames_remaining = 0
      return 
    end
    $game_temp.location_popup_show = false
    # Branch for text display
    if Location_Popup::DISPLAY_TYPE == 0
      text = @current_location
      bitmap = Bitmap.new(32, 32)
      width = bitmap.text_size(text).width + 8
      bitmap.dispose
      self.bitmap = Bitmap.new(width, 32)
      self.bitmap.draw_text(0, 0, width, 32, text)
    else # Branch for image display
      name = Location_Popup::IMAGE_PREFIX + @current_location + 
        Location_Popup::IMAGE_SUFFIX
      self.bitmap = RPG::Cache.picture(name)
    end
    # Reset x co-ordinates
    self.x = Location_Popup::SHOW_TYPE == 0 ? 640 - 16 - self.bitmap.width : 640
    # Set opacity if fade type
    self.opacity = 0 if Location_Popup::SHOW_TYPE == 0
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Call superclass method
    super
    # Refresh if location was changed
    refresh if @current_location != $game_temp.new_location_name
    # If there is still a frame remaining
    if @frames_remaining > 1
      # Branch per frames remaining
      case @frames_remaining
      when (@show_time + @transition_time )...(@show_time + 
          @transition_time * 2)
        # Branch per showing type
        if Location_Popup::SHOW_TYPE == 0
          self.opacity += 256 / @transition_time
        else
          self.x -= (self.bitmap.width + 16) / @transition_time
        end
      when 1..(@transition_time + 1)
        # Branch per showing type
        if Location_Popup::SHOW_TYPE == 0
          self.opacity -= 256 / @transition_time
        else
          self.x += (self.bitmap.width + 16) / @transition_time
        end
      end
      # Remove one frame
      @frames_remaining -= 1
    end
  end
end

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs title screen processing.
#==============================================================================

class Scene_Title
  #---------------------------------------------------------------------------
  # * Aliasing
  #---------------------------------------------------------------------------
  alias_method :map_name_popup_database, :main_database
  #--------------------------------------------------------------------------
  # * Main Processing : Database Initialization
  #--------------------------------------------------------------------------
  def main_database
    # Call aliased method
    map_name_popup_database
    # If global variable $data_mapinfos has not yet been defined
    #  and if the setup is to use the map name in some way (Text/Mapname image)
    if $data_mapinfos.nil? && Location_Popup::DISPLAY_TYPE == 0 || 
        (Location_Popup::DISPLAY_TYPE == 1 && Location_Popup::IMAGE_TYPE == 1)
      # Load Mapinfos data
      $data_mapinfos = load_data('Data/MapInfos.rxdata')
    end
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================

class Scene_Map
  #---------------------------------------------------------------------------
  # * Aliasing
  #---------------------------------------------------------------------------
  alias_method :map_name_popup_sprite, :main_sprite
  #--------------------------------------------------------------------------
  # * Main Processing : Sprite Initialization
  #--------------------------------------------------------------------------
  def main_sprite
    map_name_popup_sprite
    @location_popup_sprite = Sprite_LocationPopup.new
  end
end

end
#-----------------------------------------------------------------------------
# End SDK Enabled Check
#-----------------------------------------------------------------------------

Instructions

Insert the script below the SDK.  If not inserted below the SDK, the script will automatically attempt to load the SDK.rsc library.
After installing, edit the constants in the Location_Popup module to suit your needs.

FAQ

No questions asked

Compatibility

SDK 2.2 compliant. 

Credits and Thanks

Thank you to all those who tested and help find and eliminate bugs!

Author's Notes

I made this to kill MOG's map location script.  This one can be CUSTOMIZED!!!

Terms and Conditions

Free to use if credit is given.
 
WOOT! Can't Wait to use it Yey Thanks. Looks like exactly what I need! Hope all the the bugs are gone or I'll be back.
 
Rather nice Yeyinde - it's much smaller and easier than other similar scripts I've seen, gave me no problems.
One useless pointless question - does it have to scroll in from the right?
 
If you look at the constant setup, you will see that you also have the option to have it fade in. Later versions will have support for scrolling in different directions.
 
I knew it could fade, was just curious if one could quickly edit it. I'm not a scripter, but I'm getting better at edits which is why I ask mostly.

It's a pretty snazzy script if you ask me. Thanks for answering my question.
 

Queue

Sponsor

Demo / Test:

Download

NOTE: This is the image version of the script, as it seemed a little bit harder to figure out. This is just showing how it can really be used.
 
I found a slight problem with this script. If you reset the game(pressing F12) the script freezes the game when it tries to show the map name(picture or text)
 
OmegaGroudon;222215":3kegvaaz said:
Erm...A question...How can I set the image will not location_, but is the name of the map?
If you look in the setup module, you can change IMAGE_TYPE to 1 and IMAGE_PREFIX to ''. It will then use just the map's name for the image. Be sure to look in the setup module ahead of time!

Lockheart;222301":3kegvaaz said:
I found a slight problem with this script. If you reset the game(pressing F12) the script freezes the game when it tries to show the map name(picture or text)
Are you using the SDK.rsc or the full SDK script?
 
That is because the demo did not include the F12 graphics fix. That problem has nothing to do with my script. Just look in the SDK topic for the fix.
Thank you!
 
The thing i dont get, (im realy a noob when it comes to scripting though), is how i can add an image. Can i create an image which say, ex. "Stouts inn" in an specific font, then i place the image in the grapics\Pictures folder... Then what do I do if I want the image to show up when you enter "Stouts inn" instead of the original mapname?
Dont know where i should type in so it will call the image.
Tryed a couple of things but I only get an error message where its said that it dosent find the image or somthing like that....
Thanks for any help.

ps. Or am i totaly lost with the image thing? You maybe refere to something eals.... Any how thanks ^^
 

WiZ`

Member

it work whit a lower version of the SDK? the 1.5 for example ^^ i can't put an higher version -.- or it make me crash the other scripts :\
and... the demo doesn't work XD and i'm trying to make it work every time i change map, but... it's no use...
 
Status
Not open for further replies.

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top