The RPG Maker Resource Kit

RMRK RPG Maker Creation => RPG Maker General => General Scripting => Topic started by: drakenkanon on March 27, 2013, 03:18:15 PM

Title: Falcao's pearl abs: disabling item pop up
Post by: drakenkanon on March 27, 2013, 03:18:15 PM
Hello everyone

I have a slight problem, I absolutely love the item pop up system included in Falcao's pearl abs, but there are certain occasions where I don't want the notice to pop up, for example when I give the player his starting amount of gold. Is there a way to disable to item pop up using a call script function or do I have to work a way around this? Please note: I want to enable the item pop up again later using another call script.

For reference, here is the full item pop up script (made by Falcao, please credit him, I have not contributed to this script in any way!)

Code: [Select]
#===============================================================================
# * Falcao Pearl ABS script shelf # 8
#
# Item and gold pop up v 1.0
# This is just an add on for the Pearl ABS system, it run as standalone mode too
#
# Website: http://falcaorgss.wordpress.com/
# Foro: www.makerpalace.com
#===============================================================================
#
# * Installation
# This work as plug and play, copy and paste the script above main
#
# * Usage
# There is no special references, when you earn an item or gold, then pop appear
# Edit the module below for convenience
#-------------------------------------------------------------------------------

module PearlItemPop
 
  # Position X of the pop up object
  Pos_X = 10
 
  # Position Y of the pop up object
  Pos_Y = 320
 
  # Icon displayed when earnig gold
  GoldIcon = 245
 
  # Se sound played when gaining items (set nil if you dont want to play sound)
  ItemSe = "Item3"
 
  # Se sound played when gainig gold (set nil if you dont want to play sound)
  GoldSe = "Shop"
 
end

class Game_Party < Game_Unit
  alias falcaopearl_itempop_gain gain_item
  def gain_item(item, amount, include_equip = false)
    if !item_container(item.class).nil? && SceneManager.scene_is?(Scene_Map)
      if amount > 0
        $game_system.item_object = [item, amount]
        RPG::SE.new(PearlItemPop::ItemSe, 80).play rescue nil
      end
    end
    falcaopearl_itempop_gain(item, amount, include_equip = false)
  end
 
  alias falcaopearl_itempop_gold gain_gold
  def gain_gold(amount)
    if SceneManager.scene_is?(Scene_Map)
      $game_system.item_object = [nil, amount]
      RPG::SE.new(PearlItemPop::GoldSe, 80).play rescue nil
    end
    falcaopearl_itempop_gold(amount)
  end
end

class Game_System
  attr_accessor :item_object
end

class Spriteset_Map
 
  alias falcaopearl_itempop_create create_pictures
  def create_pictures
    create_itempop_sprites
    falcaopearl_itempop_create
  end
 
  def create_itempop_sprites
    @item_object = $game_system.item_object
    @item_sprite = Sprite_PopItem.new(@viewport2, @item_object) if
    not @item_object.nil?
  end
 
  alias falcaopearl_itempop_update update
  def update
    if !@item_sprite.nil?
      unless @item_sprite.disposed?
        @item_sprite.update
      else
        @item_sprite.dispose
        @item_object = nil
        $game_system.item_object = nil
        @item_sprite = nil
      end
    end
    if @item_object != $game_system.item_object
      @item_sprite.dispose if !@item_sprite.nil?
      @item_sprite = nil
      @item_sprite = Sprite_PopItem.new(@viewport2, $game_system.item_object)
      @item_object = $game_system.item_object
    end
    falcaopearl_itempop_update
  end
 
  alias falcaopearl_itempop_dispose dispose
  def dispose
    @item_sprite.dispose unless @item_sprite.nil?
    falcaopearl_itempop_dispose
  end
end

 
class Sprite_PopItem < Sprite
  def initialize(viewport, item)
    super(viewport)
    @item = item[0]
    @num = item[1]
    set_bitmap
    self.x = PearlItemPop::Pos_X
    self.y = PearlItemPop::Pos_Y
    @erasetimer = 120
    update
  end
 
  def update
    super
    if @erasetimer > 0
      @erasetimer -= 1
      self.opacity -= 10 if @erasetimer <= 25
      dispose if @erasetimer == 0
    end
  end
 
  def dispose
    self.bitmap.dispose
    super
  end
 
  def set_bitmap
    @item.nil? ? operand = Vocab::currency_unit : operand = @item.name
    string = operand + ' X' + @num.to_s
    self.bitmap = Bitmap.new(26 + string.length * 9, 28)
    self.bitmap.fill_rect(0, 0, self.bitmap.width, 28, Color.new(0, 0, 0, 100))
    self.bitmap.font.size = 20
    bitmap = Cache.system("Iconset")
    icon = @item.nil? ? PearlItemPop::GoldIcon : @item.icon_index
    rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
    self.bitmap.blt(4, 0, bitmap, rect)
    self.bitmap.draw_text(28, 0, 250, 32, string)
  end
end
Title: Re: Falcao's pearl abs: disabling item pop up
Post by: modern algebra on March 29, 2013, 02:08:05 PM
It doesn't look like that option is built in to the script. However, this slightly adjusted script should do the trick:

Code: [Select]
#===============================================================================
# * Falcao Pearl ABS script shelf # 8
#
# Item and gold pop up v 1.0
# This is just an add on for the Pearl ABS system, it run as standalone mode too
#
# Website: http://falcaorgss.wordpress.com/
# Foro: www.makerpalace.com
#===============================================================================
#
# * Installation
# This work as plug and play, copy and paste the script above main
#
# * Usage
# There is no special references, when you earn an item or gold, then pop appear
# Edit the module below for convenience
#-------------------------------------------------------------------------------

module PearlItemPop
 
  # Position X of the pop up object
  Pos_X = 10
 
  # Position Y of the pop up object
  Pos_Y = 320
 
  # Icon displayed when earnig gold
  GoldIcon = 245
 
  # Se sound played when gaining items (set nil if you dont want to play sound)
  ItemSe = "Item3"
 
  # Se sound played when gainig gold (set nil if you dont want to play sound)
  GoldSe = "Shop"

  # Switch which activates item popup
  SwitchID = 21
 
end

class Game_Party < Game_Unit
  alias falcaopearl_itempop_gain gain_item
  def gain_item(item, amount, include_equip = false)
    if !item_container(item.class).nil? && SceneManager.scene_is?(Scene_Map)
      if amount > 0 && $game_switches[PearlItemPop::SwitchID]
        $game_system.item_object = [item, amount]
        RPG::SE.new(PearlItemPop::ItemSe, 80).play rescue nil
      end
    end
    falcaopearl_itempop_gain(item, amount, include_equip = false)
  end
 
  alias falcaopearl_itempop_gold gain_gold
  def gain_gold(amount)
    if SceneManager.scene_is?(Scene_Map) && $game_switches[PearlItemPop::SwitchID]
      $game_system.item_object = [nil, amount]
      RPG::SE.new(PearlItemPop::GoldSe, 80).play rescue nil
    end
    falcaopearl_itempop_gold(amount)
  end
end

class Game_System
  attr_accessor :item_object
end

class Spriteset_Map
 
  alias falcaopearl_itempop_create create_pictures
  def create_pictures
    create_itempop_sprites
    falcaopearl_itempop_create
  end
 
  def create_itempop_sprites
    @item_object = $game_system.item_object
    @item_sprite = Sprite_PopItem.new(@viewport2, @item_object) if
    not @item_object.nil?
  end
 
  alias falcaopearl_itempop_update update
  def update
    if !@item_sprite.nil?
      unless @item_sprite.disposed?
        @item_sprite.update
      else
        @item_sprite.dispose
        @item_object = nil
        $game_system.item_object = nil
        @item_sprite = nil
      end
    end
    if @item_object != $game_system.item_object
      @item_sprite.dispose if !@item_sprite.nil?
      @item_sprite = nil
      @item_sprite = Sprite_PopItem.new(@viewport2, $game_system.item_object)
      @item_object = $game_system.item_object
    end
    falcaopearl_itempop_update
  end
 
  alias falcaopearl_itempop_dispose dispose
  def dispose
    @item_sprite.dispose unless @item_sprite.nil?
    falcaopearl_itempop_dispose
  end
end

 
class Sprite_PopItem < Sprite
  def initialize(viewport, item)
    super(viewport)
    @item = item[0]
    @num = item[1]
    set_bitmap
    self.x = PearlItemPop::Pos_X
    self.y = PearlItemPop::Pos_Y
    @erasetimer = 120
    update
  end
 
  def update
    super
    if @erasetimer > 0
      @erasetimer -= 1
      self.opacity -= 10 if @erasetimer <= 25
      dispose if @erasetimer == 0
    end
  end
 
  def dispose
    self.bitmap.dispose
    super
  end
 
  def set_bitmap
    @item.nil? ? operand = Vocab::currency_unit : operand = @item.name
    string = operand + ' X' + @num.to_s
    self.bitmap = Bitmap.new(26 + string.length * 9, 28)
    self.bitmap.fill_rect(0, 0, self.bitmap.width, 28, Color.new(0, 0, 0, 100))
    self.bitmap.font.size = 20
    bitmap = Cache.system("Iconset")
    icon = @item.nil? ? PearlItemPop::GoldIcon : @item.icon_index
    rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
    self.bitmap.blt(4, 0, bitmap, rect)
    self.bitmap.draw_text(28, 0, 250, 32, string)
  end
end

Just go to this line:

Code: [Select]
  # Switch which activates item popup
  SwitchID = 21

Change the 21 to the ID of the switch you want to use. Now, the item pop will only happen when the switch with that ID is on. When it is off, there will not be any item popup.
Title: Re: Falcao's pearl abs: disabling item pop up
Post by: drakenkanon on March 29, 2013, 05:06:54 PM
Thanks a lot! This helps me greatly.

Kind regards,
Drakenkanon