Creating A Linear World Map

SUPAWEEB64

Warper
Member
Joined
Jul 22, 2019
Messages
3
Reaction score
0
First Language
English
Primarily Uses
RMVXA
Hi,

I wondering if it's possible to create a "Linear World Map" to what you see in Final Fantasy Mystic Quest?
What I mean by that is that the player and party are restricted to certain routes that link to each town/dungeon to progress and depending on what direction you push on your keyboard it automatically set you to that town.

Example From Final Fantasy Mystic Quest
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,944
Reaction score
1,050
First Language
Dutch
Primarily Uses
RMMV
Link is dead, but do you mean simialir to fire emblem or in the world map?
if you mean by world map, there is are some ways to accomplish that one.

1. by eventing
2. by a plugin (this require alot of setup but its worth it)
 

SUPAWEEB64

Warper
Member
Joined
Jul 22, 2019
Messages
3
Reaction score
0
First Language
English
Primarily Uses
RMVXA
Link is dead, but do you mean simialir to fire emblem or in the world map?
if you mean by world map, there is are some ways to accomplish that one.

1. by eventing
2. by a plugin (this require alot of setup but its worth it)
Sorry about that, Here is the link go to the Timestamp 31 mins 14 sec, that what I was referring about how the map should work
 

Heirukichi

Veteran
Veteran
Joined
Sep 24, 2015
Messages
1,421
Reaction score
596
First Language
Italian
Primarily Uses
RMVXA
From what I can see it can be done with just events and regions in a simple world map. You can determine paths using regions and, according to the direction the player wants to move to, you select the path accordingly.
by a plugin (this require alot of setup but its worth it)
First of all, this is a VX Ace post; plugins (that are meant for MV) do not work here. You need a VX Ace script. On top of it, contrarily to what has been said, the configuration can be quite simple (or completely absent). Everything depends on how such a thing is implemented.

Here is an example of what I mean (I am going to use pseudocode in my example so that it applies to any programming language, regardless of the engine).
Code:
Dir := Input
Movement Region := MapRegionID(RoundedXwithDirection(Dir), RoundedYwithDirection(Dir))
if (Movement Region > 0) do
  OldX :=  PlayerX
  OldY := PlayerY
  New Position = [RoundedXwithDirection(Dir), RoundedYwithDirection(Dir)]
  while (New Position != [OldX, OldY])
    Turn Player toward Direction (Movement Direction)
    Move Forward
    Wait while Player is Moving
    New Direction := Player Reverse Direction
    for each i in [2, 4, 6, 8] do
      RoundedX := RoundedXwithDirection(i)
      RoundedY := RoundedYwithDirection(i)
      Region ID := MapRegionID(RoudnedX, RoundedY)
      if ([RoundedX, RoundedY] != [OldX, Old])
        New Direction := i
        break
      end
    end
end
If we assume that the one above is a method, we can just use the same method to move on a certain region that marks the position of each destination. Doing it this way requires one event for each destination (action button trigger), a parallel process to handle player movement according to arrow keys and an autorun event to move the player while blocking input.

Doing it with a script makes things extremely easy. I have a script that does that. It requires some polishing because there is a minor bug when moving followers with parallel process events, but for simple things like regional paths it works perfectly.
 

Calvynne

Veteran
Veteran
Joined
Oct 23, 2015
Messages
104
Reaction score
67
First Language
English
Primarily Uses
So, boiling it down to the bare basics, you could do this with Yanfly's Region Restrictions, events that block the player from advancing, and switches to turn those events off.

You'd use Region Restrictions to map out the areas the player could go. The blocking events would make it so that the last tile the player ends on is the event they're supposed to activate/enter/interact with. The switches turn those events on and off as needed.

Now to get into the auto moving and graphics, that could either be done with some heavy eventing/common event loops, or a custom built plugin. Sorta fortunately, someone built a similar plugin a while ago. I remember seeing it, but never bookmarked it so I can't help track it down. You'll have to do some digging to find it.

Thinking about what could be done without a plugin though, you could make it so that the terminal tile has a switch that on player touch activates the animations for the arrows. When the player makes a directional movement, an "On Key Press" event turns that event off and then activates the move route command to take the player to the next location.

Good luck, I hope this helps, if only a bit.
 

Heirukichi

Veteran
Veteran
Joined
Sep 24, 2015
Messages
1,421
Reaction score
596
First Language
Italian
Primarily Uses
RMVXA
I have found the script I mentioned above. It makes doing what you are trying to achieve extremely simple. On top of it, the script is plug and play. It quite stable, but the new feature is still not working properly so I might update it later. When I do, you can find the definitive version on my website.
Code:
#==============================================================================
# HEIRUKICHI MOVE ROUTE
#==============================================================================
# Version 2.1.1
# - Author: Heirukichi
# - Last update: 03-20-2019 [MM-DD-YYYY]
#==============================================================================
# TERMS OF USE
#------------------------------------------------------------------------------
# This script is licensed under the GNU General Public License 3.0. This means
# that you can:
# - use this script for both commercial and non commercial projects as long as
#   * proper credit is given to me (Heirukichi);
#   * a link to my website is provided;
# - modify this script as much as you want as long as
#   * you do not pretend you wrote the whole script;
#   * you still give credit to me for the original work;
#   * you provide a link to my website instead of reposting my script when you
#     post the modified version of the script.
#
# You can review the complete license here:
# https://www.gnu.org/licenses/gpl-3.0.html
#
# If you are using this script for a commercial game, I would like to receive a
# link of your game page. The link does not need to contain a free copy of your
# game and it is only used to keep track of games where my scripts are being
# used.
# While this is not mandatory for non commercial games, I really appreciate if
# you could send me a link regardless of your game being commercial or not.
# You can contact me using the Contacts form on my website or by sending me a
# private message on RPG Maker Web forum.
#
# IMPORTANT NOTICE:
# If you want to distribute this code, feel free to do it, but provide a link
# to my website instead of pasting my script somewhere else.
#==============================================================================
# DESCRIPTION
#------------------------------------------------------------------------------
# With this script is possible to set up move routes for characters in a fast
# and easy way. You can draw your own paths using Regions instead of using the
# move route command and then use a script call to tell the engine which
# character to move and which region is being used to draw your path.
#==============================================================================
# INSTRUCTIONS:
#------------------------------------------------------------------------------
# To use this script you have to draw your path using any region (in the
# example below I used region 63) and then use a script call to type this:
#
# path(region, character, event *OPTIONAL*)
#
# region is the region use to draw your path
# character is the id of the character you want to move (0 for player)
# event is either TRUE or FALSE. When it is true it tells the engine that your
# id refers to events, when it is false it tells the engine that your id refers
# to the player. If you leave this blank it will refer to player.
#
# IMPORTANT NOTE: using this script is also possible to draw move routes for
# player followers! When event is FALSE or omitted, the script automatically
# refers to the player. If character is 1 or more instead of 0 you can access
# to player followers.
#
# So it is like this:
# 0 = 1st party member
# 1 = 1st follower (2nd party member)
# 2 = 2nd follower (3rd party member) and so on.
#
# Example #1: path(63, 3, true)
# Example #2: path(63, 0)
# Example #3: path(63, 0, false)
#
# The code in Example 1 will move the event with ID = 3 following the path with
# region ID = 63.
# The code in Example 2 will move the player following the path with region
# ID = 63. Example 3 is the same.
#
#------------------------------------------------------------------------------
# WARNING: MOVING FOLLOWERS WITH PARALLEL PROCESS RESULTS IN A WEIRD EFFECT
#          ONCE THEY GO BACK TO THEIR ORIGINAL POSITION IN THE SNAKE-LIKE TAIL!
#------------------------------------------------------------------------------
# WHAT'S NEW:
# * This version is 100% compatible with the previous one. If you used HMR.path
#   instead of just path to move characters in your game you don't have to edit
#   anything. The script just overwrites the old HMR.path with the new one.
# * It is now possible to speed up player movement even when the player is
#   being moved by another event. This applies to followers as well.
# * The character that is being moved now turns briefly toward a blocked path
#   to show where it is supposed to go. This can be useful for both players (it
#   is a hint to tell them to move) and developers (so knowing where to look if
#   they want to fix something is much easier).
# * The script now works for maps that loop in either direction.
#------------------------------------------------------------------------------
# BUG FIXES:
# * Fixed a bug causing the game to enter an endless loop when the character
#   path was blocked.
# * Fixed a bug causing characters moved using this script to briefly stop
#   after each step.
#==============================================================================
$imported = {} if $imported.nil?
$imported["Heirukichi_MoveRoute"] = true
#==============================================================================
# ** HMR module
#==============================================================================
module HMR
  #----------------------------------------------------------------------------
  # Current version. Used when an important update comes out to check if the
  # version you are using is valid.
  #----------------------------------------------------------------------------
  CURRENT_VERSION = "2.1.1"
  #----------------------------------------------------------------------------
  # * Initialize Heirukichi-MoveRoute
  #----------------------------------------------------------------------------
  def self.start_moving(id, character)
    @path_id = id
    @actual_x = character.x
    @actual_y = character.y
    @character = character
    @moving = true
    @old_x = nil
    @old_y = nil
    @character.set_path(@path_id)
  end # Start Moving
  #----------------------------------------------------------------------------
  # * Passable?
  #----------------------------------------------------------------------------
  def self.passable?(d = nil)
    x = @character.x
    y = @character.y
    if (d == nil)
      d = @character.direction
    end
    @character.passable?(x, y, d)
  end # Passable?
  #----------------------------------------------------------------------------
  # * Moving?
  #----------------------------------------------------------------------------
  def self.moving?
    @moving
  end # Moving?
  #----------------------------------------------------------------------------
  # * Stop movement
  #----------------------------------------------------------------------------
  def self.stop_moving
    @moving = false
    @character.set_path(0)
  end
  #----------------------------------------------------------------------------
  # * Move Character
  #----------------------------------------------------------------------------
  def self.move
    d = get_direction
    @character.move_straight(d) unless (d == nil)
    save_movement
  end # Move Character
  #----------------------------------------------------------------------------
  # * Get Character Direction
  #----------------------------------------------------------------------------
  def self.get_direction
    direction = nil
    x = @character.x
    y = @character.y
    step = false
    [2, 4, 6, 8].each do |d|
      x2 = $game_map.round_x_with_direction(x, d)
      y2 = $game_map.round_y_with_direction(y, d)
      next if ((x2 == @old_x) && (y2 == @old_y))
      if $game_map.region_id(x2, y2) == @path_id
        step = passable?(d)
        if step
          direction = d
          break
        end
      end
    end
    stop_moving unless step
    return direction
  end # Get Character Direction
  #----------------------------------------------------------------------------
  # * Store Old Coordinates
  #----------------------------------------------------------------------------
  def self.save_movement
    unless ((@actual_x == @character.x) && (@actual_y == @character.y))
      @old_x = @actual_x
      @old_y = @actual_y
      @actual_x = @character.x
      @actual_y = @character.y
    else
      stop_moving
    end
  end # Store Old Coordinates
  #----------------------------------------------------------------------------
  # This part adds compatibility with the old Heirukichi-MoveRoute version
  #----------------------------------------------------------------------------
  def self.path(id, c, event = false)
    if event
      target = $game_map.events[c]
    else
      target = ((c == 0) ? $game_player : $game_player.followers[(c - 1)])
    end
    start_moving(id, target)
    while moving?
      move
      Fiber.yield while target.moving?
    end
  end # Compatibility with previous version
end # end of HMR module
#==============================================================================
# HMR module (part 2)
#------------------------------------------------------------------------------
# The following part allows the user to call path using variable arguments.
#==============================================================================
module HMR
  class << HMR
    #--------------------------------------------------------------------------
    # * Aliased Method: path
    #--------------------------------------------------------------------------
    alias hmr_path_old  path
    def path(*args)
      if (args.size == 2)
        hmr_path_old(args[0], args[1])
      elsif (args.size == 3)
        if args[2].is_a?(Integer)
          hmr_path_old(args[0], args[1])
          if [2, 4, 6, 8].include?(args[2])
            if (args[1] == 0)
              character = $game_player
            elsif [1, 2, 3].include?(args[1])
              character = $game_player.followers[args[1] - 1]
            end
            character.set_direction(args[2])
          end
        elsif (!args[2] || args[2])
          hmr_path_old(args[0], args[1], args[2])
         
        end
      elsif (args.size == 4)
        hmr_path_old(args[0], args[1], args[2])
        return unless [2, 4, 6, 8].include?(args[3])
        if args[2]
          $game_map.events[args[1]].set_direction(args[3])
        else
          if (args[1] == 0)
            character = $game_player
          elsif ([1, 2, 3].include?(args[1]))
            character = $game_player.followers[args[1] - 1]
          end
          character.set_direction(args[3])
        end
      end
    end # Path aliased version
  end # end of HMR class
end # end of HMR module
#==============================================================================
# ** Game_CharacterBase class
#==============================================================================
class Game_CharacterBase
  #----------------------------------------------------------------------------
  # * Aliased method: init_private_members
  #----------------------------------------------------------------------------
  alias hrk_mr_initialize_private_old  init_private_members
  def init_private_members
    hrk_mr_initialize_private_old
    @current_path = 0
  end # init_private_members
  #----------------------------------------------------------------------------
  # * Using Path?
  #----------------------------------------------------------------------------
  def using_path?
    @current_path > 0
  end # Using Path?
  #----------------------------------------------------------------------------
  # * Set Path
  #----------------------------------------------------------------------------
  def set_path(id)
    @current_path = id
  end # Set Path
end # end of Game_CharacterBase class
#==============================================================================
# ** Game_Follower class
#==============================================================================
class Game_Follower < Game_Character
  #----------------------------------------------------------------------------
  # * Preceeding Character
  #----------------------------------------------------------------------------
  def preceding_character
    return @preceding_character if (@preceding_character == $game_player)
    if @preceding_character.using_path?
      @preceding_character.preceding_character
    else
      @preceding_character
    end
  end # Preceeding Character
  #----------------------------------------------------------------------------
  # * Aliased method: chase_preceding_character
  #----------------------------------------------------------------------------
  alias hrk_mr_chase_preceding_character_old  chase_preceding_character
  def chase_preceding_character
    if $imported["Heirukichi_MoveRoute"]
      unless moving?
        return if gather?
        sx = distance_x_from(preceding_character.x)
        sy = distance_y_from(preceding_character.y)
        if sx != 0 && sy != 0
          move_diagonal(sx > 0 ? 4 : 6, sy > 0 ? 8 : 2)
        elsif sx != 0
          move_straight(sx > 0 ? 4 : 6)
        elsif sy != 0
          move_straight(sy > 0 ? 8 : 2)
        end
      end
    else
      hrk_mr_chase_preceding_character_old
    end
  end # aliased chase_preceding_character
end # end of Game_Follower class
#==============================================================================
# ** Game_Interpreter
#==============================================================================
class Game_Interpreter
  #----------------------------------------------------------------------------
  # * Path
  #----------------------------------------------------------------------------
  def path(*args)
    case args.size
    when 4
      HMR.path(args[0], args[1], args[2], args[3])
    when 3
      HMR.path(args[0], args[1], args[2])
    when 2
      HMR.path(args[0], args[1])
    end
  end # Path
end # end of Game_Interpreter
 

SUPAWEEB64

Warper
Member
Joined
Jul 22, 2019
Messages
3
Reaction score
0
First Language
English
Primarily Uses
RMVXA
I have found the script I mentioned above. It makes doing what you are trying to achieve extremely simple. On top of it, the script is plug and play. It quite stable, but the new feature is still not working properly so I might update it later. When I do, you can find the definitive version on my website.
Code:
#==============================================================================
# HEIRUKICHI MOVE ROUTE
#==============================================================================
# Version 2.1.1
# - Author: Heirukichi
# - Last update: 03-20-2019 [MM-DD-YYYY]
#==============================================================================
# TERMS OF USE
#------------------------------------------------------------------------------
# This script is licensed under the GNU General Public License 3.0. This means
# that you can:
# - use this script for both commercial and non commercial projects as long as
#   * proper credit is given to me (Heirukichi);
#   * a link to my website is provided;
# - modify this script as much as you want as long as
#   * you do not pretend you wrote the whole script;
#   * you still give credit to me for the original work;
#   * you provide a link to my website instead of reposting my script when you
#     post the modified version of the script.
#
# You can review the complete license here:
# https://www.gnu.org/licenses/gpl-3.0.html
#
# If you are using this script for a commercial game, I would like to receive a
# link of your game page. The link does not need to contain a free copy of your
# game and it is only used to keep track of games where my scripts are being
# used.
# While this is not mandatory for non commercial games, I really appreciate if
# you could send me a link regardless of your game being commercial or not.
# You can contact me using the Contacts form on my website or by sending me a
# private message on RPG Maker Web forum.
#
# IMPORTANT NOTICE:
# If you want to distribute this code, feel free to do it, but provide a link
# to my website instead of pasting my script somewhere else.
#==============================================================================
# DESCRIPTION
#------------------------------------------------------------------------------
# With this script is possible to set up move routes for characters in a fast
# and easy way. You can draw your own paths using Regions instead of using the
# move route command and then use a script call to tell the engine which
# character to move and which region is being used to draw your path.
#==============================================================================
# INSTRUCTIONS:
#------------------------------------------------------------------------------
# To use this script you have to draw your path using any region (in the
# example below I used region 63) and then use a script call to type this:
#
# path(region, character, event *OPTIONAL*)
#
# region is the region use to draw your path
# character is the id of the character you want to move (0 for player)
# event is either TRUE or FALSE. When it is true it tells the engine that your
# id refers to events, when it is false it tells the engine that your id refers
# to the player. If you leave this blank it will refer to player.
#
# IMPORTANT NOTE: using this script is also possible to draw move routes for
# player followers! When event is FALSE or omitted, the script automatically
# refers to the player. If character is 1 or more instead of 0 you can access
# to player followers.
#
# So it is like this:
# 0 = 1st party member
# 1 = 1st follower (2nd party member)
# 2 = 2nd follower (3rd party member) and so on.
#
# Example #1: path(63, 3, true)
# Example #2: path(63, 0)
# Example #3: path(63, 0, false)
#
# The code in Example 1 will move the event with ID = 3 following the path with
# region ID = 63.
# The code in Example 2 will move the player following the path with region
# ID = 63. Example 3 is the same.
#
#------------------------------------------------------------------------------
# WARNING: MOVING FOLLOWERS WITH PARALLEL PROCESS RESULTS IN A WEIRD EFFECT
#          ONCE THEY GO BACK TO THEIR ORIGINAL POSITION IN THE SNAKE-LIKE TAIL!
#------------------------------------------------------------------------------
# WHAT'S NEW:
# * This version is 100% compatible with the previous one. If you used HMR.path
#   instead of just path to move characters in your game you don't have to edit
#   anything. The script just overwrites the old HMR.path with the new one.
# * It is now possible to speed up player movement even when the player is
#   being moved by another event. This applies to followers as well.
# * The character that is being moved now turns briefly toward a blocked path
#   to show where it is supposed to go. This can be useful for both players (it
#   is a hint to tell them to move) and developers (so knowing where to look if
#   they want to fix something is much easier).
# * The script now works for maps that loop in either direction.
#------------------------------------------------------------------------------
# BUG FIXES:
# * Fixed a bug causing the game to enter an endless loop when the character
#   path was blocked.
# * Fixed a bug causing characters moved using this script to briefly stop
#   after each step.
#==============================================================================
$imported = {} if $imported.nil?
$imported["Heirukichi_MoveRoute"] = true
#==============================================================================
# ** HMR module
#==============================================================================
module HMR
  #----------------------------------------------------------------------------
  # Current version. Used when an important update comes out to check if the
  # version you are using is valid.
  #----------------------------------------------------------------------------
  CURRENT_VERSION = "2.1.1"
  #----------------------------------------------------------------------------
  # * Initialize Heirukichi-MoveRoute
  #----------------------------------------------------------------------------
  def self.start_moving(id, character)
    @path_id = id
    @actual_x = character.x
    @actual_y = character.y
    @character = character
    @moving = true
    @old_x = nil
    @old_y = nil
    @character.set_path(@path_id)
  end # Start Moving
  #----------------------------------------------------------------------------
  # * Passable?
  #----------------------------------------------------------------------------
  def self.passable?(d = nil)
    x = @character.x
    y = @character.y
    if (d == nil)
      d = @character.direction
    end
    @character.passable?(x, y, d)
  end # Passable?
  #----------------------------------------------------------------------------
  # * Moving?
  #----------------------------------------------------------------------------
  def self.moving?
    @moving
  end # Moving?
  #----------------------------------------------------------------------------
  # * Stop movement
  #----------------------------------------------------------------------------
  def self.stop_moving
    @moving = false
    @character.set_path(0)
  end
  #----------------------------------------------------------------------------
  # * Move Character
  #----------------------------------------------------------------------------
  def self.move
    d = get_direction
    @character.move_straight(d) unless (d == nil)
    save_movement
  end # Move Character
  #----------------------------------------------------------------------------
  # * Get Character Direction
  #----------------------------------------------------------------------------
  def self.get_direction
    direction = nil
    x = @character.x
    y = @character.y
    step = false
    [2, 4, 6, 8].each do |d|
      x2 = $game_map.round_x_with_direction(x, d)
      y2 = $game_map.round_y_with_direction(y, d)
      next if ((x2 == @old_x) && (y2 == @old_y))
      if $game_map.region_id(x2, y2) == @path_id
        step = passable?(d)
        if step
          direction = d
          break
        end
      end
    end
    stop_moving unless step
    return direction
  end # Get Character Direction
  #----------------------------------------------------------------------------
  # * Store Old Coordinates
  #----------------------------------------------------------------------------
  def self.save_movement
    unless ((@actual_x == @character.x) && (@actual_y == @character.y))
      @old_x = @actual_x
      @old_y = @actual_y
      @actual_x = @character.x
      @actual_y = @character.y
    else
      stop_moving
    end
  end # Store Old Coordinates
  #----------------------------------------------------------------------------
  # This part adds compatibility with the old Heirukichi-MoveRoute version
  #----------------------------------------------------------------------------
  def self.path(id, c, event = false)
    if event
      target = $game_map.events[c]
    else
      target = ((c == 0) ? $game_player : $game_player.followers[(c - 1)])
    end
    start_moving(id, target)
    while moving?
      move
      Fiber.yield while target.moving?
    end
  end # Compatibility with previous version
end # end of HMR module
#==============================================================================
# HMR module (part 2)
#------------------------------------------------------------------------------
# The following part allows the user to call path using variable arguments.
#==============================================================================
module HMR
  class << HMR
    #--------------------------------------------------------------------------
    # * Aliased Method: path
    #--------------------------------------------------------------------------
    alias hmr_path_old  path
    def path(*args)
      if (args.size == 2)
        hmr_path_old(args[0], args[1])
      elsif (args.size == 3)
        if args[2].is_a?(Integer)
          hmr_path_old(args[0], args[1])
          if [2, 4, 6, 8].include?(args[2])
            if (args[1] == 0)
              character = $game_player
            elsif [1, 2, 3].include?(args[1])
              character = $game_player.followers[args[1] - 1]
            end
            character.set_direction(args[2])
          end
        elsif (!args[2] || args[2])
          hmr_path_old(args[0], args[1], args[2])
        
        end
      elsif (args.size == 4)
        hmr_path_old(args[0], args[1], args[2])
        return unless [2, 4, 6, 8].include?(args[3])
        if args[2]
          $game_map.events[args[1]].set_direction(args[3])
        else
          if (args[1] == 0)
            character = $game_player
          elsif ([1, 2, 3].include?(args[1]))
            character = $game_player.followers[args[1] - 1]
          end
          character.set_direction(args[3])
        end
      end
    end # Path aliased version
  end # end of HMR class
end # end of HMR module
#==============================================================================
# ** Game_CharacterBase class
#==============================================================================
class Game_CharacterBase
  #----------------------------------------------------------------------------
  # * Aliased method: init_private_members
  #----------------------------------------------------------------------------
  alias hrk_mr_initialize_private_old  init_private_members
  def init_private_members
    hrk_mr_initialize_private_old
    @current_path = 0
  end # init_private_members
  #----------------------------------------------------------------------------
  # * Using Path?
  #----------------------------------------------------------------------------
  def using_path?
    @current_path > 0
  end # Using Path?
  #----------------------------------------------------------------------------
  # * Set Path
  #----------------------------------------------------------------------------
  def set_path(id)
    @current_path = id
  end # Set Path
end # end of Game_CharacterBase class
#==============================================================================
# ** Game_Follower class
#==============================================================================
class Game_Follower < Game_Character
  #----------------------------------------------------------------------------
  # * Preceeding Character
  #----------------------------------------------------------------------------
  def preceding_character
    return @preceding_character if (@preceding_character == $game_player)
    if @preceding_character.using_path?
      @preceding_character.preceding_character
    else
      @preceding_character
    end
  end # Preceeding Character
  #----------------------------------------------------------------------------
  # * Aliased method: chase_preceding_character
  #----------------------------------------------------------------------------
  alias hrk_mr_chase_preceding_character_old  chase_preceding_character
  def chase_preceding_character
    if $imported["Heirukichi_MoveRoute"]
      unless moving?
        return if gather?
        sx = distance_x_from(preceding_character.x)
        sy = distance_y_from(preceding_character.y)
        if sx != 0 && sy != 0
          move_diagonal(sx > 0 ? 4 : 6, sy > 0 ? 8 : 2)
        elsif sx != 0
          move_straight(sx > 0 ? 4 : 6)
        elsif sy != 0
          move_straight(sy > 0 ? 8 : 2)
        end
      end
    else
      hrk_mr_chase_preceding_character_old
    end
  end # aliased chase_preceding_character
end # end of Game_Follower class
#==============================================================================
# ** Game_Interpreter
#==============================================================================
class Game_Interpreter
  #----------------------------------------------------------------------------
  # * Path
  #----------------------------------------------------------------------------
  def path(*args)
    case args.size
    when 4
      HMR.path(args[0], args[1], args[2], args[3])
    when 3
      HMR.path(args[0], args[1], args[2])
    when 2
      HMR.path(args[0], args[1])
    end
  end # Path
end # end of Game_Interpreter
Ok, I'll see if this plug-in works. Thanks so much. I'll you know if I have any questions or I run into any problems. :)
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,431
Reaction score
7,712
First Language
German
Primarily Uses
RMMV
I'll see if this plug-in works.
you don't even need a plugin for this to work, it is very simple to do with pure eventing

make the entire map impassable
then make one event for each crosspoint, priority below player and set to action button to enter the town map or dungeon map or whatever is there
then in each possible direction where the player can move to, you place another event on priority same as player and player touch, with a sprite for the moving arrow.
these events will be triggered when the player tries to move on them, and if that happens they use a set move route targeted at the player that turns through on, automoves him to the next crosspoint and then turns through off again.

finished - quite a bit of work for the move routes, but those should be easy to enter.
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
2,944
Reaction score
1,050
First Language
Dutch
Primarily Uses
RMMV
this is one way of eventing (tutorial here) (this is for MV best, but its similair in VX Ace.
there is also another 1 out there with clear how to make this kind. but if you follow it, im sure you
know you get a way you like to have,
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Day 9 of giveaways! 8 prizes today :D
He mad, but he cute :kaopride:

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.

Forum statistics

Threads
106,040
Messages
1,018,470
Members
137,821
Latest member
Capterson
Top