MOG – I Hud 1.0

20 de janeiro de 2015
MOG – I Hud 1.0

MOG – I Hud 1.0 é um script criado pelo Moghunter para ser usado em um game ou projeto do RPG Maker XP que implementa um sistema de Hud que apresenta o HP e SP em ícones.

Este sistema de Hud é no estilo de games como Alundra ou Soul Blazer, jogos no estilo action role-playing game.

O MOG – I Hud 1.0 é uma alternativa similar e mais moderna ao MOG MPW Icon v1.0, que publicamos aqui, mas não conta com a demo nem as figuras prontas para usar.

MOG - I Hud

Utilização

Convém baixar o minigame que já possui todas as imagens exemplos e o script.

Note que as imagens devem ser deixadas na pasta Windowskins.

O script abaixo vai acima do “Main”, na sua parte de scripts do projeto:

#_______________________________________________________________________________
# MOG - I Hud 1.0      
#_______________________________________________________________________________
# By Moghunter 
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# - Apresenta o HP e SP em icones.
#
# ARQUIVOS NECESSÁRIOS
# 
# IHud_HP.png
# IHud_Layout.png
# Ihud_Number.png
# IHud_SP.png
#
# Deixe as imagens na pasta Windowskins
#
# NOTA
# A imagem do ícone sempre será dividido por 2, independente 
# do tamanho da imagem.
#_______________________________________________________________________________
module MOG
  #Posição geral do HUD.
  IHUD_X = 230
  IHUD_Y = 10
  #Switch que desativa a HUD.
  DISABLE_IHUD_SWITCH_ID = 5
  #Posição do Layout
  IHUD_LAYOUT_X = -15
  IHUD_LAYOUT_Y = 0
  #HP ------------------------------------
  #Posição do ícone de HP.
  HP_ICON_X = 30
  HP_ICON_Y = 0
  #Posição do numero de HP.
  H_NUMBER_X = 0
  H_NUMBER_Y = 0
  #Quantidade maxima de icones de HP.
  ICON_HP_MAX = 10
  #Espaço entre um icone e o outro.
  ICON_HP_SPACE = 14
  #Apresentar o HP em numero.
  HP_NUMBER_ENABLE = true  
  #SP -------------------------------------
  #Posição do ícone de SP.
  SP_ICON_X = 50
  SP_ICON_Y = 32
  #Posição do numero de SP.
  S_NUMBER_X = 30
  S_NUMBER_Y = 32
  #Quantidade maxima de icones de SP.
  ICON_SP_MAX = 10
  #Espaço entre um icone e o outro.
  ICON_SP_SPACE = 14  
  #Apresentar o SP em numero.
  SP_NUMBER_ENABLE = true  
end

#==============================================================================
# Ihud
#==============================================================================
class Ihud < Sprite
  include MOG 
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport) 
    @actor = $game_party.actors[0] 
    return if @actor == nil  
    # Initialize -------------------------------------------------------------
    @hp = @actor.hp
    @maxhp = @actor.maxhp
    @hp_maxicon = ICON_HP_MAX   
    @hp_iconmax = ICON_HP_MAX   
    @hp_iconmax = 1 if @hp_iconmax <= 0      
    @hp2 = @actor.hp / @hp_iconmax 
    @sp = @actor.sp
    @maxsp = @actor.maxsp
    @sp_maxicon = ICON_SP_MAX   
    @sp_iconmax = ICON_SP_MAX   
    @sp_iconmax = 1 if @sp_iconmax <= 0      
    @sp2 = @actor.sp / @sp_iconmax     
    # Layout -------------------------------------------------------------------
    @layout_image = RPG::Cache.windowskin("IHud_Layout")
    @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    @layout_sprite = Sprite.new
    @layout_sprite.bitmap = @layout_bitmap
    @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    @layout_sprite.z = 5001
    @layout_sprite.x = IHUD_LAYOUT_X + IHUD_X
    @layout_sprite.y = IHUD_LAYOUT_Y + IHUD_Y
    # HP ---------------------------------------------------------------------
    @hp_icon_image = RPG::Cache.windowskin("IHud_HP")
    @hp_icon_cw = @hp_icon_image.width / 2
    @hp_icon_ch = @hp_icon_image.height       
    b_width = @hp_icon_cw * @hp_iconmax
    @hp_bitmap = Bitmap.new(b_width,@hp_icon_ch)
    @hp_icon_sprite = Sprite.new
    @hp_icon_sprite.bitmap = @hp_bitmap
    @hp_icon_sprite.z = 5002
    @hp_icon_sprite.x = HP_ICON_X + IHUD_X
    @hp_icon_sprite.y = HP_ICON_Y + IHUD_Y
    # HP Number ---------------------------------------------------------------------
    @hp_number_image = RPG::Cache.windowskin("Ihud_Number")
    @hp_number_bitmap = Bitmap.new(@hp_number_image.width,@hp_number_image.height)
    @im_cw = @hp_number_image.width / 10
    @im_ch = @hp_number_image.height / 2  
    @hp_number_sprite = Sprite.new
    @hp_number_sprite.bitmap = @hp_number_bitmap
    @hp_number_sprite.z = 5003
    @hp_number_sprite.x = H_NUMBER_X + IHUD_X
    @hp_number_sprite.y = H_NUMBER_Y + IHUD_Y
    # SP ---------------------------------------------------------------------
    @sp_icon_image = RPG::Cache.windowskin("IHud_SP")
    @sp_icon_cw = @sp_icon_image.width / 2
    @sp_icon_ch = @sp_icon_image.height       
    bs_width = @sp_icon_cw * @sp_iconmax
    @sp_bitmap = Bitmap.new(bs_width,@sp_icon_ch)
    @sp_icon_sprite = Sprite.new
    @sp_icon_sprite.bitmap = @sp_bitmap
    @sp_icon_sprite.z = 5002
    @sp_icon_sprite.x = SP_ICON_X + IHUD_X
    @sp_icon_sprite.y = SP_ICON_Y + IHUD_Y
    # SP Number ---------------------------------------------------------------------
    @sp_number_image = RPG::Cache.windowskin("Ihud_Number")
    @sp_number_bitmap = Bitmap.new(@sp_number_image.width,@sp_number_image.height)
    @ims_cw = @sp_number_image.width / 10
    @ims_ch = @sp_number_image.height / 2  
    @sp_number_sprite = Sprite.new
    @sp_number_sprite.bitmap = @sp_number_bitmap
    @sp_number_sprite.z = 5003
    @sp_number_sprite.x = S_NUMBER_X + IHUD_X
    @sp_number_sprite.y = S_NUMBER_Y + IHUD_Y
    hp_refresh 
    sp_refresh     
    visible_update
  end

  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    return if @actor == nil  
    #Layout Dispose
    @layout_bitmap.dispose
    @layout_bitmap = nil       
    @layout_sprite.bitmap.dispose
    @layout_sprite.bitmap = nil
    @layout_sprite.dispose
    @layout_sprite = nil    
    #HP Icon Dispose
    @hp_bitmap.dispose
    @hp_bitmap = nil
    @hp_icon_sprite.dispose
    @hp_icon_sprite = nil
    #Hp Number Dispose
    @hp_number_bitmap.dispose
    @hp_number_bitmap = nil      
    @hp_number_sprite.bitmap.dispose
    @hp_number_sprite.bitmap = nil
    @hp_number_sprite.dispose
    @hp_number_sprite = nil
    #SP Icon Dispose
    @sp_bitmap.dispose
    @sp_bitmap = nil
    @sp_icon_sprite.dispose
    @sp_icon_sprite = nil
    #Sp Number Dispose
    @sp_number_sprite.bitmap.dispose
    @sp_number_sprite.bitmap = nil
    @sp_number_sprite.dispose
    @sp_number_sprite = nil
    @sp_number_bitmap.dispose
    @sp_number_bitmap = nil        
  end   
  
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    return if @actor == nil  
    if @hp != @actor.hp or
       @maxhp != @actor.maxhp
       hp_refresh 
    end   
    if @sp != @actor.sp or
       @maxsp != @actor.maxsp
       sp_refresh 
    end           
    visible_update
  end    
  
  #--------------------------------------------------------------------------
  # * Visible_on
  #--------------------------------------------------------------------------
  def visible_update
    return if @actor == nil  
    if $game_switches[MOG::DISABLE_IHUD_SWITCH_ID] == true
        @layout_sprite.visible = false
        @hp_icon_sprite.visible = false
        @hp_number_sprite.visible = false
        @sp_icon_sprite.visible = false
        @sp_number_sprite.visible = false
     else  
        @hp_icon_sprite.visible = true  
        @sp_icon_sprite.visible = true        
        @layout_sprite.visible = true        
        if HP_NUMBER_ENABLE == true
           @hp_number_sprite.visible = true
        else
           @hp_number_sprite.visible = false
        end  
        if SP_NUMBER_ENABLE == true
           @sp_number_sprite.visible = true
        else
           @sp_number_sprite.visible = false
        end         
    end  
  end    
  
  #--------------------------------------------------------------------------
  # * HP Refresh
  #--------------------------------------------------------------------------
  def hp_refresh 
    return if @actor == nil  
    @hp_icon_sprite.bitmap.clear
    @hp_number_sprite.bitmap.clear
    @hp = @actor.hp
    @maxhp = @actor.maxhp
    @hp_iconmax = ICON_HP_MAX   
    @hp_iconmax = 1 if @hp_iconmax <= 0      
    @hp2 = @actor.hp / @hp_iconmax    
    @hp3 = @actor.hp - (@hp2 * @hp_iconmax)
    #HP Icon -----------------------
    for i in 0...@hp_iconmax
      @hp_icon_src_rect = Rect.new(0,0, @hp_icon_cw, @hp_icon_ch)
      @hp_bitmap.blt(i * ICON_HP_SPACE , 0, @hp_icon_image, @hp_icon_src_rect)        
    end
    @hp2 = @hp2 - 1 if @hp3 == 0 and @actor.hp > 0
    @hp3 = @hp_iconmax if @hp3 == 0 and @actor.hp > 0
    for i in 0...@hp3
      @hp_icon_src_rect = Rect.new(@hp_icon_cw,0, @hp_icon_cw, @hp_icon_ch)
      @hp_bitmap.blt(i * ICON_HP_SPACE , 0, @hp_icon_image, @hp_icon_src_rect)        
    end      
    #HP Number ------------------
      @hp_number_text = @hp2.abs.to_s.split(//)
      for r in 0..@hp_number_text.size - 1         
         @hp_number_abs = @hp_number_text[r].to_i 
         @hp_src_rect = Rect.new(@im_cw * @hp_number_abs, 0, @im_cw, @im_ch)
         @hp_number_bitmap.blt(20 *  r, 0, @hp_number_image, @hp_src_rect)        
     end        
  end  
   
  #--------------------------------------------------------------------------
  # * SP Refresh
  #--------------------------------------------------------------------------
  def sp_refresh 
    return if @actor == nil  
    @sp_icon_sprite.bitmap.clear
    @sp_number_sprite.bitmap.clear
    @sp = @actor.sp
    @maxsp = @actor.maxsp
    @sp_iconmax = ICON_SP_MAX   
    @sp_iconmax = 1 if @sp_iconmax <= 0      
    @sp2 = @actor.sp / @sp_iconmax    
    @sp3 = @actor.sp - (@sp2 * @sp_iconmax)
    #SP Icon -----------------------
    for i in 0...@sp_iconmax
      @sp_icon_src_rect = Rect.new(0,0, @sp_icon_cw, @sp_icon_ch)
      @sp_bitmap.blt(i * ICON_SP_SPACE , 0, @sp_icon_image, @sp_icon_src_rect)        
    end
    @sp2 = @sp2 - 1 if @sp3 == 0 and @actor.sp > 0
    @sp3 = @sp_iconmax if @sp3 == 0 and @actor.sp > 0
    for i in 0...@sp3
      @sp_icon_src_rect = Rect.new(@sp_icon_cw,0, @sp_icon_cw, @sp_icon_ch)
      @sp_bitmap.blt(i * ICON_SP_SPACE , 0, @sp_icon_image, @sp_icon_src_rect)        
    end      
    #SP Number ------------------
      @sp_number_text = @sp2.abs.to_s.split(//)
      for r in 0..@sp_number_text.size - 1         
         @sp_number_abs = @sp_number_text[r].to_i 
         @sp_src_rect = Rect.new(@im_cw * @sp_number_abs, @ims_ch, @ims_cw, @ims_ch)
         @sp_number_bitmap.blt(15 *  r, 0, @sp_number_image, @sp_src_rect)        
     end        
  end        
end

#===============================================================================
# Scene_Map
#===============================================================================
class Scene_Map  
  alias ihud_main main
#--------------------------------------------------------------------------
# Main 
#--------------------------------------------------------------------------
  def main
      @ic_viewport = Viewport.new(0, 0, 640, 480)
      @ic_viewport.z = 9999     
      @i_hud = Ihud.new(@ic_viewport)
    ihud_main    
      @i_hud.dispose
      @i_hud = nil
      @ic_viewport.dispose
      @ic_viewport = nil
  end  
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------    
  alias ihud_update update
  def update
    ihud_update
    @i_hud.update
  end  
end

$mog_rgss_ihud = true
site ou autor do arquivo Moghunter tamanho do arquivo 870KB licencaGrátis sistemas operacionais compativeisWindows 98/98SE/Me/2000/XP/Vista/7 Download

Deixe um comentário

  • Seja social e nos siga!

           
  • Páginas

  • Tags Especiais

  • Categorias

  • Parceiros

  • eXTReMe Tracker
    Copyright © 2001 - 2017 Gaming Room. Todos os Direitos Reservados - É expressamente proibida a reprodução total ou parcial deste site sem o consentimento dos autores.