Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
  • 0
Sign in to follow this  
PilotBK

Need Help with Leon's Party Script

Question

I'm not very good with scripting and I can usually figure things out by playing around with them, but this script continues to elude me. I'm using Leon's Party Changing System v1.2 and when I try to take a party member out of the party and put them into reserve an error pops up...

 

"ArgumentError occurred while running script.

 

wrong number of arguments(0 for 1)"

 

 

This is the event command that I'm using: $game_party.remove_actor_from_party(9)

 

I've tried everything I know of and it just doesn't want to work for me. I searched google and several other forums and haven't found any solution. Any help would be greatly appreciated.

 

EDIT:

 

:pinch: Strange how things figure themselves out...I found out what the problem was.

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

That's what I'm here for. Making people cry... er... Helping people! Anyway, the reason i screwed up before is simple: I had the old version...

Share this post


Link to post
Share on other sites
  • 0

]Well.I'm crying again :'( After I used that code: I get this error :(

 

I tested it twice.Before I use that code The "remove actor to party" code works...But after the $game_party.locked.delete(n) i get this error.SAVE MY DAY ONCE AGAIN! :D

 

http://img837.images.../erroragain.png

 

:'(

 

EDIT:I mean I can't lock,add,remove people from the party into/from the reserve :(

 

 

 

 

#==============================================================================
#  Party Changing System by Leon_Westbrooke
#   -v 1.3
#   Minor Edits by Kiriashi to incorporate this scene with the menu.
#----------------------------------------------------------------------
#  Instructions:  Place above main, but below all other default scripts.
#  
#  Features:  
#    -Allows the player to make a party from the minimum to maximum size.
#    -Extra members are limitless.
#    -You can remove a person from the party and put it into reserve using:
#       $game_party.remove_actor_to_party(actor_id)
#    -You can remove a person from the reserve if they exist, and them into
#     the party:
#       $game_party.add_actor_to_party(actor_id)
#    -You can lock a character in reserve or active party by using:
#       $game_party.locked.push(actor_id)
#    -You can set the maximum and minimum number of the party in-game using:
#       $game_party.min_size = x
#       $game_party.max_size = x
#       (NOTE: Do NOT make the max size lower than the minimum size.)
#    -Allows you to use the default add/remove actors command.
#       (NOTE: If you remove an actor with this method, he is gone from both
#              the party and the reserve members.)
#
#      - Remove locking:$game_party.locked.delete(n)
#
#  Credits:
#    This setup uses SephirothSpawn's coding to simplify the cursor's position.
#
# 
#  Command Quick-list:
#    $game_party.remove_actor_from_party(actor_id)
#      -Removes an actor from the party, and puts them in reserve.
#    $game_party.add_actor_to_party(actor_id)
#      -Replaces the last actor in the party with the actor in reserve.
#    $game_party.locked.push(actor_id)
#      -Locks the actor in place.
#    $game_party.min_size = x
#    $game_party.max_size = x
#      -Sets the minimum and maximum party size.
#
#
#  Notes:
#    This script rewrites these methods from Game_Party:
#      add_actor
#      remove_actor
#===================================
#==================================================
#  Game_Party
#==================================================
class Game_Party

 attr_accessor :party_members
 attr_accessor :move
 attr_accessor :locked
 attr_accessor :min_size
 attr_accessor :max_size

 alias leon_partyswitch_gameactor_initialize initialize

 def initialize
   leon_partyswitch_gameactor_initialize
   @party_members = []
   #  Edit :This is to change if an actor is locked or not. To lock them, add
   #        their id to the array below.
   @locked = [1]
   @min_size = 1
   @max_size = 4
 end


 def add_actor(actor_id)
   actor = $game_actors[actor_id]
   if @actors.size < @max_size
     unless @actors.include?(actor)
       unless @party_members.include?(actor.id)
         @actors.push(actor)
         $game_player.refresh
       end
     end
   else
     unless @party_members.include?(actor.id)
       unless @actors.include?(actor)
         @party_members.push(actor.id)
         $game_player.refresh
       end
     end
   end
 end

 def remove_actor(actor_id)
   @actors.delete($game_actors[actor_id])
   @party_members.delete(actor_id)
   $game_player.refresh
 end

 def remove_actor_from_party(actor_id)
   if @actors.include?($game_actors[actor_id])
     unless @party_members.include?(actor_id)
       @party_members.push(actor_id)
       @party_members.sort!
     end
   end
       @actors.delete($game_actors[actor_id])
   $game_player.refresh
 end

 def add_actor_to_party(actor_id)
   if @party_members.include?(actor_id)
     if @actors[@max_size - 1] != nil
       @party_members.push(@actors[@max_size - 1].id)
       @actors.delete_at(@max_size - 1)
     end
     @actors.push($game_actors[actor_id])
     @party_members.delete(actor_id)
   end
 end
end
#==================================================
#  END Game_Party
#==================================================

#==============================================================================
# ** Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :cursor_height
 #--------------------------------------------------------------------------
 # * Alias Initialization
 #--------------------------------------------------------------------------
 alias custom_int initialize
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(x, y, width, height)
   custom_int(x, y, width, height)
   @cursor_height = 32
 end
 #--------------------------------------------------------------------------
 # * Get Top Row
 #--------------------------------------------------------------------------
 def top_row
   # Divide y-coordinate of window contents transfer origin by 1 row
   # height of @cursor_height
   return self.oy / @cursor_height
 end
 #--------------------------------------------------------------------------
 # * Set Top Row
 # row : row shown on top
 #--------------------------------------------------------------------------
 def top_row=(row)
   # If row is less than 0, change it to 0
   if row < 0
     row = 0
   end
   # If row exceeds row_max - 1, change it to row_max - 1
   if row > row_max - 1
     row = row_max - 1
   end
   # Multiply 1 row height by 32 for y-coordinate of window contents
   # transfer origin
   self.oy = row * @cursor_height
 end
 #--------------------------------------------------------------------------
 # * Get Number of Rows Displayable on 1 Page
 #--------------------------------------------------------------------------
 def page_row_max
   # Subtract a frame height of 32 from the window height, and divide it by
   # 1 row height of @cursor_height
   return (self.height - 32) / @cursor_height
 end
 #--------------------------------------------------------------------------
 # * Update Cursor Rectangle
 #--------------------------------------------------------------------------
 def update_cursor_rect
   # If cursor position is less than 0
   if @index < 0
     self.cursor_rect.empty
     return
   end
   # Get current row
   row = @index / @column_max
   # If current row is before top row
   if row < self.top_row
     # Scroll so that current row becomes top row
     self.top_row = row
   end
   # If current row is more to back than back row
   if row > self.top_row + (self.page_row_max - 1)
     # Scroll so that current row becomes back row
     self.top_row = row - (self.page_row_max - 1)
   end
   # Calculate cursor width
   cursor_width = self.width / @column_max - 32
   # Calculate cursor coordinates
   x = @index % @column_max * (cursor_width + 32)
   y = @index / @column_max * @cursor_height - self.oy
   if self.active == true
     # Update cursor rectangle
     self.cursor_rect.set(x, y, cursor_width, @cursor_height)
   end
 end
end

#==============================================================================
# ** Window_Command
#==============================================================================
class Window_Command < Window_Selectable
 #--------------------------------------------------------------------------
 # * Unisable Item
 # index : item number
 #--------------------------------------------------------------------------
 def undisable_item(index)
   draw_item(index, normal_color)
 end
end
#============================================================


#==================================================
#  Window_Party_Info
#==================================================
class Window_Party_Info < Window_Base
 def initialize
   super(0, 0, 640, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end

 def refresh
   self.contents.clear
   self.contents.draw_text(0, 0, 614, 32, "Please make a party of #{$game_party.min_size.to_s} to #{$game_party.max_size.to_s} members.", 1)
 end
end
#==================================================
#  END Window_Party_Info
#==================================================


#==================================================
#  Window_Party_Slots
#==================================================
class Window_Party_Slots < Window_Selectable

 def initialize
   super(0, 64, 320, 416)
   @item_max = 4
   self.contents = Bitmap.new(width - 32, height - 32)
   self.index = 0
   self.active = true
   refresh
 end

 def actors
   if @data[index] != nil
     return @data[index]
   end
 end

 def refresh
   @data = []
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   for i in 0...$game_party.actors.size
     @data.push($game_party.actors[i])
   end
   @item_max = (@data.size + 1)
   if @item_max > 0
     if @item_max > 4
       @item_max = 4
     end
     self.contents = Bitmap.new(width - 32, row_max * 96)
     for i in [email="0...@item_max"]0...@item_max[/email]
       draw_item(i)
     end
   end
 end

 def draw_item(index)
   @actor = @data[index]
   y = index * 96
   x = 4
   if $game_party.locked.include?(@actor.id)
     self.contents.font.color = disabled_color
     opacity = 128
   else
     self.contents.font.color = normal_color
     opacity = 255
   end
   if @actor != nil
     self.contents.draw_text(x + 100, y, 192, 32, @actor.name)
     draw_actor_hp(@actor, x + 100, y + 32)
     draw_actor_sp(@actor, x + 100, y + 64)
     bitmap = RPG::Cache.character(@actor.character_name, @actor.character_hue)
     cw = bitmap.width / 4
     ch = bitmap.height / 4
     facing = 0
     src_rect = Rect.new(0, facing * ch, cw, ch)
     self.contents.blt(x + 24, y + 32, bitmap, src_rect, opacity)
   end
 end

 def update_cursor_rect
   if @index > -1
     x = 0
     y = index * 96
     self.cursor_rect.set(x, y, (self.width - 32), 96)
   else
     self.cursor_rect.empty
   end
 end

end
#==================================================
#  END Window_Party_Slots
#==================================================


#==================================================
#  Window_Party_Extras
#==================================================
class Window_Party_Extras < Window_Selectable
 def initialize
   super(320, 64, 320, 416)
   self.cursor_height = 96
   self.contents = Bitmap.new(width - 32, height - 32)
   self.index = -1
   self.active = false
   refresh
 end

 def actors
   if @data != nil
     return @data[index]
   end
 end

 def refresh
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   @data = []
   for i in 0...$game_party.party_members.size
     @data.push($game_actors[$game_party.party_members[i]])
   end
   @data.push(nil)
   @item_max = @data.size
   if @item_max > 0
     self.contents = Bitmap.new(width - 32, row_max * 96)
     for i in [email="0...@item_max"]0...@item_max[/email]
       draw_item(i)
     end
   end
 end

 def draw_item(index)
   @actor = @data[index]
   y = index * 96
   x = 4
   if $game_party.locked.include?(@actor.id)
     self.contents.font.color = disabled_color
     opacity = 128
   else
     self.contents.font.color = normal_color
     opacity = 255
   end
   if @actor != nil
     self.contents.draw_text(x + 100, y, 192, 32, @actor.name)
     draw_actor_hp(@actor, x + 100, y + 32)
     draw_actor_sp(@actor, x + 100, y + 64)
     bitmap = RPG::Cache.character(@actor.character_name, @actor.character_hue)
     cw = bitmap.width / 4
     ch = bitmap.height / 4
     facing = 0
     src_rect = Rect.new(0, facing * ch, cw, ch)
     self.contents.blt(x + 24, y + 32, bitmap, src_rect, opacity)
   end
 end

end
#===================================
#  END Window_Party_Extras
#===================================


#===================================
#  Scene_Party_Change
#===================================
class Scene_Party_Change
 def main

   @info_window = Window_Party_Info.new
   @slot_window = Window_Party_Slots.new
   @extra_window = Window_Party_Extras.new

   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze

   @info_window.dispose
   @slot_window.dispose
   @extra_window.dispose
 end

 def update
   @slot_window.update

   if @slot_window.active
     update_slot
     return
   end

   if @extra_window.active
     update_extra
     return
   end
 end

 def update_slot
   if Input.trigger?(Input::B)
     if $game_party.actors.size >= $game_party.min_size and $game_party.actors.size <= $game_party.max_size
       $game_player.refresh
       $game_system.se_play($data_system.cancel_se)
       $scene = Scene_Menu.new(6)
     else
       $game_system.se_play($data_system.buzzer_se)
     end
   end

   if Input.trigger?(Input::C)
     if $game_party.locked.include?(@slot_window.actors.id) == true
       $game_system.se_play($data_system.buzzer_se)
     else
       $game_system.se_play($data_system.decision_se)
       @slot_window.active = false
       @extra_window.active = true
       @extra_window.index = 0
     end
   end
 end

 def update_extra
   @extra_window.update
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @slot_window.active = true
     @extra_window.active = false
     @extra_window.index = -1
   end

   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     if $game_party.locked.include?(@extra_window.actors.id)
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     if @extra_window.actors == nil 
       if $game_party.actors[@slot_window.index] != nil
         $game_party.party_members.push($game_party.actors[@slot_window.index].id)
         $game_party.remove_actor_from_party($game_party.actors[@slot_window.index].id)
         $game_party.party_members.sort!
         @slot_window.refresh
         @extra_window.refresh
         @slot_window.active = true
         @extra_window.active = false
         @extra_window.index = -1
       else
         @slot_window.active = true
         @extra_window.active = false
         @extra_window.index = -1
       end
     else
       if $game_party.actors[@slot_window.index] != nil
         hold = @extra_window.actors
         $game_party.party_members.push($game_party.actors[@slot_window.index].id)
         $game_party.actors[@slot_window.index] = hold
         $game_party.party_members.delete_at(@extra_window.index)
         $game_party.party_members.sort!
         @slot_window.refresh
         @extra_window.refresh
         @slot_window.active = true
         @extra_window.active = false
         @extra_window.index = -1
       else
         $game_party.actors[@slot_window.index] = @extra_window.actors
         $game_party.party_members.delete_at(@extra_window.index)
         $game_party.party_members.sort!
         @slot_window.refresh
         @extra_window.refresh
         @slot_window.active = true
         @extra_window.active = false
         @extra_window.index = -1
       end
     end
   end
 end

end

 

 

 

EDIT(2):Ok,this is weird :( IF I COPY,PASTE the code from the script,I get the error.BUT if I copy the code from my previous usage,it works :P....Err..So,false alarm? :D

Share this post


Link to post
Share on other sites
  • 0

Your error says you were using $game_party.remove_actor_to_party(actor_id)

It is supposed to be: $game_party.remove_actor_from_party(actor_id)

 

Not bolding it to sound condescending, but to show the error. it is easily missed

Share this post


Link to post
Share on other sites
  • 0

Ohhhhh...Thanks.It works now anyway lol :) But thanks for helping me out,oh gr8 one! :clap: :clap: :clap: :alright:

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...