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.

Locations system

Locations system
Version:2
By: gerkrt/gerrtunk

Introduction
This script adds a entry in the main menu(removing steps window)that shows
your actual place. The interesting thing about it is that it lets configure
about anything with flexibility and new features.

Creating locations:

-Using the map tree system. You only have to write the name of the parent map
and all the others under it take his description

-By map name

-By maps groups that share a description

Sublocations:

-By map name

-By maps groups that share a sublocation description

Sublocations allow you to add a specification of the actual area,
so: location "Aoha forest" sublocation "Old tree", for example.

Also you can combine any of these system or options without a problem.


Screenshots

loc1.png


Script

Get a more updated one here: http://usuarios.multimania.es/kisap/english_list.html

Code:
 

#==============================================================================

# Locations system

# By gerkrt/gerrtunk

# Version: 2.1

# License: MIT, credits

# Date: 24/01/2011

# IMPORTANT NOTE: to acces the more actualitzed or corrected version of this

# script check here: [url=http://usuarios.multimania.es/kisap/english_list.html]http://usuarios.multimania.es/kisap/english_list.html[/url]

#==============================================================================

 

=begin

 

------INTRODUCTION------

 

This script adds a entry in the main menu(removing steps window)that shows

your actual place. The interesting thing about it is that it lets configure

about anything with flexibility and new features.

 

Creating locations:

 

-Using the map tree system. You only have to write the name of the parent map

and all the others under it take his description

 

-By map name

 

-By maps groups that share a description

 

Sublocations:

 

-By map name

 

-By maps groups that share a sublocation description

 

Sublocations allow you to add a specification of the actual area,

so: location "Aoha forest" sublocation "Old tree", for example.

 

Also you can combine any of these system or options without a problem.

 

 

-------CONFIGURING LOCATIONS---------

 

Location_type : This variable sets the type of locations:

  Location_type = :map_list           -> use map list

  Location_type = :map_name           -> use map name

  Location_type = :map_tree           -> use map tree

 

-By map name: It will just write the actual map name.  

 

-By map list: Using this you create a group of maps that share a location

description.

   

  Locations_map_id = [

 

    [[1,2,3], 'Ahoha forest'],    # Maps 1,2,3 share Ahoha forest description

    [[4,5,6], 'Sphynx']

 

  ]

 

  Just add lines like this: [[map_id1, map_id2], 'Description'],

 

 

-By map tree: With this you only have to define a parent map and write its name in

the descriptions. All the maps will have the description, including the parent map.

 

The map tree is show under the tileset tool. If you doubleclick to - or + you will

see that the maps are shown in groups that depend in parent maps.

 

Note: I recomend having the maps having the maps ordered and directly relationed with

its parent map to have optimal performance.

 

Use example:

 

Mapamundi - Parent of all

  Forest - Parent of maps 3-7

    Mapa3

    Mapa4

    Mapa5 - Parent of 6,7

      Mapa6

      Mapa7

     

  Pantano del Wep

    Mapa9

   

Configuration it:

 

  Locations_map_tree = {

 

   'Forest' => 'Ahoha forest',

   'Prologue' => 'Sphynx'   # All the maps under the map called Prologue have

   # sphynx description

   

  }

 

  To add new locations add these lines:

  'Basename map name' => 'Description',

 

 

-------CONFIGURING SUBLOCATIONS---------

 

Show_sublocations : These configurates sublocations

 

 

Show_sublocations = :inactive          ---> makes them inactive

Show_sublocations = :map_name         ---> use map name

Show_sublocations = :codes          ---> makes them use map codes

 

 

inactive: if they are inactive you are going to see in the first line the

sublocations word

 

map name: this wall it will simply write the actual map name as a sublocation

description

 

codes: this works like the locations map list, but for sublocations:

 

  Sublocations_codes = [

 

    [[1,2], 'Santuary'],

    [[4,5,6], 'Old tree']

 

  ]

  Just add lines like this: [[map_id1, map_id2], 'Description'],

 

 

------OTHER THINGS------------

 

Unknown_location_text: This is for maps that dont have a description.

Sublocations_text : Here you can write a prefix for all sublocations

Locations_text : Here you write the describing word of the locations

 

=end

 

 

module Wep

  Unknown_location_text = '?????'

 

  Location_type = :map_list

 

  Show_sublocations = :inactive       # :inactive, :map_name, :codes

 

  Sublocations_text = ''

  Locations_text = 'Location'

   

  Locations_map_id = [

 

    [[1,2,3], 'Ahoha forest'],

    [[4,5,6], 'Sphynx']

 

  ]

   

  Sublocations_codes = [

 

    [[1,2], 'Santuary'],

    [[4,5,6], 'Old tree']

 

  ]

 

  Locations_map_tree = {

 

   'Forest' => 'Ahoha forest',

   'Prologue' => 'Sphynx'

   

  }

 

end

 

 

#==============================================================================

# ** Scene_Menu

#------------------------------------------------------------------------------

#  This class performs menu screen processing.

#==============================================================================

 

class Scene_Menu

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     menu_index : command cursor's initial position

  #--------------------------------------------------------------------------

  def initialize(menu_index = 0)

    @menu_index = menu_index

  end

  #--------------------------------------------------------------------------

  # * Main Processing

  #--------------------------------------------------------------------------

  def main

    # Make command window

    s1 = $data_system.words.item

    s2 = $data_system.words.skill

    s3 = $data_system.words.equip

    s4 = "Estado"

    s5 = "Guardar"

    s6 = "Salir"

    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])

    @command_window.index = @menu_index

    # If number of party members is 0

    if $game_party.actors.size == 0

      # Disable items, skills, equipment, and status

      @command_window.disable_item(0)

      @command_window.disable_item(1)

      @command_window.disable_item(2)

      @command_window.disable_item(3)

    end

    # If save is forbidden

    if $game_system.save_disabled

      # Disable save

      @command_window.disable_item(4)

    end

    # Make play time window

    @playtime_window = Window_PlayTime.new

    @playtime_window.x = 0

    @playtime_window.y = 224

    # Make steps window

    @location_window = Window_Location.new

    @location_window.x = 0

    @location_window.y = 320

    # Make gold window

    @gold_window = Window_Gold.new

    @gold_window.x = 0

    @gold_window.y = 416

    # Make status window

    @status_window = Window_MenuStatus.new

    @status_window.x = 160

    @status_window.y = 0

    # Execute transition

    Graphics.transition

    # Main loop

    loop do

      # Update game screen

      Graphics.update

      # Update input information

      Input.update

      # Frame update

      update

      # Abort loop if screen is changed

      if $scene != self

        break

      end

    end

    # Prepare for transition

    Graphics.freeze

    # Dispose of windows

    @command_window.dispose

    @playtime_window.dispose

    @location_window.dispose

    @gold_window.dispose

    @status_window.dispose

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    # Update windows

    @command_window.update

    @playtime_window.update

    @location_window.update

    @gold_window.update

    @status_window.update

    # If command window is active: call update_command

    if @command_window.active

      update_command

      return

    end

    # If status window is active: call update_status

    if @status_window.active

      update_status

      return

    end

  end

end

 

#==============================================================================

# ** Window_Location

#------------------------------------------------------------------------------

#  Show the places you visit

#==============================================================================

 

class Window_Location < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(0, 0, 160, 96)

    self.contents = Bitmap.new(width - 32, height - 32)

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

   

    # Set basic text

    text = Wep::Unknown_location_text

 

    # If uses the complete hash

    if Wep::Location_type == :map_list

      # Extract text from locations

      for location in Wep::Locations_map_id

        if location[0].include? $game_map.map_id

          text = location[1]

          break

        end

      end

   

    # If uses the map name

    elsif Wep::Location_type == :map_name

      # Load mapinfos for map name

      mapinfos = load_data("Data/MapInfos.rxdata")    

      # Make text

      text = mapinfos[$game_map.map_id].name

 

    # If it uses the map tree methods

    else

     

      # Iteraves over all base maps searching for tree of the

      # actual map.

      for locname, locdescription in Wep::Locations_map_tree

         # Search for actual map in a defined map tree

         if $game_party.tree_includes_map? (locname)

           text = locdescription

           break

         end

      end

 

    end

   

    # Draw text

    self.contents.clear

   

    # If sub locations use map names, read mapinfos

    if Wep::Show_sublocations == :map_names

        # Load mapinfos for map name

        mapinfos = load_data("Data/MapInfos.rxdata")    

        # Make text

        subtext = Wep::Sublocations_text + mapinfos[$game_map.map_id].name

        # Draw using classic style

        self.contents.font.color = system_color

        self.contents.draw_text(4, -5, 120, 32, text)

        self.contents.font.color = normal_color

        self.contents.draw_text(4, 32, 120, 32, subtext, 2)

       

    # If sub locations use map codes, iterate sublocations

    elsif Wep::Show_sublocations == :codes

      # Extract text from sublocations

      for sublocation in Wep::Sublocations_codes

        if sublocation[0].include? $game_map.map_id

          subtext = Wep::Sublocations_text + sublocation[1]

          break

        end

      end

      # Draw using classic style

      self.contents.font.color = system_color

      self.contents.draw_text(4, -5, 120, 32, text)

      self.contents.font.color = normal_color

      self.contents.draw_text(4, 32, 120, 32, subtext, 2)

     

    # If not, draw using Locations word    

    else

      self.contents.font.color = system_color

      self.contents.draw_text(4, -5, 120, 32, Wep::Locations_text)

      self.contents.font.color = normal_color

      self.contents.draw_text(4, 32, 120, 32, text, 2)

     

    end

 

  end

end

 

#==============================================================================

# ** Game_Party

#------------------------------------------------------------------------------

# Added method tree includes map

#==============================================================================

 

class Game_Party

  #--------------------------------------------------------------------------

  # * Tree includes map?

  #  look for the name given in actual map tree

  #--------------------------------------------------------------------------

  def tree_includes_map? (name)

    # Load mapinfos for map name

    mapinfos = load_data("Data/MapInfos.rxdata")    

    # If his name is the name searched

    if mapinfos[$game_map.map_id].name == name

        return true

    end

 

    map = $game_map.map_id

   

    # Iterate all parents maps

    while mapinfos[map].parent_id != 0

        if mapinfos[mapinfos[map].parent_id].name == name

          return true

        else

          map = mapinfos[map].parent_id

        end

    end

  end

end

Instructions

Nothing special. Just insert it before main.

Authors notes

All my scripts are in development and im open to suggestions, critics, bugs, etc.
 
Please, you have to put the entire game with all their resources and directories in the demo, so i can test it.

Anyway, you are using the version 2.1 of the script?
 
I'm using the ver 2.1 in the script.. and this is the prove?!?
viewFile.php
and I'm using RTP in the game.. actualy is fine because I can change the step window into another ( :thumb: ) and I want more like your picture..
my simple project

viewFile.php

the game show location and the place name.. but I want like in your picture
loc1.png

for my case
Green?
....
one again :rock: :thumb:
 

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