What I mean is how do I make it so that your partner characters come out of you during a cutscene then walk back inside you when the cutscene is done? It's done in many of the Final Fantasy games, and I know it is possible with RPG Maker VX, as it has been done with Eternal Eden. The thing is, how do I do it? I managed to figure it out, but my method of doing it is overly complicated and time consuming. Anybody know how I can do it more efficiently and smoothly?
Well, your cutscene is likely to be in a specific map, so you'd probably have an event (or events) for your partner characters. First page has no characterset image at all, while the 2nd page does and tied to a switch... one that is turned on by the event that controls your whole cutscene. And to make it easy, just set them to 'through' they can walk through you and each other.
After setting up your partner character events, I guess you kinda do this:
1) Get your player's X and Y location through the Control Variables map event.
2) Teleport your partner events right to your player using the Set Event Location (page 2, 1st col) code. You can use the variables from #1 to position them.
3) Turn on the switch that activates the partner's 2nd page... and their visible character.
4) Move your partners out with 'Set Move Route'
After you do the rest of your cutscene, I guess you can just set your partner characters to move to the player (or into him) with Set Move Route again... then turn that switch from #3 off.
Of course, properly made cutscenes can be time consuming. You never know what fun tweaks you may wanna put into characterization.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
i would automate the scene from the beginning. use the 'set character route' and make the character walk to a spot. then set a switch for the party member to appear right next to the character, do their thing, and walk back.
For lack of a better name, this script will store the IDs of your party members into a ranged index of variables, you'll have to customize this script and set your database accordingly.
Being as I just wrote this, I'll post it proper tomorrow. I no longer have access to VX or Ace, so I'm not 100% certain if it'll work correctly as it was written on XP.
Content Hidden
Code:
#===============================================================================
# ** Variables : Party Indexing
#===============================================================================
class Game_Variables
#-----------------------------------------------------------------------------
# * Party Indexing Starts At
#-----------------------------------------------------------------------------
#
# Party_Indexing_Starts_At = 1
#
# Starting with this variable^, every variable after that will store the IDs
# of actors as they join and leave your party. In other words, after you set
# the variable ID, you should go in your database and basically set it
# something like...
#
# 0001 : Actor 1
# 0002 : Actor 2
# 0003 : Actor 3
# 0004 : Actor 4
# ...etc
#
# Depending on how large of a party you can possibly have, you'll want to
# reserve that many variables. If you're using a large party script and want
# to use 12 actors, in this example, variables 1~12 would all be reserved.
#
# Any position that doesn't have an actor will have a zero instead of an
# actor's ID
#-----------------------------------------------------------------------------
Party_Indexing_Starts_At = 1
#-----------------------------------------------------------------------------
# * Party Indexing Active Update
#-----------------------------------------------------------------------------
#
# Integer : variables auto-update only if a switch by that ID is on.
# True : variables update each time a party member is added or removed.
# False : you'll have to call $game_variables.actors_update manually.
#-----------------------------------------------------------------------------
Party_Indexing_Active_Update = true
#-----------------------------------------------------------------------------
# * Maker = ( :XP or :VX )
#
# Pretty self-explainatory. Use :XP for RPG Maker XP, :VX for VX or VX Ace
#-----------------------------------------------------------------------------
Maker = :XP
#-----------------------------------------------------------------------------
# * Update Actor IDs
#-----------------------------------------------------------------------------
def actors_update(active_update = false)
# If active update flag (system automatically updating self)
if active_update
# If setting is an integer
if Party_Indexing_Active_Update.is_a?(Integer)
# End method unless Switch is On
return unless $game_Switches[Party_Indexing_Active_Update]
end
# End method unless active updating is true
return unless Party_Indexing_Active_Update
end
# Iterate through party members
for i in 0..$game_party.actors.size
# Get actor
actor = case Maker
when :XP then $game_party.actors[i]
when :VX then $game_actors[$game_party.actors[i]]
end
# Get variable index
index = Party_Indexing_Starts_At + i
# Set this variable to actor ID (or 0 if no actor)
@data[index] = (actor.is_a?(Game_Actor) ? actor.id : 0)
end
end
end
class Game_Party
#-----------------------------------------------------------------------------
# * Public Instance Variables
#-----------------------------------------------------------------------------
attr_reader :actors
#-----------------------------------------------------------------------------
# * Alias Listings
#-----------------------------------------------------------------------------
alias_method :id2variables_gmparty_addactor, :add_actor
alias_method :id2variables_gmparty_removeactor, :remove_actor
alias_method :id2variables_gmparty_ssm, :setup_starting_members
alias_method :id2variables_gmparty_sbtm, :setup_battle_test_members
#-----------------------------------------------------------------------------
# * Initial Party Setup
#-----------------------------------------------------------------------------
def setup_starting_members
# The usual...
id2variables_gmparty_ssm
# Update variables
$game_variables.actors_update(true)
end
#-----------------------------------------------------------------------------
# * Battle Test Party Setup
#-----------------------------------------------------------------------------
def setup_battle_test_members
# The usual...
id2variables_gmparty_sbtm
# Update variables
$game_variables.actors_update(true)
end
#-----------------------------------------------------------------------------
# * Add Actor
#-----------------------------------------------------------------------------
def add_actor(actor_id)
# The usual...
id2variables_gmparty_addactor(actor_id)
# Update variables
$game_variables.actors_update(true)
end
#-----------------------------------------------------------------------------
# * Remove Actor
#-----------------------------------------------------------------------------
def remove_actor(actor_id)
# The usual
id2variables_gmparty_removeactor(actor_id)
# Update variables
$game_variables.actors_update(true)
end
end
Anyways... this could probably help you to making actor-specific cut-scenes based on who is in your party, as well as what position they are in. To do that, I would make one event, give that event a Variable condition, make multiple pages based on possible actors the variable could be representing. You could also mix the event condition pages with the switch like DerVVulfman suggested, a switch basically telling the world "hey, cutscene going down, everybody act accordingly" lol.
If you need further help, I can possibly throw together a demo for you. I never realized how much thought can go into streamlining something that seems as simple as this, I'll have to find time to sit down and write a proper tutorial for future generations!