Help - Search - Members - Calendar
Full Version: Large Party Script
RPG RPG Revolution Forums > Scripting > Script Submissions > RGSS-Submissions
kyle1234lee
This is the Large Party Script:

CODE
#==============================================================================
# ** Large Party
#------------------------------------------------------------------------------
#  Author: Dargor
#  Version 1.3
#  02/08/2007
#==============================================================================

#==============================================================================
# ** Large Party Customization Module
#==============================================================================

module Dargor
  module Large_Party
    # Maximum number of actors allowed in the party
    Max_Size = 9
    # Battle status window refresh rate (used in phase5)
    Battle_Refresh_Rate = 64
  end
end

#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  This class handles temporary data that is not included with save data.
#  Refer to "$game_temp" for the instance of this class.
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :battle_actor_index  # @actor_index in battle scene
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_temp_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    large_party_temp_initialize
    @battle_actor_index = 0
  end
end

#==============================================================================
# ** 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_accessor :max_size   # Max number of actors allowed in the party
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_initialize initialize
  alias large_party_add_actor add_actor
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    large_party_initialize
    @max_size = Dargor::Large_Party::Max_Size
  end
  #--------------------------------------------------------------------------
  # * Add an Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    # Original method
    large_party_add_actor(actor_id)
    # Get actor
    actor = $game_actors[actor_id]
    # If the party has less than 4 members and this actor is not in the party
    if @actors.size < @max_size and not @actors.include?(actor)
      # Add actor
      @actors.push(actor)
      # Refresh player
      $game_player.refresh
    end
  end
end

#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  This sprite is used to display the battler.It observes the Game_Character
#  class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_sprite_update update
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Original method
    large_party_sprite_update
    # Set sprite coordinates
    if @battler.is_a?(Game_Actor)
      self.x = @battler.screen_x - ($game_temp.battle_actor_index / 4) * 640
    end
  end
end
#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
#  This class brings together battle screen sprites. It's used within
#  the Scene_Battle class.
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_spriteset_update update
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Cycle through all extra actors (4+)
    # Create/update sprites
    for i in 4...$game_party.actors.size
      if @actor_sprites[i].nil?
        @actor_sprites.push(Sprite_Battler.new(@viewport2))
      end
      @actor_sprites[i].battler = $game_party.actors[i]
    end
    # Original method
    large_party_spriteset_update
  end
end

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

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_menu_status_initialize initialize
  alias large_party_menu_status_refresh refresh
  alias large_party_menu_status_update_cursor_rect update_cursor_rect
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Original method
    large_party_menu_status_initialize
    # Adjust contents height
    @item_max = $game_party.actors.size
    height = @item_max * 118
    self.contents = Bitmap.new(width - 32, height - 32)
    # Refresh
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(*args)
    # Original method
    large_party_menu_status_refresh(*args)
    # Adjust default height
    self.height = 480
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    large_party_menu_status_update_cursor_rect
    row = @index / @column_max
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = self.width / @column_max - 32
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * 116 - self.oy
    self.cursor_rect.set(x, y, cursor_width, 96)
  end
  #--------------------------------------------------------------------------
  # * Top Row
  #--------------------------------------------------------------------------
  def top_row
    return self.oy / 116
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #     row : new row
  #--------------------------------------------------------------------------
  def top_row=(row)
    if row < 0
      row = 0
    end
    if row > row_max - 1
      row = row_max - 1
    end
    self.oy = row * 116
  end
  #--------------------------------------------------------------------------
  # * Page Row Max
  #--------------------------------------------------------------------------
  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_Base
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_battle_status_initialize initialize
  alias large_party_battle_status_refresh refresh
  alias large_party_battle_status_update update
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @column_max = 4
    large_party_battle_status_initialize
    width = $game_party.actors.size * 160
    self.contents = Bitmap.new(width - 32, height - 32)
    self.width = 640
    @level_up_flags = []
    for i in 0...$game_party.actors.size
      @level_up_flags << false
    end
    @item_max = $game_party.actors.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # Refresh contents when actors are added/removed in-battle
    if $game_party.actors.size != @item_max
      @item_max = $game_party.actors.size
      width = @item_max * 160
      self.contents = Bitmap.new(width - 32, height - 32)
      self.width = 640
    end
    large_party_battle_status_refresh
    column = $game_temp.battle_actor_index / 4
    self.ox = column * 640
  end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_phase3_setup_command_window phase3_setup_command_window
  alias large_party_update_phase4_step2 update_phase4_step2
  alias large_party_start_phase5 start_phase5
  alias large_party_update_phase5 update_phase5
  #--------------------------------------------------------------------------
  # * Actor Command Window Setup
  #--------------------------------------------------------------------------
  def phase3_setup_command_window
    $game_temp.battle_actor_index = @actor_index
    @status_window.refresh
    large_party_phase3_setup_command_window
    @actor_command_window.x = (@actor_index%4) * 160
  end
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 2 : start action)
  #--------------------------------------------------------------------------
  def update_phase4_step2
    if @active_battler.is_a?(Game_Actor)
      $game_temp.battle_actor_index = @active_battler.index
      @status_window.refresh
    end
    large_party_update_phase4_step2
  end
  #--------------------------------------------------------------------------
  # * Start After Battle Phase
  #--------------------------------------------------------------------------
  def start_phase5
    @actor_index = 0
    @status_wait = Graphics.frame_count
    large_party_start_phase5
  end
  #--------------------------------------------------------------------------
  # * Frame Update (after battle phase)
  #--------------------------------------------------------------------------
  def update_phase5
    refresh_rate = Dargor::Large_Party::Battle_Refresh_Rate
    if Graphics.frame_count >= @status_wait + refresh_rate
      $game_temp.battle_actor_index = @actor_index
      @status_window.refresh
      @status_wait = Graphics.frame_count
      max = ($game_party.actors.size.to_f/4).ceil * 4
      @actor_index = (@actor_index+1) % max
    end
    large_party_update_phase5
  end
end


Credits will go to a guy named Dargor.

Like I said. it isn't mine
LOT7V
Awesome! Thanks, kyle, for sharing this. Do you know how I could contact the author?
kyle1234lee
Np, Try looking for Dargor at RMXP.org, although I don't know his e-mail address, sorry, or try asking Duvverman, he is at the RMXP.org I saw, maybe he knows how to contact Dargor. happy.gif
Rikashiku
where in the script do i put ths?

are there any turotials about scripting?

how do i make a new script?

idk how to use the Chaos mode script =[
The Tao
You normally put a script above Main and below Scene_Debug, unless the author sspecifies otherwise.

Press Ins/Insert in the script editor, F11.
puisihatiku
Uhm sorry... What does this script do again?
kyle1234lee
It gives you more freedom to have lots of party members available with you, but of course, you will need a costum menu system, i reccommend Blizzard's CMS.
puisihatiku
Oh, right... Sounds great. Thanks!
Jizzo
where can I find Blizzard's CMS. ? I didn't find it here.
Blizzard
I'm not even sure if it was posted here. At least reposted. =X

http://forum.chaos-project.com/index.php?topic=111.0
Jizzo
QUOTE (Blizzard @ Aug 18 2008, 01:47 AM) *
I'm not even sure if it was posted here. At least reposted. =X

http://forum.chaos-project.com/index.php?topic=111.0


Thanks blizzard but can I use this in my game? because I wan't to use the large party script but it doesn't work without your CMS.
Jizzo
damn this script is cool biggrin.gif:D:D
Blizzard
Have you set up the script properly? It should support and number of party members.
Jizzo
It seems it works but I really would like to use your menu blizzard ofcourse only if your ok with it and i'll also ofcourse give you credit and special thanks for it..

So may I use your menu ?
please?smile.gif
Blizzard
Of course you can use it. That's why I am sharing it. smile.gif
Jizzo
ok thank you biggrin.gif you'll be first person to get my game when It's done wink.gif biggrin.gif
Erdrick1st
I Just used this Script and It worked perfectly. (Cool smile.gif
Pkhamidar2com
This isnt working, it says

script "large party" line 81: argument error occured
comparison of fixnum with nil failed

what should i do?
Mataris
If someone help me I'd appreciate it I Have Blizz CMS, and this script I figured out how to get a 5th actor in the party but it is only there in the menu how can I add it so it is in the battles as well?
InvokingRainbows
anyone know if this script is comptable with a side-view battle system?
Anderson88
This script isn't compatible with Enu SBS Tankentai XP. smile.gif
sapphireluna
QUOTE (Anderson88 @ Dec 25 2010, 07:33 PM) *
This script isn't compatible with Enu SBS Tankentai XP. smile.gif


Bummer...then do I have to choose between a large party or side battles? Or is there an alternative?
TheRPGMakerFan
QUOTE (kyle1234lee @ Apr 20 2008, 06:49 PM) *
It gives you more freedom to have lots of party members available with you, but of course, you will need a costum menu system, i reccommend Blizzard's CMS.




Do you think this script will work with MOG's VX Menu?
gettogaara
So wait, this does'nt work with any sideview battle systems or just Enu SBS Tankentai XP?
Nezze
It really works! Thank you so much for posting this! laugh.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2013 Invision Power Services, Inc.