[Resolvido]Ajuda com HUD

    Compartilhe

    driko
    Iniciante
    Iniciante

    Mensagens : 45
    Créditos : 1

    [Resolvido]Ajuda com HUD

    Mensagem por driko em Dom Mar 15, 2015 11:40 pm

    Então, esse é meu primeiro contato com o NP, e estou tendo dificuldade em entender como funciona a customização da HUD.
    Tenho mudado o que consigo aos poucos.
    Spoiler:
    Enfim, queria ajuda se alguém pudesse me dar essa força ou ensinar como eu posso fazer. Mas, se alguém puder fazer para mim deixarei aqui a base, desde já agradeço.






    Eu até tentei mas...
    Spoiler:


    Última edição por driko em Ter Mar 17, 2015 12:05 pm, editado 1 vez(es)

    GallighanMaker
    Experiente
    Experiente

    Medalhas :
    Mensagens : 604
    Créditos : 53

    Re: [Resolvido]Ajuda com HUD

    Mensagem por GallighanMaker em Seg Mar 16, 2015 1:02 am

    Gostei da hud, espero que consigam colocar no netplay :) se fosse em unity ja teria feito o script pra você.


    _________________
    @IndieDB @Steam Concept
    --

    snaker15
    Semi-Experiente
    Semi-Experiente

    Mensagens : 99
    Créditos : 18

    Re: [Resolvido]Ajuda com HUD

    Mensagem por snaker15 em Seg Mar 16, 2015 7:17 pm

    Cara primeiramente você vai ter que separar essa HUD... em base_hud que será sua hud base a primeira imagem... em seguida você vai ter que dividir a segunda imagem em 3
    pode ser assim o exemplo
    @fundo = RPG::Cache.picture("fundo") # primeira figura a que ficará como base para outras
    @hpbar = RPG::Cache.picture("hpbar") # uma imagem apenas com a imagem do hp
    @mpbar = RPG::Cache.picture("mpbar") # segue o exemplo do hp...
    @xpbar = RPG::Cache.picture("xpbar") # segue o exemplo do hp

    lá na linha 64 vc vai encontra algo assim... e so usar como logica esse meu ai...

    # HUD posição x , y lagura / altura
    self.bitmap.blt(0, 0, @fundo, Rect.new(-100, -388, 640, 480))

    # HP posição x , y
    self.bitmap.blt(197, 410, @hpbar, Rect.new(0, 0, @hpbar.width * @actor.hp / @actor.maxhp, @hpbar.height))

    # MP
    self.bitmap.blt(197, 428, @mpbar, Rect.new(0, 0, @mpbar.width * @actor.sp / @actor.maxsp, @hpbar.height))

    # XP posição x , y
    self.bitmap.blt(197, 446, @xpbar, Rect.new(0, 0, @xpbar.width * @actor.now_exp / @actor.next_exp, @hpbar.height)) if $game_party.actors[0].level < Config::MAX_LEVELS



    driko
    Iniciante
    Iniciante

    Mensagens : 45
    Créditos : 1

    Re: [Resolvido]Ajuda com HUD

    Mensagem por driko em Seg Mar 16, 2015 7:23 pm

    Primeiramente, obrigado pela atenção.
    Estarei testando aqui da forma que mostrou.  Glad

    GallighanMaker
    Experiente
    Experiente

    Medalhas :
    Mensagens : 604
    Créditos : 53

    Re: [Resolvido]Ajuda com HUD

    Mensagem por GallighanMaker em Seg Mar 16, 2015 11:10 pm

    Imagens separadas:

    - HUD Base


    -HP


    -MP


    -EXP



    [SPR] Hud
    Código:
    #==============================================================================
    # ** Hud
    #------------------------------------------------------------------------------
    # By Valentine
    # Edit By GallighanMaker 17/03/2015
    #==============================================================================

    class Hud < RPG::Sprite
      #--------------------------------------------------------------------------
      # * Inicialização dos Objetos
      #--------------------------------------------------------------------------
      def initialize
        super()
        self.bitmap = Bitmap.new(640,480)
        self.x = 1
        self.y = 1
        self.z = 999
        self.bitmap.font.size = 15
        @base = RPG::Cache.picture("HUD Base")
        @bars = RPG::Cache.picture("HudBars")
        @gold = RPG::Cache.picture("Gold")
        @actor = $game_party.actors[0]
        #edit
        @fundo = RPG::Cache.picture("HUD Base") # primeira figura a que ficará como base para outras
        @hpbar = RPG::Cache.picture("hp") # uma imagem apenas com a imagem do hp
        @mpbar = RPG::Cache.picture("mp") # segue o exemplo do hp...
        @xpbar = RPG::Cache.picture("exp") # segue o exemplo do hp
        
        refresh
      end
      #--------------------------------------------------------------------------
      # * Verificação das Variáveis
      #--------------------------------------------------------------------------
      def something_changed?
        return true if @old_exp != @actor.now_exp
        return true if @old_hp != @actor.hp
        return true if @old_sp != @actor.sp
        return true if @old_level != @actor.level
        return true if @old_gold != $game_party.item_number(Config::GOLD_ID)
        return false
      end
      #--------------------------------------------------------------------------
      # * Atualização do Frame
      #--------------------------------------------------------------------------
      def update
        super
        refresh if something_changed?
        # Mudar opacidade
        if $game_player.x >= self.x/32 and $game_player.x <= self.bitmap.width/32 and $game_player.y >= self.y/32 and $game_player.y <= self.bitmap.height/32 and self.opacity != 150
          self.opacity = 150
        elsif $game_player.x < self.x/32 or $game_player.x > self.bitmap.width/32 or $game_player.y < self.y/32 or $game_player.y > self.bitmap.height/32 and self.opacity == 150
          self.opacity = 255
        end
      end
      #--------------------------------------------------------------------------
      # * Atualização
      #--------------------------------------------------------------------------
      def refresh
        @old_exp = @actor.now_exp
        @old_hp = @actor.hp
        @old_sp = @actor.sp
        @old_level = @actor.level
        @old_gold = $game_party.item_number(Config::GOLD_ID)
        self.bitmap.clear
        
        # HUD posição x , y lagura / altura
        self.bitmap.blt(10, 10, @fundo, Rect.new(0, 0, 640, 480))
        
        # HP posição x , y
        self.bitmap.blt(35, 13, @hpbar, Rect.new(0, 0, @hpbar.width * @actor.hp / @actor.maxhp, @hpbar.height))

        # MP
        self.bitmap.blt(193, 13, @mpbar, Rect.new(0, 0, @mpbar.width * @actor.sp / @actor.maxsp, @hpbar.height))

        # Exp
        self.bitmap.blt(68, 38, @xpbar, Rect.new(0, 0, @xpbar.width * @actor.now_exp / @actor.next_exp, 100)) if $game_party.actors[0].level < Config::MAX_LEVELS
        
        
        # Base HP
        #self.bitmap.blt(0, 0, @base, Rect.new(0, 18, 400, 100))
      
        # Base SP
        #self.bitmap.blt(99, 0, @base, Rect.new(0, 36, 400, 100))
        
        # Base Exp
        #self.bitmap.blt(0, 22, @base, Rect.new(0, 0, 400, 100))
        
        # HP
        #self.bitmap.blt(0, 0, @bars, Rect.new(0, 18, 95 * @actor.hp / @actor.maxhp, 100))
        
        # SP
        #self.bitmap.blt(99, 0, @bars, Rect.new(0, 36, 95 * @actor.sp / @actor.maxsp, 100))
        
        # Exp
        #self.bitmap.blt(0, 22, @bars, Rect.new(0, 0, @bars.width * @actor.now_exp / @actor.next_exp, 100)) if $game_party.actors[0].level < Config::MAX_LEVELS
        
        # Dinheiro
        self.bitmap.blt(230, 45, @gold, Rect.new(0, 0, @gold.width, @gold.height))
        
        # Textos pretos
        
        self.bitmap.font.color = Color.new(0,0,0)
        #self.bitmap.draw_text(6, -6, 32, 32, $data_system.words.hp)
        
        self.bitmap.draw_text(105 - self.bitmap.text_size("#{@actor.hp}/#{@actor.maxhp}").width, 5, self.bitmap.width, 32, "#{@actor.hp}/#{@actor.maxhp}")
        #self.bitmap.draw_text(105, -6, 36, 32, $data_system.words.sp)
        
        self.bitmap.draw_text(260 - self.bitmap.text_size("#{@actor.sp}/#{@actor.maxsp}").width, 5, self.bitmap.width, 32, "#{@actor.sp}/#{@actor.maxsp}")
        #self.bitmap.draw_text(6, 16, 42, 32, "EXP")
        self.bitmap.draw_text(97 - self.bitmap.text_size("#{@actor.now_exp}/#{@actor.next_exp}").width, 35, self.bitmap.width, 32, "#{@actor.now_exp}/#{@actor.next_exp}")
        self.bitmap.draw_text(140, 35, self.bitmap.text_size(@actor.level.to_s).width+32, 32, "#{Vocab::HUD_LEVEL} #{@actor.level}")
        self.bitmap.draw_text(250, 35, self.bitmap.text_size(@old_gold.to_s.reverse.scan(/...|..|./).join('.').reverse).width+32, 32, @old_gold.to_s.reverse.scan(/...|..|./).join('.').reverse)
      
        # Textos brancos
        
        self.bitmap.font.color = Color.new(255,255,255)
        #self.bitmap.draw_text(5, -7, 32, 32, $data_system.words.hp)
        self.bitmap.draw_text(104 - self.bitmap.text_size("#{@actor.hp}/#{@actor.maxhp}").width, 5, self.bitmap.width, 32, "#{@actor.hp}/#{@actor.maxhp}")
        #self.bitmap.draw_text(104, -7, 36, 32, $data_system.words.sp)
        self.bitmap.draw_text(259 - self.bitmap.text_size("#{@actor.sp}/#{@actor.maxsp}").width, 5, self.bitmap.width, 32, "#{@actor.sp}/#{@actor.maxsp}")
        #self.bitmap.draw_text(5, 15, 42, 32, "EXP")
        #self.bitmap.draw_text(78 - self.bitmap.text_size("#{@actor.now_exp}/#{@actor.next_exp}").width, 25, self.bitmap.width, 32, "#{@actor.now_exp}/#{@actor.next_exp}")
        self.bitmap.draw_text(98 - self.bitmap.text_size("#{@actor.now_exp}/#{@actor.next_exp}").width, 35, self.bitmap.width, 32, "#{@actor.now_exp}/#{@actor.next_exp}")
        self.bitmap.draw_text(139, 35, self.bitmap.text_size(@actor.level.to_s).width+32, 32, "#{Vocab::HUD_LEVEL} #{@actor.level}")
            
        # Texto amarelo
        #self.bitmap.draw_text(5, 15, 42, 32, "EXP")
        self.bitmap.font.color = Color.new(255,255,0)
        self.bitmap.draw_text(251, 36, self.bitmap.text_size(@old_gold.to_s.reverse.scan(/...|..|./).join('.').reverse).width+32, 32, @old_gold.to_s.reverse.scan(/...|..|./).join('.').reverse)
      end
    end

    #--------------------------------------------------------------------------
    # ** Scene_Map
    #------------------------------------------------------------------------------
    # Para facilitar a troca/remoção desta hud, a class Scene_Map foi
    # criada separada.
    #--------------------------------------------------------------------------
    class Scene_Map
      alias hud_main_draw main_draw
      alias hud_dispose dispose
      alias hud_update update
      #--------------------------------------------------------------------------
      # * Processamento Principal
      #--------------------------------------------------------------------------
      def main_draw
        @hud = Hud.new
        hud_main_draw
      end
      #--------------------------------------------------------------------------
      # * Exibição
      #--------------------------------------------------------------------------
      def dispose
        @hud.dispose
        hud_dispose
      end
      #--------------------------------------------------------------------------
      # * Atualização do Frame
      #--------------------------------------------------------------------------
      def update
        @hud.update
        hud_update
      end
    end


    Não esqueça de modificar a posição da hotkey caso interfira.
    Não está o melhor código mas o trabalho de ajustar as posições está feito.

    Imagem :





    Espero ter ajudado!.


    _________________
    @IndieDB @Steam Concept
    --

    driko
    Iniciante
    Iniciante

    Mensagens : 45
    Créditos : 1

    Re: [Resolvido]Ajuda com HUD

    Mensagem por driko em Ter Mar 17, 2015 12:03 pm

    Caraca, nem creio que você foi atrás de conseguir arrumar a HUD para mim, sério... Obrigado!

    Ficou muito bom, agora poderei continuar com o trabalho dos menus e GUI. Precisar de qualquer ajuda que envolva design só falar! Successful'

    GallighanMaker
    Experiente
    Experiente

    Medalhas :
    Mensagens : 604
    Créditos : 53

    Re: [Resolvido]Ajuda com HUD

    Mensagem por GallighanMaker em Ter Mar 17, 2015 1:16 pm

    Sem problemas, tava atoa ai fiquei tentando montar ela e consegui. Gostei desse estilo de HUD que você fez, se tiver algum outro modelo que não for usar e puder me mandar, talvez eu use no unity ou até mesmo no netplay.


    _________________
    @IndieDB @Steam Concept
    --

      Data/hora atual: Seg Dez 05, 2016 5:28 am