Code:
#==============================================================================
# ** Item Popup
#------------------------------------------------------------------------------
# Tibuda
# Version 1.12
# 02.23.07
#------------------------------------------------------------------------------
# * Version History :
# 01.11.07 - Version 1.00
# 01.13.07 - Version 1.01
# - Bug fix: Bug while tryin' to unequip an item in the equipment scene
# - Added: Item number font customization
# 01.19.07 - Version 1.10
# - Added: Fading icons when losing items (optional)
# - Added: Background image (optional)
# - Added: Custom colors for each item
# - Added: You can show a icon in events
# - Added: Custom colors when calling the popup_icon
# 01.23.07 - Version 1.11
# - Bug fix: Bug while changin'g class or changin' equip in the map
# 02.23.07 - Version 1.12 (one month)
# - Bug fix: Showing icon with 0 items/gold
#------------------------------------------------------------------------------
# * Instructions
# - To show an icon call the following script:
# $game_player.popup_icon(icon_name[, number, color])
# for the player
# self.event.popup_icon(icon_name[, number, color])
# for the current event
# $game_map.events[id].popup_icon(icon_name[, number, color])
# for the the event id
# - Customizing the duration
# ICON_TIME holds the time a icon is shown
# ICON_DELAY is time a icon will wait to appear when there's a icon showing
# - Customizing the item number colors
# The NUMBER_COLOR constant is the default color for all the item types
# The GOLD_NUMBER_COLOR holds the color for the gold
# The ITEM_NUMBER_COLOR hahs hold the color for specific items.
# You can add a custom color for a item this way:
# ITEM_NUMBER_COLOR = {item_id => item_color, item_id => item_color....}
# If you want a default color for all items you can use the item_id 0
# Use WEAPON_NUMBER_COLOR for weapons and ARMOR_NUMBER_COLOR for armors
#==============================================================================
#--------------------------------------------------------------------------
# module Popup_Item
#--------------------------------------------------------------------------
module Popup_Item
# Fading icons
FADE_LOSE = false
# The time we show the icon
ICON_TIME = 40
# The time before show a new item
ICON_DELAY = 24
# Icon to show when the player gets money
GOLD_ICON = "032-Item01"
# A 32x32 background image
BACKGROUND = ""
# Font for the item number
NUMBER_FONT = "Tahoma"
NUMBER_SIZE = 12
NUMBER_COLOR = Color.new(255, 255, 255)
# Custom font color for specific items
GOLD_NUMBER_COLOR = Color.new(255, 255, 0)
ITEM_NUMBER_COLOR = {}
ARMOR_NUMBER_COLOR = {}
WEAPON_NUMBER_COLOR = {}
# True if using Trickster's Method & Class Library
TRICK_MACL = false
end
#--------------------------------------------------------------------------
# Game_Character
#--------------------------------------------------------------------------
class Game_Character
attr_accessor :popup_icons
alias popup_gm_party_init initialize
def initialize
popup_gm_party_init
@popup_icons = []
end
def popup_icon(icon_name, number = 1, color = Popup_Item::NUMBER_COLOR)
@popup_icons.push([icon_name, number, color])
end
def fade_icon(icon_name, number = 1, color = Popup_Item::NUMBER_COLOR)
popup_icon(icon_name, -number, color) if Popup_Item::FADE_LOSE
end
end
#--------------------------------------------------------------------------
# Game_Party
#--------------------------------------------------------------------------
class Game_Party
attr_accessor :ignore_icon
alias popup_gm_party_init initialize
def initialize
popup_gm_party_init
@ignore_icon = false
end
def popup_icon(icon_name, number = 1, color = Popup_Item::NUMBER_COLOR)
$game_player.popup_icon(icon_name, number, color)
end
def fade_icon(icon_name, number = 1, color = Popup_Item::NUMBER_COLOR)
$game_player.fade_icon(icon_name, number, color)
end
alias popup_gm_party_gain_gold gain_gold
def gain_gold(n)
popup_gm_party_gain_gold(n)
return if @ignore_icon || n < 1
if Popup_Item::GOLD_ICON != "" and $scene.is_a?(Scene_Map)
if Popup_Item::GOLD_NUMBER_COLOR.is_a?(Color)
color = Popup_Item::GOLD_NUMBER_COLOR
else
color = Popup_Item::NUMBER_COLOR
end
popup_icon(Popup_Item::GOLD_ICON, n, color)
end
end
alias popup_gm_party_gain_item gain_item
def gain_item(id, n)
popup_gm_party_gain_item(id, n)
return if id < 1 or id >= $data_items.size or @ignore_icon || n < 1
if $scene.is_a?(Scene_Map)
if Popup_Item::ITEM_NUMBER_COLOR[id].is_a?(Color)
color = Popup_Item::ITEM_NUMBER_COLOR[id]
elsif Popup_Item::ITEM_NUMBER_COLOR[0].is_a?(Color)
color = Popup_Item::ITEM_NUMBER_COLOR[0]
else
color = Popup_Item::NUMBER_COLOR
end
popup_icon($data_items[id].icon_name, n, color)
end
end
alias popup_gm_party_gain_weapon gain_weapon
def gain_weapon(id, n)
popup_gm_party_gain_weapon(id, n)
return if id < 1 or id >= $data_weapons.size or @ignore_icon || n < 1
if $scene.is_a?(Scene_Map)
if Popup_Item::WEAPON_NUMBER_COLOR[id].is_a?(Color)
color = Popup_Item::WEAPON_NUMBER_COLOR[id]
elsif Popup_Item::WEAPON_NUMBER_COLOR[0].is_a?(Color)
color = Popup_Item::WEAPON_NUMBER_COLOR[0]
else
color = Popup_Item::NUMBER_COLOR
end
popup_icon($data_weapons[id].icon_name, n, color)
end
end
alias popup_gm_party_gain_armor gain_armor
def gain_armor(id, n)
popup_gm_party_gain_armor(id, n)
return if id < 1 or id >= $data_armors.size or @ignore_icon || n < 1
if $scene.is_a?(Scene_Map)
if Popup_Item::ARMOR_NUMBER_COLOR[id].is_a?(Color)
color = Popup_Item::ARMOR_NUMBER_COLOR[id]
elsif Popup_Item::ARMOR_NUMBER_COLOR[0].is_a?(Color)
color = Popup_Item::ARMOR_NUMBER_COLOR[0]
else
color = Popup_Item::NUMBER_COLOR
end
popup_icon($data_armors[id].icon_name, n, color)
end
end
end
#--------------------------------------------------------------------------
# Game_Actor
#--------------------------------------------------------------------------
class Game_Actor
alias popup_gm_actor_equip equip
def equip(equip_type, id)
$game_party.ignore_icon = true
popup_gm_actor_equip(equip_type, id)
$game_party.ignore_icon = false
end
end
#--------------------------------------------------------------------------
# module RPG
#--------------------------------------------------------------------------
module RPG
#--------------------------------------------------------------------------
# RPG::Sprite
#--------------------------------------------------------------------------
class Sprite
def popup_icon(name, number = 1, color = Popup_Item::NUMBER_COLOR)
return if name == "" or name == nil
return if number.is_a?(Numeric) and number < 0 and !Popup_Item::FADE_LOSE
@icons = [] if !@icons.is_a?(Array)
icon = {}
icon["time"] = 0 - @icons.size * Popup_Item::ICON_DELAY
if number.is_a?(Numeric) and number < 0
icon["fade"] = true
number = - number
else
icon["fade"] = false
end
icon["sprite"] = RPG::Sprite.new(self.viewport)
if Popup_Item::BACKGROUND != ""
bitmap = RPG::Cache.picture(Popup_Item::BACKGROUND)
icon["sprite"].bitmap = Bitmap.new(bitmap.width, bitmap.height)
icon["sprite"].bitmap.blt(0, 0, bitmap, Rect.new(0,0,bitmap.width,bitmap.width))
else
icon["sprite"].bitmap = Bitmap.new(32,32)
end
bitmap = RPG::Cache.icon(name)
icon["sprite"].bitmap.blt(4, 4, bitmap, Rect.new(0,0,24,24))
if Popup_Item::NUMBER_SIZE > 0 and number != 1 and number != ""
icon["sprite"].bitmap.font.outline = true if Popup_Item::TRICK_MACL
icon["sprite"].bitmap.font.name = Popup_Item::NUMBER_FONT
icon["sprite"].bitmap.font.size = Popup_Item::NUMBER_SIZE
icon["sprite"].bitmap.font.color = color
icon["sprite"].bitmap.draw_text(5, 28 - Popup_Item::NUMBER_SIZE - 1, 27, Popup_Item::NUMBER_SIZE, number.to_s)
end
icon["sprite"].ox = 0
icon["sprite"].oy = 20
icon["sprite"].x = self.x
icon["sprite"].y = self.y - self.oy / 2 + 1 - icon["time"]
icon["sprite"].z = 3000
icon["sprite"].visible = false
@icons.push(icon)
end
def update_icons
return unless @icons.is_a?(Array)
return if Graphics.frame_count % 2 != 0
i = 0
while i < @icons.size
if @icons[i]["time"] > Popup_Item::ICON_TIME
@icons[i]["sprite"].bitmap.dispose
@icons[i]["sprite"].dispose
@icons.delete_at(i)
else
@icons[i]["time"] += 1
if @icons[i]["fade"]
op = [255 * (1 - @icons[i]["time"] / Popup_Item::ICON_TIME),0].max
@icons[i]["sprite"].opacity = op
@icons[i]["sprite"].update
else
@icons[i]["sprite"].y -= 1
end
@icons[i]["sprite"].visible = @icons[i]["time"] >= 0
i += 1
end
end
end
alias popup_sprite_update update
def update
popup_sprite_update
update_icons
end
end
end
#--------------------------------------------------------------------------
# Sprite_Character
#--------------------------------------------------------------------------
class Sprite_Character
alias popup_spr_char_update update
def update
popup_spr_char_update
if @character.is_a?(Game_Character)
while @character.popup_icons.size > 0
popup_icon(@character.popup_icons[0][0], @character.popup_icons[0][1],
@character.popup_icons[0][2])
@character.popup_icons.delete_at(0)
end
end
update_icons
end
end
hey echt super ... ein "callscript" mach ich doch indem ich ein event setze und dieses dann umbennene, oder?! (zb. $LE_type2_1)(für n lichtkegel am fenster...)