RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
+ [ Call Event ] + (Missing feature from RM2K)

0 Members and 1 Guest are viewing this topic.

**
Rep:
Level 86
Call Event
Version 1.0
by Woratana
Release Date: 05/05/2008


Introduction
It's a little snippet that will add thing like event command 'Call Event' in RM2K.

If you haven't use RM2K before, 'Call Event' use to run event commands in other event.
Basically, it's similar to 'Call Common Event', just change from common event to event in map.

I also added option to use call event with event from other map. :)


Features
Version 1.0
Code: [Select]
# - Same as 'Call Event' in RM2K
# - You can also use 'Call Event' with event from other map


Screenshots
No need...  :lol:


Script
Place it above main
Code: [Select]
#============================================================
# ? [XP] ? Call Event ?
# * Missing features from RM2K
#------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Released Date: 04/05/2008
#------------------------------------------------------------
=begin
 
+[How to use: Version 2]+
=========================================================================
>> Call event from other map by call script:
 
callev(event id, page you want, map ID)
------------------------------------------------------------------------
e.g. callev(5,2,1)
^ to call event commands list from 'page 2' of 'event ID 5' in Map ID '1'
------------------------------------------------------------------------
>> Call event in current map by call script:
 
callev(event id, page you want)
------------------------------------------------------------------------
>> If you want to call event in current page that it's running,
set 'page you want' to 0
------------------------------------------------------------------------
*Note: You CANNOT call erased event!
========================================================================
=end
#------------------------------------------------------------

# Make variable 'event' readable from outside
class Game_Event; attr_reader :event; end
class Interpreter
  def callev(evid = 0,page = 0, id_map = $game_map.map_id)
    return if evid == 0
    if id_map != $game_map.map_id
      # Load new map data if event is not from current map
      dest_map = load_data(sprintf("Data/Map%03d.rxdata", id_map))
      if page == 0
        # Get first page if user didn't set page
        inter_event = dest_map.events[evid].pages[0]
      else
        inter_event = dest_map.events[evid].pages[page - 1]
      end
    else
      # Use $game_map if event is in current map
      if page == 0
        inter_event = $game_map.events[evid]
      else
        inter_event = $game_map.events[evid].event.pages[page - 1]
      end
    end
    # Add new child_interpreter to run commands
    @child_interpreter = Interpreter.new(@depth + 1)
    # Add commands from target event
    @child_interpreter.setup(inter_event.list, @event_id)
  end
end


Instruction
Use 'Call Event' by call script:
Code: [Select]
callev(event_id, page, map_id)

or
Code: [Select]
callev(event_id,page)
for event in current map

If you want to call current page from that event (in case that event have many pages depends on condition...)
just change use 0 for page


Author's Notes
Free for use in your non-commercial work if credit included. If your project is commercial, please contact me.

Please do not redistribute this script without permission. If you want to post it on any forum, please link to this topic.

**
Rep: +0/-0Level 85
Excuse my naivity, but am I correct in assuming you can use this little script to call an event from another map, and it would in fact run on the current map?  So in reality, I could create a blank map, create a bunch of events on it, and then call them into the current map, similiar to a function library?  What would be the difference, performance and overhead wise, between using this in the above scenario (assuming my initial assumption is correct) and using a common event? 

Am I limited to the event type, such as player action, player touch, autorun?  I'm really forseeing using this to dynamically populate a map with NPCs and battles... Which then begs the question, if it is an NPC event, when calling the event, is there a way to set the map grid placement of the event?  Or change any of the event options, such as Fixed position, Random position, etc...  Another useful feature (IMO) would be the ability to delete an event from a given map, that remained persistent if the map gets re-loaded later in the game...

**
Rep: +0/-0Level 85
I'm sorry for bumping this, but I'm really, really, really, really curious about it...

***
Rep:
Level 86
Yeah... about that.....
Why don't you pop the script in and find out?

Just start a new game.
This is a signature.