O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Item PopUp 1.10

Iniciado por dodoop, 02/12/2012 às 19:15

Item PopUp  1.10
por Tibuda

Introdução

Faz com que quando o personagem ganhe um item, o ícone do mesmo seja monstrado acima da cabeça do herói e vai tendo efeitos de opacidade.

Características


    - Fácil uso
    - Efeito bonito
    - Customisavel
    ...

Screenshots



Como usar

-Posicione este script sobre o Main.

-Para Chamar o Icon quando quizer simplesmente faça um Call da seguinte maneira;

para o Jogador:
$game_player.popup_icon(icon_name[, number, color])

Para o Evento em que está o Comando:
self.event.popup_icon(icon_name[, number, color])

Para um outro Evento:
$game_map.events[id].popup_icon(icon_name[, number, color])

-ICON_TIME é o Tempo que um Ícone fica exposto.

-ICON_DELAY é o Tempo que um Ícone esperará para aparecer quando
um Ícone já está sendo Mostrado.

-NUMBER_COLOR é a cor do número nos Ícones.

-GOLD_COLOR é a cor do número para Dinheiro.

-ITEM_COLOR são cores para Itens especiais. Todos os Outros Itens terão a Cor de Número na NUMBER_COLOR.
Para adicionar uma cor especial para um Item faça o Seguinte:

ITEM_NUMBER_COLOR = {item_id => item_color, item_id => item_color....}

Continue repetindo estes comandos para listar as cores Especiais.

Use WEAPON_NUMBER_COLOR para Armas e ARMOR_NUMBER_COLOR para
Armaduras.

Também, deve-se adicionar uma imagem, com o nome: Coin3 na pasta: Graphics/Icons

Demo

Não necessita.

Script

=begin
┌──────────────────────────────────────┐
│●         Item PopUp  1.10            │
│                                      │
│            Criado por                │
│                                      │
│              Tibuda                  │
│                                      │
│        Traduzido por [ kbrito ]      │
└──────────────────────────────────────┘

Descrição e Uso:
-Script usado para Mostrar ao Jogador quando ganhou um Item
 ou Dinheiro.
 Mostra sempre os Itens e dinheiro que forem sendo adicionados.
 Os Itens são representados por seus Respectivos Ícones e 
 o Dinheiro por um Ícone que vc pode escolher aqui.
 
Instruções:
-Posicione este script sobre o Main.

-Para Chamar o Icon quando quizer simplesmente faça um
 Call da seguinte maneira:
 para o Jogador:
 $game_player.popup_icon(icon_name[, number, color])
 
 Para o Evento em que está o Comando:
 self.event.popup_icon(icon_name[, number, color])
 
 Para um outro Evento:
 $game_map.events[id].popup_icon(icon_name[, number, color])
 
-ICON_TIME é o Tempo que um Ícone fica exposto.

-ICON_DELAY é o Tempo que um Ícone esperará para aparecer quando
 um Ícone já está sendo Mostrado.
 
-NUMBER_COLOR é a cor do número nos Ícones.

-GOLD_COLOR é a cor do número para Dinheiro.

-ITEM_COLOR são cores para Itens especiais. Todos os Outros Itens
 terão a Cor de Número na NUMBER_COLOR.
 Para adicionar uma cor especial para um Item faça o Seguinte:
 
 ITEM_NUMBER_COLOR = {item_id => item_color, item_id => item_color....}
 
 Continue repetindo estes comandos para listar as cores Especiais.
 
 Use WEAPON_NUMBER_COLOR para Armas e ARMOR_NUMBER_COLOR para
 Armaduras.

=end

#--------------------------------------------------------------------------
# module Popup_Item
#--------------------------------------------------------------------------
module Popup_Item
  # Deixe true para ligar o efeito de Fade nos ícones.
  FADE_LOSE    = false
  
  ICON_TIME    = 40
  
  ICON_DELAY   = 24
  
  # Altere aqui o ícone de Dinheiro.
  GOLD_ICON    = "Coin3"
  
  # Insira o Nome de uma imagem de 32x32 para Background do ícone. 
  BACKGROUND   = ""
  
  # Edite a Fonte aqui.
  NUMBER_FONT  = "Tahoma"
  
  NUMBER_SIZE  = 12
  
  NUMBER_COLOR = Color.new(255, 255, 255)
  
  # Cores de Número customizadas.
  # Deixe como está se vc não pretende usar este recurso.
  GOLD_NUMBER_COLOR   = Color.new(255, 255, 0)
  ITEM_NUMBER_COLOR   = {}
  ARMOR_NUMBER_COLOR  = {}
  WEAPON_NUMBER_COLOR = {}
  
  # Deixe true se vc utilizar o "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)
    @fade_icons.push([icon_name, number, color])
  end
end
#--------------------------------------------------------------------------
# Game_Party
#--------------------------------------------------------------------------
class Game_Party
  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)
    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
    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
    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
    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
#--------------------------------------------------------------------------
# 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
          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


Perguntas Frequentes

CitarPergunta:Tem pra VX?
Resposta:Sim, basta da uma procurada! ^^

Créditos e Agradecimentos

  • Feito por Tibuda
  • Traduzido por kbrito