Easy Party Switcher help (RESOLVED)

Started by C.C. rOyAl, July 05, 2009, 01:47:23 pm

Previous topic - Next topic

C.C. rOyAl

July 05, 2009, 01:47:23 pm Last Edit: July 10, 2009, 02:17:04 am by C.C. rOyAl
hey i was wondering if someone could help me. im using the XAS Hero 3.4 ABS and i want a party switcher for it. problem is, the two party switchers ive found i cant seem to figure out if they can do that. they r the two on this site. i particularily like the easy party switcher by Blizzard the most. an example of what i want to know if i can do is like in Dark Cloud where u can switch party members at anytime. som1 plz help me!!

[EDIT]
ok aqua helped me with that but now.....
i decided to go with the Easy Party Switcher because of its features and i hav figured out everything except, is it possible to make it accessible through the menu? if it is which syntax should i use and how do i do it?
the syntax's are in the script
Spoiler: ShowHide
 #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Easy Party Switcher by Blizzard
# Version 2.43b
# Type: Party Changing System
# Date: 21.05.2006
# Date v1.1: 25.05.2006
# Date v1.2b: 27.05.2006
# Date v1.5b: 3.11.2006
# Date v1.51b: 29.11.2006
# Date v1.52b: 6.12.2006
# Date v1.7b: 23.2.2007
# Date v1.8b: 30.4.2007
# Date v2.0b: 7.8.2007
# Date v2.1b: 24.8.2007
# Date v2.11b: 24.9.2007
# Date v2.3b: 26.1.2008
# Date v2.32b: 28.1.2008
# Date v2.4b: 29.1.2008
# Date v2.41b: 6.8.2008
# Date v2.42b: 14.10.2008
# Date v2.43b: 20.10.2008
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#  
#  This work is protected by the following license:
# #----------------------------------------------------------------------------
# #  
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# #  
# #  You are free:
# #  
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# #  
# #  Under the following conditions:
# #  
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# #  
# #  Noncommercial. You may not use this work for commercial purposes.
# #  
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# #  
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# #  
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# #  
# #  - Nothing in this license impairs or restricts the author's moral rights.
# #  
# #----------------------------------------------------------------------------
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Special Thanks to:
#
#   Zeriab for pointing out a few glitches and shortening the code in an
#   earlier version. =D
#
#
# IMPORTANT NOTE:
#
#   Be sure to set the MAX_PARTY to the maximum size of your party. There is
#   already a preconfiguration of 4.
#
#
# Compatibility:
#
#   98% compatible with SDK v1.x. 90% compatible with SDK 2.x. Can cause
#   incompatibility issued with other Party Change Systems. Can cause problems
#   with CBS-es if you use the battle switch feature. WILL corrupt your old
#   savegames.
#
#
# Features:
#
#   - set party members for "not _available" (shown transparent in the reserve)
#   - remove party members from the reserve list ("disabled_for_party")
#   - set party members, who MUST be in the party (shown transparent in the
#     current party, "must_be_in_party")
#   - set up forced positions for party members
#   - set up forced party size
#   - option either to wipe the party (for multi-party use) or only remove
#     every member (except 1) from the party.
#   - easy to use and easy to switch party members
#   - also supports small parties (2 or 3 members) and large parties (5 or
#     more)
#   - uses facesets optionally
#
# v1.5b:
#   - better, shorter and more efficient code (less memory use, less CPU use)
#   - fixed potential bugs
#
# v1.7b:
#   - improved coding
#   - facesets now optional
#   - no extra bitmap files needed anymore
#   - works now with Tons of Add-ons
#
# v1.8b:
#   - added "forced position"
#   - added "forced party size"
#
# v2.0b:
#   - fixed the bug where you could empty the party... again...
#   - fixed the bug that appeared when you pressed SHIFT
#   - added option to allow an empty party
#   - added "EXP for party members in reserve" option
#   - made the forced_size for party work more convenient
#   - improved coding
#   - slightly decreased lag
#
# v2.1b:
#   - fixed a bug
#   - improved coding
#   - rewritten conditions using classic syntax to avoid RGSS conditioning bug
#   - now can serve as enhancement for CP Debug System
#
# v2.11b:
#   - improved coding and performance
#
# v2.3b:
#   - optional feature to call the Party Switcher during battle
#
# v2.32b:
#   - fixed crash problem with SDK 2.x when using the BATTLE_SWITCH option
#   - fixed SP display glitch when using BARS from Tons of Add-ons
#
# v2.4b:
#   - now you can activate party order change only in the party switcher
#   - add option for automatic party order change only in battle
#
# v2.41b:
#   - fixed problem where you could put together a party where everybody is
#     dead
#
# v2.42b:
#   - added possibility to change the BATTLE_SWITCH setting during the game
#
# v2.43b:
#   - fixed a problem with SDK 2.x
#
#
# How to use:
#
#   To call this script, make a "Call script" command in an event.
#
#   1. Syntax: $scene = Scene_PartySwitcher.new
#      No extra feature will be applied and you can switch the party as you
#      wish.
#
#   2. Syntax: $scene = Scene_PartySwitcher.new(XXX)
#      You can replace XXX for 1 to remove all party members except one (either
#      one, who must be in the party or a random one), or replace XXX with 2,
#      to cause a wipe party. Wiping a party will disable the of the current
#      members and a NEW party of the remaining members must be formed. If you
#      replace it with 3, the current party configuration will be stored for a
#      later fast switch-back. If XXX is 10, all actors will be available for
#      party switching no matter if the are "not_available" or
#      "disabled_for_party". This feature if used by the CP Debug System. No
#      faceset will be used in this case for a more convenient working.
#
#   3. Syntax: $scene = Scene_PartySwitcher.new(XXX, 1)
#      You can use the XXX as described above or just set it to 0 to disable
#      it. Also the "1" in the syntax will reset any disabled_for_party and is
#      made to be used after multi-party use.
#
#   4. Syntax: $scene = Scene_PartySwitcher.new(XXX, YYY, ZZZ)
#      You can replace ZZZ with 1 to replace the party with a stored one AND
#      store the current or replace it with 2 to replace the party with a
#      stored one, but without storing the current. USE THIS ONLY IF YOU ASSUME
#      TO HAVE A STORED PARTY READY! You can simply test if there is a store
#      party by putting this code into the conditional branch script:
#
#      $game_system.stored_party != nil
#
#      This syntax will not open the Party Switcher and it will override the
#      commands XXX and YYY, so you can replace these with any number.
#  
#   5. To activate/deactivate the option of order change only, simply use the
#      event command "Call Script" with following syntax:
#      
#      $game_system.order_only = true/false
#      
#      If the setting is set to true, the switcher will allow only party order
#      change. The same goes for battle change (if you are using the
#      BATTLE_SWITCH option), but the syntax is different:
#      
#      $game_system.battle_order_only = true/false
#      
#      The BATTLE_SWITCH option can be changed during the game by using
#      following syntax:
#      
#      $game_system.battle_switch = true/false
#      
#      This option is intially set to the same setting as BATTLE_SWITCH is.
#      
#   Character faces go into the "Characters" folder and they have the same name
#   as the character spritesets have with _face added
#
#   Example:
#
#     sprite - Marlen.png
#     face   - Marlen_face.png
#
#   Other syntaxes:
#     $game_actors[ID].not_available = true/false
#     $game_actors[ID].disabled_for_party = true/false
#     $game_actors[ID].must_be_in_party = true/false
#     $game_actors[ID].forced_position = nil/0/1/2/...
#   OR
#     $game_party.actors[POS].not_available = true/false
#     $game_party.actors[POS].disabled_for_party = true/false
#     $game_party.actors[POS].must_be_in_party = true/false
#     $game_party.actors[POS].forced_position = nil/0/1/2/...
#
#   ID  - the actor's ID in the database
#   POS - the actor's position in the party (STARTS FROM 0, not 1!)
#
#   not_available
#   - will disable the possibility of an already unlocked character to be in
#     the current party
#
#   disabled_for_party
#   - will cause the character NOT to appear in the party switch screen at all
#
#   must_be_in_party
#   - will cause the character to be automatically moved into the current party
#     and he also cannot be put in the reserve
#
#   forced_position
#   - will enforce the player to be at a specific position in the party, set
#     this value to nil to disable this feature, use it in combination with
#     must_be_in_party and $game_party.forced_size or you might experience
#     bugs,
#
#   $game_party.forced_size = nil/0/1/2/...
#
#   Using this syntax will enforce a specific party size. The EPS won't exit
#   until this size is filled up or there are no more in the reserve. EPS will
#   automatically "correct" this number if there are not enough characters in
#   the reserve to fill up a party of forced_size. Set this value to nil to
#   disable the size requirement. Note that the actor DO NOT HAVE TO be set in
#   normal order without any empty position like in version 1.x.
#
#
# Additional note:
#
#   For your own sake, do not apply the attribute "must_be_in_party" to a
#   character at the same time with "not_available" or "disabled_for_party" as
#   this WILL disrupt your party and party switch system. Use "forced_position"
#   together with "must_be_in_party" to avoid bugs. Be careful when using
#   "forced_position" with "$game_party.forced_size". Add actors at the very
#   end to be sure the player can't put others after them if the "forced_size"
#   is smaller than the maximum party size.
#
#
# If you find any bugs, please report them here:
# http://www.chaosproject.co.nr
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#==============================================================================
# module BlizzCFG
#==============================================================================

module BlizzCFG

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Conficuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 # how many party members do you use
 MAX_PARTY = 4
 # set to true to use facesets instead of spritesets
 FACESETS = false
 # allows a party with 0 members
 ALLOW_EMPTY_PARTY = false
 # allows switching the party in battle
 BATTLE_SWITCH = false
 # name of the call command in the party menu in battle
 SWITCH_COMMAND = 'Switch'
 # gives all other characters EXP (specify in %)
 EXP_RESERVE = 50
 # gives "not available" characters EXP (specify in %)
 EXP_NOT_AVAILABLE = 0
 # gives "disabled for party" characters EXP (specify in %)
 EXP_DISABLED_FOR_PARTY = 0
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Conficuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

end

# recognition variable for plug-ins
$easy_party_switcher = 2.43

#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler

 attr_accessor :must_be_in_party
 attr_accessor :disabled_for_party
 attr_accessor :not_available
 attr_accessor :forced_position
 
 alias setup_eps_later setup
 def setup(actor_id)
   setup_eps_later(actor_id)
   @must_be_in_party = @disabled_for_party = @not_available = false
 end
 
end

#==============================================================================
# Game_System
#==============================================================================

class Game_System

 attr_accessor :stored_party
 attr_accessor :order_only
 attr_accessor :battle_order_only
 attr_accessor :battle_switch
 
 alias init_eps_later initialize
 def initialize
   init_eps_later
   @order_only = @battle_order_only = false
   @battle_switch = BlizzCFG::BATTLE_SWITCH
 end
 
end

#==============================================================================
# Game_Party
#==============================================================================

class Game_Party

 attr_accessor :actors
 attr_accessor :forced_size
 
 def any_forced_position
   return (@actors.any? {|actor| actor != nil && actor.forced_position != nil})
 end
 
end

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base

 alias draw_actor_graphic_eps_later draw_actor_graphic
 def draw_actor_graphic(actor, x, y)
   if actor != nil && actor.character_name != ''
     classes = [Window_Current, Window_Reserve, Window_HelpStatus]
     if BlizzCFG::FACESETS && !$all_available && classes.include?(self.class)
       draw_actor_face_eps(actor, x, y)
     else
       if classes.include?(self.class)
         bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
         x += bitmap.width / 8 + 24
         y += bitmap.height / 4 + 16
       end
       draw_actor_graphic_eps_later(actor, x, y)
     end
   end
 end

 def draw_actor_face_eps(actor, x, y)
   if $tons_version == nil || $tons_version < 3.71 || !FACE_HUE
     hue = 0
   else
     hue = actor.character_hue
   end
   bitmap = RPG::Cache.character("#{actor.character_name}_face", hue)
   src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
   if actor.not_available || actor.must_be_in_party
     self.contents.blt(x, y, bitmap, src_rect, 128)
   else
     self.contents.blt(x, y, bitmap, src_rect)
   end
 end
 
end

#==============================================================================
# Window_BattleResult
#==============================================================================

class Window_BattleResult
 
 attr_reader :exp
 
end

#==============================================================================
# Window_Current
#==============================================================================

class Window_Current < Window_Selectable

 def initialize
   super(0, 0, 240 + 32, (BlizzCFG::MAX_PARTY > 4 ? 480 : BlizzCFG::MAX_PARTY * 120))
   self.contents = Bitmap.new(width - 32, 448 + (BlizzCFG::MAX_PARTY-4) * 120)
   @item_max = BlizzCFG::MAX_PARTY
   if $fontface != nil
     self.contents.font.name = $fontface
     self.contents.font.size = $fontsize
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
     self.contents.font.size = $defaultfontsize
   end
   self.contents.font.size = 24
   refresh
   self.active, self.index, self.z = false, -1, 5000
 end
 
 def refresh
   self.contents.clear
   $game_party.actors.each_index {|i|
       if $game_party.actors[i] != nil
         draw_actor_graphic($game_party.actors[i], 4, i*120+4)
         draw_actor_name($game_party.actors[i], 152, i*120-4)
         draw_actor_level($game_party.actors[i], 88, i*120-4)
         draw_actor_hp($game_party.actors[i], 88, i*120+24)
         draw_actor_sp($game_party.actors[i], 88, i*120+52)
       end}
 end

 def setactor(index_1, index_2)
   $game_party.actors[index_2], $game_party.actors[index_1] =
       $game_party.actors[index_1], $game_party.actors[index_2]
   refresh
 end

 def getactor(index)
   return $game_party.actors[index]
 end
 
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   self.top_row = row if row < self.top_row
   self.top_row = row - (page_row_max - 1) if row > top_row + (page_row_max - 1)
   y = (@index / @column_max) * 120 - self.oy
   self.cursor_rect.set(0, y, self.width - 32, 88)
 end

 def clone_cursor
   row = @index / @column_max
   self.top_row = row if row < self.top_row
   self.top_row = row - (page_row_max - 1) if row > top_row + (page_row_max - 1)
   y = (@index / @column_max) * 120
   src_rect = Rect.new(0, 0, self.width, 88)
   bitmap = Bitmap.new(self.width-32, 88)
   bitmap.fill_rect(0, 0, self.width-32, 88, Color.new(255, 255, 255, 192))
   bitmap.fill_rect(2, 2, self.width-36, 84, Color.new(255, 255, 255, 80))
   self.contents.blt(0, y, bitmap, src_rect, 192)
 end
 
 def top_row
   return self.oy / 116
 end

 def top_row=(row)
   self.oy = (row % row_max) * 120
 end

 def page_row_max
   return (self.height / 120)
 end

end

#==============================================================================
# Window_Reserve
#==============================================================================

class Window_Reserve < Window_Selectable
 
 attr_reader :actors
 
 def initialize(scene)
   super(0, 0, 368, 320)
   setup
   @column_max, rows = 3, @item_max / @column_max
   self.contents = Bitmap.new(width - 32, (rows >= 3 ? rows * 96 : height - 32))
   if $fontface != nil
     self.contents.font.name = $fontface
     self.contents.font.size = $fontsize
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
     self.contents.font.size = $defaultfontsize
   end
   self.contents.font.size = 24
   self.active, self.index, self.z = false, -1, 5000
   refresh
   if scene == Scene_Map && $game_system.order_only ||
       scene == Scene_Battle && $game_system.battle_order_only
     self.opacity = 128
   end
 end
 
 def setup
   @actors = []
   (1...$data_actors.size).each {|i|
       unless $game_party.actors.include?($game_actors[i]) ||
           $game_actors[i].disabled_for_party && !$all_available
         @actors.push($game_actors[i])
       end}
   @item_max = (@actors.size + $game_party.actors.size + 3) / 3 * 3
 end
 
 def refresh
   self.contents.clear
   @actors.each_index {|i| draw_actor_graphic(@actors[i], i%3*112+16, i/3*96+8)}
 end
 
 def getactor(index)
   return @actors[index]
 end
 
 def get_number
   return (@actors.find_all {|actor| actor != nil}).size if $all_available
   return (@actors.find_all {|actor| actor != nil && !actor.not_available}).size
 end
 
 def setactor(index_1, index_2)
   @actors[index_1], @actors[index_2] = @actors[index_2], @actors[index_1]
   refresh
 end

 def setparty(index_1, index_2)
   @actors[index_1], $game_party.actors[index_2] =
       $game_party.actors[index_2], @actors[index_1]
   refresh
 end

 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   self.top_row = row if row < self.top_row
   self.top_row = row - (page_row_max-1) if row > top_row + (page_row_max-1)
   x, y = (@index % @column_max)*112 + 8, (@index / @column_max)*96 - self.oy
   self.cursor_rect.set(x, y, 96, 96)
 end

 def clone_cursor
   row = @index / @column_max
   self.top_row = row if row < self.top_row
   self.top_row = row - (page_row_max - 1) if row > top_row + (page_row_max - 1)
   x, y = (@index % @column_max) * 112 + 8, (@index / @column_max) * 96
   src_rect = Rect.new(0, 0, 96, 96)
   bitmap = Bitmap.new(96, 96)
   bitmap.fill_rect(0, 0, 96, 96, Color.new(255, 255, 255, 192))
   bitmap.fill_rect(2, 2, 92, 92, Color.new(255, 255, 255, 80))
   self.contents.blt(x, y, bitmap, src_rect, 192)
 end
 
 def top_row
   return self.oy / 96
 end

 def top_row=(row)
   row = row % row_max
   self.oy = row * 96
 end

 def page_row_max
   return (self.height - 32) / 96
 end

end

#==============================================================================
# Window_HelpStatus
#==============================================================================

class Window_HelpStatus < Window_Base

 def initialize(gotactor, scene)
   super(0, 0, 400 - 32, 160)
   self.contents = Bitmap.new(width - 32, height - 32)
   if $fontface != nil
     self.contents.font.name = $fontface
     self.contents.font.size = $fontsize
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
     self.contents.font.size = $defaultfontsize
   end
   self.contents.font.size = 24
   refresh(gotactor)
   self.active, self.z = false, 5000
   if scene == Scene_Map && $game_system.order_only ||
       scene == Scene_Battle && $game_system.battle_order_only
     self.opacity = 128
   end
 end
 
 def refresh(actor)
   self.contents.clear
   if actor != nil
     self.contents.font.color = normal_color
     if actor.not_available && !$all_available
       self.contents.draw_text(8, 0, 160, 32, 'not available', 0)
     end
     draw_actor_graphic(actor, 0, 40)
     draw_actor_name(actor, 160, 32)
     draw_actor_level(actor, 96, 32)
     draw_actor_hp(actor, 96, 64)
     draw_actor_sp(actor, 96, 96)
   end
 end

end

#==============================================================================
# Window_Warning
#==============================================================================

class Window_Warning < Window_Base

 def initialize(mode, members)
   super(0, 0, 320, 96)
   self.contents = Bitmap.new(width - 32, height - 32)
   if $fontface != nil
     self.contents.font.name = $fontface
     self.contents.font.size = $fontsize
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
     self.contents.font.size = $defaultfontsize
   end
   self.contents.font.size = 24
   self.x, self.y, self.z = 320 - width/2, 240 - height/2, 9999
   self.contents.font.color = normal_color
   case mode
   when 0
     self.contents.draw_text(0, 0, 288, 32, 'You need a party', 1)
     num = [$game_party.forced_size, members + $game_party.actors.nitems].min
     self.contents.draw_text(0, 32, 288, 32, "of #{num} members!", 1)
   when 1
     self.contents.draw_text(0, 0, 288, 32, 'You cannot remove', 1)
     self.contents.draw_text(0, 32, 288, 32, 'the last party member!', 1)
   when 2
     self.contents.draw_text(0, 0, 288, 32, 'At least one member', 1)
     self.contents.draw_text(0, 32, 288, 32, 'has to be alive!', 1)
   end
 end

end

#==============================================================================
# Window_PartyCommand
#==============================================================================

class Window_PartyCommand
 
 alias init_eps_later initialize
 def initialize
   if $game_system.battle_switch
     if defined?(SDK) && self.is_a?(Window_HorizCommand)
       s1 = SDK::Scene_Commands::Scene_Battle::Fight
       s2 = SDK::Scene_Commands::Scene_Battle::Escape
       s3 = BlizzCFG::SWITCH_COMMAND
       super(640, [s1, s2, s3])
       disable_item(1) unless $game_temp.battle_can_escape
     else
       super(0, 0, 640, 64)
       self.contents = Bitmap.new(width - 32, height - 32)
       @commands = ['Fight', 'Escape', BlizzCFG::SWITCH_COMMAND]
       @item_max = @column_max = 3
       draw_item(0, normal_color)
       draw_item(1, $game_temp.battle_can_escape ? normal_color : disabled_color)
       draw_item(2, normal_color)
     end
     self.active, self.visible, self.index = false, false, 0
     self.back_opacity = 160
   else
     init_eps_later
   end
 end
 
 alias draw_item_eps_later draw_item
 def draw_item(index, color)
   if $game_system.battle_switch
     self.contents.font.color = color
     rect = Rect.new(80 + index * 160 + 4, 0, 128 - 10, 32)
     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
     self.contents.draw_text(rect, @commands[index], 1)
   else
     draw_item_eps_later(index, color)
   end
 end
 
 alias update_cursor_rect_eps_later update_cursor_rect
 def update_cursor_rect
   if $game_system.battle_switch
     self.cursor_rect.set(80 + index * 160, 0, 128, 32)
   else
     update_cursor_rect_eps_later
   end
 end
 
 def command(index = self.index)
   return @commands[index]
 end
 
end

#==============================================================================
# Scene_PartySwitcher
#==============================================================================

class Scene_PartySwitcher
 
 def initialize(wipe_party = 0, reset = 0, store = 0)
   @wipe_party, @store, @reset = store, reset, wipe_party
   @current_window_temp = @reserve_window_temp = 0
   @scene_flag, @temp_window = false, ''
   @scene = $scene.class
 end
 
 def main
   if @store != 0
     swap_parties
     $scene = Scene_Map.new
     $game_player.refresh
     return
   end
   case @wipe_party
   when 1 then setup_forced_party
   when 2 then wipe_party
   when 3
     $game_system.stored_party = $game_party.actors
     wipe_party
   when 10 then $all_available = true
   end
   if @reset == 1
     (1...$data_actors.size).each {|i| $game_actors[i].not_available = false}
   end
   @current_window = Window_Current.new
   @current_window.index, @current_window.active = 0, true
   @reserve_window = Window_Reserve.new(@scene)
   @reserve_window.x, @reserve_window.y = 272, 160
   @help_window = Window_HelpStatus.new(@reserve_window.getactor(0), @scene)
   @help_window.x = 240 + 32
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     break if $scene != self
   end
   Graphics.freeze
   [@current_window, @reserve_window, @help_window].each {|win| win.dispose}
   $game_party.actors.compact!
   $game_player.refresh
   $all_available = nil
 end
 
 def update
   check = @reserve_window.index
   if @reserve_window.active
     reserve_update
     @reserve_window.update
   end
   if check != @reserve_window.index
     if @reserve_window.active
       actor = @reserve_window.getactor(@reserve_window.index)
     elsif @current_window.active
       actor = @reserve_window.getactor(@reserve_window_temp)
     end
     @help_window.refresh(actor) if ['', 'Current'].include?(@temp_window)
   end
   current_update if @current_window.active
   if Input.trigger?(Input::B)
     if @scene_flag
       $game_system.se_play($data_system.cancel_se)
       @scene_flag, @temp_window = false, ''
       if @reserve_window.active
         actor = @reserve_window.getactor(@reserve_window.index)
       elsif @current_window.active
         actor = @reserve_window.getactor(@reserve_window_temp)
       end
       @help_window.refresh(actor) if ['', 'Current'].include?(@temp_window)
       [@current_window, @reserve_window].each {|win| win.refresh}
       return
     end
     if $game_party.forced_size != nil &&
         ($game_party.forced_size < $game_party.actors.nitems ||
         ($game_party.forced_size > $game_party.actors.nitems &&
         @reserve_window.get_number != 0))
       $game_system.se_play($data_system.buzzer_se)
       warning(1)
       return
     end
     if $game_party.actors.all? {|actor| actor == nil ||
           actor != nil && actor.dead?}
       $game_system.se_play($data_system.buzzer_se)
       warning(2)
       return
     end
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
   elsif Input.trigger?(Input::A)
     if $game_party.any_forced_position
       $game_system.se_play($data_system.buzzer_se)
     else
       $game_system.se_play($data_system.decision_se)
       $game_party.actors.compact!
       @current_window.refresh
     end
   end
 end
   
 def current_update
   @current_window.update
   if Input.trigger?(Input::C)
     actor = @current_window.getactor(@current_window.index)
     if actor != nil && actor.forced_position != nil
       $game_system.se_play($data_system.buzzer_se)
     else
       if @scene_flag
         switch_members
       else
         $game_system.se_play($data_system.decision_se)
         @scene_flag, @temp_window = true, 'Current'
         @temp_actor_index = @current_window.index
         @current_window.clone_cursor
       end
     end
   elsif Input.trigger?(Input::RIGHT)
     if @scene == Scene_Map && $game_system.order_only ||
         @scene == Scene_Battle && $game_system.battle_order_only
       $game_system.se_play($data_system.buzzer_se)
     else
       $game_system.se_play($data_system.cursor_se)
       @current_window.active = false
       @reserve_window.active = true
       @current_window_temp = @current_window.index
       actor = @reserve_window.getactor(@reserve_window_temp)
       @current_window.index = -1
       @reserve_window.index = @reserve_window_temp
       @help_window.refresh(actor) unless @scene_flag
     end
   end
 end
 
 def reserve_update
   if Input.trigger?(Input::C)
     if @scene_flag
       switch_members
     else
       $game_system.se_play($data_system.decision_se)
       @scene_flag, @temp_window = true, 'Reserve'
       @temp_actor_index = @reserve_window.index
       @reserve_window.clone_cursor
     end
   elsif @reserve_window.index % 3 == 0 && Input.repeat?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     @reserve_window.active = false
     @current_window.active = true
     @reserve_window_temp = @reserve_window.index
     @reserve_window.index = -1
     @current_window.index = @current_window_temp
   end
 end
 
 def switch_members
   if @temp_window == 'Reserve' && @reserve_window.active
     @reserve_window.setactor(@temp_actor_index, @reserve_window.index)
     actor = @reserve_window.getactor(@reserve_window.index)
     @help_window.refresh(actor)
   end
   if @temp_window == 'Current' && @current_window.active
     @current_window.setactor(@temp_actor_index, @current_window.index)
   end
   if @temp_window == 'Reserve' && @current_window.active
     actor1 = @current_window.getactor(@current_window.index)
     actor2 = @reserve_window.getactor(@temp_actor_index)
     if call_warning?(@current_window.index, actor2)
       if actor1 != nil && actor1.must_be_in_party
         $game_system.se_play($data_system.buzzer_se)
         @scene_flag, @temp_window = false, ''
         actor = @reserve_window.getactor(@reserve_window_temp)
         [@current_window, @reserve_window].each {|win| win.refresh}
         @help_window.refresh(actor)
         return
       end
       if actor2 != nil && actor2.not_available && !$all_available
         $game_system.se_play($data_system.buzzer_se)
         @scene_flag, @temp_window = false, ''
         actor = @reserve_window.getactor(@reserve_window_temp)
         [@current_window, @reserve_window].each {|win| win.refresh}
         @help_window.refresh(actor)
         return
       end
       @reserve_window.setparty(@temp_actor_index, @current_window.index)
       @current_window.refresh
       actor = @reserve_window.getactor(@reserve_window_temp)
       @help_window.refresh(actor)
     else
       warning(0)
     end
   end
   if @temp_window == 'Current' && @reserve_window.active
     actor1 = @current_window.getactor(@temp_actor_index)
     actor2 = @reserve_window.getactor(@reserve_window.index)
     if call_warning?(@temp_actor_index, actor2)
       if actor1 != nil && actor1.must_be_in_party
         $game_system.se_play($data_system.buzzer_se)
         @scene_flag, @temp_window = false, ''
         actor = @reserve_window.getactor(@reserve_window.index)
         [@current_window, @reserve_window].each {|win| win.refresh}
         @help_window.refresh(actor)
         return
       end
       if actor2 != nil && actor2.not_available && !$all_available
         $game_system.se_play($data_system.buzzer_se)
         @scene_flag, @temp_window = false, ''
         actor = @reserve_window.getactor(@reserve_window.index)
         [@current_window, @reserve_window].each {|win| win.refresh}
         @help_window.refresh(actor)
         return
       end
       @reserve_window.setparty(@reserve_window.index, @temp_actor_index)
       @current_window.refresh
       actor = @reserve_window.getactor(@reserve_window.index)
       @help_window.refresh(actor)
     else
       warning(0)
     end
   end
   $game_system.se_play($data_system.decision_se)
   @scene_flag, @temp_window = false, ''
 end
   
 def wipe_party
   $game_party.actors.each {|actor| actor.not_available = true if actor != nil}
   setup_forced_party(true)
   if $game_party.actors == []
     (1...$data_actors.size).each {|i|
         unless $game_actors[i].not_available ||
             $game_actors[i].disabled_for_party
           $game_party.actors.push($game_actors[i])
           return
         end}
   end
 end
 
 def setup_forced_party(flag = false)
   $game_party.actors, party = [], []
   (1...$data_actors.size).each {|i|
       if $game_actors[i] != nil && $game_actors[i].must_be_in_party &&
            (!$game_actors[i].disabled_for_party || flag) &&
            !$game_actors[i].not_available
         party.push($game_actors[i])
       end}
   party.clone.each {|actor|
       if actor.forced_position != nil
         $game_party.actors[actor.forced_position] = actor
         party.delete(actor)
       end}
   $game_party.actors.each_index {|i|
       $game_party.actors[i] = party.shift if $game_party.actors[i] == nil}
   $game_party.actors += party.compact
 end  
 
 def swap_parties
   $game_party.actors.compact!
   temp_actors = $game_party.actors
   temp_actors.each {|actor| actor.not_available = true}
   $game_system.stored_party.compact!
   $game_system.stored_party.each {|actor| actor.not_available = false}
   $game_party.actors = $game_system.stored_party
   $game_system.stored_party = (@store == 1 ? temp_actors : nil)
 end
 
 def call_warning?(index, actor2)
   return (BlizzCFG::ALLOW_EMPTY_PARTY || $game_party.actors[index] == nil ||
       actor2 != nil || $game_party.actors.nitems > 1)
 end
 
 def warning(type)
   $game_system.se_play($data_system.buzzer_se)
   @warning_window = Window_Warning.new(type, @reserve_window.get_number)
   loop do
     Graphics.update
     Input.update
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se) if type > 0
       [@current_window, @reserve_window].each {|win| win.refresh}
       @warning_window.dispose
       @warning_window = nil
       break
     end
   end
 end
 
end

#==============================================================================
# Scene_Battle
#==============================================================================
 
class Scene_Battle
 
 alias update_phase2_eps_later update_phase2
 def update_phase2
   update_phase2_eps_later
   if Input.trigger?(Input::C) && @party_command_window.index == 2
     $game_system.se_play($data_system.decision_se)
     @spriteset.dispose
     $scene = Scene_PartySwitcher.new
     $scene.main
     $scene = self
     @spriteset = Spriteset_Battle.new
     15.times {@spriteset.update}
     @status_window.refresh
     Graphics.transition(0)
   end
 end
 
 alias start_phase5_eps_later start_phase5
 def start_phase5
   start_phase5_eps_later
   (1...$data_actors.size).each {|i|
       unless $game_party.actors.include?($game_actors[i])
         if $game_actors[i].not_available
           $game_actors[i].exp += @result_window.exp * BlizzCFG::EXP_NOT_AVAILABLE/100
         elsif $game_actors[i].disabled_for_party
           $game_actors[i].exp += @result_window.exp * BlizzCFG::EXP_DISABLED_FOR_PARTY/100
         else
           $game_actors[i].exp += @result_window.exp * BlizzCFG::EXP_RESERVE/100
         end
       end}
 end
 
end

Spoiler: ShowHide

Holyrapid

If the EPS is compatible with XAS use it. If not, either change XAS to BABS or, wait for someone else to help you better.

Aqua

July 05, 2009, 01:53:48 pm #2 Last Edit: July 05, 2009, 01:55:49 pm by Aqua
Depending on how many actors you have in the party...
you can easily event this XD


Or just do use this :P
http://forum.chaos-project.com/index.php?topic=164.0
5. Hero switch

C.C. rOyAl

thank you. now there will be less memory in my project :D
Spoiler: ShowHide

Jackolas

July 05, 2009, 09:12:37 pm #4 Last Edit: July 05, 2009, 09:15:57 pm by Jackolas
if you want to add the easy party switcher to your menu you need to add
$scene = Scene_PartySwitcher.new


you need to open your menu script and first look for something like this:
    @background = 'CMSCommand'
   commands = [$data_system.words.item, 'Equipment', $data_system.words.equip,
       $data_system.words.skill, 'Status', 'your extra menu', 'Options', 'Save', 'Load', 'Exit']
   super(180, commands)

there you want to add the new menu name to 'your extra menu'.

now further in the script you need to look for something like this:
      when 3  # status
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       # Make status window active
       @command_window.active = false
       @status_window.active = true
       @status_window.index = 0
     when 4  # Your menu option
       # Play decision SE
       $game_system.se_play($data_system.decision_se)
       your menu thingy code
     when 5  # options
       # Play decision SE


and add the "$scene = Scene_PartySwitcher.new" to 'your menu thingy code' (third line from bottom)

ofc you need to make sure the numbers etc are correct.
if you think this is to much for you, you can also give your menu script and i will put it in it for you.

C.C. rOyAl

July 05, 2009, 10:05:33 pm #5 Last Edit: July 05, 2009, 10:24:39 pm by Aqua
ya im not very good with scripts as i would like to be and thanks for helpin. im using Rune's CMS 5
Spoiler: ShowHide
#======================#
#     > CMS #5         #
#      > By Rune       #
#       > Ver. 1       #
#======================#

#---------------------Window_Base---------------------
#---------------------Battler display---------------------

class Window_Base
 def draw_actor_battler(actor, x, y, opacity)
   bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
   cw = bitmap.width
   ch = bitmap.height
   src_rect = Rect.new(0, 0, cw, ch)
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
 end

#---------------------Name + Class display---------------------

 def draw_actor_name_menu(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 160, 32, actor.name, 1)
 end  
 def draw_actor_class(actor, x, y)
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, 160, 32, actor.class_name, 1)
 end

#---------------------Level display---------------------

 def draw_actor_level(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 32, 32, "Lv:")
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 24, y, 24, 32, actor.level.to_s, 2)
 end

#---------------------EXP display---------------------

 def draw_actor_exp(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 608 / 4, 32, "EXP")
   self.contents.font.color = normal_color
   self.contents.draw_text(x - 16, y + 16, 84, 32, actor.exp_s, 2)
   self.contents.draw_text(x + 68, y + 16, 12, 32, "/", 1)
   self.contents.draw_text(x + 80, y + 16, 84, 32, actor.next_exp_s)
 end

#---------------------Equipment display---------------------

 def draw_item_name_menu(item, x, y)
   if item == nil
     return
   end
   bitmap = RPG::Cache.icon(item.icon_name)
   self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 28, y, 608 / 4 - 28, 32, item.name)
 end
end


#---------------------Window_MenuStatus---------------------

class Window_MenuStatus < Window_Selectable
 def initialize
   super(0, 0, 640, 480)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
   self.active = false
   self.index = -1
 end
 def refresh
   self.contents.clear
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     x = i * 608 / 4
     y = 0
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x + 12, y + 64)
     draw_actor_battler(actor, x + 75, y + 256, 160)
     self.contents.font.size = 28
     self.contents.font.name = "Monotype Corsiva"
     draw_actor_name_menu(actor, x - 10, y)
     self.contents.font.size = 24
     draw_actor_class(actor, x - 10, y + 32)
     draw_actor_level(actor, x + 2, y + 64)
     draw_actor_state(actor, x + 50, y + 64)
     draw_actor_hp(actor, x + 2, y + 208)
     draw_actor_sp(actor, x + 2, y + 224)
     draw_actor_exp(actor, x + 2, y + 240)
     self.contents.draw_text(0, 270, 608, 32, "=========================================================================================================================")
     draw_item_name_menu($data_weapons[actor.weapon_id], x + 2, y + 288)
     draw_item_name_menu($data_armors[actor.armor1_id], x + 2, y + 320)
     draw_item_name_menu($data_armors[actor.armor2_id], x + 2, y + 352)
     draw_item_name_menu($data_armors[actor.armor3_id], x + 2, y + 384)
     draw_item_name_menu($data_armors[actor.armor4_id], x + 2, y + 416)
   end
 end
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
   else
     self.cursor_rect.set(@index * 608 / 4, 0, 608 / 4, self.height - 32)
   end
   if Input.repeat?(Input::RIGHT)
     if (@column_max == 1 and Input.trigger?(Input::RIGHT)) or
         @index < @item_max - @column_max
       $game_system.se_play($data_system.cursor_se)
       @index = (@index + @column_max) % @item_max
     end
   end
   if Input.repeat?(Input::LEFT)
     if (@column_max == 1 and Input.trigger?(Input::LEFT)) or
         @index >= @column_max
       $game_system.se_play($data_system.cursor_se)
       @index = (@index - @column_max + @item_max) % @item_max
     end
   end
 end
end


#---------------------Window_Gold---------------------

class Window_Gold < Window_Base
 def initialize
   super(0, 0, 160, 96)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.color = normal_color
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.draw_text(0, 32, 128, 32, $game_party.gold.to_s, 2)
   self.contents.font.color = system_color
   self.contents.draw_text(4, 0, 128, 32, $data_system.words.gold)
 end
end


#---------------------Window_PlayTime---------------------

class Window_PlayTime
 def refresh
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.draw_text(4, 0, 120, 32, "Play Time")
   @total_sec = Graphics.frame_count / Graphics.frame_rate
   hour = @total_sec / 60 / 60
   min = @total_sec / 60 % 60
   sec = @total_sec % 60
   text = sprintf("%02d:%02d:%02d", hour, min, sec)
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 32, 120, 32, text, 2)
 end
end


#---------------------Window_Command---------------------

class Window_Command
 def refresh
   self.contents.clear
   for i in 0...@item_max
     self.contents.font.name = "Monotype Corsiva"
     self.contents.font.size = 24
     draw_item(i, normal_color)
   end
 end
end


#---------------------Window_Location---------------------

$data_mapinfos = load_data('Data/MapInfos.rxdata')

class Window_Location < Window_Base
 def initialize
   super(0, 0, 320, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, 80, 32, "Location:")
   self.contents.font.color = normal_color
   name = $data_mapinfos[$game_map.map_id].name  
   self.contents.draw_text(96, 0, 192, 32, name)
 end
end

#---------------------Window_GameName---------------------

class Window_GameName < Window_Base
 def initialize
   super(0, 0, 320, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, 288, 32, "Insert Name Of Game", 1)
 end
end


#---------------------Scene_Menu---------------------

class Scene_Menu
 def initialize(menu_index = 0)
   @menu_index = menu_index
 end
 def main
   s1 = $data_system.words.item
   s2 = $data_system.words.skill
   s3 = $data_system.words.equip
   s4 = "Status"
   s5 = "Save Game"
   s6 = "End Game"
   @status_window = Window_MenuStatus.new
   @status_window.x = 0
   @status_window.y = 0
   @status_window.contents_opacity = 44
   @playtime_window = Window_PlayTime.new
   @playtime_window.x = 160
   @playtime_window.y = 320
   @playtime_window.visible = true
   @gold_window = Window_Gold.new
   @gold_window.x = 320
   @gold_window.y = 320
   @gold_window.visible = true
   @loc_window = Window_Location.new
   @loc_window.x = 0
   @loc_window.y = 416
   @loc_window.visible = true
   @gn_window = Window_GameName.new
   @gn_window.x = 320
   @gn_window.y = 416
   @gn_window.visible = true
   @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
   @command_window.index = @menu_index
   @command_window.x = 240
   @command_window.y = 128
   @command_window.height = 32 * 6 + 1
   @command_window.visible = true
   if $game_party.actors.size == 0
     @command_window.disable_item(0)
     @command_window.disable_item(1)
     @command_window.disable_item(2)
     @command_window.disable_item(3)
   end
   if $game_system.save_disabled
     @command_window.disable_item(4)
   end
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @command_window.dispose
   @loc_window.dispose
   @gn_window.dispose
   @playtime_window.dispose
   @gold_window.dispose
   @status_window.dispose
 end
 def update
   @command_window.update
   @loc_window.update
   @gn_window.update
   @playtime_window.update
   @gold_window.update
   @status_window.update
   if @command_window.active
     update_command
     return
   end
   if @status_window.active
     update_status
     return
   end
 end
 def update_command
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
     return
   end
   if Input.trigger?(Input::C)
     if $game_party.actors.size == 0 and @command_window.index < 4
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     case @command_window.index
     when 0
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Item.new
     when 1
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @command_window.visible = false
       @gold_window.visible = false
       @playtime_window.visible = false
       @loc_window.visible = false
       @gn_window.visible = false
       @status_window.contents_opacity = 256
       @status_window.active = true
       @status_window.index = 0
     when 2
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @command_window.visible = false
       @gold_window.visible = false
       @playtime_window.visible = false
       @loc_window.visible = false
       @gn_window.visible = false
       @status_window.contents_opacity = 256
       @status_window.active = true
       @status_window.index = 0
     when 3
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @command_window.visible = false
       @gold_window.visible = false
       @playtime_window.visible = false
       @loc_window.visible = false
       @gn_window.visible = false
       @status_window.contents_opacity = 256
       @status_window.active = true
       @status_window.index = 0
     when 4
       if $game_system.save_disabled
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Save.new
     when 5
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_End.new
     end
     return
   end
 end
 def update_status
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @command_window.active = true
     @command_window.visible = true
     @gold_window.visible = true
     @playtime_window.visible = true
     @loc_window.visible = true
     @gn_window.visible = true
     @status_window.contents_opacity = 64
     @status_window.active = false
     @status_window.index = -1
     return
   end
   if Input.trigger?(Input::C)
     case @command_window.index
     when 1
       if $game_party.actors[@status_window.index].restriction >= 2
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Skill.new(@status_window.index)
     when 2
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Equip.new(@status_window.index)
     when 3
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Status.new(@status_window.index)
     end
     return
   end
 end
end



Aqua Edit:
Added code tags
Spoiler: ShowHide

Jackolas

July 06, 2009, 09:06:16 am #6 Last Edit: July 06, 2009, 09:15:39 am by Jackolas
Spoiler: ShowHide
#======================#
#     > CMS #5         #
#      > By Rune       #
#       > Ver. 1       #
#======================#

#---------------------Window_Base---------------------
#---------------------Battler display---------------------

class Window_Base
 def draw_actor_battler(actor, x, y, opacity)
   bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
   cw = bitmap.width
   ch = bitmap.height
   src_rect = Rect.new(0, 0, cw, ch)
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
 end

#---------------------Name + Class display---------------------

 def draw_actor_name_menu(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 160, 32, actor.name, 1)
 end  
 def draw_actor_class(actor, x, y)
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, 160, 32, actor.class_name, 1)
 end

#---------------------Level display---------------------

 def draw_actor_level(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 32, 32, "Lv:")
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 24, y, 24, 32, actor.level.to_s, 2)
 end

#---------------------EXP display---------------------

 def draw_actor_exp(actor, x, y)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 608 / 4, 32, "EXP")
   self.contents.font.color = normal_color
   self.contents.draw_text(x - 16, y + 16, 84, 32, actor.exp_s, 2)
   self.contents.draw_text(x + 68, y + 16, 12, 32, "/", 1)
   self.contents.draw_text(x + 80, y + 16, 84, 32, actor.next_exp_s)
 end

#---------------------Equipment display---------------------

 def draw_item_name_menu(item, x, y)
   if item == nil
     return
   end
   bitmap = RPG::Cache.icon(item.icon_name)
   self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 28, y, 608 / 4 - 28, 32, item.name)
 end
end


#---------------------Window_MenuStatus---------------------

class Window_MenuStatus < Window_Selectable
 def initialize
   super(0, 0, 640, 480)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
   self.active = false
   self.index = -1
 end
 def refresh
   self.contents.clear
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     x = i * 608 / 4
     y = 0
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x + 12, y + 64)
     draw_actor_battler(actor, x + 75, y + 256, 160)
     self.contents.font.size = 28
     self.contents.font.name = "Monotype Corsiva"
     draw_actor_name_menu(actor, x - 10, y)
     self.contents.font.size = 24
     draw_actor_class(actor, x - 10, y + 32)
     draw_actor_level(actor, x + 2, y + 64)
     draw_actor_state(actor, x + 50, y + 64)
     draw_actor_hp(actor, x + 2, y + 208)
     draw_actor_sp(actor, x + 2, y + 224)
     draw_actor_exp(actor, x + 2, y + 240)
     self.contents.draw_text(0, 270, 608, 32, "=========================================================================================================================")
     draw_item_name_menu($data_weapons[actor.weapon_id], x + 2, y + 288)
     draw_item_name_menu($data_armors[actor.armor1_id], x + 2, y + 320)
     draw_item_name_menu($data_armors[actor.armor2_id], x + 2, y + 352)
     draw_item_name_menu($data_armors[actor.armor3_id], x + 2, y + 384)
     draw_item_name_menu($data_armors[actor.armor4_id], x + 2, y + 416)
   end
 end
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
   else
     self.cursor_rect.set(@index * 608 / 4, 0, 608 / 4, self.height - 32)
   end
   if Input.repeat?(Input::RIGHT)
     if (@column_max == 1 and Input.trigger?(Input::RIGHT)) or
         @index < @item_max - @column_max
       $game_system.se_play($data_system.cursor_se)
       @index = (@index + @column_max) % @item_max
     end
   end
   if Input.repeat?(Input::LEFT)
     if (@column_max == 1 and Input.trigger?(Input::LEFT)) or
         @index >= @column_max
       $game_system.se_play($data_system.cursor_se)
       @index = (@index - @column_max + @item_max) % @item_max
     end
   end
 end
end


#---------------------Window_Gold---------------------

class Window_Gold < Window_Base
 def initialize
   super(0, 0, 160, 96)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.color = normal_color
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.draw_text(0, 32, 128, 32, $game_party.gold.to_s, 2)
   self.contents.font.color = system_color
   self.contents.draw_text(4, 0, 128, 32, $data_system.words.gold)
 end
end


#---------------------Window_PlayTime---------------------

class Window_PlayTime
 def refresh
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.draw_text(4, 0, 120, 32, "Play Time")
   @total_sec = Graphics.frame_count / Graphics.frame_rate
   hour = @total_sec / 60 / 60
   min = @total_sec / 60 % 60
   sec = @total_sec % 60
   text = sprintf("%02d:%02d:%02d", hour, min, sec)
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 32, 120, 32, text, 2)
 end
end


#---------------------Window_Command---------------------

class Window_Command
 def refresh
   self.contents.clear
   for i in 0...@item_max
     self.contents.font.name = "Monotype Corsiva"
     self.contents.font.size = 24
     draw_item(i, normal_color)
   end
 end
end


#---------------------Window_Location---------------------

$data_mapinfos = load_data('Data/MapInfos.rxdata')

class Window_Location < Window_Base
 def initialize
   super(0, 0, 320, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, 80, 32, "Location:")
   self.contents.font.color = normal_color
   name = $data_mapinfos[$game_map.map_id].name  
   self.contents.draw_text(96, 0, 192, 32, name)
 end
end

#---------------------Window_GameName---------------------

class Window_GameName < Window_Base
 def initialize
   super(0, 0, 320, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.name = "Monotype Corsiva"
   self.contents.font.size = 24
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, 288, 32, "Insert Name Of Game", 1)
 end
end


#---------------------Scene_Menu---------------------

class Scene_Menu
 def initialize(menu_index = 0)
   @menu_index = menu_index
 end
 def main
   s1 = $data_system.words.item
   s2 = $data_system.words.skill
   s3 = $data_system.words.equip
   s4 = "Status"
   s5 = "Party Switcher"
   s6 = "Save Game"
   s7 = "End Game"
   @status_window = Window_MenuStatus.new
   @status_window.x = 0
   @status_window.y = 0
   @status_window.contents_opacity = 44
   @playtime_window = Window_PlayTime.new
   @playtime_window.x = 160
   @playtime_window.y = 320
   @playtime_window.visible = true
   @gold_window = Window_Gold.new
   @gold_window.x = 320
   @gold_window.y = 320
   @gold_window.visible = true
   @loc_window = Window_Location.new
   @loc_window.x = 0
   @loc_window.y = 416
   @loc_window.visible = true
   @gn_window = Window_GameName.new
   @gn_window.x = 320
   @gn_window.y = 416
   @gn_window.visible = true
   @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
   @command_window.index = @menu_index
   @command_window.x = 240
   @command_window.y = 128
   @command_window.height = 32 * 6 + 1
   @command_window.visible = true
   if $game_party.actors.size == 0
     @command_window.disable_item(0)
     @command_window.disable_item(1)
     @command_window.disable_item(2)
     @command_window.disable_item(3)
   end
   if $game_system.save_disabled
     @command_window.disable_item(5)
   end
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @command_window.dispose
   @loc_window.dispose
   @gn_window.dispose
   @playtime_window.dispose
   @gold_window.dispose
   @status_window.dispose
 end
 def update
   @command_window.update
   @loc_window.update
   @gn_window.update
   @playtime_window.update
   @gold_window.update
   @status_window.update
   if @command_window.active
     update_command
     return
   end
   if @status_window.active
     update_status
     return
   end
 end
 def update_command
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
     return
   end
   if Input.trigger?(Input::C)
     if $game_party.actors.size == 0 and @command_window.index < 4
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     case @command_window.index
     when 0
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Item.new
     when 1
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @command_window.visible = false
       @gold_window.visible = false
       @playtime_window.visible = false
       @loc_window.visible = false
       @gn_window.visible = false
       @status_window.contents_opacity = 256
       @status_window.active = true
       @status_window.index = 0
     when 2
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @command_window.visible = false
       @gold_window.visible = false
       @playtime_window.visible = false
       @loc_window.visible = false
       @gn_window.visible = false
       @status_window.contents_opacity = 256
       @status_window.active = true
       @status_window.index = 0
     when 3
       $game_system.se_play($data_system.decision_se)
       @command_window.active = false
       @command_window.visible = false
       @gold_window.visible = false
       @playtime_window.visible = false
       @loc_window.visible = false
       @gn_window.visible = false
       @status_window.contents_opacity = 256
       @status_window.active = true
       @status_window.index = 0
     when 4 #open blizz party switcher
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_PartySwitcher.new
     when 5
       if $game_system.save_disabled
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Save.new
     when 6
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_End.new
     end
     return
   end
 end
 def update_status
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @command_window.active = true
     @command_window.visible = true
     @gold_window.visible = true
     @playtime_window.visible = true
     @loc_window.visible = true
     @gn_window.visible = true
     @status_window.contents_opacity = 64
     @status_window.active = false
     @status_window.index = -1
     return
   end
   if Input.trigger?(Input::C)
     case @command_window.index
     when 1
       if $game_party.actors[@status_window.index].restriction >= 2
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Skill.new(@status_window.index)
     when 2
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Equip.new(@status_window.index)
     when 3
       $game_system.se_play($data_system.decision_se)
       $scene = Scene_Status.new(@status_window.index)
     end
     return
   end
 end
end

there you go

to give you an idea how i did it.
I added to line 230
    s5 = "Party Switcher"

ofc I changed the numbers of the 3 lines behind it also. (added s5 and increased the other numbers by 1)

than I changed line 253 so it will display correct in the menu
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])

also changed the numbers to be correct. (added number s7)

also i change the line 266
      @command_window.disable_item(5)

this will make sure that the disable save will still work (changed from 4 to 5)

and as last i added the menu option to line 349
      when 4 #open blizz party switcher
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_PartySwitcher.new

and this will add the option.
also I changed the the numbers to correct the menu (remember these are 1 lower than the s line)

C.C. rOyAl

Spoiler: ShowHide

Jackolas

make sure you change to topic title if it is fixed