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

[Script VX] M+ Simple HUD 2.5

Iniciado por M3T, 14/10/2013 às 14:29

M+ Simple HUD
v2.5




Introdução e características
Opa! Venho aqui com meu primeiro post no fórum.
Esse é um dos primeiros scripts meus, ele tem hoje uma versão para VX Ace. É uma HUD bem convencional, mostra HP, MP e EXP como qualquer outra. Totalmente customizável, desde posição dos textos até as imagens.
Não causa lag ao seu jogo, atualiza somente quando necessário.
Perdi o meu tópico antigo porque não sei o que aconteceu com a Santuário, ela está fora do ar há algum tempo. Tinha muita coisa minha lá.




Instruções de Uso
Existem duas maneiras para você usar o script: baixe a demo, que é a mais simples, ou faça o seguinte:
1. Copie e cole o script abaixo na seção de scripts adicionais.
2. Baixe a pasta Special, em anexo, e extraia-a na pasta Graphics.
3. Customize as imagens como quiser e o script também.




Script

Spoiler
#==============================+ M+ Simple HUD +==============================#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~v2+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#-----------------------------------Por M3T-----------------------------------#
=begin
                                   Versão 2.5
 Instruções:
 1. Cole o script na seção de scripts adicionais.
 2. Configura as opções inclusas nela ao seu gosto.
 3. Crie a pasta 'Special' dentro da Graphics, e lá coloque as imagens que tem 
 no tópico, com o nome que é mandado. OU Copie a pasta Special da demonstração
 do script.

 Características:
 -Mostra HP, MP, EXP, Nome do personagem, Char e Level;
 -Faz o uso de imagens para as barrinhas, em pastas diferentes;
 -Opção de desativar/ativar HUD quando quiser;
 -Dispositivo que só atualiza a HUD somente quando necessário, assim causando
 menos lag ao jogo(Obrigado Highlander por isso);
 -Opção de usar windowskin ou imagem como fundo;
 -Verificador de novas versões;
 -Simples mas agradável.
 
 Agradecimentos especiais:
 Highlander - Autor do script de onde tirei o dispositivo usado neste meu.
 Marlos Gama - Foi observando um script dele que aprendi a mexer com as
 imagens como barrinhas de HP, por isso algumas partes podem ser parecidas.
 Berka - Pelo script usado na parte de verificar se existe uma versão nova.
 
 Obrigado por usar esse script! Estou muito agradecido ^.^
 Não se esqueça de dar os créditos.
=end

#- Configurações da HUD - altere ao seu gosto -#

module Simple_Hud
  Hud_Switch = 1 #Switch de visibilidade da HUD
  Hud_X = 0 #Posição X da HUD
  Hud_Y = 0 #Posição Y da HUD
  Hud_Comprimento = 250 #Comprimento da HUD
  Hud_Altura = 120 #Altura da HUD
  Hud_Opacidade = 0 #Opacidade da windowskin mostrada no fundo.
  Hud_Actor = 1 #ID do membro do grupo que terá informações mostradas
  Hud_Character = true #Mostrar gráfico do personagem? true para sim e false para não
  Hud_Level = true #Mostrar nível do personagem? true para sim e false para não
  Hud_Name = true #Mostrar nome do personagem? true para sim e false para não
  Hud_HP = true #Mostrar barra de HP? true para sim e false para não
  Hud_MP = true #Mostrar barra de MP? true para sim e false para não
  Hud_EXP = true #Mostrar barra de EXP? true para sim e false para não
  #Atenção: as configurações a seguir são somadas com a posição X ou Y da HUD normal,
  #ou seja, se a posição X da HUD é 20 e a da barra de HP é 10, então a posição da
  #barra de HP será 30.
  Hud_HP_X   = 10  #Posição X da barra de HP
  Hud_HP_Y   = 25  #Posição Y da barra de HP
  Hud_MP_X   = 10  #Posição X da barra de MP
  Hud_MP_Y   = 45  #Posição Y da barra de MP
  Hud_EXP_X  = 10  #Posição X da barra de EXP
  Hud_EXP_Y  = 65  #Posição Y da barra de EXP
  Hud_Char_X = 200 #Posição X do gráfico do personagem
  Hud_Char_Y = 50  #Posição Y do gráfico do personagem
  Hud_LvL_X  = 110 #Posição X do nível do personagem
  Hud_LvL_Y  = 2   #Posição Y do nível do personagem
  Hud_Name_X = 10  #Posição X do nome do personagem
  Hud_Name_Y = 2   #Posição Y do nome do personagem
  #A atenção dada anteriormente não vale para as configurações a seguir.
  Usar_imagem_de_fundo = true #Usar a imagem 'Hud_back.png' como fundo?
                              #true para sim; false para não.
  Hud_ShowHPMPtext = true #Mostrar texto com o HP em cima da barrinha de HP e
                          #texto com o MP em cima da barrinha de MP?
                          #true = Sim; false = Não.
  Show_VersionAlert = true  #Alertar se uma nova versão está disponível?
                            #Recomendo marcar true durante o desenvolvimento do
                            #projeto e false antes de disponibilizá-lo.
end
#- Fim das configurações -#
#- Início do script [Não altere nada abaixo.] -#


#Verificar se existe uma versão nova
def make_f_simplehud
  if Net::HTTP.loaded?("script.txt")
      files = File.readlines("script.txt")
      if File.exists?("SimpleHUD.txt")
        File.delete("SimpleHUD.txt")
      end
      new = File.open("SimpleHUD.txt", "wb")
      for i in 0..files.size
        new.puts("#{files[i]}\n\r")
      end
      File.delete("script.txt")
    else
      Graphics.update
      make_f_simplehud
    end
end
if Simple_Hud::Show_VersionAlert
  Net::HTTP.download('http://m3t.eu5.org/scripts/simplehud/actversion.txt')
  if File.readlines("actversion.txt")[0].to_f > 2.5
    print "A versão do script M+ Simple HUD usada em seu projeto é desatualizada.
A nova versão é " + File.readlines("actversion.txt")[0].to_s + ".
Será tentado criar um arquivo chamado SimpleHUD.txt contendo o script mais atualizado."
    Net::HTTP.download('http://m3t.eu5.org/scripts/simplehud/script.txt')
    make_f_simplehud
  end
  File.delete("actversion.txt")
end
#Modificação na classe Game_Actor
class Game_Actor
  def m_exp1
    return @exp - @exp_list[@level]
  end
  def m_exp2
    return next_exp_s - @exp_list[@level]
  end
end
#Início da classe Hud
class Hud < Window_Base
  include Simple_Hud
  def initialize
    @info = [] #Cria array vazia.
    super(Hud_X-16,Hud_Y-16,Hud_Comprimento,Hud_Altura) #Cria a HUD.
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.name = "Arial Narrow" #Define a fonte.
    self.contents.font.size = 20 #Define o tamanho da fonte.
    refresh #Desenha a HUD.
  end
  def update
    refresh if condicao_de_atualizacao #Somente atualiza a HUD caso precise.
  end
  def refresh
    self.contents.clear #"Limpa" o conteúdo
    self.opacity = 0
    if $game_switches[Hud_Switch]
      self.opacity = 0 if Usar_imagem_de_fundo
      self.opacity = Hud_Opacidade unless Usar_imagem_de_fundo #Define a opacidade da HUD.
      if Usar_imagem_de_fundo
        b = Cache.load_bitmap("Graphics/Special/", "HudBack")
        beb = b.width
        beh = b.height
        b_rect = Rect.new(0, 0, beb, beh)
        self.contents.blt(0, 0, b, b_rect)
      end
      actor = $game_party.members[Hud_Actor-1]
      draw_actor_name(actor, Hud_Name_X, Hud_Name_Y) if Hud_Name #Mostra o nome do personagem.
      #Mostra fundo da barra de HP
      fd = Cache.load_bitmap("Graphics/Special/", "HudBase")
      bw = fd.width
      bh = fd.height
      fd_rect = Rect.new(0,0,bw,bh)
      self.contents.blt(Hud_HP_X,Hud_HP_Y,fd,fd_rect) if Hud_HP
      #Mostra HP
      barhp = Cache.load_bitmap("Graphics/Special/", "HudHP")
      bhw = barhp.width * actor.hp / actor.maxhp
      bhh = barhp.height
      barhp_rect = Rect.new(0,0,bhw,bhh)
      self.contents.blt(Hud_HP_X,Hud_HP_Y,barhp,barhp_rect) if Hud_HP
      #Mostra fundo da barra de MP
      fd2 = Cache.load_bitmap("Graphics/Special/", "HudBase")
      bw2 = fd2.width
      bh2 = fd2.height
      fd2_rect = Rect.new(0,0,bw2,bh2)
      self.contents.blt(Hud_MP_X,Hud_MP_Y,fd2,fd2_rect) if Hud_MP
      #Mostra MP
      barmp = Cache.load_bitmap("Graphics/Special/", "HudMP")
      bhw2 = barmp.width * actor.mp / actor.maxmp
      bhh2 = barmp.height
      barmp_rect = Rect.new(0,0,bhw2,bhh2)
      self.contents.blt(Hud_MP_X,Hud_MP_Y,barmp, barmp_rect) if Hud_MP
      #Mostra fundo da barra de EXP
      fd3 = Cache.load_bitmap("Graphics/Special/", "HudBase")
      bw3 = fd2.width
      bh3 = fd2.height
      fd3_rect = Rect.new(0,0,bw3,bh3)
      self.contents.blt(Hud_EXP_X,Hud_EXP_Y,fd3,fd3_rect) if Hud_EXP
      #Mostra barra de EXP
      barxp = Cache.load_bitmap("Graphics/Special/", "HudEXP")
      bhw3 = barxp.width * actor.m_exp1 / actor.m_exp2
      bhh3 = barxp.height
      barxp_rect = Rect.new(0,0,bhw3,bhh3)
      self.contents.blt(Hud_EXP_X,Hud_EXP_Y,barxp,barxp_rect) if Hud_EXP
      draw_character(actor.character_name, actor.character_index, Hud_Char_X, Hud_Char_Y) if Hud_Character#Mostra o char do personagem
      if Hud_ShowHPMPtext
        #Mostra a quantidade de HP
        hp = actor.hp
        maxhp = actor.maxhp
        self.contents.draw_text(Hud_HP_X+8, Hud_HP_Y, 100, 20, hp.to_s + "/" + maxhp.to_s)
        #Mostra a quantidade de MP
        mp = actor.mp
        maxmp = actor.maxmp
        self.contents.font.color = text_color(0)
        self.contents.draw_text(Hud_MP_X+8, Hud_MP_Y, 100, 20, mp.to_s + "/" + maxmp.to_s)
      end
      draw_actor_level(actor, Hud_LvL_X, Hud_LvL_Y) if Hud_Level #Mostra Level
      if $scene.is_a?(Scene_Menu) || $scene.is_a?(Scene_Battle)
        self.contents.clear
      end
    end
  end
  def condicao_de_atualizacao
    a = $game_party.members[Hud_Actor-1]
    @sw = $game_switches[Hud_Switch]
    infos = [a.id,a.character_name,a.character_index,a.hp,a.mp,a.level,a.name, a.exp_s, @sw] 
    return update_infos if @info != infos
    return false
  end
  
  def update_infos
    a = $game_party.members[Hud_Actor-1]
    @info[0] = a.id
    @info[1] = a.character_name
    @info[2] = a.character_index
    @info[3] = a.hp
    @info[4] = a.mp
    @info[5] = a.level
    @info[6] = a.name
    @info[7] = a.exp_s
    @info[8] = $game_switches[Hud_Switch]
    return true
  end
end 
# Introduzir a HUD a Scene_Map
class Scene_Map
  alias hud_main main
  def main
    @Hud = Hud.new
    hud_main
    @Hud.dispose
  end
  alias hud_update update
  def update
    hud_update
    @Hud.update
  end
end
#- Fim do script. -#
#================================ M+ Scripts ================================#
[close]




Screenshots





Downloads
Aqui tem os downloads do anexo, mas no dropbox, que pode ser mais rápido de baixar e se o anexo der problema você baixa aqui.
Demo
Pasta Special




Considerações finais
Se gostou do script e quer usá-lo no seu projeto, por favor, cite meu nome nos créditos =D
Modifique-o a vontade, mas peça minha autorização caso queira postar sua versão modificada.
Pode ocorrer de eu atualizar o script, então encontre changelogs e downloads primeiro no meu site: http://m3t.eu5.org/ (Estou sem saco pra terminar ele de uma vez por todas, está incompleto)

Obrigado e até mais \o

[Anexo excluído pelo administrador]

Que bom que você já está com esse espírito de por a mão na massa! Isso é muito bom para a comunidade. Só deixa eu te dar uma sugestão quanto a HUD: remova esse fundo laranja e deixe só as barras. A função de uma HUD é passar o máximo de informação possível sem prejudicar a visualização do jogo e esse retângulo laranja atrapalha bastante.

Viva a lenda!



Citação de: VincentVII online 14/10/2013 às 14:40
Que bom que você já está com esse espírito de por a mão na massa! Isso é muito bom para a comunidade. Só deixa eu te dar uma sugestão quanto a HUD: remova esse fundo laranja e deixe só as barras. A função de uma HUD é passar o máximo de informação possível sem prejudicar a visualização do jogo e esse retângulo laranja atrapalha bastante.

Opa, olá de novo =D
Quanto ao fundo laranja, como eu disse, a HUD é totalmente customizável. Você pode facilmente modificar isso ou na configuração, ou alterando a imagem de fundo para uma imagem transparente. Essa imagem é somente para demonstração.
Mas enfim, estava pensando em fazer um sisteminha que, quando o player anda para onde a HUD está posicionada na tela, a opacidade dela diminui para aumentar a visibilidade. Vou ver se faço isso.

Até \o