[RMVX ACE] ADDING A STORE ALL FUNCTION TO GALV'S ITEM/BANK STORAGE

Posts

Pages: 1
Hi all Kumori here!

So let's cut to the chase. In my game, there are certain points were I'd like the player's inventory to be completely empty.

I would like to do this without removing all of the items. My game uses Galv's Item/Bank Storage V.1.9

I'd like a simple script call or function to move your entire current inventory to the

bank including you're items, weapons, key items and armor.

I really do need this script for the game I'm working on I'll give you full credit in the credits if

you can add this function thanks! :D



#------------------------------------------------------------------------------#

# Galv's Item/Bank Storage

#------------------------------------------------------------------------------#

# For: RPGMAKER VX ACE

# Version 1.9

#------------------------------------------------------------------------------#

# 2016-06-09 - Version 1.9 - Bug with removing an entire stack fixed

# 2015-11-12 - Version 1.8 - Bug with stored item stacks and counting.

# 2012-10-24 - Version 1.7 - Added multiple storages controlled with variable.

# - Changed name to Item/Bank Storage

# - changed alias naming for compatibility

# 2012-10-19 - Version 1.6 - Bug fixes

# 2012-10-19 - Version 1.5 - Fixed a max gold and withdrawing issue.

# - Added deposit all and withdraw all gold buttons.

# - party gold and item limits can now be set or use

# - the limit from a limit breaking script. (in theory)

# 2012-10-18 - Version 1.4 - Other small fixes

# 2012-10-18 - Version 1.3 - Added banking SE

# 2012-10-18 - Version 1.2 - Added gold storage and more script calls

# 2012-10-17 - Version 1.1 - Added script calls to control stored items.

# 2012-10-16 - Version 1.0 - Released

#------------------------------------------------------------------------------#

# An item storage script. Allows the player to store as many items as he/she

# requires in bank-like storage that can be accessed from anywhere.

#

# This script differs to my "Multiple Storage containers" script in that you

# can have "banks" that store items and gold and can be accessed from anywhere.

# It was designed to be used for one bank, but now has option to have more if

# required.

#

# My "Multiple Storage Containers" script stores only items within certain

# events that can only be accessed by activating the particular event. This was

# designed for location specific containers like chests, barrels, etc.

#

# Here are some script calls that might be useful:

#------------------------------------------------------------------------------#

#

# open_storage # Opens the item storage scene

#

# store_add(type, id, amount) # creates an item in storage

# store_rem(type, id, amount) # destroys an item in storage

# store_count(type, id) # returns amount of an item in storage

#

# bank_add(amount) # adds amount of gold to bank

# bank_rem(amount) # removes amount of gold from bank

# bank_count # returns amount of gold in bank

#

#------------------------------------------------------------------------------#

# EXPLAINATION:

# type this can be "weapon", "armor" or "item"

# id the ID of the item/armor/weapon

# amount the number of the item/armor/weapon/gold you want to remove

#

# EXAMPLE OF USE:

# store_add("weapon", 5, 20)

# store_rem("item", 18, 99)

# store_count("armor", 1)

# bank_add(100)

#------------------------------------------------------------------------------#

# More setup options further down.

#------------------------------------------------------------------------------#



$imported = {} if $imported.nil?

$imported["Item_Storage"] = true



module Storage



#------------------------------------------------------------------------------#

# SCRIPT SETUP OPTIONS

#------------------------------------------------------------------------------#



# BOX VARIABLE

BOX_VAR = 0 # This is the variable ID to use to determine which box you are

# adding/removing items from. Set the variable to a box number

# right before any add/remove or opening storage script calls

# to tell them which box they will affect.

# Set to 0 if you only want 1 box storage in your game. You

# then don't have to change a variable before each script call.





# COMMAND LIST VOCAB

STORE = "Store"

REMOVE = "Take"

CANCEL = "Exit"



# OTHER VOCAB

IN_STORAGE = "Storage"

IN_INVENTORY = "In Bag"



GOLD_INVENTORY = "Party:"

GOLD_BANKED = "Banked:"

BANK_HELP = "Hold DOWN to deposit. Hold UP to withdraw." + "\n" +

"Press R to deposit all. Press L to withdraw all."





# OTHER OPTIONS

SE = ["Open", 90, 100] # Sound effect when storing/removing an item

SE_BANK = ["Shop", 50, 150] # Repeating sound effect when banking gold

# ["SE Name", volume, pitch]



STORE_PRICELESS = true # Items worth 0 can be stored? true or false

STORE_KEY = true # Key items can be stored? true or false





# PARTY LIMITS

# NOTE: These limits set to 0 will use the default limits. In theory this will

# be compatible with a limit breaker script by leaving them at 0. Or you can

# set the party limits below to whatever you like.



MAX_GOLD = 0 # Max gold your PARTY can carry.

# This will overwrite the default limit.

# 0 means do not use this.



MAX_ITEMS = 0 # Max items your PARTY can carry.

# This will overwrite the default limit.

# 0 means do not use this.





#------------------------------------------------------------------------------#

# SCRIPT SETUP OPTIONS

#------------------------------------------------------------------------------#



end





class Scene_ItemBank < Scene_MenuBase

def start

super

check_storage_exists

create_help_window

create_command_window

create_dummy_window

create_bank_window

create_number_window

create_status_window

create_category_window

create_take_window

create_give_window



end



def check_storage_exists

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

end





#--------------------------------------------------------------------------

# Create Windows

#--------------------------------------------------------------------------

def create_command_window

@command_window = Window_BankCommand.new(Graphics.width)

@command_window.viewport = @viewport

@command_window.y = @help_window.height

@command_window.set_handler(:give, method(:command_give))

@command_window.set_handler(:take, method(:command_take))

@command_window.set_handler(:cancel, method(:return_scene))

end

def create_dummy_window

wy = @command_window.y + @command_window.height

wh = Graphics.height - wy

@dummy_window = Window_Base.new(0, wy, Graphics.width, wh)

@dummy_window.viewport = @viewport

end

def create_bank_window

@bank_window = Window_Bank.new

@bank_window.viewport = @viewport

@bank_window.x = 0

@bank_window.y = @help_window.height + @command_window.height

@bank_window.hide

@bank_window.set_handler(:ok, method(:on_bank_cancel))

@bank_window.set_handler(:cancel, method(:on_bank_cancel))



end



def create_number_window

wy = @dummy_window.y

wh = @dummy_window.height

@number_window = Window_BankNumber.new(0, wy, wh)

@number_window.viewport = @viewport

@number_window.hide

@number_window.set_handler(:ok, method(:on_number_ok))

@number_window.set_handler(:cancel, method(:on_number_cancel))

end

def create_status_window

wx = @number_window.width

wy = @dummy_window.y

ww = Graphics.width - wx

wh = @dummy_window.height

@status_window = Window_BankItems.new(wx, wy, ww, wh)

@status_window.viewport = @viewport

@status_window.hide

end

def create_category_window

@category_window = Window_ItemCategory.new

@category_window.viewport = @viewport

@category_window.help_window = @help_window

@category_window.y = @dummy_window.y

@category_window.hide.deactivate

@category_window.set_handler(:ok, method(:on_category_ok))

@category_window.set_handler(:cancel, method(:on_category_cancel))

end

def create_give_window

wy = @category_window.y + @category_window.height

wh = Graphics.height - wy

@give_window = Window_BankGive.new(0, wy, Graphics.width, wh)

@give_window.viewport = @viewport

@give_window.help_window = @help_window

@give_window.hide

@give_window.set_handler(:ok, method(:on_give_ok))

@give_window.set_handler(:cancel, method(:on_give_cancel))

@category_window.item_window = @give_window

end

def create_take_window

wy = @command_window.y + @command_window.height

wh = Graphics.height - wy

@take_window = Window_BankTake.new(0, wy, Graphics.width, wh)

@take_window.viewport = @viewport

@take_window.help_window = @help_window

@take_window.hide

@take_window.set_handler(:ok, method(:on_take_ok))

@take_window.set_handler(:cancel, method(:on_take_cancel))

@category_window.item_window = @take_window

end



#--------------------------------------------------------------------------

# * Activate Windows

#--------------------------------------------------------------------------

def activate_give_window

@category_window.show

@give_window.refresh

@give_window.show.activate

@status_window.hide

end

def activate_take_window

@take_window.select(0)

@take_window.refresh

@take_window.show.activate

@status_window.hide

end

def activate_bank_window

@bank_window.refresh

@bank_window.show.activate

@help_window.set_text(Storage::BANK_HELP)

end





#--------------------------------------------------------------------------

# HANDLER METHODS

#--------------------------------------------------------------------------

def on_category_ok

activate_give_window

@give_window.select(0)

end

def on_category_cancel

@command_window.activate

@dummy_window.show

@category_window.hide

@give_window.hide

end

def command_give

@dummy_window.hide

@category_window.show.activate

@give_window.show

@give_window.unselect

@give_window.refresh

end

def on_give_ok

@item = @give_window.item

if @item.nil?

RPG::SE.stop

Sound.play_buzzer

@give_window.activate

@give_window.refresh

return

else

@status_window.item = @item

@category_window.hide

@give_window.hide

@number_window.set(@item, max_give)

@number_window.show.activate

@status_window.show

end

end

def on_give_cancel

@give_window.unselect

@category_window.activate

@status_window.item = nil

@help_window.clear

end

def command_take

@dummy_window.hide

activate_take_window

@take_window.show

@take_window.refresh

end

def command_bank

#@dummy_window.hide

activate_bank_window

@bank_window.show

@bank_window.refresh

end

def on_bank_cancel

@command_window.activate

@dummy_window.show

@category_window.hide

@bank_window.hide

@help_window.clear

end

def on_take_ok

@item = @take_window.item

if @item.nil? || $game_party.multi_storage.empty? || $game_party.item_number(@item) == $game_party.max_item_number(@item)

RPG::SE.stop

Sound.play_buzzer

@take_window.activate

@take_window.refresh

return

elsif

@item = @take_window.item

@status_window.item = @item

@take_window.hide

@number_window.set(@item, max_take)

@number_window.show.activate

@status_window.show

end

end

def on_take_cancel

@take_window.unselect

@command_window.activate

@dummy_window.show

@take_window.hide

@status_window.item = nil

@help_window.clear

end

def on_number_ok

RPG::SE.new(Storage::SE[0], Storage::SE[1], Storage::SE[2]).play

case @command_window.current_symbol

when :take

do_take(@number_window.number)

when :give

do_give(@number_window.number)

end

end_number_input

@status_window.refresh

end

def on_number_cancel

Sound.play_cancel

end_number_input

end

def end_number_input

@number_window.hide

case @command_window.current_symbol

when :take

activate_take_window

when :give

activate_give_window

end

end



#--------------------------------------------------------------------------

# * Giving and taking methods

#--------------------------------------------------------------------------

def max_take

if $game_party.multi_storage(@item) > $game_party.max_item_number(@item) - $game_party.item_number(@item)

$game_party.max_item_number(@item) - $game_party.item_number(@item)

else

$game_party.multi_storage(@item)

end

end

def max_give

$game_party.item_number(@item)

end

def do_give(number)

$game_party.lose_item(@item, number)

if $game_party.multi_storage(@item).nil? || $game_party.multi_storage(@item) <= 0

$game_party.multi_storage_set(@item,number)

else

$game_party.multi_storage_change(@item,number)

end

end

def do_take(number)

return if @item.nil?

$game_party.gain_item(@item, number)

$game_party.multi_storage_change(@item,-number)

#$game_party.multi_storage.delete(@item) if $game_party.multi_storage(@item) <= 0

if $game_party.multi_storage.empty?

@take_window.activate

end

end



end # Scene_ItemBank < Scene_MenuBase





#------------------------------------------------------------------------------#

# Window Stored Items

#------------------------------------------------------------------------------#



class Window_StoreList_Bank < Window_Selectable

def initialize(x, y, width, height)

super

@category = :none

@data = []

end

def category=(category)

return if @category == category

@category = category

refresh

self.oy = 0

end

def col_max

return 2

end

def item_max

@data ? @data.size : 1

end

def item

@data && index >= 0 ? @data[index] : nil

end

def current_item_enabled?

enable?(@data[index])

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 :key_item

item.is_a?(RPG::Item) && item.key_item?

else

false

end

end

def enable?(item)

$game_party.multi_storage.has_key?(item)

end

def make_item_list

@data = $game_party.multi_storage_all.keys {|item| include?(item) }

@data.push(nil) if include?(nil)

end

def select_last

select(@data.index($game_party.last_item.object) || 0)

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, enable?(item))

draw_item_number(rect, item)

end

end

def draw_item_number(rect, item)

draw_text(rect, sprintf(":%2d", $game_party.multi_storage(item)), 2)

end

def update_help

@help_window.set_item(item)

end

def refresh

make_item_list

create_contents

draw_all_items

end

end # Window_StoreList_Bank < Window_Selectable





#------------------------------------------------------------------------------#

# Window Stored Item amount

#------------------------------------------------------------------------------#



class Window_BankNumber < Window_Selectable

attr_reader :number

def initialize(x, y, height)

super(x, y, window_width, height)

@item = nil

@max = 1

@number = 1

end

def window_width

return 304

end

def set(item, max)

@item = item

@max = max

@number = 1

refresh

end

def refresh

contents.clear

draw_item_name(@item, 0, item_y)

draw_number

end

def draw_number

change_color(normal_color)

draw_text(cursor_x - 28, item_y, 22, line_height, "×")

draw_text(cursor_x, item_y, cursor_width - 4, line_height, @number, 2)

end

def item_y

contents_height / 2 - line_height * 3 / 2

end

def cursor_width

figures * 10 + 12

end

def cursor_x

contents_width - cursor_width - 4

end

def figures

return 2

end

def update

super

if active

last_number = @number

update_number

if @number != last_number

Sound.play_cursor

refresh

end

end

end

def update_number

change_number(1) if Input.repeat?(:RIGHT)

change_number(-1) if Input.repeat?(:LEFT)

change_number(10) if Input.repeat?(:UP)

change_number(-10) if Input.repeat?(:DOWN)

end

def change_number(amount)

@number = [[@number + amount, @max].min, 1].max

end

def update_cursor

cursor_rect.set(cursor_x, item_y, cursor_width, line_height)

end



end # Window_BankNumber < Window_Selectable





#------------------------------------------------------------------------------#

# Window Store Item Status

#------------------------------------------------------------------------------#



class Window_BankItems < Window_Base

def initialize(x, y, width, height)

super(x, y, width, height)

@item = nil

@page_index = 0

refresh

end

def refresh

contents.clear

draw_possession(4, 0)

draw_stored(4, line_height)

draw_equip_info(4, line_height * 2) if @item.is_a?(RPG::EquipItem)

end

def item=(item)

@item = item

refresh

end

def draw_possession(x, y)

rect = Rect.new(x, y, contents.width - 4 - x, line_height)

change_color(system_color)

draw_text(rect, Storage::IN_INVENTORY)

change_color(normal_color)

draw_text(rect, $game_party.item_number(@item), 2)

end

def draw_stored(x, y)

rect = Rect.new(x, y, contents.width - 4 - x, line_height)

change_color(system_color)

draw_text(rect, Storage::IN_STORAGE)

change_color(normal_color)

stored_amount = $game_party.multi_storage(@item)

stored_amount = 0 if stored_amount.nil?

draw_text(rect, stored_amount, 2)

end

def draw_equip_info(x, y)

status_members.each_with_index do |actor, i|

draw_actor_equip_info(x, y + line_height * (i * 2.4), actor)

end

end

def status_members

$game_party.members[@page_index * page_size, page_size]

end

def page_size

return 4

end

def page_max

($game_party.members.size + page_size - 1) / page_size

end

def draw_actor_equip_info(x, y, actor)

enabled = actor.equippable?(@item)

change_color(normal_color, enabled)

draw_text(x, y, 112, line_height, actor.name)

item1 = current_equipped_item(actor, @item.etype_id)

draw_actor_param_change(x, y, actor, item1) if enabled

draw_item_name(item1, x, y + line_height, enabled)

end

def draw_actor_param_change(x, y, actor, item1)

rect = Rect.new(x, y, contents.width - 4 - x, line_height)

change = @item.params[param_id] - (item1 ? item1.params[param_id] : 0)

change_color(param_change_color(change))

draw_text(rect, sprintf("%+d", change), 2)

end

def param_id

@item.is_a?(RPG::Weapon) ? 2 : 3

end

def current_equipped_item(actor, etype_id)

list = []

actor.equip_slots.each_with_index do |slot_etype_id, i|

list.push(actor.equips[i]) if slot_etype_id == etype_id

end

list.min_by {|item| item ? item.params[param_id] : 0 }

end

def update

super

update_page

end

def update_page

if visible && Input.trigger?(:A) && page_max > 1

@page_index = (@page_index + 1) % page_max

refresh

end

end



end # Window_BankItems < Window_Base





#------------------------------------------------------------------------------#

# Window Give Item

#------------------------------------------------------------------------------#



class Window_BankGive < Window_ItemList

def initialize(x, y, width, height)

super(x, y, width, height)

end

def current_item_enabled?



enable?(@data[index])

end

def enable?(item)

if item.is_a?(RPG::Item)

return false if item.key_item? && !Storage::STORE_KEY

end

if Storage::STORE_PRICELESS

true

else

item && item.price > 0

end

end

end





#------------------------------------------------------------------------------#

# Window Take Item

#------------------------------------------------------------------------------#



class Window_BankTake < Window_StoreList_Bank

def initialize(x, y, width, height)

super(x, y, width, height)

end

def current_item_enabled?

enable?(@data[index])

end

def enable?(item)

$game_party.multi_storage[item] != 0 && $game_party.item_number(item) < $game_party.max_item_number(@item)

end

end





#------------------------------------------------------------------------------#

# Window Command

#------------------------------------------------------------------------------#



class Window_BankCommand < Window_HorzCommand

def initialize(window_width)

@window_width = window_width

super(0, 0)

end

def window_width

@window_width

end

def col_max

return 4

end

def make_command_list

add_command(Storage::STORE, :give)

add_command(Storage::REMOVE, :take)

add_command(Storage::CANCEL, :cancel)

end

end





#------------------------------------------------------------------------------#

# Window Bank

#------------------------------------------------------------------------------#



class Window_Bank < Window_Selectable

def initialize

super(0, 0, window_width, fitting_height(2))

refresh

@deposit_rate = 1

@withdraw_rate = 1

end

def window_width

return Graphics.width / 2

end

alias galv_bank_update update

def update

galv_bank_update

gold_transfer if self.active

end

def gold_transfer

if Input.repeat?(:DOWN) && $game_party.gold > 0 || Input.repeat?(:UP) && $game_party.gold_stored > 0 && $game_party.gold < $game_party.max_gold

RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play

end

if Input.press?(:DOWN)

before = $game_party.gold

$game_party.lose_gold(@deposit_rate)

after = $game_party.gold

$game_party.gold_stored += before - after

@deposit_rate += 1

refresh

end

if Input.trigger?(:R) && !Input.press?(:DOWN) && !Input.press?(:UP)

return if $game_party.gold == 0

before = $game_party.gold

$game_party.lose_gold($game_party.gold)

after = $game_party.gold

$game_party.gold_stored += before - after

refresh

RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play

end

if !Input.press?(:DOWN)

@deposit_rate = 1

end

if Input.press?(:UP)

return if $game_party.gold == $game_party.max_gold

@withdraw_rate = $game_party.gold_stored if @withdraw_rate >= $game_party.gold_stored

if @withdraw_rate + $game_party.gold > $game_party.max_gold

@withdraw_rate = $game_party.max_gold - $game_party.gold

end

before = $game_party.gold_stored

$game_party.gold_stored -= @withdraw_rate

after = $game_party.gold_stored

$game_party.gain_gold(before - after)

if $game_party.gold_stored == 0

return refresh

end

@withdraw_rate += 1

refresh

end



if Input.trigger?(:L) && !Input.press?(:DOWN) && !Input.press?(:UP)

take_all_gold = $game_party.gold_stored

return if $game_party.gold == $game_party.max_gold || $game_party.gold_stored == 0

if take_all_gold + $game_party.gold > $game_party.max_gold

take_all_gold = $game_party.max_gold - $game_party.gold

end

before = $game_party.gold_stored

$game_party.gold_stored -= take_all_gold

after = $game_party.gold_stored

$game_party.gain_gold(before - after)

refresh

RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play

end

if !Input.press?(:UP)

@withdraw_rate = 1

end

end

def refresh

contents.clear

draw_gold_location(Storage::GOLD_INVENTORY, 0, 0, 250)

draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)

draw_gold_location(Storage::GOLD_BANKED, 0, line_height * 1, 250)

draw_currency_value(value_stored, currency_unit, 4, line_height * 1, contents.width - 8)

end

def draw_gold_location(vocab, x, y, width)

change_color(system_color)

draw_text(x, y, width, line_height, vocab)

end

def value

$game_party.gold

end

def value_stored

$game_party.gold_stored

end

def currency_unit

Vocab::currency_unit

end

def open

refresh

super

end

end





#------------------------------------------------------------------------------#

# Game Party Additions

#------------------------------------------------------------------------------#





class Game_Party < Game_Unit

attr_accessor :multi_storage

attr_accessor :gold_stored



alias galv_bank_init_all_items init_all_items

def init_all_items

galv_bank_init_all_items

@storage = {}

@gold_stored = 0

end



def multi_storage(item = nil)

# Test for storage, create if not there.

@storage[$game_variables[Storage::BOX_VAR]] ||= {:w => {},:a => {}, :i => {}}



if !item

return @storage[$game_variables[Storage::BOX_VAR]]

else

type = mstore_type(item)

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] ||= 0

return @storage[$game_variables[Storage::BOX_VAR]][type][item.id]

end

end



def multi_storage_all

all = {}



@storage[$game_variables[Storage::BOX_VAR]][:i].each { |id|

all[$data_items[id[0]]] = id[1] if id[1] > 0

}

@storage[$game_variables[Storage::BOX_VAR]][:w].each { |id|

all[$data_weapons[id[0]]] = id[1] if id[1] > 0

}

@storage[$game_variables[Storage::BOX_VAR]][:a].each { |id|

all[$data_armors[id[0]]] = id[1] if id[1] > 0

}

return all

end



def mstore_type(item)

if item.is_a?(RPG::Weapon)

return :w

elsif item.is_a?(RPG::Armor)

return :a

else

return :i

end

end



def multi_storage_change(item,amount)

type = mstore_type(item)

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] ||= 0

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] += amount



if @storage[$game_variables[Storage::BOX_VAR]][type][item.id] <= 0

@storage[$game_variables[Storage::BOX_VAR]][type].delete_if { |key,value|

value <= 0

}

end



end



def multi_storage_set(item, amount)

type = mstore_type(item)

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] ||= 0

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] = amount



if @storage[$game_variables[Storage::BOX_VAR]][type][item.id] <= 0

@storage[$game_variables[Storage::BOX_VAR]][type].delete_if { |key,value|

key >= 0

}

end

end



def gold_stored

@gold_stored

end



alias galv_bank_max_gold max_gold

def max_gold

return Storage::MAX_GOLD if Storage::MAX_GOLD > 0

galv_bank_max_gold

end



alias galv_bank_max_item_number max_item_number

def max_item_number(item)

return Storage::MAX_ITEMS if Storage::MAX_ITEMS > 0

return 99 if item.nil?

galv_bank_max_item_number(item)

end



end # Game_Party < Game_Unit





class Game_Interpreter

def store_add(type, id, amount)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

if $game_party.multi_storage(@item).nil?

$game_party.multi_storage_set(@item,amount)

else

$game_party.multi_storage_change(@item,amount)

end

end

def store_rem(type, id, amount)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

return if $game_party.multi_storage(@item).nil?

if $game_party.multi_storage(@item) <= amount

#$game_party.multi_storage.delete(@item)

$game_party.multi_storage_set(@item,-amount)

else

$game_party.multi_storage_change(@item,-amount)

end

end



def store_count(type, id)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

# Issue here with item instance being different when game saves - therefore

# the count is incorrect.

# This issue is also persistant when adding things to storage

# needs fixing

p "Store item referring issue"

return 0 if $game_party.multi_storage(@item).nil?

$game_party.multi_storage(@item)

end



def bank_add(amount)

$game_party.gold_stored += amount

end

def bank_rem(amount)

$game_party.gold_stored -= amount

$game_party.gold_stored = 0 if $game_party.gold_stored < 0

end

def bank_count

$game_party.gold_stored

end

def open_storage

SceneManager.call(Scene_ItemBank)

end

end
I wasn't able to make this plugin work, but I came up with a couple of commands that should theoretically allow you to move a player's inventory yourself without using the windows. It will still have to be done manually instead of all items at once.

Try adding these lines to the Game_Interpreter class at the bottom of the script and calling them the same way you would other script calls:

  def force_give(type, id, amount)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

if $game_party.multi_storage(@item).nil?

$game_party.multi_storage_set(@item,amount)

else

$game_party.multi_storage_change(@item,amount)

end

end


def force_take(number)

return if @item.nil?

$game_party.gain_item(@item, number)

$game_party.multi_storage_change(@item,-number)

#$game_party.multi_storage.delete(@item) if $game_party.multi_storage(@item) <= 0

if $game_party.multi_storage.empty?

@take_window.activate

end

end
Marrend
Guardian of the Description Thread
21806
Not 100% sure about storing key items, but...

def store_all
  while $game_party.items.size > 0
    item = $game_party.items[0]
    store_add("item", item.id, $game_party.item_number(item))
    $game_party.gain_item(item, $game_party.item_number(item) * -1)
  end
  
  while $game_party.weapons.size > 0
    item = $game_party.weapons[0]
    store_add("weapon", item.id, $game_party.item_number(item))
    $game_party.gain_item(item, $game_party.item_number(item) * -1)
  end
  
  while $game_party.armors.size > 0
    item = $game_party.armors[0]
    store_add("armor", item.id, $game_party.item_number(item))
    $game_party.gain_item(item, $game_party.item_number(item) * -1)
  end
end

...this seems to function.

*Edit: Code updated because I was only testing one type of item at a time, and generally failing at logic/math. Can confirm that this stores key items.

*Edit2: You don't have to put this function definition into the Game_Interpreter class. It can be placed into it's own code-section, or with random miscellaneous hacks scripts you might be using. As far as I'm aware, it can be used as as-is, as a regular function-call, and, can be called in classes/methods outside of Game_Interpreter.
author=Marrend
Not 100% sure about storing key items, but...

def store_all
  while $game_party.items.size > 0
    item = $game_party.items[0]
    store_add("item", item.id, $game_party.item_number(item))
    $game_party.gain_item(item, $game_party.item_number(item) * -1)
  end
  
  while $game_party.weapons.size > 0
    item = $game_party.weapons[0]
    store_add("weapon", item.id, $game_party.item_number(item))
    $game_party.gain_item(item, $game_party.item_number(item) * -1)
  end
  
  while $game_party.armors.size > 0
    item = $game_party.armors[0]
    store_add("armor", item.id, $game_party.item_number(item))
    $game_party.gain_item(item, $game_party.item_number(item) * -1)
  end
end

...this seems to function.

*Edit: Code updated because I was only testing one type of item at a time, and generally failing at logic/math. Can confirm that this stores key items.

*Edit2: You don't have to put this function definition into the Game_Interpreter class. It can be placed into it's own code-section, or with random miscellaneous hacks scripts you might be using. As far as I'm aware, it can be used as as-is, as a regular function-call, and, can be called in classes/methods outside of Game_Interpreter.
Oh man you're seriously a life saver I was pulling my hair out trying to figure out how to add a function like this it was really necessary for my game! Thanks for you're help Marrend!
Edit: This works like a charm I was expecting some kind of pause in the game when it stored all of the items, but it works as smooth as butter! Thanks :D
Pages: 1