RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
[VXA] TheoAllen's Chest System

0 Members and 1 Guest are viewing this topic.

****
Rep:
Level 63
オ・マイ・ゴッド ・㉨・
<TheoAllen's Chest System>
Version: <1.1>
Author: <TheoAllen>
Date: <June>, <28>, <2013>

Version History


  • <Version 1.0b> 01.06.2013 - Public release by TheoAllen in Indonesian.
  • <Version 1.0b> 28.06.2013 - Script translated to english by AbsoluteIce.
  • <Version 1.1> 30.06.2013 - Script updated with the ability to change 'stash' into whatever you want.

Planned Future Versions

  • For now, none, unless TheoAllen updates this script.

Description


This script lets you open a chest. It lets you take out, or fill in items from your inventory into that chest.
Similar to the western RPG game, Elder Scrolls.

Features

  • The ability to put items and take out items from a chest.

Screenshots




Instructions

Put this script below materials, and above main in the script section.
 
Use a comment on the event in this format before you do a script call to initialize the chest starting items.
<item: id, amount>
<weapon: id, amount>
<armor: id, amount>

Script


Code: [Select]
# =============================================================================
# TheoAllen - Chest System
# Version : 1.1
# Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
# (This script is translated by AbsoluteIce)
# =============================================================================
($imported ||= {})[:Theo_ChestSystem] = true
# =============================================================================
# CHANGE LOGS:
# -----------------------------------------------------------------------------
# 2013.06.28 - Add custom chest name
# 2013.06.01 - Adjust control and GUI
# 2013.05.24 - Finished script
# 2013.05.23 - Started Script
# =============================================================================
=begin

  Introduction :
  This script lets you open a chest. It lets you take out, or fill in items
  from your inventory. Similar to the western RPG game, Elder Scrolls.
 
  How to use :
  Put this below materials, and above main in the script section.
 
  Use a comment on the event in this format before you do a script call to
  initialize the chest starting items.
  <item: id, amount>
  <weapon: id, amount>
  <armor: id, amount>
 
  Explanation of Id's :
  id >> id of the item
  amount >> number of items
 
  After using the comment, use this script call :
  open_chest
 
  For custom name chest, you can use this script call. For example :
  open_chest("Garbage")
  open_chest("Eric's Chest")
 
  note : every comment in every event is read once. Make sure you put it before
  the script call.
 
  Terms of use :
  Credit me, TheoAllen. You're free to edit by your own as long as you don't
  claim it's yours. If you want to use for a commercial project, share the
  profit with me. And don't forget to give me free copy of the game

=end
# =============================================================================
# Configuration :
# =============================================================================
module THEO
  module CHEST
    # =========================================================================
    # Vocabs
    # -------------------------------------------------------------------------
      AMOUNT_VOCAB  = "Amount :"    # Vocab for said amount.
      ALL_VOCAB     = "All"         # Vocab for all categories.
      INV_VOCAB     = "Inventory"   # Vocab for inventory.
      ST_VOCAB      = "Stash"       # Vocab for stash/storage.
    # =========================================================================
   
    # =========================================================================
      TRIGGER_GAIN_ALL  = :CTRL
    # -------------------------------------------------------------------------
    # Trigger to take all items. If you write :CTRL, thus all items
    # will be taken if you press CTRL + Confirm (z)
    # =========================================================================
   
    # =========================================================================
      SHOW_AMOUNT_MIN   = 10
    # -------------------------------------------------------------------------
    # minimum amount for viewing the window amount.
    # =========================================================================
   
  end
end
# =============================================================================
# End of Configuration (Don't edit if you don't know what you're doing)
# =============================================================================
module THEO
  module CHEST
  module REGEXP
   
    ITEM_REGEX   = /<(?:ITEM|item):[ ]*[ ]*(\d+\s*,\s*\d*)>/i
    WEAPON_REGEX = /<(?:WEAPON|weapon):[ ]*[ ]*(\d+\s*,\s*\d*)>/i
    ARMOR_REGEX  = /<(?:ARMOR|armor):[ ]*[ ]*(\d+\s*,\s*\d*)>/i
   
  end
  end
end

class Scene_Chest < Scene_MenuBase
 
  include THEO::CHEST
 
  def initialize(key,st_vocab)
    $game_party.init_chest_cursors
    @last_active = :stash
    @key = key
    @st_vocab = st_vocab
  end
 
  def start
    super
    create_header_windows
    create_footer_window
    create_main_windows
    create_amount_window
    prepare
  end
 
  def create_header_windows
    create_help_window
    create_category_window
  end
 
  def create_main_windows
    create_inventory_window
    create_stash_window
  end
 
  def create_help_window
    @help = Window_Help.new
    @help.viewport = @viewport
  end
 
  def create_category_window
    @category = Window_ChestCategory.new
    @category.viewport = @viewport
    @category.y = @help.height
    @category.set_handler(:ok, method(:on_category_ok))
    @category.set_handler(:cancel, method(:return_scene))
  end
 
  def create_footer_window
    create_inv_footer
    create_st_footer
  end
 
  def create_inv_footer
    @inv_footer = Window_ChestFooter.new(INV_VOCAB,$game_party,0)
    @inv_footer.viewport = @viewport
  end
 
  def create_st_footer
    @st_footer = Window_ChestFooter.new(@st_vocab,$game_chests[@key],1)
    @st_footer.viewport = @viewport
  end
 
  def create_inventory_window
    x = 0
    y = @help.height + @category.height
    w = Graphics.width/2
    h = Graphics.height - y - @inv_footer.height
    @inventory = Window_Inventory.new(x,y,w,h)
    @inventory.viewport = @viewport
    @inventory.set_handler(:ok, method(:item_inventory_ok))
    @inventory.set_handler(:cancel, method(:on_inventory_cancel))
    @inventory.help_window = @help
    @category.item_window = @inventory
  end
 
  def create_stash_window
    x = Graphics.width / 2
    y = @inventory.y
    w = x
    h = @inventory.height
    @stash = Window_Stash.new(x,y,w,h,@key)
    @stash.viewport = @viewport
    @stash.set_handler(:ok, method(:item_stash_ok))
    @stash.set_handler(:cancel, method(:on_stash_cancel))
    @stash.help_window = @help
    @category.stash_window = @stash
  end
 
  def create_amount_window
    @amount = Window_ChestAmount.new
    @amount.viewport = @viewport
  end
 
  # for future plan ~
  def refresh_all_footers
    @inv_footer.refresh
    @st_footer.refresh
  end
 
  def prepare
    unselect_all
    @category.show
    @category.activate
    @item_phase = false
    deactivate_item_windows
    hide_amount
  end
 
  def deactivate_item_windows
    @inventory.deactivate
    @stash.deactivate
  end
 
  def on_category_ok
    @category.deactivate
    activate_itemlist
    @item_phase = true
  end
 
  def item_inventory_ok
    unless @inventory.item
      @inventory.activate
      return
    end
    if @inventory.item_number < SHOW_AMOUNT_MIN
      store_items(1)
      @inventory.activate
      refresh_itemlist
    else
      @last_active = :inventory
      input_amount(@inventory)
    end
  end
 
  def item_stash_ok
    unless @stash.item
      @stash.activate
      return
    end
    if @stash.item_number < SHOW_AMOUNT_MIN
      gain_items(1)
      @stash.activate
      refresh_itemlist
    else
      @last_active = :stash
      input_amount(@stash)
    end
  end
 
  def on_stash_cancel
    @last_active = :stash
    memorize_st
    prepare
  end
 
  def on_inventory_cancel
    @last_active = :inventory
    memorize_inv
    prepare
  end
 
  def input_amount(window)
    memorize_all
    if window.equal?(@stash)
      @inventory.unselect
    else
      @stash.unselect
    end
    @amount.open
    @amount.item_window = window
    deactivate_item_windows
  end
 
  def hide_amount
    Sound.play_cancel
    @amount.close
  end
 
  def update
    super
    select_item_phase if @item_phase
    input_amount_phase if @amount.open?
  end
 
  def select_item_phase
    gain_all_items if trigger_gain_all_item?
    switch_window if Input.repeat?(:RIGHT) || Input.repeat?(:LEFT)
  end
 
  def input_amount_phase
    activate_itemlist if Input.trigger?(:B)
    if @amount.item_window.equal?(@stash) && Input.trigger?(:C)
      gain_items(@amount.amount)
    elsif @amount.item_window.equal?(@inventory) && Input.trigger?(:C)
      store_items(@amount.amount)
    end
  end
 
  def switch_window
    if @inventory.active
      switch_stash
    elsif @stash.active
      switch_inventory
    end
  end
 
  def switch_inventory
    memorize_st
    @stash.deactivate
    @stash.unselect
    @inventory.activate
    inv_select
  end
 
  def switch_stash
    @stash.activate
    st_select
    memorize_inv
    @inventory.deactivate
    @inventory.unselect
  end
 
  def gain_all_items
    if @stash.active
      @stash.data.each do |item|
        gain_items(@stash.item_number(item),item)
      end
      @stash.select(0)
    else
      @inventory.data.each do |item|
        store_items(@inventory.item_number(item),item)
      end
      @inventory.select(0)
    end
    refresh_itemlist
  end
 
  def trigger_gain_all_item?
    Input.press?(THEO::CHEST::TRIGGER_GAIN_ALL) && Input.trigger?(:C)
  end
 
  def gain_items(amount, item = @stash.item)
    $game_party.gain_item(item,amount)
    $game_chests[@key].lose_item(item,amount)
    on_amount_confirm if @amount.open?
  end
 
  def store_items(amount, item = @inventory.item)
    $game_chests[@key].gain_item(item,amount)
    $game_party.lose_item(item,amount)
    on_amount_confirm if @amount.open?
  end
 
  def refresh_itemlist
    @stash.refresh   
    @inventory.refresh
  end
 
  def on_amount_confirm
    Sound.play_ok
    refresh_itemlist
    unselect_all
    activate_itemlist
  end
 
  def activate_itemlist
    hide_amount
    case @last_active
    when :stash
      activate_stash
    when :inventory
      activate_inventory
    end
    @item_phase = true
  end
 
  def activate_inventory
    @inventory.activate
    @stash.unselect
    inv_select
  end
 
  def activate_stash
    @stash.activate
    @inventory.unselect
    st_select
  end
 
  def memorize_inv
    $game_party.last_inv = @inventory.index
  end
 
  def memorize_st
    $game_party.last_st = @stash.index
  end
 
  def inv_select
    @inventory.index = [[$game_party.last_inv,@inventory.item_max-1].min,0].max
  end
 
  def st_select
    @stash.index = [[$game_party.last_st,@stash.item_max-1].min,0].max
  end
 
  def unselect_all
    @inventory.unselect
    @stash.unselect
  end
 
  def memorize_all
    memorize_inv
    memorize_st
  end
 
end

class Window_ChestCategory < Window_ItemCategory
  attr_reader :stash_window
 
  def col_max
    return 4
  end
 
  def update
    super
    @stash_window.category = current_symbol if @stash_window
  end
 
  def make_command_list
    add_command(THEO::CHEST::ALL_VOCAB, :all)
    add_command(Vocab::item,     :item)
    add_command(Vocab::weapon,   :weapon)
    add_command(Vocab::armor,    :armor)
  end
 
  def stash_window=(stash_window)
    @stash_window = stash_window
    update
  end
 
end

class Window_Inventory < Window_ItemList
  attr_reader :data
 
  def col_max
    return 1
  end
 
  def current_item_enabled?
    return true
  end
 
  def include?(item)
    case @category
    when :item
      item.is_a?(RPG::Item) && !item.key_item?
    when :weapon
      item.is_a?(RPG::Weapon)
    when :armor
      item.is_a?(RPG::Armor)
    when :all
      item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon) || item.is_a?(RPG::Item)
    else
      false
    end
  end
 
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, true,contents.width)
      draw_item_number(rect, item)
    end
  end
 
  def item_number(item = @data[index])
    $game_party.item_number(item)
  end
 
  def process_ok
    return if Input.press?(THEO::CHEST::TRIGGER_GAIN_ALL)
    super
  end
 
end

class Window_Stash < Window_ItemList
  attr_reader :data
 
  def initialize(x, y, width, height, key)
    @key = key
    super(x,y,width,height)
    @category = :none
    @data = []
  end
 
  def col_max
    return 1
  end
 
  def current_item_enabled?
    return true
  end
 
  def include?(item)
    case @category
    when :item
      item.is_a?(RPG::Item) && !item.key_item?
    when :weapon
      item.is_a?(RPG::Weapon)
    when :armor
      item.is_a?(RPG::Armor)
    when :all
      item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon) || item.is_a?(RPG::Item)
    else
      false
    end
  end
 
  def make_item_list
    @data = $game_chests[@key].all_items.select {|item| include?(item) }
    @data.push(nil) if include?(nil)
  end
 
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, true,contents.width)
      draw_item_number(rect, item)
    end
  end
 
  def draw_item_number(rect, item)
    draw_text(rect, sprintf(":%2d", $game_chests[@key].item_number(item)), 2)
  end
 
  def item_number(item = @data[index])
    $game_chests[@key].item_number(item)
  end
 
  def process_ok
    return if Input.press?(THEO::CHEST::TRIGGER_GAIN_ALL)
    super
  end
 
end

class Window_ChestAmount < Window_Base 
  attr_accessor :item_window
  attr_reader   :amount
 
  def initialize
    super(0,0,window_width,window_height)
    self.openness = 0
    reset_amount
    update_position
    refresh
  end
 
  def reset_amount
    @amount = 0
    refresh
  end
 
  def open
    super
    reset_amount
  end
 
  def update_position
    self.x = (Graphics.width / 2) - (self.width / 2)
    self.y = (Graphics.height / 2) - (self.height / 2)
  end
 
  def refresh
    contents.clear
    draw_text(0,0,contents.width,24,THEO::CHEST::AMOUNT_VOCAB,)
    draw_text(0,0,contents.width,24,@amount,2)
  end
 
  def window_width
    return 200
  end
 
  def window_height
    return 24+24
  end
 
  def update
    super
    if open?
      increment if Input.repeat?(:RIGHT)
      decrement if Input.repeat?(:LEFT)
      ten_increment if Input.repeat?(:UP)
      ten_decrement if Input.repeat?(:DOWN)
    end
  end
 
  def increment
    change_amount(1)
  end
 
  def decrement
    change_amount(-1)
  end
 
  def ten_increment
    change_amount(10)
  end
 
  def ten_decrement
    change_amount(-10)
  end
 
  def change_amount(modifier)
    @amount = [[@amount+modifier,0].max,max_amount].min
    refresh
  end
 
  def show
    super
    reset_amount
  end
 
  def max_amount
    @item_window.item_number rescue 0
  end
 
end

class Window_ChestFooter < Window_Base
 
  include THEO::CHEST
 
  def initialize(vocab,object,x)
    w = Graphics.width/2
    h = fitting_height(1)
    y = Graphics.height - h
    x = (Graphics.width/2) * x
    @vocab = vocab
    super(x,y,w,h)
    @object = object
    refresh
  end
 
  def refresh
    contents.clear
    cx = text_size(@vocab).width
    draw_text(0,0,contents.width,line_height,@vocab,1)
    #draw_text(cx,0,contents.width-cx,line_height,@object.all_items.size,2)
  end
 
end

module DataManager
 
  class << self
    alias pre_create_chest create_game_objects
    alias pre_chest_save_contents make_save_contents
    alias pre_extract_chests extract_save_contents
  end
 
  def self.create_game_objects
    pre_create_chest
    create_chest_object
  end
 
  def self.create_chest_object
    $game_chests = Game_Chest.new
  end
 
  def self.make_save_contents
    contents = pre_chest_save_contents
    contents[:chest] = $game_chests
    contents
  end
 
  def extract_save_contents(contents)
    pre_extract_chests(contents)
    $game_chests = contents[:chest]
  end
 
end

class Game_Chest
 
  def initialize
    @data = {}
    @explored = {}
  end
 
  def[](key)
    (@data[key] ||= Game_Stash.new)
  end
 
  def explored
    @explored
  end
 
end

class Game_Stash
  attr_accessor :items_stash
  attr_accessor :weapons_stash
  attr_accessor :armors_stash
 
  def initialize
    @items_stash = {}
    @weapons_stash = {}
    @armors_stash = {}
  end
 
  def refresh
    evaluate(@items_stash)
    evaluate(@weapons_stash)
    evaluate(@armors_stash)
  end
 
  def evaluate(stash)
    stash.keys.each do |key|
      stash.delete(key) if stash[key] <= 0
    end
  end
 
  def items
    @items_stash.keys.collect {|id| $data_items[id] }
  end
 
  def weapons
    @weapons_stash.keys.collect {|id| $data_weapons[id] }
  end
 
  def armors
    @armors_stash.keys.collect {|id| $data_armors[id] }
  end
 
  def all_items
    items + weapons + armors
  end
 
  def item_number(item)
    if item.is_a?(RPG::Item)
      return @items_stash[item.id] ||= 0
    elsif item.is_a?(RPG::Weapon)
      return @weapons_stash[item.id] ||= 0
    elsif item.is_a?(RPG::Armor)
      return @armors_stash[item.id] ||= 0
    end
    refresh
  end
 
  def gain_item(item, amount)
    return unless item
    stash = pick_stash(item)
    stash[item.id] = 0 if stash[item.id].nil?
    stash[item.id] += amount
    refresh
  end
 
  def lose_item(item,amount)
    gain_item(item,-amount)
  end
 
  def pick_stash(item)
    if item.is_a?(RPG::Item)
      return @items_stash
    elsif item.is_a?(RPG::Weapon)
      return @weapons_stash
    elsif item.is_a?(RPG::Armor)
      return @armors_stash
    end
  end
 
end

class Game_Party
  attr_accessor :last_inv
  attr_accessor :last_st
 
  alias pre_chest_init initialize
  def initialize
    pre_chest_init
    init_chest_cursors
  end
 
  def init_chest_cursors
    @last_inv   = 0
    @last_st = 0
  end
 
end

class Game_Interpreter
 
  def open_chest(st_vocab = THEO::CHEST::ST_VOCAB,key = [@map_id,@event_id])
    if st_vocab.is_a?(Numeric)
      key = st_vocab
      st_vocab = THEO::CHEST::ST_VOCAB
    end
    SceneManager.call_chest(key,st_vocab)
  end
 
  alias pre_chest_command_108 command_108
  def command_108
    pre_chest_command_108
    read_chest_comments
  end
 
  def read_chest_comments
    map = @map_id
    event = @event_id
    key = [map,event]
    return if $game_chests.explored[key]
    @comments.each do |comment|
      case comment
      when THEO::CHEST::REGEXP::ITEM_REGEX
        x = $1.scan(/\d+/)
        $game_chests[key].items_stash[x[0].to_i] = x[1].to_i
      when THEO::CHEST::REGEXP::WEAPON_REGEX
        x = $1.scan(/\d+/)
        $game_chests[key].weapons_stash[x[0].to_i] = x[1].to_i
      when THEO::CHEST::REGEXP::ARMOR_REGEX
        x = $1.scan(/\d+/)
        $game_chests[key].armors_stash[x[0].to_i] = x[1].to_i
      end
    end
    $game_chests.explored[key] = next_event_code != 108
  end
 
end

module SceneManager
 
  def self.call_chest(key,st_vocab = THEO::CHEST::ST_VOCAB)
    @stack.push(@scene)
    @scene = Scene_Chest.new(key,st_vocab)
  end
 
end
    Credits


    • <TheoAllen>

    Thanks

    • I'd like to thank TheoAllen for giving me permission to translate this script. I'll be sure to translate more if I have the time. :)

    Support


    Either post on this thread, or pm TheoAllen on RMRK.

    Known Compatibility Issues

    None that I know of as of now.

    Demo


    http://www.mediafire.com/?3rly4flbrx5t4ht

    Author's Notes


    Again, i'd like to thank TheoAllen for giving me the permission to translate this script. I'll be sure to translate more of his scripts if I have the time :)

    Questions

    Q1:
    • "Is there a way to make it say something other than "Stash"?"
    Use a script call, for example, you want to change stash into garbage, so you use [/list]
    Code: [Select]
    open_chest("Garbage")
      Terms of Use


      Credit the creator, TheoAllen. You're free to edit by your own as long as you don't claim it's yours.
      If you want to use for a commercial project, share the profit with him. And don't forget to give him a free copy of the game.[/list]
      « Last Edit: July 05, 2013, 09:16:36 AM by AbsoluteIce »
      なんでやねん

      *
      Rep:
      Level 97
      2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best RPG Maker User (Scripting)2011 Best Use of Avatar and Signature Space2010 Most Mature Member2010 Favourite Staff Member
      It looks like a great script. Thanks TheoAllen for writing it and thanks for translating it for us AbsoluteIce.

      ****
      Rep:
      Level 63
      オ・マイ・ゴッド ・㉨・
      It looks like a great script. Thanks TheoAllen for writing it and thanks for translating it for us AbsoluteIce.
      Thanks for the compliments, MA. I'll be sure to update this if Theo updates his script :)
      なんでやねん

      *
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      Rep:
      Level 96
      &&&&&&&&&&&&&&&&&&&&&&&&&&&
      GIAW 14: 2nd Place (Hard Mode)2013 Zero to Hero2013 Biggest Drama WhoreParticipant - GIAW 11Secret Santa 2013 ParticipantFor taking arms in the name of your breakfast.
      Wow. I'm using this for sure. I really like this script.

      Do you have any contact with TheoAllen? I would like to ask him something.

      Q: "Is there a way to make it say something other than "Stash"?"

      If I used this on a garbage can, it would be cool if I could have it say "Garbage" instead of stash.
      &&&&&&&&&&&&&&&&

      ****
      Rep:
      Level 63
      オ・マイ・ゴッド ・㉨・
      Wow. I'm using this for sure. I really like this script.

      Do you have any contact with TheoAllen? I would like to ask him something.

      Q: "Is there a way to make it say something other than "Stash"?"

      If I used this on a garbage can, it would be cool if I could have it say "Garbage" instead of stash.
      Correct me if i'm wrong, TheoAllen, but I think you just have to go to the 'configuration' part of the script, go under vocab, and change the word 'Stash' next to ST_Vocab and change it to whatever you want to call it.
      Example :
      Code: [Select]
      # Configuration :
      # =============================================================================
      module THEO
        module CHEST
          # =========================================================================
          # Vocabs
          # -------------------------------------------------------------------------
            AMOUNT_VOCAB  = "Amount :"    # Vocab for said amount.
            ALL_VOCAB     = "All"         # Vocab for all categories.
            INV_VOCAB     = "Inventory"   # Vocab for inventory.
            ST_VOCAB      = "Garbage"       # Vocab for stash/storage.
      « Last Edit: June 28, 2013, 05:12:42 AM by AbsoluteIce »
      なんでやねん

      *
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      Rep:
      Level 96
      &&&&&&&&&&&&&&&&&&&&&&&&&&&
      GIAW 14: 2nd Place (Hard Mode)2013 Zero to Hero2013 Biggest Drama WhoreParticipant - GIAW 11Secret Santa 2013 ParticipantFor taking arms in the name of your breakfast.
      Sorry, I meant dynamically. I don't want the treasure chests to labeled garbage too. :P
      &&&&&&&&&&&&&&&&

      **
      Rep:
      Level 68
      RMIDans ~
      Wow. I'm using this for sure. I really like this script.

      Do you have any contact with TheoAllen? I would like to ask him something.

      Q: "Is there a way to make it say something other than "Stash"?"

      If I used this on a garbage can, it would be cool if I could have it say "Garbage" instead of stash.
      No, in this version, you can't. Btw, that's great idea. That will be my next update. Stay tune ~
      My scripts collection :
      http://theolized.blogspot.com/
      Sorry if I made it in Indonesian

      Supporter of :


      Make your own party composition based on 20 playable characters :

      **
      Rep:
      Level 68
      RMIDans ~
      Sorry for late reply. I've been busy with my personal project recently.
      Btw, as Lord Stark request. I've updated this script
      You can see the changelog here http://theolized.blogspot.com/2013/06/update-chest-system-v11.html

      I'm sorry if my blog is in Indonesian. But don't worry. the script documentation is still in english ;)
      My scripts collection :
      http://theolized.blogspot.com/
      Sorry if I made it in Indonesian

      Supporter of :


      Make your own party composition based on 20 playable characters :

      *
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      Rep:
      Level 96
      &&&&&&&&&&&&&&&&&&&&&&&&&&&
      GIAW 14: 2nd Place (Hard Mode)2013 Zero to Hero2013 Biggest Drama WhoreParticipant - GIAW 11Secret Santa 2013 ParticipantFor taking arms in the name of your breakfast.
      You added my idea.  :tpg:
      This is one of my favorite scripts in a while. Thank you for sharing this with us.

      EDIT: Also adding names is super easy. I like how you did that.
      &&&&&&&&&&&&&&&&

      **
      Rep:
      Level 68
      RMIDans ~
      You're welcome. And I also want to thanks for your idea.
      Share to the others if you think it's useful :)
      My scripts collection :
      http://theolized.blogspot.com/
      Sorry if I made it in Indonesian

      Supporter of :


      Make your own party composition based on 20 playable characters :

      ****
      Rep:
      Level 63
      オ・マイ・ゴッド ・㉨・
      Sunday, June 30th, 2013.
      - Script updated to 1.1 thanks to TheoAllen.
      なんでやねん

      ****
      Rep:
      Level 63
      オ・マイ・ゴッド ・㉨・
      Friday, July 05, 2013
      - Very short demo for the newcomers to learn how to use the script  :)
      なんでやねん

      **
      Rep:
      Level 68
      RMIDans ~
      Script updated. I add some compatibility patch for my limited inventory
      http://pastebin.com/QhXQ7YBk
      The menu now looks like this
      My scripts collection :
      http://theolized.blogspot.com/
      Sorry if I made it in Indonesian

      Supporter of :


      Make your own party composition based on 20 playable characters :