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.

Need someone to "alter" (not fix) a script

I have this script that makes you store items it's really easy to use but it has a glitch if you have more then an item they will show more then one instead of Potion10 so please can someone fix it:

Code:
#==============================================================================
# Item Inventory
#--------------------------------------------------------------------------
# SephirothSpawn
# Version 1
# 12.03.05
#--------------------------------------------------------------------------
# * Requires Seph Scripts Base
#------------------------------------------------------------------------------
# Do not edit the script in any manner to remove the SDK
# The Script was designed for usage with SDK only
#==============================================================================


#==============================================================================
# ** Game_Party
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :items
  attr_accessor :weapons
  attr_accessor :armors
  attr_accessor :inventory_items
  #--------------------------------------------------------------------------
  # * Alias Initialization
  #--------------------------------------------------------------------------
  alias inventory_int initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    inventory_int
    @inventory_items = []
  end
  #--------------------------------------------------------------------------
  # * Move to Inventory
  #--------------------------------------------------------------------------
  def move_to_inventory(type, item_id)
    case type
    when 0
      @inventory_items.push($data_items[item_id])
      lose_item(item_id, 1)
    when 1
      @inventory_items.push($data_weapons[item_id])
      lose_weapon(item_id, 1)
    when 2
      @inventory_items.push($data_armors[item_id])
      lose_armor(item_id, 1)
    end
    update_inventory
  end
  #--------------------------------------------------------------------------
  # * Remove from Inventory
  #--------------------------------------------------------------------------
  def remove_from_inventory(index)
    item = @inventory_items[index]
    @inventory_items.delete_at(index)
    case item
    when RPG::Item
      gain_item(item.id, 1)
    when RPG::Weapon
      gain_weapon(item.id, 1)
    when RPG::Armor
      gain_armor(item.id, 1)
    end
    update_inventory
  end
  #--------------------------------------------------------------------------
  # * Update Inventory
  #--------------------------------------------------------------------------
  def update_inventory
    items, weapons, armors = [], [], []
    for item in @inventory_items
      case item
      when RPG::Item
        items.push(item)
      when RPG::Weapon
        weapons.push(item)
      when RPG::Armor
        armors.push(item)
      end
    end
    items.sort! {|a, b| a.id<=>b.id}
    weapons.sort! {|a, b| a.id<=>b.id}
    armors.sort! {|a, b| a.id<=>b.id}
    @inventory_items.clear
    @inventory_items << items << weapons << armors
    @inventory_items.flatten!
  end
end

#==============================================================================
# ** Window_ItemInventory
#==============================================================================

class Window_ItemInventory < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     width    : window width
  #     commands : command text string array
  #--------------------------------------------------------------------------
  def initialize(width, commands)
    # Compute window height from command quantity
    super(0, 0, width, commands.size * 32 + 32)
    @item_max = commands.size
    @commands = commands
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(commands = @commands)
    @commands = commands
    @item_max = commands.size
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    self.contents = Bitmap.new(width - 32, @item_max * 32)
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #     color : text color
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = color
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    item = @commands[index]
    if item.is_a?(RPG::Item) || item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
      case item
      when RPG::Item
        number = $game_party.item_number(item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(item.id)
      when RPG::Armor
        number = $game_party.armor_number(item.id)
      end
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(4, 32 * index + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(32, 32 * index, self.contents.width - 8, 32, item.name)
      self.contents.draw_text(4, 32 * index, self.contents.width - 8, 32, number.to_s, 2)
    else
      self.contents.draw_text(0, 32 * index, self.contents.width - 8, 32, item, 1)
    end
  end
  #--------------------------------------------------------------------------
  # * Disable Item
  #     index : item number
  #--------------------------------------------------------------------------
  def disable_item(index)
    draw_item(index, disabled_color)
  end
end

#==============================================================================
# ** Scene_Inventory_Items
#==============================================================================

class Scene_Inventory_Items
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make sprite set
    @spriteset = Spriteset_Map.new
    # Help Window
    @help_window = Window_Help.new
      @help_window.set_text("Select Item to Transfer", 1)
      @help_window.opacity = 175
    # Items Window
    @items_window = Window_ItemInventory.new(272, get_item_commands)
      @items_window.x, @items_window.y = 32, 80
      @items_window.opacity = 175
      @items_window.height = 384
    # Inventory Window
    @inventory_window = Window_ItemInventory.new(272, get_inventory_commands)
      @inventory_window.x, @inventory_window.y = 336, 80
      @inventory_window.opacity = 175
      @inventory_window.height = 384
      @inventory_window.active = false
    # Scene Objects
    @objects = [@spriteset, @help_window, @items_window, @inventory_window]
    @cmd_windows = [@items_window, @inventory_window]
    # Transition run
    Graphics.transition
    # Main loop
    while $scene == self
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Updates Objects
      @objects.each {|x| x.update unless x == @items_window || x == @inventory_window}
      @cmd_windows.each {|x| x.update if x.active}
      # Frame update
      update
    end
    # Prepare for transition
    Graphics.freeze
    # Disposes Objects
    @objects.each {|x| x.dispose}
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Updates Help Window
    if @items_window.active
      @help_window.set_text("Select Item to Transfer", 1)
    else
      @help_window.set_text("Select Item to Withdraw", 1)
    end
    # Return to Map
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::L) || Input.trigger?(Input::R) ||
      Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
      @items_window.active = @items_window.active ?  false : true
      @inventory_window.active = @inventory_window.active ?  false : true
    elsif Input.trigger?(Input::C)
      if @items_window.active
        item = @commands[@items_window.index]
        if item == "Back"
          $game_system.se_play($data_system.cancel_se)
          $scene = Scene_Map.new
        else
          $game_system.se_play($data_system.decision_se)
          type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2
          $game_party.move_to_inventory(type, item.id)
          @items_window.refresh(get_item_commands)
          @inventory_window.refresh(get_inventory_commands)
        end
      else
        if @inventory_window.index == @inventory_size - 1
          $game_system.se_play($data_system.cancel_se)
          $scene = Scene_Map.new
        else
          $game_party.remove_from_inventory(@inventory_window.index)          
          @items_window.refresh(get_item_commands)
          @inventory_window.refresh(get_inventory_commands)
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Get Item Commands
  #--------------------------------------------------------------------------
  def get_item_commands
    # Commands For Selecting
    @commands = []
    $game_party.items.each_key {|item| $game_party.items[item].times {@commands.push($data_items[item])}}
    $game_party.weapons.each_key {|item| $game_party.weapons[item].times {@commands.push($data_weapons[item])}}
    $game_party.armors.each_key {|item| $game_party.armors[item].times {@commands.push($data_armors[item])}}
    @commands.push("Back")
    return @commands
  end
  #--------------------------------------------------------------------------
  # * Get Inventory Commands
  #--------------------------------------------------------------------------
  def get_inventory_commands
    commands = []
    $game_party.inventory_items.each {|item| commands.push(item)}
    commands.push("Back")
    @inventory_size = commands.size
    return commands
  end
end

And for those that wish to try it you need to call the script from an event with:
$scene = Scene_Inventory_Items.new
 

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