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

[RD12] Event Icon/Text Display

Iniciado por RD12, 21/12/2012 às 12:15

21/12/2012 às 12:15 Última edição: 21/12/2012 às 21:11 por RD12
Event Icon/Text Display

Compativel com: Apenas RMVxAce
Facilidade de uso: Fácil
Lag gerado: Desprezível

[box class=titlebg]
Resumo
[/box]
     Meu primeiro script para Ace, espero que gostem, não quis fazer algo muito complexo.

Características:
*Exibe um texto em cima do evento.
*Pode escolher a cor desse Texto.
*Exibe um ícone em cima do evento.
*Para exibir é só por um comentário.
*Exibe nome em cima do Personagem + level.



[box class=titlebg]
Imagem
[/box]


[box class=titlebg]
Script
[/box]

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#|Autor: RD12    |      Event Icon/Text Display
#------------------------------------------------------------------------
# Exibir nome: comentário> [name] NOME
# Exibir icon: comentário> [icon] ICON  #Na pasta graphics/system
# Mudar a Cor: comentário> [cor] n (número da cor)
# Cores: 0 = vermelho | 1 = verde | 2 = azul | 3 = amarelo | 4 = rosa
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module Player_Name #Configurações do nome do personagem
  Show_Name = true
  Font_Name = "Segoe UI"
  Font_Size = 14
  Font_Color = Color.new(255,255,255)
  Show_Level = true #exibir level
end

class Game_Event < Game_Character
  attr_reader :npc_icon
  attr_reader :npc_name
  attr_reader :font_color

  alias qicon_alias_refresh refresh
  def refresh
  if @loaded == nil
  @Cor = []
  #------------------------------------------------------------------------
  #Número das Cores. Você pode copiar e adicionar mais 
  #------------------------------------------------------------------------
  @Cor[0] = Color.new(255,0,0)#vermelho
  @Cor[1] = Color.new(0,255,0)#verde
  @Cor[2] = Color.new(0,0,255)#azul
  @Cor[3] = Color.new(255,255,0)#amarelo
  @Cor[4] = Color.new(255,0,255)#rosa
  @Cor[5] = Color.new(0,0,0)#preto
  #-----
  end
  @loaded = true
    qicon_alias_refresh
    return if  @list == nil
    for cmd in @list
      if cmd.code == 108 or cmd.code == 408
        comentario = cmd.parameters[0]
        arg = comentario.split
      if arg[0] == "[icon]"
        if arg[3] != nil
          @npc_icon = arg[1]+" "+arg[2]+" "+arg[3]
         elsif arg[2] != nil
          @npc_icon = arg[1]+" "+arg[2]
         else
          @npc_icon = arg[1]
        end
      end
      if arg[0] == "[name]"
        if arg[3] != nil
          @npc_name = arg[1]+" "+arg[2]+" "+arg[3]
         elsif arg[2] != nil
          @npc_name = arg[1]+" "+arg[2]
         else
          @npc_name = arg[1]
        end
      end
      if arg[0] == "[cor]"
          cor = arg[1]
          @font_color = @Cor[cor.to_i]
      end
      if @npc_icon == nil
        @npc_icon = ""
      end
       if @font_color.nil?
        @font_color = Color.new(255,255,255)#Cor Padrão:Branco
       end
      end
    end
  end
end

class Player_Name_Text < Sprite_Base
  def initialize
    super()
    self.bitmap = Bitmap.new(100, 24)
    refresh
  end

  def refresh
    return if !Player_Name::Show_Name
    self.bitmap.clear
    self.x = $game_player.screen_x - 50
    self.y = $game_player.screen_y - 55
    self.bitmap.font.size = Player_Name::Font_Size
    self.bitmap.font.name = Player_Name::Font_Name
    self.bitmap.font.color = Player_Name::Font_Color
    actor = $game_party.members[0]
    if Player_Name::Show_Level == true
      self.bitmap.draw_text(self.bitmap.rect, "#{actor.name} [#{actor.level}]", 1)
     else
      self.bitmap.draw_text(self.bitmap.rect, actor.name, 1)
    end
  end
end

class Sprite_Character < Sprite_Base
  alias qicon_alias_initialize initialize
  def initialize(*args)
    @q_icon = nil
    @npc_icon = nil
    @npc_name = nil
    @font_color = nil
    qicon_alias_initialize(*args)
  end
  alias init initialize
  def initialize(view, char)
    init(view, char)
    if @character.is_a?(Game_Player)
       @player_name = Player_Name_Text.new
    end
  end
  alias qicon_alias_update update
  def update
    qicon_alias_update
    if @character.is_a?(Game_Player) and @player_name != nil
     @player_name.refresh
    end
    if @character and @character.is_a?(Game_Event) and @q_icon != @character.npc_icon
       [@q_icon, @character.npc_icon, @character.object_id, self.object_id]
      @q_icon          = @character.npc_icon
      @npc_icon        = Sprite.new(Viewport.new(0, 0, 640, 320)) unless @npc_icon
      @npc_icon.bitmap = Bitmap.new(100,40)
      icon = Cache.system(@q_icon)
      @npc_icon.bitmap.blt(37, 3, icon, Rect.new(0, 0, icon.width, icon.height))
      @npc_icon.bitmap.font.size = 14
      @npc_icon.bitmap.font.name = "Segoe UI"#Nome da Fonte
      @npc_icon.bitmap.font.color = @character.font_color 
      @npc_icon.bitmap.draw_text(0, 18, 100, 32, @character.npc_name, 1)
    end
    if @npc_icon and @npc_icon.bitmap
      @npc_icon.x = self.x - (@npc_icon.bitmap.width / 2)
      @npc_icon.y = self.y - (self.src_rect.height + @npc_icon.bitmap.height)
      @npc_icon.z = self.z + 5
    end
  end
  
  alias qicon_alias_dispose dispose
  def dispose
    @npc_icon.dispose if @npc_icon
    @player_name.dispose if @player_name
    qicon_alias_dispose
  end

end



[box class=titlebg]
Créditos
[/box]
Script criado por Lucas RD12

Apesar de ser um dos seus primeiros no Ace, foi um dos mais interessantes, ficou bem legal e é muito muito útil! Legal por ter trazido seus trabalhos para cá, fico feliz em membros recheando a comunidade com recursos :)

e se eu não quiser que apareça o nome do meu personagem?





Show! ótimo para games online.

Obrigado pessoal.

Citação de: Mend online 21/12/2012 às 20:05
e se eu não quiser que apareça o nome do meu personagem?

Acabei de fazer uma rápida edição para isso, substitua o script e bote false em Show_Name.

31/12/2014 às 15:54 #5 Última edição: 03/01/2015 às 03:49 por Marcelo Akihiro
Já consegui resolver aqui! E me desculpe por reviver o topio a toa.  :facepalm:

Spoiler
Muito bom esse script e me desculpe por estar revivendo esse tópico mas é importante.
O script funciona normalmente mas eu gostaria de saber como eu coloco e depois removo o nome e o icon do evento. A minha situação é o seguinte: um monstro de ABS e que por sinal estou usando o Imperial Action System que também usa comentário, mas quando ele morre o icon continua e eu gostaria que quando o monstro morre-se o icon sumia junto dele.

Spoiler
[close]

Se você puder me ajudar ficaria grato. E caso você precise do Imperial Action System é só clicar aqui ou nesse link.
[close]
Conheça também:
                   

Projetos:
Sword art Online The Last Time - Protocolo Fantasma Re: - Gazewyrim