Quantcast
Channel: RGSS3 Scripts (RMVX Ace) Latest Topics
Viewing all articles
Browse latest Browse all 416

Remember Event Position

$
0
0

Remember Event Position

Author: Shaz

Introduction

If you move an event on the map, then leave the map and return, the event, by default, goes back to its original place (where you put it when designing the map). To get around that, you have to have another parallel process event run every time the map loads, to see if the event has been moved, and if so, put it in its correct position. If you have a lot of these in your game, that's a lot of additional events just checking where events should be. I dislike lots of "setup" events sitting around on maps, so devised this little script to let you tell an event to save its position, and go back to that position next time the map is loaded.

How to Use

Paste this script into its own slot in the Materials section.

Script

#--------------------------------------------------
# Remember Event Position 1.0
#--------------------------------------------------
#
# Author: Shaz
#
# Description: This script lets you set the position and direction
# where an event will appear next time the map is
# loaded. Events will appear in this new position
# rather than the place they were put during design.
#
#--------------------------------------------------
#
# Installation:
#
# Copy into a new script slot in the Materials section
#
#--------------------------------------------------
#
# Use:
#
# Examples below show syntax for an Event Command on an Event Tab.
# You can use @event_id for the current event, or specify an event number.
# To execute from within a Set Move Route command, omit the
# $game_map.events[@event_id]. part, and just use save_pos() and forget_pos().
#
# To tell an event to move to its current position the next time
# the map is loaded, execute the following in a script call:
# $game_map.events[@event_id].save_pos()
#
# To tell an event to move to a particular position (not its
# current position) the next time the map is loaded,
# execute the following in a script call:
# $game_map.events[@event_id].save_pos(1, 2, 8)
# - the above will move the event to x=1, y=2, facing up
#
# To tell an event to forget its previously remembered position
# and go back to its default position the next time time map
# is loaded, execute the following in a script call:
# $game_map.events[@event_id].forget_pos()
#--------------------------------------------------

class Game_System
alias shaz_mem_position_gs_init initialize

attr_accessor :event_positions

def initialize
shaz_mem_position_gs_init
@event_positions = {}
end
end

# Check to ensure $game_system.event_positions exists (save files created
# prior to this script being added would not have it initialized)
class Game_Map
alias shaz_mem_positions_gm_init initialize

def initialize
shaz_mem_positions_gm_init
$game_system.event_positions = {} if !$game_system.event_positions
end
end

class Game_CharacterBase
attr_accessor
end

class Game_Event
alias shaz_mem_position_gcb_init initialize

def initialize(map_id, event)
shaz_mem_position_gcb_init(map_id, event)

if $game_system.event_positions.has_key?([map_id, @id])
mvx, mvy, mvdir = $game_system.event_positions[[map_id, @id]]
moveto(mvx, mvy)
set_direction(mvdir) if mvdir
@stop_count = 0
refresh
end
end

def save_pos(x = @x, y = @y, dir = @direction)
$game_system.event_positions[[@map_id, @id]] = [x, y, dir]
end

def forget_pos
$game_system.event_positions.delete([@map_id, @id])
end
end

How to Call

To save the current event's position after a move route:


Set Move Route: This event (Wait)
: $>Move away from Player
: $>Script: save_pos()

To save the current event's position, but not within a move route:

(Conditional branch only used as part of the example - only the last line is relevant)


Conditional Branch: Switch [0001: Move Away] == ON
Set Move Route: This event (Wait)
: $>Move away from Player
Else
Set Move Route: This event (Wait)
: $>Move toward Player
Branch End
Script: $game_map.events[@event_id].save_pos()

To make a different event move to a set position when the map is next loaded:


Script: $game_map.events[4].save_pos(15, 6)

FAQ

Conditions

May be used freely in any game, commercial or otherwise. Please give credit.

Please do not copy and post to other forums.

Credits

Shaz


Viewing all articles
Browse latest Browse all 416

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>