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.

[VX] Large Party Script

Status
Not open for further replies.
This was edited by DerVVulfman to work on RPG Maker VX I only made the original for XP so you should credit DerVVulfman for this. You can credit me if you want but I don't mind if you don't.

http://i4.photobucket.com/albums/y139/Fomar0153/VX/VX006.png[/img]
http://i4.photobucket.com/albums/y139/F ... /VX007.png[/img]
http://i4.photobucket.com/albums/y139/F ... /VX008.png[/img]
It goes back down to four lines during the main battle phase so animations aren't obscured or anything.

Code:
#===============================================================================
# ** Large Party System                                                 
#------------------------------------------------------------------------------
#    by DerVVulfman (original by Fomar0153)
#    version 1.0
#    03-01-2008
#    RGSS2
#-------------------------------------------------------------------------------
#  This system allows you to break the 4 team barrier setup by RPGMaker VX.  By
#  using this code, you can have 5, 6 or even 10 member parties.
#
#  This page of the code can enhance your project  to allow parties of over four
#  members.   The controls are  very simple.   To establish  a default number of
#  party members,  edit the PARTY SIZE value in the configuration section below.
#  If you wish to alter the party size limit while the game is running,  call on
#  the $game_party.party_size value  from a map event and change it there.  But,
#  remember that you'll need to run '$game_party.refresh' for the change to take
#  effect.
#------------------------------------------------------------------------------
#
#  EDITS AND MODIFICATIONS:
#  
#  This system Aliases the following methods:
#  * initialize                     (Game_Party)
#  * refresh                        (Window_MenuStatus)
#  * update_info_viewport           (Scene_Battle)
#
#  This system redefines the following methods:
#  * add_actor                      (Game_Party)
#  * initialize                     (Window_MenuStatus)
#  * update_cursor                  (Window_MenuStatus)
#  * initialize                     (Window_BattleStatus)
#  * create_info_viewport           (Scene_Battle)
#
#===============================================================================


PARTY_SIZE = 6


#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold 
#  and items. Refer to "$game_party" for the instance of this class.
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :party_size               # Current size of the party
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias fomar_init initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    fomar_init
    @party_size = PARTY_SIZE
  end
  #--------------------------------------------------------------------------
  # * Add an Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    if @actors.size < $game_party.party_size and not @actors.include?(actor_id)
      @actors.push(actor_id)
      $game_player.refresh
    end
  end
  #--------------------------------------------------------------------------
  # * Adjust the maximum party value (permits addition & keeps within range)
  #--------------------------------------------------------------------------
  def party_size=(party_size)
    # Prevent Nil values
    @party_size = 4 if party_size == nil
    # Set party size
    @party_size = party_size
    # Reset to default if an incorrect value
    @party_size = 4 if party_size < 1
  end
end



#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias large_refresh refresh
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y)
    unless $game_party.members.size > 4
      super(x, y, 384, 416)
    else
      super(x, y, 384, 138 * $game_party.members.size)
    end
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------  
  def refresh
    large_refresh
    self.height = 416
  end
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------  
  def update_cursor
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # Get top row
    row = @index  / @column_max
    if row < self.top_row
      self.top_row = row
    end
    # Reset Top Row if at bottom of list
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    # Obtain cursor width    
    cursor_width = self.width / @column_max
    x = @index % @column_max * cursor_width
    y = @index / @column_max * 96 - self.oy
    # Draw the cursor
    self.cursor_rect.set(x, y, cursor_width, 96)
  end
  #--------------------------------------------------------------------------
  # * Get Top Row
  #--------------------------------------------------------------------------  
  def top_row
    return self.oy / 96
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #     row : row shown on top
  #--------------------------------------------------------------------------  
  def top_row=(row)
    if row < 0
      row = 0
    end
    if row > row_max - 1
      row = row_max - 1
    end
    self.oy = row * 96
  end
  #--------------------------------------------------------------------------
  # * Get Number of Rows Displayable on 1 Page
  #--------------------------------------------------------------------------  
  def page_row_max
    return 4
  end
end



#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
#  This window displays the status of all party members on the battle screen.
#==============================================================================

class Window_BattleStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    unless $game_party.members.size > 4
      super(0, 0, 416, 128)
    else
      super(0, 0, 416, 32 * $game_party.members.size)
    end    
    refresh
    self.active = false
  end
end



#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias fomar_update update_info_viewport
  #--------------------------------------------------------------------------
  # * Create Information Display Viewport
  #--------------------------------------------------------------------------
  def create_info_viewport
    # Change viewport to accommodate party size
    unless $game_party.members.size > 4
      @info_viewport = Viewport.new(0, 288, 544, 128)
    else
      @info_viewport = Viewport.new(0, 416 - (32 * $game_party.members.size), 
                                    544, (32 * $game_party.members.size))
    end     
    @info_viewport.z = 100
    @status_window = Window_BattleStatus.new
    @party_command_window = Window_PartyCommand.new
    @actor_command_window = Window_ActorCommand.new
    @status_window.viewport = @info_viewport
    @party_command_window.viewport = @info_viewport
    @actor_command_window.viewport = @info_viewport
    @status_window.x = 128
    @actor_command_window.x = 544
    @info_viewport.visible = false    
  end
  #--------------------------------------------------------------------------
  # * Update Information Display Viewport
  #--------------------------------------------------------------------------
  def update_info_viewport
    # Obtain Battlestatus Height
    oldheight = @status_window.height.to_i / 32
    # Reset Battlestatus Height if party size increases
    if $game_party.members.size > oldheight
      dispose_info_viewport
      create_info_viewport
    end
    # Perform the original call
    fomar_update
  end
end
 
Status
Not open for further replies.

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