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.

Maplink Script - turning off maplink until switch/variable

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:
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
 

Baffou

Member

wow !! thanks regi !
i have setted the map and switch ID on line 81,
--------------------------------------------
ex : when 14, 19 # new map IDs
[23] # turn on switches ID
-----------------------------------------
but when i go to the specific map i got an error message :
---------------------------------------------
Script 'Maplinks' line 135: NoMethodError occured.
undefined method 'switches' for # <game_map:0x4269720>
------------------------------------------------
does i do something wrong ?
 
Oops, line 135 should be:
ids.each { |i| $game_switches = true }

Let me know if that fixes it.

@Sir Ver, I came up with a method to work the maplinks without having to exit and return to the map. Would you like that?
 

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