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

HUD 1.0 sem utilizar imagens externas

Iniciado por Gking, 05/06/2017 às 16:21

05/06/2017 às 16:21 Última edição: 15/06/2017 às 18:36 por Gking
Então, hoje trago pra vocês o meu primeiro Script  :wow:, compativel com Rpg Maker Vx Ace.

Vamos ao que interessa.

1 - Utilizando eventos a HUD pode ser ativada...
Spoiler

    Ou desativada...
[close]

2 - A HUD mostra informações básicas, como: Equipamentos, Nome do herói, Classe do herói, Buffs e Debuffs, Hp e Mp, além de mostrar a face do herói.
Spoiler
[close]

3 - Ao pressionar a tecla 'Q' (por padrão, mas pode ser alterada), troca o herói.
Spoiler




[close]

Então por enquanto é isso.
Script:
#==============================================================================
# HUD sem utilizar imagens externas [VXA]
#------------------------------------------------------------------------------
# HUD muito útil criada em RGSS, sem necessidade do uso de imagens externas.
#------------------------------------------------------------------------------
# Autor      : Gking
# Versão     : 1.0
# Lançado em : 05 de Junho de 2017
#==============================================================================

#==============================================================================
# Agradecimentos:
#------------------------------------------------------------------------------
# • Alisson, Corvo, Revali, King Gerar e JohnBolton:
#   * Pela grande ajuda no script, além de algumas correções.
#   *http://centrorpg.com/
# • Kyo Panda:
#   * Pela ajuda indireta nos comentários.
#   *http://centrorpg.com/
#==============================================================================

#==============================================================================
# Como usar:
#------------------------------------------------------------------------------
# 
# #--------------------------------------------------------------------------
# # Instalação
# #--------------------------------------------------------------------------
# 
# • Cole o script abaixo dos "▼ Scripts Adicionais" e acima do "▼ Principal" 
#   no Editor de Scripts do RPG Maker VX.
#
# #--------------------------------------------------------------------------
# # Ativação
# #--------------------------------------------------------------------------
# 
# • A ativação da HUD se dá por meio de eventos, caso a switch 1 (por padrão)
#   esteja ativada, a HUD estará ativa, caso deseje mudar a switch que ativa
#   a HUD, utilize a guia de configuração abaixo. Veja o mapa de exemplo em
#   caso de dúvidas
#
#  #-------------------------------------------------------------------------
#  # Configuração da Switch
#  #-------------------------------------------------------------------------
#  
  SWITCH_INDEX = 1
#
#==============================================================================


#Janela com as informções
class Window_Info < Window_Base
  def initialize(x, y, width, height)
    super(x, y, width, height)
    self.opacity = 0
    draw_face($game_party.leader.face_name,$game_party.leader.face_index,
         0, 0)
  end
  def update  
    super
    @actor1 = $game_party.leader
    @class_x = 152
    if @actor1.hp != @hp || @actor1.mp != @mp
      refresh
    end
  end
  
  #Desenha a face do héroi, com 64x64
  def draw_face(face_name, face_index, x, y, enabled = true)
    @bitmap_face = Cache.face(face_name)
    @dr_face = Rect.new(0, 0, 64, 64)
    @cut_face = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
    self.contents.stretch_blt(@dr_face, @bitmap_face, @cut_face) 
  end
  
  def refresh
    #Atualiza a posição da Classe em relação ao Nome
    if @actor1.name.size == 6
      @class_x = 152
    elsif @actor1.name.size > 6
      @class_x = 162
    elsif @actor1.name.size < 6
      @class_x = 142
    end
    
    #Desenha as informações do herói
    self.contents.clear
    self.draw_actor_name(@actor1, 74, 0)
    self.draw_actor_class(@actor1, @actor1.name.size + @class_x, 0)
    self.draw_face($game_party.leader.face_name,$game_party.leader.face_index,
         0, 0, enabled = true)
    self.draw_actor_hp(@actor1, 74, 20)
    self.draw_actor_mp(@actor1, 74, 45)
    @class_x = 152
    
    @hp = @actor1.hp
    @mp = @actor1.mp
  end
end

#Janela com os equipamentos
class Window_Equip < Window_Base
  
  def initialize(x, y, width, height)
    super
    self.opacity = 0
    draw_equips
  end
  
  def draw_equips
    #Desenha os equipamentos do herói
    @armor = $game_party.leader.armors
    @weapon = $game_party.leader.weapons
    @armor_x = 60
    @weapon_x = 60
    @armor_y = 0
    @weapon_y = 0
    for @arm_index in @armor
      self.draw_icon(@arm_index.icon_index, @armor_x, 0)
      @armor_x -= 30
    end
    for @weap_index in @weapon
      self.draw_icon(@weap_index.icon_index, @weapon_x, 30)
      @weapon_x -= 30
    end
  end
  
  def refresh_equips
    self.contents.clear
    draw_equips
  end
end

#Janela com os Buffs e Debuffs
class Window_Buffs < Window_Base
  def initialize(x, y, width, height)
    super
    self.opacity = 0
    @buffs_x = 0
    draw_buffs
  end
  
  def draw_buffs
    #Desenha os Bufffs e Debuufs do herói
    @buffs_x = 0
    draw_actor_icons($game_party.leader, @buffs_x, 0)
    @buffs_x += 10
  end
  
  def update
    refresh_buffs
  end
  
  def refresh_buffs
    @buffs_x = 0
    self.contents.clear
    draw_buffs
  end
end

#Cena principal
class Scene_Map < Scene_Base
  alias :ex_start :start
  alias :ex_update :update
  def start
    ex_start
    #Cria todas as janelas
    @infos = Window_Info.new(0, 0, 350, 100)
    @equips = Window_Equip.new(Graphics.width - 110, 0, 110, 80)
    @buffs = Window_Buffs.new(0, Graphics.height - 50, Graphics.width, 50)
    @infos.contents_opacity = 0
    @equips.contents_opacity = 0
    @buffs.contents_opacity = 0
    @mbrs_index = 1
  end
  
  
  
  def update
    ex_update
     # Defina aqui a tecla utilizada para trocar de herói
     # Defina a tecla entre apóstrofes ('') ou aspas ("").
     # As teclas disponíveis serão mostradas à seguir, pela configuração padrão
     # do RPG Maker VX Ace.
     #
     # Letra : Tecla
     #----------------------
     #   A   : Shift
     #   B   : X, Esc, 0
     #   C   : Z, Enter, Espaço
     #   L   : Q
     #   R   : W
     #   X   : A
     #   Y   : S
     #   Z   : D
    change_player if Input.trigger?(:L)
    
    #Ativa ou Desativa a HUD
    unless ($game_switches[SWITCH_INDEX])
      @infos.contents_opacity = 0
      @equips.contents_opacity = 0
      @buffs.contents_opacity = 0
      return 
    end
          
    #Limite das Informações
    if $game_player.x <= 6 && $game_player.y <= 2
      @infos.contents_opacity = 55
    else
      @infos.contents_opacity = 255
    end
    
    #Limite dos Equipamentos
    if $game_player.x >= 14 && $game_player.y <= 2
      @equips.contents_opacity = 55
    else
      @equips.contents_opacity = 255
    end
    
    #Limites dos Buffs
    if $game_player.x <= 3 && $game_player.y >= 11
      @buffs.contents_opacity = 55
    else
      @buffs.contents_opacity = 255
    end
  
  end
  
  def change_player
    $game_party.swap_order($game_party.leader.index, $game_party.members[@mbrs_index].index)
    if @mbrs_index < $game_party.members.size - 1
      @mbrs_index += 1
    elsif @mbrs_index >= $game_party.members.size - 1
      @mbrs_index = 1
    end
    
    #Atualização de todas as janelas
    @infos.refresh
    @equips.refresh_equips
    @buffs.refresh_buffs
  end
end


E pra quem acha que é muita informação, está aqui a versão light da HUD, apenas mostrando a face do herói, o hp e o mp.(Se quiserem alguma alteração é só pedir)
Spoiler

Spoiler
#==============================================================================
# HUD sem utilizar imagens externas [VXA]
#------------------------------------------------------------------------------
# HUD muito útil criada em RGSS, sem necessidade do uso de imagens externas.
#------------------------------------------------------------------------------
# Autor      : Gking
# Versão     : 1.0 Light
# Lançado em : 05 de Junho de 2017
#==============================================================================

#==============================================================================
# Agradecimentos:
#------------------------------------------------------------------------------
# • Alisson, Corvo, Revali, King Gerar e JohnBolton:
#   * Pela grande ajuda no script, além de algumas correções.
#   *http://centrorpg.com/
# • Kyo Panda:
#   * Pela ajuda indireta nos comentários.
#   *http://centrorpg.com/
#==============================================================================

#==============================================================================
# Como usar:
#------------------------------------------------------------------------------
# 
# #--------------------------------------------------------------------------
# # Instalação
# #--------------------------------------------------------------------------
# 
# • Cole o script abaixo dos "▼ Scripts Adicionais" e acima do "▼ Principal" 
#   no Editor de Scripts do RPG Maker VX.
#
# #--------------------------------------------------------------------------
# # Ativação
# #--------------------------------------------------------------------------
# 
# • A ativação da HUD se dá por meio de eventos, caso a switch 1 (por padrão)
#   esteja ativada, a HUD estará ativa, caso deseje mudar a switch que ativa
#   a HUD, utilize a guia de configuração abaixo. Veja o mapa de exemplo em
#   caso de dúvidas
#
#  #-------------------------------------------------------------------------
#  # Configuração da Switch
#  #-------------------------------------------------------------------------
#  
  SWITCH_INDEX = 1
#
#==============================================================================


#Janela com as informções
class Window_Info < Window_Base
  def initialize(x, y, width, height)
    super(x, y, width, height)
    self.opacity = 0
    draw_face($game_party.leader.face_name,$game_party.leader.face_index,
         0, 0)
  end
  def update  
    super
    @actor1 = $game_party.leader
    if @actor1.hp != @hp || @actor1.mp != @mp
      refresh
    end
  end
  
  #Desenha a face do héroi, com 64x64
  def draw_face(face_name, face_index, x, y, enabled = true)
    @bitmap_face = Cache.face(face_name)
    @dr_face = Rect.new(0, 0, 64, 64)
    @cut_face = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
    self.contents.stretch_blt(@dr_face, @bitmap_face, @cut_face) 
  end
  
  def refresh
    #Desenha as informações do herói
    self.contents.clear

    self.draw_face($game_party.leader.face_name,$game_party.leader.face_index,
         0, 0, enabled = true)
    self.draw_actor_hp(@actor1, 74, 10)
    self.draw_actor_mp(@actor1, 74, 45)
    
    @hp = @actor1.hp
    @mp = @actor1.mp
  end
end

#Cena principal
class Scene_Map < Scene_Base
  alias :ex_start :start
  alias :ex_update :update
  def start
    ex_start
    #Cria todas as janelas
    @infos = Window_Info.new(0, 0, 350, 100)
    @infos.contents_opacity = 0
    @mbrs_index = 1
  end
  
  
  
  def update
    ex_update
     # Defina aqui a tecla utilizada para trocar de herói
     # Defina a tecla entre apóstrofes ('') ou aspas ("").
     # As teclas disponíveis serão mostradas à seguir, pela configuração padrão
     # do RPG Maker VX Ace.
     #
     # Letra : Tecla
     #----------------------
     #   A   : Shift
     #   B   : X, Esc, 0
     #   C   : Z, Enter, Espaço
     #   L   : Q
     #   R   : W
     #   X   : A
     #   Y   : S
     #   Z   : D
    change_player if Input.trigger?(:L)
    
    #Ativa ou Desativa a HUD
    unless ($game_switches[SWITCH_INDEX])
      @infos.contents_opacity = 0
      return 
    end
          
    #Limite das Informações
    if $game_player.x <= 6 && $game_player.y <= 2
      @infos.contents_opacity = 55
    else
      @infos.contents_opacity = 255
    end
  
  end
  
  def change_player
    $game_party.swap_order($game_party.leader.index, $game_party.members[@mbrs_index].index)
    if @mbrs_index < $game_party.members.size - 1
      @mbrs_index += 1
    elsif @mbrs_index >= $game_party.members.size - 1
      @mbrs_index = 1
    end
    
    #Atualização de todas as janelas
    @infos.refresh
  end
end
[close]
[close]

Olha só, já tá produzindo scripts, haha' mas é isso mesmo, pra frente é que se anda.
Espero ver mais trabalhos seus por aí o/

Isso aí, gostei de ver. Ficou bem legal o script. Fico no aguardo para ver tuas novas atividades.
É como o Alisson disse: é pra frente que se anda.  :ok:


Parabéns, maluco!

Tá bem limpa e funcional.
Partiu produzir mais código e postar pra gente.

Valeu!

Aí sim, [user]Gking[/user]! Testei de todas as formas possíveis e não achei nenhum bug. Se persistir, no fim do ano tu lança até sistema de batalha. Isso é uma sugestão, mas se quiser scriptar um mini game de xadrez também, quebra meu galho.

Por que estou nos créditos? '-'
[close]

como ativa o script ?
eu sou novo no rpg maker mais ja
to criando um jogo como ativa? :._.:

04/11/2021 às 11:22 #6 Última edição: 04/11/2021 às 11:24 por Darkrafa
Citação de: toddynuh online 04/11/2021 às 10:30
como ativa o script ?
eu sou novo no rpg maker mais ja
to criando um jogo como ativa? :._.:

Bom dia, toddynuh.
A esmagadora maioria dos scripts vem com instruções nos próprios, sempre no início deles.
Neste script, por exemplo, está ali perto da linha 30: instalação e ativação. Funciona por meio de um switch ligado, vc determina qual switch será o responsável por ligar e desligar o script, por padrão será o switch 1 mas você pode determinar outro número, basta mudar este número.

Você mencionou que está começando a usar a ferramenta, vou aproveitar e lhe deixar essa sugestão: aprenda sobre o básico dela, isso é, switchs, variáveis, coordenadas e condições.
Boa parte dos scripts interagem com esses elementos e se você não souber utilizá-los os scripts não terão utilidade/não funcionarão.
Aqui no fórum há várias portas de entrada de conhecimento, basta procurar os tópicos respectivos, como estes espaços: https://centrorpg.com/index.php?board=4.0, https://centrorpg.com/index.php?board=111.0, https://centrorpg.com/index.php?board=102.0.
E o Youtube também possui canais que ensinam sobre os aplicativos do Rpg Maker.
Boa sorte!