EDIT: Actually, i believe i posted this in the wrong forum :S
Hey guys. I am using the maplink script by Wachunga, and I have been trying to make it so the maplink won't allow the player to move to the designated map until a switch or variable (whichever I use) has been set.
I have tried making it so the event only appears when a certain switch has been turned on, but that only gives me a syntax error in the maplink script.
I have also tried using conditional branches, however the maplink script doesn't see the conditional branch and still allows the player to go through.
Do you guys know of any way to help me with my problem?
I appreciate anyone's help =)
Wachunga's Maplink Script:
Hey guys. I am using the maplink script by Wachunga, and I have been trying to make it so the maplink won't allow the player to move to the designated map until a switch or variable (whichever I use) has been set.
I have tried making it so the event only appears when a certain switch has been turned on, but that only gives me a syntax error in the maplink script.
I have also tried using conditional branches, however the maplink script doesn't see the conditional branch and still allows the player to go through.
Do you guys know of any way to help me with my problem?
I appreciate anyone's help =)
Wachunga's Maplink Script:
Code:
#==============================================================================
# ■ Maplinks
#------------------------------------------------------------------------------
# This is the script for Maplinks.
#==============================================================================
<span style="color:#000080; font-style:italic;">=begin
<span style="color:#000080; font-style:italic;">============
<span style="color:#000080; font-style:italic;">Maplinks - version 0.95 (2005-11-10)
<span style="color:#000080; font-style:italic;">============
<span style="color:#000080; font-style:italic;">by Wachunga
<span style="color:#000080; font-style:italic;">
<span style="color:#000080; font-style:italic;">This script simplifies linking maps together: a single event sets up an
<span style="color:#000080; font-style:italic;">entire edge of the map as a teleport to another map. Players trying to
<span style="color:#000080; font-style:italic;">leave that edge of the current map are automatically teleported.
<span style="color:#000080; font-style:italic;">
<span style="color:#000080; font-style:italic;">(This can also be achieved with many copies of teleport events along the edges
<span style="color:#000080; font-style:italic;">of a map or with a parallel-process event that sets variables and uses them to
<span style="color:#000080; font-style:italic;">teleport, but these methods are not optimal -- causing lag and/or inconvenience
<span style="color:#000080; font-style:italic;">for the mapper.)
<span style="color:#000080; font-style:italic;">
<span style="color:#000080; font-style:italic;">To link a map with another on a specific edge (north, east, south or west),
<span style="color:#000080; font-style:italic;">create an event with <maplink> included in its name on the appropriate edge of
<span style="color:#000080; font-style:italic;">the map. (To avoid confusion, maplink events on corners of the map are
<span style="color:#000080; font-style:italic;">not valid.) Then, add a teleport ("Transfer Player") command to the event
<span style="color:#000080; font-style:italic;">to specify the destination map and other details (e.g. player direction,
<span style="color:#000080; font-style:italic;">fading on/off). If the destination is an east or west edge, then the Y
<span style="color:#000080; font-style:italic;">coordinate is calculated based on the player's Y coordinate when
<span style="color:#000080; font-style:italic;">teleporting; likewise, the X coordinate is calculated automatically when
<span style="color:#000080; font-style:italic;">the destination is a north or south edge.
<span style="color:#000080; font-style:italic;">
<span style="color:#000080; font-style:italic;">Note: unlike normal teleport events, maplinks are activated when the player
<span style="color:#000080; font-style:italic;">tries to leave the screen instead of when stepping on the last tile. This
<span style="color:#000080; font-style:italic;">behaviour could be changed, but I feel that it's more natural this way:
<span style="color:#000080; font-style:italic;">it leaves the whole map open for actual exploration, instead of "wasting"
<span style="color:#000080; font-style:italic;">the outer tiles of a map.
<span style="color:#000080; font-style:italic;">
<span style="color:#000080; font-style:italic;">=end
#-------------------------------------------------------------------------------
class Game_Event < Game_Character
alias ml_ge_init initialize
def initialize(map_id, event)
ml_ge_init(map_id, event)
if @event.name.upcase.include?('<MAPLINK>')
dir = nil
if @event.y == $game_map.height-1
dir = 2 unless @event.x == 0 or @event.x == $game_map.width-1
elsif @event.x == 0
dir = 4 unless @event.y == 0 or @event.y == $game_map.height-1
elsif @event.x == $game_map.width-1
dir = 6 unless @event.y == 0 or @event.y == $game_map.height-1
elsif @event.y == 0
dir = 8 unless @event.x == 0 or @event.x == $game_map.width-1
end
if dir != nil
@list.each { |command|
if command.code == 201
# make sure new location isn't be specified by variables
if command.parameters[0] == 0
$game_map.maplinks[dir] = Maplink.new(command.parameters)
break
end
end
}
end
end
end
end
#-------------------------------------------------------------------------------
class Game_Map
attr_accessor :maplinks
alias ml_gm_setup setup
def setup(map_id)
@maplinks = {}
ml_gm_setup(map_id)
end
def width(map_id = @map_id)
if map_id == @map_id
return @map.width
else
return load_data(sprintf("Data/Map%03d.rxdata", map_id)).width
end
end
def height(map_id = @map_id)
if map_id == @map_id
return @map.height
else
return load_data(sprintf("Data/Map%03d.rxdata", map_id)).height
end
end
end
#-------------------------------------------------------------------------------
class Maplink
def initialize(parameters)
@param = parameters
end
def activate
width = $game_map.width(@param[1])
height = $game_map.height(@param[1])
# modify x (p[2]) or y (p[3]) coordinates appropriately
if @param[2] == 0 or @param[2] == width-1
@param[3] = $game_player.y
elsif @param[3] == 0 or @param[3] == height-1
@param[2] = $game_player.x
end
# set up a dummy interpreter just for teleport
interpreter = Interpreter.new
interpreter.parameters = @param
interpreter.index = 0
interpreter.command_201
end
end
#-------------------------------------------------------------------------------
class Game_Player
alias ml_cett check_event_trigger_touch
def check_event_trigger_touch(x, y)
check_maplinks(x,y)
ml_cett(x,y)
end
def check_maplinks(x,y)
if $game_map.valid?(x, y) then return end
dir = nil
if y == $game_map.height then dir = 2
elsif x == -1 then dir = 4
elsif x == $game_map.width then dir = 6
elsif y == -1 then dir = 8
end
if dir != nil
if $game_map.maplinks[dir] != nil
$game_map.maplinks[dir].activate
end
end
end
end
#-------------------------------------------------------------------------------
class Interpreter
attr_accessor :parameters
attr_accessor :index
end