Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Icon Inventory (Picture Version)
#1
Icon Inventory (Picture Version)
by Chrono Cry
Apr 25, 2007

This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.


Instructions
Just paste the script right above main and paste the Item Menu Image into the pictures folder remember to rename it 'Item Icon Menu Background'. (NOTE: There are now two background to choose from so you can pick whichever you like.)

Also as in the window skin version, you must go into your database and put the name of the item before the description e.g. "Potion: Heals character by 500". In the end i thought it would be more beneficial to make it like this rather then call upon another window to display the name.


Script
Code:
#==============================================================================
# Window Skin Free Version Of Icon Inventory by Mac
#==============================================================================
# ** Window_Help changed by Mac
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================

class Window_Help < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
  super(0, 0, 640, 64)
  self.opacity = 0
  self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
  # If at least one part of text and alignment differ from last time
  if text != @text or align != @align
   # Redraw text
   self.contents.clear
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
   @text = text
   @align = align
   @actor = nil
  end
  self.visible = true
end
#--------------------------------------------------------------------------
# * Set Actor
#  actor : status displaying actor
#--------------------------------------------------------------------------
def set_actor(actor)
  if actor != @actor
   self.contents.clear
   draw_actor_name(actor, 4, 0)
   draw_actor_state(actor, 140, 0)
   draw_actor_hp(actor, 284, 0)
   draw_actor_sp(actor, 460, 0)
   @actor = actor
   @text = nil
   self.visible = true
  end
end
#--------------------------------------------------------------------------
# * Set Enemy
#  enemy : name and status displaying enemy
#--------------------------------------------------------------------------
def set_enemy(enemy)
  text = enemy.name
  state_text = make_battler_state_text(enemy, 112, false)
  if state_text != ""
   text += " " + state_text
  end
  set_text(text, 1)
end
end

#==============================================================================
# ** Scene_Item editted by Mac
#------------------------------------------------------------------------------
# This class performs item screen processing.
#==============================================================================

class Scene_Item
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
  # Make help window, item window
  @frame = Sprite.new
  @frame.bitmap = RPG::Cache.picture('Item Icon Menu Background')
  @help_window = Window_Help.new
  @item_window = Window_Item.new
  # Associate help window
  @item_window.help_window = @help_window
  # Make target window (set to invisible / inactive)
  @target_window = Window_Target.new
  @target_window.visible = false
  @target_window.active = false
  # Execute transition
  Graphics.transition
  # Main loop
  loop do
   # Update game screen
   Graphics.update
   # Update input information
   Input.update
   # Frame update
   update
   # Abort loop if screen is changed
   if $scene != self
    break
   end
  end
  # Prepare for transition
  Graphics.freeze
  # Dispose of windows
  @help_window.dispose
  @item_window.dispose
  @target_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
  # Update windows
  @help_window.update
  @item_window.update
  @target_window.update
  # If item window is active: call update_item
  if @item_window.active
   update_item
   return
  end
  # If target window is active: call update_target
  if @target_window.active
   update_target
   return
  end
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
  # If B button was pressed
  if Input.trigger?(Input::B)
   # Play cancel SE
   $game_system.se_play($data_system.cancel_se)
   # Switch to menu screen
   $scene = Scene_Menu.new(0)
   return
  end
  # If C button was pressed
  if Input.trigger?(Input::C)
   # Get currently selected data on the item window
   @item = @item_window.item
   # If not a use item
   unless @item.is_a?(RPG::Item)
    # Play buzzer SE
    $game_system.se_play($data_system.buzzer_se)
    return
   end
   # If it can't be used
   unless $game_party.item_can_use?(@item.id)
    # Play buzzer SE
    $game_system.se_play($data_system.buzzer_se)
    return
   end
   # Play decision SE
   $game_system.se_play($data_system.decision_se)
   # If effect scope is an ally
   if @item.scope >= 3
    # Activate target window
    @item_window.active = false
    @target_window.x = (@item_window.index + 1) % 2 * 304
    @target_window.visible = true
    @target_window.active = true
    # Set cursor position to effect scope (single / all)
    if @item.scope == 4 || @item.scope == 6
     @target_window.index = -1
    else
     @target_window.index = 0
    end
   # If effect scope is other than an ally
   else
    # If command event ID is valid
    if @item.common_event_id > 0
     # Command event call reservation
     $game_temp.common_event_id = @item.common_event_id
     # Play item use SE
     $game_system.se_play(@item.menu_se)
     # If consumable
     if @item.consumable
      # Decrease used items by 1
      $game_party.lose_item(@item.id, 1)
      # Draw item window item
      @item_window.draw_item(@item_window.index)
     end
     # Switch to map screen
     $scene = Scene_Map.new
     return
    end
   end
   return
  end
end
#--------------------------------------------------------------------------
# * Frame Update (when target window is active)
#--------------------------------------------------------------------------
def update_target
  # If B button was pressed
  if Input.trigger?(Input::B)
   # Play cancel SE
   $game_system.se_play($data_system.cancel_se)
   # If unable to use because items ran out
   unless $game_party.item_can_use?(@item.id)
    # Remake item window contents
    @item_window.refresh
   end
   # Erase target window
   @item_window.active = true
   @target_window.visible = false
   @target_window.active = false
   return
  end
  # If C button was pressed
  if Input.trigger?(Input::C)
   # If items are used up
   if $game_party.item_number(@item.id) == 0
    # Play buzzer SE
    $game_system.se_play($data_system.buzzer_se)
    return
   end
   # If target is all
   if @target_window.index == -1
    # Apply item effects to entire party
    used = false
    for i in $game_party.actors
     used |= i.item_effect(@item)
    end
   end
   # If single target
   if @target_window.index >= 0
    # Apply item use effects to target actor
    target = $game_party.actors[@target_window.index]
    used = target.item_effect(@item)
   end
   # If an item was used
   if used
    # Play item use SE
    $game_system.se_play(@item.menu_se)
    # If consumable
    if @item.consumable
     # Decrease used items by 1
     $game_party.lose_item(@item.id, 1)
     # Redraw item window item
     @item_window.draw_item(@item_window.index)
    end
    # Remake target window contents
    @target_window.refresh
    # If all party members are dead
    if $game_party.all_dead?
     # Switch to game over screen
     $scene = Scene_Gameover.new
     return
    end
    # If common event ID is valid
    if @item.common_event_id > 0
     # Common event call reservation
     $game_temp.common_event_id = @item.common_event_id
     # Switch to map screen
     $scene = Scene_Map.new
     return
    end
   end
   # If item wasn't used
   unless used
    # Play buzzer SE
    $game_system.se_play($data_system.buzzer_se)
   end
   return
  end
end
end

#==============================================================================
# Icon Inventory System - Scripted By Mac
#------------------------------------------------------------------------------
# This window displays Icons
#==============================================================================

class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
  super(0, 63, 640, 417)
  self.opacity = 0
  @column_max = 10
  refresh
  self.index = 0
  # If in battle, move window to center of screen
  # and make it semi-transparent
  if $game_temp.in_battle
   self.y = 64
   self.height = 256
   self.back_opacity = 160
  end
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
  return @data[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
  if self.contents != nil
   self.contents.dispose
   self.contents = nil
  end
  @data = []
  # Add item
  for i in 1...$data_items.size
   if $game_party.item_number(i) > 0
    @data.push($data_items[i])
   end
  end
  # Also add weapons and items if outside of battle
  unless $game_temp.in_battle
   for i in 1...$data_weapons.size
    if $game_party.weapon_number(i) > 0
     @data.push($data_weapons[i])
    end
   end
   for i in 1...$data_armors.size
    if $game_party.armor_number(i) > 0
     @data.push($data_armors[i])
    end
   end
  end
  # If item count is not 0, make a bit map and draw all items
  @item_max = @data.size
  if @item_max > 0
   self.contents = Bitmap.new(width - 32, row_max * 32)
   for i in 0...@item_max
    draw_item(i)
   end
  end
end
#--------------------------------------------------------------------------
# * Draw Item
#  index : item number
#--------------------------------------------------------------------------
def draw_item(index)
  item = @data[index]
  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
  if item.is_a?(RPG::Item) and
   $game_party.item_can_use?(item.id)
   self.contents.font.color = normal_color
  else
   self.contents.font.color = disabled_color
  end
  x = 4 + index % 10 * (32 + 32)
  y = index / 10 * 32
  rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  bitmap = RPG::Cache.icon(item.icon_name)
  opacity = self.contents.font.color == normal_color ? 255 : 128
  self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  self.contents.draw_text(x, y + 9, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------

def update_help
  @help_window.set_text(self.item == nil ? "" : self.item.description)
end
end


Original post had graphics entitled:
Sexy Gold and Sexy Blue (no longer available)


Credits
Me! XD
}


Possibly Related Threads…
Thread Author Replies Views Last Post
  Icon Inventory Windowskin Version Chrono Cry 0 2,338 04-25-2007, 01:00 PM
Last Post: Chrono Cry



Users browsing this thread: