Gained item/gold window. - Jimmie - 08-28-2005
Gained item/gold window
by Jimmie
Aug 28 2005
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.
Introduction
This makes a window pop up telling the player that he has gained gold/items and it stays up till "C" is pressed. Have fun.
Screenshots
Installation
Copy the script below into a new slot above main. But really, get updated versions from here instead.
Code: #==============================================================================
# ** Item and Gold gained Window
# ---- Edited by Nitt for "D&D Currencies"
# ---- Fixed by Nitt to allow easier calling and weather effects
# ---- Easier calling. Removed "D&D Currencies" support and dependancy.
# Version 2.3b
#==============================================================================
#--------------------------------------------------------------------------
# This window can be displayed whenever the player gains items or gold.
# It will automatically add the items and gold as well, effectively
# replacing the event commands themselves.
#--------------------------------------------------------------------------
class Scene_Map
def item_gain(*args)
if args.last.is_a?(Integer)
gold = args.pop
else
@gold = 0
end
Audio.me_stop
Audio.me_play("Audio/ME/011-Item02", 100, 100)
window=Window_ItemGain.new(args, gold)
window.opacity = 175
escape = false
until escape == true
if Input.trigger?(Input::C)
if window.wait <= 0
$game_system.se_play($data_system.decision_se)
window.dispose
escape = true
end
end
$game_map.update
$game_system.update
$game_screen.update
@spriteset.update
Input.update
Graphics.update
window.wait
if $scene != self
break
end
end
return
end
end
class Window_ItemGain < Window_Selectable
def initialize(items,gold)
height = items.size*32
height += gold != 0 ? 96 : 64
@wait = [height / 4, 32].min
@width = 0
@type = []
@id = []
@numb = []
items.each do |item|
@type.push(item[0])
@id.push(item[1])
@numb.push(item[2])
end
test = Bitmap.new(1,1)
for i in 0...@type.size
case @type[i]
when 0
@w = test.text_size($data_items[@id[i]].name).width
@width = @w if @w > @width
when 1
@w = test.text_size($data_weapons[@id[i]].name).width
@width = @w if @w > @width
when 2
@w = test.text_size($data_armors[@id[i]].name).width
@width = @w if @w > @width
end
end
@width += test.text_size('X').width
@width += 96
test.dispose
super(320-@width/2,240-@type.size*16-48,@width,height)
self.contents=Bitmap.new(@width-32,height-32)
@item_max = @type.size
@index=-1
@gold=gold
refresh
end
#--------------------------------------------------------------------------
def refresh
if @item_max != 0
self.contents.draw_text(0,0,@width - 32,32,"Gained Items:",1)
self.contents.fill_rect(0,32,@width-32,1,Color.new(255,255,255,255))
self.contents.draw_text(-4, @type.size*32+32, @width - 32, 32, @gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, @type.size*32+32, @width - 32, 32, $data_system.words.gold + ":")
self.contents.fill_rect(0,@type.size*32+32,@width - 32,1,Color.new(255,255,255,255)) if @gold != 0
elsif @gold != 0
self.contents.fill_rect(0,32,@width - 32,1,Color.new(255,255,255,255))
self.contents.draw_text(0, 32, @width - 32, 32, @gold.to_s, 1)
self.contents.font.color = system_color
self.contents.draw_text(0, 0, @width - 32, 32, $data_system.words.gold,1)
end
$game_party.gain_gold(@gold)
for i in 0...@item_max
case @type[i]
when 0
item=$data_items[@id[i]]
$game_party.gain_item(@id[i],@numb[i])
when 1
item=$data_weapons[@id[i]]
$game_party.gain_weapon(@id[i],@numb[i])
when 2
item=$data_armors[@id[i]]
$game_party.gain_armor(@id[i],@numb[i])
end
draw_item_name(item, 4, i*32+32, @width - 96)
self.contents.draw_text(-24,i*32+32,width-self.contents.text_size('X '+@numb[i].to_s).width,32,'X',2)
self.contents.draw_text(-4,i*32+32,@width-32,32,@numb[i].to_s,2)
end
end
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.empty
end
#--------------------------------------------------------------------------
def wait
@wait-=1
return @wait
end
end
Instructions
Use the call script function: $scene.item_gain.new([t1, i1, a1], [t2, i2, a2], [etc],gold)
where:
tx = The type of item number X: 0 for item, 1 for weapon, 2 for armor.
ix = The database id for item X: 1 for potion/bronze sword/bronze shield. etc.
ax = The amount to gain of item X.
gold=the gold gained, if no gold is gained, it's not needed.
You don't need to put any empty arrays in case you're not adding items or stuff - just enter the gold alone ^^
so to gain 1 potion which has item type 0 and no gold
Code: $scene.item_gain.new([0, 1, 1])
One high-potion and a perfume (both type 0) and 10 gold
Code: $scene.item_gain.new([0,2, 1],[0,4, 1],10)
To gain no items and 50 gold
Code: $scene.item_gain.new(50)
It automatically adds the items and gold.
EDIT: New and updated, it now changes the y position and height depending on the number of items. Don't add more than twelve different items at once, it'll go off the screen.
EDIT again: It now looks better when you get only gold.
3DIT: Calling is easier, screen effects are updated while the window is up.
EDIT 4:: Script will now be maintained in this topic. Not having several different versions to upkeep make support and maintenance much easier for me. Old script will stay here for reference.
//Jimmie
|