SephirothSpawn
Sponsor
Code:
class Window_AquireItem < Window_Base
def initialize(kind, items)
super(160, 128, 320, 96)
item_max = 0
items.each do |list|
if list.is_a?(Hash)
item_max += list.keys.size
else
item_max += 1
end
end
self.contents = Bitmap.new(width - 32, item_max * 32 + 32)
self.opacity = 160
refresh(kind, items)
end
def refresh(kind, items)
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 288, 32,
'You Gained the Following Item(s)', 1)
self.contents.font.color = normal_color
y = 32
case kind
when 0 # Just Items
items[0].each do |item_id, n|
item = $data_items[item_id]
next if item.nil?
draw_item(y, item, n)
y += 32
end
when 1 # Just Weapons
items[0].each do |weapon_id, n|
item = $data_weapons[weapon_id]
next if item.nil?
draw_item(y, item, n)
y += 32
end
when 2 # Just Armors
items[0].each do |armor_id, n|
item = $data_armors[armor_id]
next if item.nil?
draw_item(y, item, n)
y += 32
end
when 3 # Money
draw_gold(y, items[0])
when 4 # All
items[0].each do |item_id, n|
item = $data_items[item_id]
next if item.nil?
draw_item(y, item, n)
y += 32
end
items[1].each do |weapon_id, n|
item = $data_weapons[weapon_id]
next if item.nil?
draw_item(y, item, n)
y += 32
end
items[2].each do |armor_id, n|
item = $data_armors[armor_id]
next if item.nil?
draw_item(y, item, n)
y += 32
end
draw_gold(y, items[3])
end
end
def draw_item(y, item, n)
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(4, y + 4, icon, Rect.new(0, 0, 24, 24))
self.contents.draw_text(32, y, 288, 32, item.name)
self.contents.draw_text(- 4, y, 288, 32, n.to_s, 2)
end
def draw_gold(y, n)
self.contents.draw_text(4, y, 320, 32, 'Gained Gold :')
self.contents.draw_text(-4, y, 288, 32, n.to_s, 2)
end
def update
if Input.press?(Input::UP)
self.oy -= 4 if self.oy > 0
elsif Input.press?(Input::DOWN)
self.oy += 4 if self.oy < self.contents.height - 64
end
end
end
class Interpreter
def gain_item(items = {})
$game_system.se_play($data_system.decision_se)
items.each {|id, n| $game_party.gain_item(id, n)}
$scene.auto_item_aquire(0, items)
end
def gain_weapon(weapons = {})
$game_system.se_play($data_system.decision_se)
weapons.each {|id, n| $game_party.gain_weapon(id, n)}
$scene.auto_item_aquire(1, weapons)
end
def gain_armor(armors = {})
$game_system.se_play($data_system.decision_se)
armors.each {|id, n| $game_party.gain_armor(id, n)}
$scene.auto_item_aquire(2, armors)
end
def gain_gold(amount)
$game_system.se_play($data_system.decision_se)
$game_party.gain_gold(amount)
$scene.auto_item_aquire(3, amount)
end
def gain_combined(items = {}, weapons = {}, armors = {}, gold = 0)
$game_system.se_play($data_system.decision_se)
items.each {|id, n| $game_party.gain_item(id, n)}
weapons.each {|id, n| $game_party.gain_weapon(id, n)}
armors.each {|id, n| $game_party.gain_armor(id, n)}
$scene.auto_item_aquire(4, items, weapons, armors, gold)
end
end
class Scene_Map
alias seph_autoaqitem_scnmap_update update
def update
unless @autoaqitem_window.nil?
update_auto_aquire
return
end
seph_autoaqitem_scnmap_update
end
def update_auto_aquire
$game_map.update
$game_system.map_interpreter.update
$game_system.update
$game_screen.update
@spriteset.update
@message_window.update
@autoaqitem_window.update
if Input.trigger?(Input::C)
@autoaqitem_window.dispose
@autoaqitem_window = nil
end
end
def auto_item_aquire(kind, *items)
@autoaqitem_window = Window_AquireItem.new(kind, items)
end
end
Now, there is a gain_gold method to use in the call script. Also, the gain_combined method has gold tacked on to the end of the argument list.
Let me know if you need any help with it.