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!