Jump to content
Melosx

STR33g1_Battle Status 0.5 VXAce Version

Recommended Posts

STR33g1_Battle Status 0.5 VXAce Version

Original VX Version Author: Star (website)

 

Introduction

I've converted this script for VXAce and added the TP info.

 

Features

 ・Different HP/MP/TP Gauge Flavor

 ・"Rolling" Numbers

 ・State Icon Cycle

 

Screenshots

11hrnyg.png

 

How to Use

Copy the script under Materials and above Main... You need some images in Graphics/System folder that are in the attached rar.

RAR

 

Script

 

 

#==============================================================================
# ★RGSS2
# STR33g1_Battle Status  0.5 08/03/20
# VXAce Version by Melosx 12/03/04
#
# ・STR11e has the same specifications.
# ★STR11eã®å¾Œä»˜ã‚²ãƒ¼ã‚¸ãƒ—ラグインを利用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
#  ã“ã®ã‚¹ã‚¯ãƒªãƒ—トより下ã«å°Žå…¥ã—ã¦ãã ã•ã„。
#
# â—‡Features
# ・Different HP/MP/TP 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 = "Btskin_main"   # Main Skin
 BTSKIN_01 = "Btskin_hp"	    # HP(Gauge)
 BTSKIN_02 = "Btskin_mp"	    # MP(Gauge)
 BTSKIN_07 = "Btskin_tp"		 # TP(gauge)
 BTSKIN_04 = "Btskin_n00"	  # HP(Numbers)
 BTSKIN_05 = "Btskin_n01"	  # MP(Numbers)
 BTSKIN_08 = "Btskin_n02"	  # TP(Numbers)
 BTSKIN_03 = "Btskin_state"  # State
 # Skin coordinates[  x,  y]
 BTSKIN_B_XY = [  -5,  3]	   # Standard Coordinates
 BTSKIN_00XY = [  0,  0]	    # Main Skin
 BTSKIN_01XY = [157, 14]	    # HP(Gauge)
 BTSKIN_02XY = [243, 14]	    # MP(Gauge)
 BTSKIN_07XY = [328, 14]	    # TP(Gauge)
 BTSKIN_04XY = [175,  0]	    # HP(Numbers)
 BTSKIN_05XY = [260,  0]	    # MP(Numbers)
 BTSKIN_08XY = [349, 0]		 # TP(Numbers)
 BTSKIN_03XY = [100,  -10]	  # State Skin
 BTSKIN_06XY = [100,  0]	    # State
 # Various Settings
 BTSKIN_01GS = 2					    # HP Gauge Speed (Low values are fast)
 BTSKIN_02GS = 4					    # MP Gauge Speed(Low values are fast)
 BTSKIN_07GS = 4					    # TP 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_08SS = 4					    #TP Rolling Numbers Speed(Low values are fast)
 BTSKIN_04NS = 4					    # HP Maximum Digits
 BTSKIN_05NS = 4					    # MP Maximum Digits
 BTSKIN_08NS = 3					    # TP Maximum Digits
 BTSKIN_06WH = [24,24]    # [state Width, Height]
 BTSKIN_06SC = 2					    # State Icon Scroll Speed
													  # (Values close to 1 are fast)


 # ãƒãƒˆãƒ«ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹åº§æ¨™
 def set_xy
    @x = []
    @y = []
    for i in 0...$game_party.battle_members.size
	  x = 0
	  y = (i * 24)
	  @x[i] = x + 16#+ STRRGSS2::ST_SX
	  @y[i] = y + 16#+ STRRGSS2::ST_SY
    end
 end
 # 設定箇所ã“ã“ã¾ã§
 @@f = false


 #--------------------------------------------------------------------------
 # ★ エイリアス
 #--------------------------------------------------------------------------
 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
    @tpgw = (Cache.system(BTSKIN_07)).width
    @viewport.z = self.z - 1
    @state_opacity = []
    @item_max = $game_party.battle_members.size
    return unless @f
    for i in 0...@item_max
	  draw_item(i)
    end
    update
 end
 #--------------------------------------------------------------------------
 # ◠リフレッシュ潰ã—
 #--------------------------------------------------------------------------
 def refresh
    # :-)
 end
 #--------------------------------------------------------------------------
 # ◠ステートã®æç”»
 #--------------------------------------------------------------------------
 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
 #--------------------------------------------------------------------------
 # â— åå‰ä½œæˆ
 #--------------------------------------------------------------------------
 def name_bitmap(actor)
    bitmap = Bitmap.new(100, 24)
    bitmap.font.size = 16
    bitmap.draw_text(0, 0, 100, 24, actor.name)
    return bitmap
 end
 #--------------------------------------------------------------------------
 # ◠ステート数å–å¾—
 #--------------------------------------------------------------------------
 def state_size(actor)
    return actor.states.size
 end
 #--------------------------------------------------------------------------
 # ◠アイテム作æˆ
 #--------------------------------------------------------------------------
 def draw_item(index)
    return unless @f
    actor = $game_party.battle_members[index]
    #
    @s_sprite[index] = []
    s = @s_sprite[index]
    # メインスキン
    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])
    #TP
    s[16] = Sprite.new(@viewport)
    s[16].bitmap = Cache.system(BTSKIN_07)
    s[16].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_07XY[0]
    s[16].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_07XY[1]
    s[16].z = 4
    w = s[16].bitmap.width
    h = s[16].bitmap.height / 2
    s[16].src_rect.set(0, 0, w, h)
    s[17] = Sprite.new(@viewport)
    s[17].bitmap = Cache.system(BTSKIN_07)
    s[17].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_07XY[0]
    s[17].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_07XY[1]
    s[17].z = 3
    s[17].src_rect.set(0, h, w, h)
    s[20] = 56
    s[18] = Sprite_strNumbers.new(@viewport, BTSKIN_08, BTSKIN_08NS)
    s[18].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_08XY[0]
    s[18].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_08XY[1]
    s[18].z = 5
    s[19] = (actor.tp).to_i
    s[18].update(s[19])
    # ステート
    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)
    # ç¾åœ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã«
    s[11] = ((@hpgw * (actor.hp / (actor.mhp * 1.0))) + 1).truncate
    if actor.mmp != 0
	  s[12] = ((@mpgw * (actor.mp / (actor.mmp * 1.0))) + 1).truncate
    else
	  s[12] = 0
    end
    s[20] = ((@tpgw * (actor.tp / (actor.max_tp* 1.0))) + 1).truncate
    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[16].src_rect.width = s[20]
    s[17].src_rect.width = s[20]
    s[6].update(s[13])
    s[7].update(s[14])
    s[18].update(s[19])
    # ä¸å¯è¦–ã«
    for l in [0,1,2,3,4,8,9,15,16,17]
	  s[l].opacity = 0
    end
    for l in [6,7,18]
	  s[l].o = 0
    end
    # 情報記憶
    @s_lv[index] = actor.level
    @s_party[index] = [actor.name, actor.hp, actor.mhp,
									   actor.mp, actor.mmp, actor.states, actor.tp]
    #
 end
 #--------------------------------------------------------------------------
 # ◠オブジェクト開放
 #--------------------------------------------------------------------------
 def dispose     
    super
    return unless @f
    for i in 0...@s_sprite.size
	  for l in [0,1,2,3,4,8,9,15,16,17]
		    @s_sprite[i][l].bitmap.dispose
		    @s_sprite[i][l].dispose
	  end
	  for l in [5,6,7,18]
		    @s_sprite[i][l].dispose
	  end
    end
    @@f = false
 end
 #--------------------------------------------------------------------------
 # ◠フレーム更新
 #--------------------------------------------------------------------------
 def update
    super
    return unless @f
    for i in 0...@s_sprite.size
	  s = @s_sprite[i]
	  a = $game_party.battle_members[i]
	  m = @s_party[i]
	  @state_opacity[i] = 0 if @state_opacity[i] == nil
	  # ä¸é€æ˜Žåº¦ã‚¢ãƒƒãƒ—
	  @state_opacity[i] += 8
	  if @opacity < 272
		    @opacity += 8
		    for l in [0,1,2,3,4,15,16,17]
			  s[l].opacity = @opacity
		    end
		    for l in [6,7,18]
			  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/TPæ›´æ–°
	  update_hp(s,a,m)
	  update_mp(s,a,m)
	  update_tp(s,a,m)
	  # ステート更新
	  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.battle_members[i])
		    s[10] = state_size($game_party.battle_members[i])
		    @state_opacity[i] = 0
		    for l in [8,9]
			  s[l].opacity = @state_opacity[i]
		    end
	  end
    end
 end
 #--------------------------------------------------------------------------
 # ◠フレーム更新 (HP)
 #--------------------------------------------------------------------------
 def update_hp(s,a,m)
    # HPãã‚‹ãã‚‹
    if a.hp != s[13]
	  c = 0; c = 1 if a.hp < a.mhp / 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.mhp * 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
 #--------------------------------------------------------------------------
 # ◠フレーム更新 (MP)
 #--------------------------------------------------------------------------
 def update_mp(s,a,m)
    # MPãã‚‹ãã‚‹
    if a.mp != s[14]
	  c = 0; c = 1 if a.mp < a.mmp / 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.mmp != 0
		    s[12] = ((@mpgw * (a.mp / (a.mmp * 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

 def update_tp(s,a,m)
    # TPãã‚‹ãã‚‹
    if a.tp != s[19]
	  c = 0; c = 1 if a.tp < 100
	  if s[19] > a.tp
		    s[19] -= BTSKIN_08SS
		    s[19] = a.tp if s[19] < a.tp
	  else
		    s[19] += BTSKIN_08SS
		    s[19] = a.tp if s[19] > a.tp
	  end
	  s[18].update(s[19].to_i, c)
    end
    # TP
    if a.tp != m[6]
	  if a.tp != 0
		    s[20] = ((@tpgw * (a.tp / (a.max_tp * 1.0))) + 1).truncate
	  else
		    s[20] = 0
	  end
	  m[6] = a.tp
    end
    sr = s[16].src_rect
    if sr.width != s[20]
	  sp = BTSKIN_07GS
	  sr.width = (s[20] + (s[16].src_rect.width * (sp - 1))) / sp
	  sr.width = 2 if sr.width <= 1 and a.tp > 0
    end
    sr = s[17].src_rect
    sp = 2
    if sr.width != s[16].src_rect.width and (Graphics.frame_count % sp) == 0
	  if sr.width < s[16].src_rect.width
		    sr.width += 1
	  else
		    sr.width -= 1
	  end
    end
    sr.width = 2 if sr.width <= 1 and a.tp > 0
 end

end
#==============================================================================
# â–  Sprite_strNumber
#==============================================================================
class Sprite_strNumber < Sprite
 #--------------------------------------------------------------------------
 # ◠オブジェクトåˆæœŸåŒ–
 #--------------------------------------------------------------------------
 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
 #--------------------------------------------------------------------------
 # ◠フレーム更新
 #--------------------------------------------------------------------------
 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 
 #--------------------------------------------------------------------------
 # ◠オブジェクトåˆæœŸåŒ–
 #--------------------------------------------------------------------------
 def initialize(v, gra, n = 4, s = 0)
    @n = n.to_i # æ¡æ•°
    @x = 0
    @y = 0
    @z = 0
    @o = 255
    @sprite = []
    # 字間設定
    b = Cache.system(gra)
    @s = b.width / 10 - s
    # スプライト作æˆ
    for i in 0...n
	  @sprite[i] = Sprite_strNumber.new(v, gra)
    end
    update
 end
 #--------------------------------------------------------------------------
 # ◠フレーム更新
 #--------------------------------------------------------------------------
 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
    # スプライト更新
    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
 #--------------------------------------------------------------------------
 # ◠オブジェクト開放
 #--------------------------------------------------------------------------
 def dispose
    for i in 0...@sprite.size
	  @sprite[i].bitmap.dispose
	  @sprite[i].dispose
    end
 end
end



#==============================================================================
# â–  Scene_Battle
#==============================================================================

class Scene_Battle

 def update_info_viewport
    return 0
 end

 def create_status_window
    @status_window = Window_BattleStatus.new
    @status_window.x = 0
 end

 def create_info_viewport
    @info_viewport = Viewport.new
    @info_viewport.rect.y = Graphics.height - @status_window.height
    @info_viewport.rect.height = @status_window.height
    @info_viewport.z = 100
    @info_viewport.ox = 0
    @status_window.viewport = @info_viewport
 end

 def create_actor_command_window
    @actor_command_window = Window_ActorCommand.new
    @actor_command_window.viewport = @info_viewport
    @actor_command_window.set_handler(:attack, method(:command_attack))
    @actor_command_window.set_handler(:skill,  method(:command_skill))
    @actor_command_window.set_handler(:guard,  method(:command_guard))
    @actor_command_window.set_handler(:item,   method(:command_item))
    @actor_command_window.set_handler(:cancel, method(:prior_command))
    @actor_command_window.x = 416
 end


 def create_party_command_window
    @party_command_window = Window_PartyCommand.new
    @party_command_window.viewport = @info_viewport
    @party_command_window.x = 416
    @party_command_window.set_handler(:fight,  method(:command_fight))
    @party_command_window.set_handler(:escape, method(:command_escape))
    @party_command_window.unselect
 end

end

 

 

 

 

Compatibility Patch

 

- Formar0153's Customisable ATB/Stamina Based Battle System Script

 

 

Images(Graphics/System)

xoo9zq.png

207t4lf.png

 

Instructions

Place the script in this order:

- Formar0153's Customisable ATB/Stami Based Battle System Script

- STR33g1_BattleStatus 0.5 VXAce Version

- Patch

Replace the skin file with the new. If you use default name, rename the gauge file in "Btskin_atb".

 

Script

 

 

#=============================================================================
# Compatibility Patch
# STR33g1_Battle Status + Customisable ATB/Stamina Based Battle System Script
#==============================================================================
# Author: Melosx
# Version: 1.2
# Release Date: 06/03/2012 => v1.0
#						   07/03/2012 => v1.1
#						   09/03/2012 => v1.2
#
# Update 1.1 => Fixed graphic bug.
# Update 1.2 => Fixed bug with window.
#						   Fixed bug when there are more than 4 member in the party.
#==============================================================================

class Window_BattleStatus < Window_Selectable

 BTSKIN_09 = "Btskin_atb"
 BTSKIN_09XY = [403, 14]


 alias msx_initialize initialize
 def initialize(f = false)
@atbgw = (Cache.system(BTSKIN_09)).width
msx_initialize(f)	
 end

 alias msx_draw_item draw_item
 def draw_item(index)
@viewport = Viewport.new(0, 416-128, 544, 128)
return unless @f
actor = $game_party.battle_members[index]
msx_draw_item(index)
s = @s_sprite[index]
s[21] = Sprite.new(@viewport)
s[21].bitmap = Cache.system(BTSKIN_09)
s[21].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_09XY[0]
s[21].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_09XY[1]
s[21].z = 4
w = s[21].bitmap.width
h = s[21].bitmap.height / 2
s[21].src_rect.set(0, 0, w, h)
s[23] = ((@atbgw * actor.stamina_rate) + 1).truncate
s[21].src_rect.width = s[23]
for l in [21]
  s[l].opacity = 0
end
@s_party[10] = actor.stamina
 end

 alias msx_dispose dispose
 def dispose
msx_dispose
for i in 0...@s_sprite.size
  for l in [21]
	@s_sprite[i][l].bitmap.dispose
	@s_sprite[i][l].dispose
  end
end
 end

 alias msx_update update
 def update
msx_update
return unless @f
for i in 0...@s_sprite.size
  s = @s_sprite[i]
  if @opacity < 272
	for l in [21]
	  s[l].opacity = @opacity
	end
  end
update_atb(s,$game_party.battle_members[i],@s_party[i])
end
 end

 def update_atb(s,a,m)
sr = s[21].src_rect
gauge = a.stamina
if gauge != m[10]
  s[23] = ((@atbgw * a.stamina_rate) + 1).truncate
  m[10] = gauge
  s[21].src_rect.width = s[23]
end
 end

end


class Scene_Battle

 def create_status_window
@status_window = Window_BattleStatus.new
@status_window.x = 0
@status_window.width = 544
 end

 def create_actor_command_window
@actor_command_window = Window_ActorCommand.new
@actor_command_window.viewport = @info_viewport
@actor_command_window.set_handler(:attack, method(:command_attack))
@actor_command_window.set_handler(:skill,  method(:command_skill))
@actor_command_window.set_handler(:guard,  method(:command_guard))
@actor_command_window.set_handler(:item,   method(:command_item))
@actor_command_window.set_handler(:cancel, method(:prior_command))
@actor_command_window.x = 416
@actor_command_window.z = 20
 end

end

class Window_BattleSkill < Window_SkillList

 def initialize(help_window, info_viewport)
y = help_window.height
super(0, y, Graphics.width, info_viewport.rect.y - y)
self.visible = false
@help_window = help_window
@info_viewport = info_viewport
 end

end

class Window_BattleActor < Window_BattleStatus

 def initialize(info_viewport)
super()
self.y = info_viewport.rect.y
self.visible = false
self.openness = 255
@info_viewport = info_viewport
 end

end

class Window_BattleEnemy < Window_Selectable

 def initialize(info_viewport)
super(0, info_viewport.rect.y, window_width, fitting_height(4))
refresh
self.visible = false
@info_viewport = info_viewport
 end

end

class Window_BattleItem < Window_ItemList

 def initialize(help_window, info_viewport)
y = help_window.height
super(0, y, Graphics.width, info_viewport.rect.y - y)
self.visible = false
@help_window = help_window
@info_viewport = info_viewport
 end

end

 

 

 

 

Edited by Melosx

Share this post


Link to post
Share on other sites

I've read that post ... all the info are already contained in the script ...

 

I've converted this script for VXAce and added the TP info... I don't know the original author... if anyone knows can tell me please???

Share this post


Link to post
Share on other sites

I've searched on google and in other forum but i've not found the name of the author... I'm sorry... :(

 

Edit: At the end i've found it... I've update the first post

Edited by Melosx

Share this post


Link to post
Share on other sites

tried it, appears to work, and looks pretty nice too ~ cool thing., aint gonna use it, but i think it'll be useful for others. :)

(Edit: i dont know if this is important, but it seems to work with simple Sideview Scripts! )

Edited by Crystallish

Share this post


Link to post
Share on other sites

the vx version work with lots of bs... I think is the same for the VXAce version... I've tested the script and work with Sideview BS Tankentai v0.85

Share this post


Link to post
Share on other sites

I tested this script with Sideview Battle System Tankentai with no problems, now i will use this HUD, it's preety!

Thanks Melosx!

Share this post


Link to post
Share on other sites

*Sneaks back into this topic*

 

may it be possible to combine this script with an ATB Gauge somehow? i think that would be sick. Oo!

 

Yes...it will be wonderful have an atb gauge, compatible with this hud and tanketai bs!

Share this post


Link to post
Share on other sites

This script works on takentai, but dont know how to add a ATB bar =(

 

EDIT: Sorry, the tankentai have no ATB, the ATB is from Formar0153, and the battle system is from tankentai, sorry

Edited by Shadow

Share this post


Link to post
Share on other sites

I think I can covert the Star's ATB script for VXAce...

 

would be nice! Also could you make this atb compatible with the tanketai?

Share this post


Link to post
Share on other sites

it's difficult to convert the Star's ATB script... You need three script for the ATB and my skills are not so high... BUT!!!!... I've updated the first post with a patch for the Formar0153 ATB and with the new grapics file...

Share this post


Link to post
Share on other sites

it's difficult to convert the Star's ATB script... You need three script for the ATB and my skills are not so high... BUT!!!!... I've updated the first post with a patch for the Formar0153 ATB and with the new grapics file...

 

I've tried now to put the script of HUD and the patch together the bs tanketai but does not work. This is the error that gives me.

Do you work?

 

http://i44.tinypic.com/2mi51ex.png

 

could you fix it?

Share this post


Link to post
Share on other sites

it work correctly but whit a little graphic problem...

place the script in this order

tankentai

atb

hud

patch

Now I fix the graphic problem...

Share this post


Link to post
Share on other sites

it work correctly but whit a little graphic problem...

place the script in this order

tankentai

atb

hud

patch

Now I fix the graphic problem...

 

Thanks,now works, in fact need to fix the graphics.

I can alert you to another small bug?

(not sure if it only happens to me)

Just starting the battle, the numbers of tp go crazy and start to flow endlessly.

Share this post


Link to post
Share on other sites

O.O... Sure? I've not this bug with the tp,,,

 

I don't know why it happens ... will be the version of the tanketai? I've tested with version 0.96. Leaving the standard script without making any changes. (I added just the hud and atb)

Share this post


Link to post
Share on other sites

Graphic bug fixed. Fixed also a bug with the Window_BattleEnemy y coordinates(strange bug because the window is not touched by the script)...

 

o.o 0,96?? I've old version 0.85... Download the new version and see if I have the bug...

Share this post


Link to post
Share on other sites

Graphic bug fixed. Fixed also a bug with the Window_BattleEnemy y coordinates(strange bug because the window is not touched by the script)...

 

o.o 0,96?? I've old version 0.85... Download the new version and see if I have the bug...

 

ok ... Let me know if you reported the same bug!

Share this post


Link to post
Share on other sites

You - are - awesome.

 

The compatibility Patch for Fomar's Script is brilliant!

 

2 things though

 

1. (regarding the TP issue of Lionheart) .. my TP work fine, they stay in place until they are beeing increased the way they should be.

 

2. the image looks kinda cut. o:

 

61be314f9b.png

Share this post


Link to post
Share on other sites

Oh, didnt see you resolve the problem i stated with the graphics while i wrote, everything working fine now. ^_^ Again, thanks, will definetly use it now.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted