Demo – Version 1.1 >
#-------------------------------------------------------------------------------
# Galv's Event Pop-Ups
#-------------------------------------------------------------------------------
# For: RPGMAKER VX ACE
# Version 1.1
#------------------------------------------------------------------------------#
# 2013-03-03 - Version 1.1 - crash fix
# 2013-02-24 - Version 1.1 - release
#------------------------------------------------------------------------------#
# Just another pop up script, nothing special here other than I made it (which
# could be less special! haha). Manually create a text pop up or automatically
# whenever you give the player an item via event command - pops up the item's
# icon above their head with amount gained.
#------------------------------------------------------------------------------#
# SCRIPT CALL to manually call the pop up
#------------------------------------------------------------------------------#
#
# popup(target,type,id,amount)
#
# # target = event id you want popup to appear on. 0 is for player
# # type = :item, :armor, :weapon or "Other Text"
# # id = the item, armor or weapon id OR icon id if using "Other Text"
# # amount = how many of item you wish to display are being gained or lost
#
#------------------------------------------------------------------------------#
# EXAMPLES:
# popup(0," Skulls",1,5) # '5 x Skulls' with icon 1 above player
# popup(2,"Hello ",0,0) # 'Hello' with no icon above event 2
# popup(4,:item,1,-10) # -10 Potions (with icon) above event 4
#
# NOTE: The Gain item, weapon, armor and gold event commands automatically pop
# up with the item gained/lost. Only one pop up can be active at a time.
#------------------------------------------------------------------------------#
($imported ||= {})["Galv_Map_Popups"] = true
module Galv_Mpop
#------------------------------------------------------------------------------#
# SETUP OPTIONS
#------------------------------------------------------------------------------#
DISABLE_SWITCH = 1 # Turn swith ON to disable this.
SE_GAIN = ["Item1",100,100] # "SE_Name",volume,pitch when gaining item
SE_LOSE = ["Miss",100,100] # "SE_Name",volume,pitch when losing item
# These sounds only play with the add or remove items event command. Custom
# item pop up won't display a sound so you can play your own.
Y_OFFSET = -50 # Y offset for popup text
CURRENCY_ICON = 361 # Icon that appears when gaining/losing money
FONT = "Arial" # Font used for pop ups
GAIN_COLOR = [255,255,255] # RGB colour for gaining item text
LOSE_COLOR = [255,200,200] # RGB colour for losing item text
#------------------------------------------------------------------------------#
# END SETUP OPTIONS
#------------------------------------------------------------------------------#
end
class Game_Map
alias galv_map_pop_gp_initialize initialize
def initialize
galv_map_pop_gp_initialize
end
alias galv_map_pop_gp_update update
def update(main = false)
update_popup if @popsprite
galv_map_pop_gp_update(main)
end
def update_popup
@popsprite.update
end
def dispose_popup
@popsprite.dispose if @popsprite
@popsprite = nil
end
def popup(target,item_type,item_id,amount)
@popsprite.dispose if @popsprite
character = get_ptarget(target)
item = get_pitem(item_type,item_id)
@popsprite = Sprite_PopText.new(@viewport1,character,item,amount)
end
def get_ptarget(target)
if target == 0; return $game_player
elsif target > 0; return $game_map.events[target]
end
end
def get_pitem(item_type,item_id)
case item_type
when :item; $data_items[item_id]
when :weapon; $data_weapons[item_id]
when :armor; $data_armors[item_id]
else; [item_type.to_s,item_id]
end
end
end # Game_Player < Game_Character
class Scene_Map < Scene_Base
def dispose_spriteset
@spriteset.dispose
$game_map.dispose_popup
end
end
class Sprite_PopText < Sprite
def initialize(viewport,target,item,amount)
super(viewport)
@character = target
@item = item
@rise = 0
@rise_speed = 15
@amount = amount
create_bitmap
update
end
def dispose
self.bitmap.dispose
if @icon_sprite
@icon_sprite.bitmap.dispose
@icon_sprite.dispose
end
super
end
def create_bitmap
if @item
@icon_sprite = Sprite.new
@icon_sprite.bitmap = Cache.system("Iconset")
end
@x_offset = -92
self.bitmap = Bitmap.new(200, 20)
self.bitmap.font.size = 20
self.bitmap.font.name = Galv_Mpop::FONT
self.bitmap.font.shadow = 20
self.bitmap.font.bold = true
if @amount >= 0
self.bitmap.font.color.set(
Galv_Mpop::GAIN_COLOR[0],Galv_Mpop::GAIN_COLOR[1],Galv_Mpop::GAIN_COLOR[2])
else
self.bitmap.font.color.set(
Galv_Mpop::LOSE_COLOR[0],Galv_Mpop::LOSE_COLOR[1],Galv_Mpop::LOSE_COLOR[2])
end
self.z = 2
end
def update
super
update_position
update_bitmap
update_visibility
update_icon if @icon_sprite
end_popup
end
def end_popup
return $game_map.dispose_popup if @rise >= 280
end
def name_text
if @item.is_a?(Array)
amount = @amount > 1 || @amount < -1 ? @amount.to_s : ""
return amount + @item[0].to_s
elsif @item
amount = @amount != 0 ? @amount.to_s : ""
return @amount >= 1 ? "x" + amount : amount
else
return ""
end
end
def update_bitmap
@rise += 1
self.bitmap.clear
self.bitmap.draw_text(self.bitmap.rect, name_text, 1)
if @item && @item.is_a?(Array)
self.draw_icon(@item[1])
elsif @item
self.draw_icon(@item.icon_index)
end
end
def draw_icon(icon_index)
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
@icon_sprite.src_rect = rect
@icon = icon_index
end
def calculate_y
if @rise_speed > 0
@rise_speed -= 1
return -(@rise * @rise_speed * 0.2)
else
return 0
end
end
def update_position
self.x = @character.screen_x + @x_offset
if @amount >= 0
self.y = @character.screen_y + Galv_Mpop::Y_OFFSET + calculate_y
else
self.y = @character.screen_y + Galv_Mpop::Y_OFFSET - 10 + @rise * 0.2
end
end
def update_icon
@icon_sprite.x = @character.screen_x - name_text.length * 4 - 20
@icon_sprite.y = self.y - 2
@icon_sprite.opacity = self.opacity
end
def update_visibility
self.opacity = 500 + (name_text.length * 20) - @rise * 6
end
end # Sprite_PopText < Sprite
class Game_Interpreter
def psound(amount)
if amount > 0
RPG::SE.new(Galv_Mpop::SE_GAIN[0],Galv_Mpop::SE_GAIN[1],Galv_Mpop::SE_GAIN[2]).play
elsif amount < 0
RPG::SE.new(Galv_Mpop::SE_LOSE[0],Galv_Mpop::SE_LOSE[1],Galv_Mpop::SE_LOSE[2]).play
end
end
alias galv_map_pop_gi_command_125 command_125
def command_125
difference = $game_party.gold
galv_map_pop_gi_command_125
amount = $game_party.gold - difference
return if amount == 0 || $game_switches[Galv_Mpop::DISABLE_SWITCH]
psound(amount)
$game_map.popup(0,"",Galv_Mpop::CURRENCY_ICON,amount)
end
alias galv_map_pop_gi_command_126 command_126
def command_126
difference = $game_party.item_number($data_items[@params[0]])
galv_map_pop_gi_command_126
amount = $game_party.item_number($data_items[@params[0]]) - difference
return if amount == 0 || $game_switches[Galv_Mpop::DISABLE_SWITCH]
psound(amount)
$game_map.popup(0,:item,@params[0],amount)
end
alias galv_map_pop_gi_command_127 command_127
def command_127
difference = $game_party.item_number($data_weapons[@params[0]])
galv_map_pop_gi_command_127
amount = $game_party.item_number($data_weapons[@params[0]]) - difference
return if amount == 0 || $game_switches[Galv_Mpop::DISABLE_SWITCH]
psound(amount)
$game_map.popup(0,:weapon,@params[0],amount)
end
alias galv_map_pop_gi_command_128 command_128
def command_128
difference = $game_party.item_number($data_armors[@params[0]])
galv_map_pop_gi_command_128
amount = $game_party.item_number($data_armors[@params[0]]) - difference
return if amount == 0 || $game_switches[Galv_Mpop::DISABLE_SWITCH]
psound(amount)
$game_map.popup(0,:armor,@params[0],amount)
end
def popup(target,item_type,item_id,amount)
$game_map.popup(target,item_type,item_id,amount)
end
end # Game_Interpreter
Hello,
Firstly, bravo for your job!!
I have changed resolution of my game to 640*480, and there is a gap of all POP ups.
How i do to adjust, suitably, your script to work with this resolution ( script as Yanfly ace core engine )
Sorry for my bad english, i’m french
Thanks
Hmm, you are right. This only happens if you are using a map smaller than the screen size. I recommend making the minimum size of your maps to fit the screen size.
Create a new entry in the script list before Main, and add this text to it:
class Sprite_PopText
alias :old_update_position :update_position
def update_position
old_update_position
if Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal?
self.x += (Graphics.width – $game_map.width * 32) / 2
end
if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical?
self.y += (Graphics.height – $game_map.height * 32) / 2
end
end
end
Hey Galv,
This is a great script!
But i’m getting the following error after using this script:
After picking up an item (with a gain of variable), my text window becomes a little out of position:

What could be the problem?
Thanks!
This script doesn’t do anything with text windows… but Yanfly’s Message script uses a variable to determine how high message windows are. I am guessing you are using his message script and changing the variable that is set in his script settings.
Hey thanks for pointing that out!
I got it fixed now!
Hi Galv
Great script works really well!
I was wondering is there a way to deactivate the popups on certain events?
e.g A note tag or script call to have no popups when receiving item/weapon/armour on a certain event?
I have a scenario where a switch activates when a certain item (an invisible item made just for the switch) is received but I don’t want it to pop up as I wish to keep it somewhat invisible.
Is there a way to do this?
Thanks in advance.
You set the DISABLE_SWITCH in the settings. Turn the switch on to disable the popups
Thanks man worked fine!
Again great work on script!
Hi Galv, this is exactly what I need!
Weird question…but do these pop-up messages appear even when the screen is faded out?
Thanks!
Actually I never thought to try that hehe. This one was an old one just learning stuff.
Oh, okay. I guess I’ll just try it out and see…
Hi Galv . . .
is it a bug ?
i can’t use this script with your random loot script, even with the fresh project . . .
there is no pop up when using it with your random loot script
I didn’t make them compatible, sorry. Random loot script is old and needs to be re-written
aww man . . .
but this is a good script anyway . . .
Great script, I was wondering if I could set how much time the pop up will display and poof.
I think it pops and poof’s too fast..
Great script, I was wondering if you could do an option for the text to dissapear after people click on enter ?
Unfortunately the script is very basic. I don’t have time to do improvements on it anytime soon, sorry. You could try asking in a forum or see if there are any other pop up scripts available :)