Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

 
Reply to this topicStart new topic
> HP gauge issue on STR33 Battle HUD, STR33 Battle Status V0.5
madwithstaples
post Feb 20 2012, 04:44 PM
Post #1


Level 2
Group Icon

Group: Member
Posts: 23
Type: Developer
RM Skill: Intermediate




I came across Star's battle HUD script recently and decided to tweak it slightly and use it.
The script works almost perfectly except for one thing. The HP gauge does not fill completely when healing in battle.
Iv'e been trying to figure out why for hours now, and can't figure it out. The MP gauge works just fine.

I'm hoping someone else has messed with this one before.

Here is a quick image:



The max HP is 180, and the bar SHOULD be filled all the way.


Here is the script:

CODE
#==============================================================================
# ?~€RGSS2
# STR33g1_BattleStatus  0.5 08/03/20
#==============================================================================
# ?Features
# Different HP/MP Gauge Flavor
# "Rolling" Numbers
# State Icon Cycle
#==============================================================================
# ?Materials
# This script requires several image skins.
# Skin images are placed in the .Graphics\System folder:
# Main Skin
# HP/MP Back Gauge Skin
#  - No size limit.
# HP/MP Gauge
#  - Normally two gauges
#  - Width = Unlimited
#  - Height = Gauge Height(Optional) * 2
# Numbers
#  - 0123456789 is the order of number arrays
#  - Width = One Frame Width(Any Size) * 10
#  - Height = Unlimited
# State Skin
# State Icon Main Skin
# Main skin is separate.
#  - No size limit.
#==============================================================================
# ?€“? Window_BattleStatus
#==============================================================================

class Window_BattleStatus < Window_Selectable
  # Skin File name
  BTSKIN_00 = "atb_Btskin_main"   # Main Skin
  BTSKIN_01 = "atb_Btskin_hp"     # HP(Gauge)
  BTSKIN_02 = "atb_Btskin_mp"     # MP(Gauge)
  BTSKIN_04 = "Btskin_n00"    # HP(Numbers)
  BTSKIN_05 = "Btskin_n00"    # MP(Numbers)
  BTSKIN_03 = "atb_Btskin_state"  # State
  # Skin coordinates[  x,  y]
  BTSKIN_B_XY = [  0,  0]     # Standard Coordinates
  BTSKIN_00XY = [  0,  0]     # Main Skin
  BTSKIN_01XY = [97, 16]     # HP(Gauge)
  BTSKIN_02XY = [216, 16]     # MP(Gauge)
  BTSKIN_04XY = [122,  1]     # HP(Numbers)
  BTSKIN_05XY = [222,  1]     # MP(Numbers)
  BTSKIN_03XY = [-24,  0]     # State Skin
  BTSKIN_06XY = [-24,  0]     # State
  # Various Settings
  #<--------------------------(Low values are fast)-------------------------->#
  BTSKIN_01GS = 10             # HP Gauge Speed (Low values are fast)
  BTSKIN_02GS = 4             # MP Gauge Speed(Low values are fast)
  BTSKIN_04SS = 8             # HP Rolling Numbers Speed(Low values are fast)
  BTSKIN_05SS = 2             # MP Rolling Numbers Speed(Low values are fast)
  BTSKIN_04NS = 4             # HP Maximum Digits
  BTSKIN_05NS = 4             # MP Maximum Digits
  BTSKIN_06WH = [24,24]       # [State Width, Height]
  BTSKIN_06SC = 2             # State Icon Scroll Speed
                         # (Values close to 1 are fast)    
  # ?f??f^?f??€š??f€?f??€š??€š???„
  def set_xy
    @x = []
    @y = []
    for i in 0...$game_party.members.size
      x = 0 + 96
      y = (i * 24)
      @x[i] = x + 16 #+ STRRGSS2::ST_SX
      @y[i] = y + 16 #+ STRRGSS2::ST_SY
    end
  end
  # Set š?€?€‚?€œ?€œ to
  @@f = false
  
  
  #--------------------------------------------------------------------------
  # ?~€ ?€š??€š??f??€š??€š?
  #--------------------------------------------------------------------------
  alias initialize_str33 initialize
  def initialize(f = false)
    initialize_str33
    unless @@f
      @f = @@f = true
    else
      @f = false
    end
    set_xy
    @s_sprite = []
    @s_party = []
    @s_lv = []
    @opacity = 0
    self.contents.dispose
    self.create_contents
    self.back_opacity = 0
    self.opacity = 0
    #@column_max = $game_party.actors.size
    @viewport = Viewport.new(0, 416-128, 416, 128)
    @hpgw = (Cache.system(BTSKIN_01)).width
    @mpgw = (Cache.system(BTSKIN_02)).width
    @viewport.z = self.z - 1
    @state_opacity = []
    @item_max = $game_party.members.size
    return unless @f
    for i in 0...@item_max
      draw_item(i)
    end
    update
  end
  #--------------------------------------------------------------------------
  # ?€”? ?f??f€?f??ff?€š??f???€”
  #--------------------------------------------------------------------------
  def refresh
    # :-)
  end
  #--------------------------------------------------------------------------
  # ?€”? ?€š??f€?f??f^???€?
  #--------------------------------------------------------------------------
  def draw_actor_state(actor)
    icon = Cache.system("Iconset")
    w = actor.states.size * 24
    w = 24 if w < 1
    bitmap = Bitmap.new(w, BTSKIN_06WH[1])
    count = 0
    for state in actor.states
      icon_index = state.icon_index
      x = 24 * count
      rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      bitmap.blt(x, 0, icon, rect)
      count += 1
    end
    return bitmap
  end
  #--------------------------------------------------------------------------
  # ?€”? ??€??o?^?
  #--------------------------------------------------------------------------
  def name_bitmap(actor)
    bitmap = Bitmap.new(100, 24)
    bitmap.font.size = 16
    bitmap.draw_text_f(0, 0, 100, 24, actor.name)
    return bitmap
  end
  #--------------------------------------------------------------------------
  # ?€”? ?€š??f€?f??f^?€??€“?€”
  #--------------------------------------------------------------------------
  def state_size(actor)
    return actor.states.size
  end
  #--------------------------------------------------------------------------
  # ?€”? ?€š??€š??f€?f??o?^?
  #--------------------------------------------------------------------------
  def draw_item(index)
    return unless @f
    actor = $game_party.members[index]
    #
    @s_sprite[index] = []
    s = @s_sprite[index]
    # ?f??€š??f??€š??€š??f?
    s[0] = Sprite.new(@viewport)
    s[0].bitmap = Cache.system(BTSKIN_00)
    s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
    s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
    s[0].z = 0
    # HP
    s[1] = Sprite.new(@viewport)
    s[1].bitmap = Cache.system(BTSKIN_01)
    s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    s[1].z = 4
    w = s[1].bitmap.width
    h = s[1].bitmap.height / 2
    s[1].src_rect.set(0, 0, w, h)
    s[2] = Sprite.new(@viewport)
    s[2].bitmap = Cache.system(BTSKIN_01)
    s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    s[2].z = 3
    s[2].src_rect.set(0, h, w, h)
    s[11] = 96
    s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
    s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
    s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
    s[6].z = 5
    s[13] = actor.hp
    s[6].update(s[13])
    # MP
    s[3] = Sprite.new(@viewport)
    s[3].bitmap = Cache.system(BTSKIN_02)
    s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    s[3].z = 4
    w = s[3].bitmap.width
    h = s[3].bitmap.height / 2
    s[3].src_rect.set(0, 0, w, h)
    s[4] = Sprite.new(@viewport)
    s[4].bitmap = Cache.system(BTSKIN_02)
    s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    s[4].z = 3
    s[4].src_rect.set(0, h, w, h)
    s[12] = 56
    s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
    s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
    s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
    s[7].z = 5
    s[14] = actor.mp
    s[7].update(s[14])
    # ?€š??f€?f??f^
    s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
    s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
    s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
    s[5].z = @viewport.z + 1
    s[8] = Sprite.new(@viewport)
    s[8].bitmap = Cache.system(BTSKIN_03)
    s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
    s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
    s[8].z = -2
    s[9] = Plane.new(s[5])
    s[9].bitmap = draw_actor_state(actor)
    s[10] = state_size(actor)
    # ??o???€š??f€?f??€š??€š??
    s[11] = ((@hpgw * (actor.hp / (actor.maxhp * 1.0))) + 1).truncate
    if actor.maxmp != 0
      s[12] = ((@mpgw * (actor.mp / (actor.maxmp * 1.0))) + 1).truncate
    else
      s[12] = 0
    end
    s[15] = Sprite.new(@viewport)
    s[15].bitmap = name_bitmap(actor)
    s[15].x = @x[index] + 4
    s[15].y = @y[index] + 2
    s[15].z = 0
    s[1].src_rect.width = s[11]
    s[2].src_rect.width = s[11]
    s[3].src_rect.width = s[12]
    s[4].src_rect.width = s[12]
    s[6].update(s[13])
    s[7].update(s[14])
    # ???€“?
    for l in [0,1,2,3,4,8,9,15]
      s[l].opacity = 0
    end
    for l in [6,7]
      s[l].o = 0
    end
    # ?f€??~?€?
    @s_lv[index] = actor.level
    @s_party[index] = [actor.name, actor.hp, actor.maxhp,
                       actor.mp, actor.maxmp, actor.states]
    #
  end
  #--------------------------------------------------------------------------
  # ?€”? ?€š??f€“?€š??€š??€š??f^?€“€?€?
  #--------------------------------------------------------------------------
  def dispose      
    super
    return unless @f
    for i in 0...@s_sprite.size
      for l in [0,1,2,3,4,8,9,15]
        @s_sprite[i][l].bitmap.dispose
        @s_sprite[i][l].dispose
      end
      for l in [5,6,7]
        @s_sprite[i][l].dispose
      end
    end
    @@f = false
  end
  #--------------------------------------------------------------------------
  # ?€”? ?f€?f??f??f??€??€“?
  #--------------------------------------------------------------------------
  def update
    super
    return unless @f
    for i in 0...@s_sprite.size
      s = @s_sprite[i]
      a = $game_party.members[i]
      m = @s_party[i]
      @state_opacity[i] = 0 if @state_opacity[i] == nil
      # ??‚??~Ž??€š??ff?f€”
      @state_opacity[i] += 8
      if @opacity < 272
        @opacity += 8
        for l in [0,1,2,3,4,15]
          s[l].opacity = @opacity
        end
        for l in [6,7]
          s[l].o = @opacity
        end
      end
      # ??€??€??€“?
      if a.name != m[0]
        s[15].bitmap.dispose
        s[15].bitmap = name_bitmap(a)
        m[0] = a.name
      end
      # HP/MP?€??€“?
      update_hp(s,a,m)
      update_mp(s,a,m)
      # ?€š??f€?f??f^?€??€“?
      if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
        s[9].ox += 1
      end
      if s[10] > 0 and @state_opacity[i] < 272
        for l in [8,9]
          s[l].opacity = @state_opacity[i]
        end
      end
      if a.states != m[5]
        m[5] = a.states
        s[9].ox = 0
        s[9].bitmap.dispose
        s[9].bitmap = draw_actor_state($game_party.members[i])
        s[10] = state_size($game_party.members[i])
        @state_opacity[i] = 0
        for l in [8,9]
          s[l].opacity = @state_opacity[i]
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ?€”? ?f€?f??f??f??€??€“? (HP)
  #--------------------------------------------------------------------------
  def update_hp(s,a,m)
    # HP??€š€??€š€
    if a.hp != s[13]
      c = 0; c = 1 if a.hp < a.maxhp / 4; c = 2 if a.hp == 0
      if s[13] > a.hp
        s[13] -= BTSKIN_04SS
        s[13] = a.hp if s[13] < a.hp
      else
        s[13] += BTSKIN_04SS
        s[13] = a.hp if s[13] > a.hp
      end
      s[6].update(s[13], c)
    end
    # HP
    if a.hp != m[1]
      s[11] = ((@hpgw * (a.hp / (a.maxhp * 1.0))) + 1).truncate
      m[1] = a.hp
    end
    sr = s[1].src_rect
    if sr.width != s[11]
      sp = BTSKIN_01GS
      sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
      sr.width = 2 if sr.width <= 1 and a.hp > 0
    end
    sr = s[2].src_rect
    sp = 2
    if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
      if sr.width < s[1].src_rect.width
        sr.width += 1
      else
        sr.width -= 1
      end
    end
    sr.width = 2 if sr.width <= 1 and a.hp > 0
  end
  #--------------------------------------------------------------------------
  # ?€”? ?f€?f??f??f??€??€“? (MP)
  #--------------------------------------------------------------------------
  def update_mp(s,a,m)
    # MP??€š€??€š€
    if a.mp != s[14]
      c = 0; c = 1 if a.mp < a.maxmp / 4
      if s[14] > a.mp
        s[14] -= BTSKIN_05SS
        s[14] = a.mp if s[14] < a.mp
      else
        s[14] += BTSKIN_05SS
        s[14] = a.mp if s[14] > a.mp
      end
      s[7].update(s[14], c)
    end
    # MP
    if a.mp != m[3]
      if a.maxmp != 0
        s[12] = ((@mpgw * (a.mp / (a.maxmp * 1.0))) + 1).truncate
      else
        s[12] = 0
      end
      m[3] = a.mp
    end
    sr = s[3].src_rect
    if sr.width != s[12]
      sp = BTSKIN_02GS
      sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
      sr.width = 2 if sr.width <= 1 and a.mp > 0
    end
    sr = s[4].src_rect
    sp = 2
    if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
      if sr.width < s[3].src_rect.width
        sr.width += 1
      else
        sr.width -= 1
      end
    end
    sr.width = 2 if sr.width <= 1 and a.mp > 0
  end
end

#==============================================================================
# ?€“? Sprite_strNumber
#==============================================================================
class Sprite_strNumber < Sprite
  #--------------------------------------------------------------------------
  # ?€”? ?€š??f€“?€š??€š??€š??f^?^??oY?O€“
  #--------------------------------------------------------------------------
  def initialize(v, gra, n = 0)
    @n = n
    super(v)
    self.bitmap = Cache.system(gra)
    @w = self.bitmap.width/10
    @h = self.bitmap.height/3
    self.src_rect = Rect.new(@n*@w, 0, @w, @h)
  end
  #--------------------------------------------------------------------------
  # ?€”? ?f€?f??f??f??€??€“?
  #--------------------------------------------------------------------------
  def update(n = -1, c = 0)
    @n = n
    self.src_rect.x = @n*@w
    self.src_rect.y = c*@h
  end
end
#==============================================================================
# ?€“? Sprite_strNumbers
#==============================================================================
class Sprite_strNumbers
  attr_accessor :x
  attr_accessor :y
  attr_accessor :z
  attr_accessor
  #--------------------------------------------------------------------------
  # ?€”? ?€š??f€“?€š??€š??€š??f^?^??oY?O€“
  #--------------------------------------------------------------------------
  def initialize(v, gra, n = 4, s = 0)
    @n = n # ??€?
    @x = 0
    @y = 0
    @z = 0
    @o = 255
    @sprite = []
    # ?€”?€“€œ??š
    b = Cache.system(gra)
    @s = b.width / 10 - s
    # ?€š??f€”?f??€š??f^?o?^?
    for i in 0...n
      @sprite[i] = Sprite_strNumber.new(v, gra)
    end
    update
  end
  #--------------------------------------------------------------------------
  # ?€”? ?f€?f??f??f??€??€“?
  #--------------------------------------------------------------------------
  def update(v = 0, c = 0)
    val = []
    # ?€??‚??€š€™?€??^€”???
    for i in 0...@n
      if (10 ** (i)) == 0
        val[i] = v % 10
      else
        val[i] = v / (10 ** (i)) % 10
      end
    end
    val = val.reverse
    # ?€^??0?€š€™?€“?€šŠ?„??
    for i in 0...@n
      if val[i] == 0 and @n != i + 1
        val[i] = -1
      else
        break
      end
    end
    # ?€š??f€”?f??€š??f^?€??€“?
    for i in 0...@n
      @sprite[i].update(val[i], c)
      @sprite[i].x = @x + (i * @s)
      @sprite[i].y = @y
      @sprite[i].z = @z
      @sprite[i].opacity = @o
    end
  end
  #--------------------------------------------------------------------------
  # ?€”? ??‚??~Ž????€?
  #--------------------------------------------------------------------------
  def o=(val)
    @o = val
    for i in 0...@n
      @sprite[i].opacity = @o
    end
  end
  #--------------------------------------------------------------------------
  # ?€”? ?€š??f€“?€š??€š??€š??f^?€“€?€?
  #--------------------------------------------------------------------------
  def dispose
    for i in 0...@sprite.size
      @sprite[i].bitmap.dispose
      @sprite[i].dispose
    end
  end
end

#==============================================================================
# ?€“? Bitmap
#==============================================================================
# This script controls the shadow behind actor names for *STR33g1_Battle Status.

class Bitmap
  #--------------------------------------------------------------------------
  # Draw shadow text
  #--------------------------------------------------------------------------
  def draw_text_f(x, y, width, height, str, align = 0, color = Color.new(64,32,128))
    shadow = self.font.shadow
    b_color = self.font.color.dup
    font.shadow = true
    self.font.name = "Calibri"
    self.font.size = 20
    font.color = color
    draw_text(x + 1, y, width, height, str, align)
    draw_text(x - 1, y, width, height, str, align)
    draw_text(x, y + 1, width, height, str, align)
    draw_text(x, y - 1, width, height, str, align)
    font.color = b_color
    draw_text(x, y, width, height, str, align)
    font.shadow = shadow
  end
  def draw_text_f_rect(r, str, align = 0, color = Color.new(64,32,128))
    draw_text_f(r.x, r.y, r.width, r.height, str, align = 0, color)
  end
end


This post has been edited by madwithstaples: Feb 20 2012, 04:45 PM


__________________________
RPG Cliche #102: Perversity Principle
If you're unsure about what to do next, ask all the townspeople nearby. They will either all strongly urge you to do something, in which case you must immediately go out and do that thing, or else they will all strongly warn you against doing something, in which case you must immediately go out and do that thing.

My project info and some resources of mine
Go to the top of the page
 
+Quote Post
   
ASCIIgod
post May 12 2012, 04:28 AM
Post #2


Demonic God of Snippets of Doom +10
Group Icon

Group: Revolutionary
Posts: 271
Type: Scripter
RM Skill: Intermediate




okay so long story short... try to remove s[11] = 96 and see what happen... thats the only thing i see with flaw... this is not made up for i was suppose to write an entire explanation and instruction of what to do... i forgot to log in and what i did, did not posted...


__________________________

Go to the top of the page
 
+Quote Post
   

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 18th May 2013 - 12:04 PM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker