Лучше назвать тему конкретно, а не "кое в чем", переименовываю.

По вопросу: к скриптам.

Вот например что первое попалось на глаза:

Этот скрипт позволяет выбирать героев в партии. Позволяет быть 1-4 героям в партии и бесконечному количеству запасных героев.

Код:
#===================================
#  Party Changing System by Leon_Westbrooke
#   -v 1.2
#----------------------------------------------------------------------
#  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.)
#
#  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 0...@item_max
            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 0...@item_max
            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_Map.new
          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

Вызов экрана с выбором героев:

Код:
$scene = Scene_Party_Change.new