Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

STR33 Battle HUD Coordinates problem

I need help with coordinates in this script:
#==============================================================================
# – 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_04 = "Btskin_n00" # HP(Numbers)
BTSKIN_05 = "Btskin_n00" # MP(Numbers)
BTSKIN_03 = "Btskin_state" # State
# Skin coordinates[ x, y]
BTSKIN_B_XY = [-14, 62] # Ÿ –座 ™
BTSKIN_00XY = [ 0, 6] # ƒ ‚ ƒ ‚ ‚ ƒ
BTSKIN_01XY = [ 5, 4] # HP( ‚ ƒ ‚ )
BTSKIN_02XY = [ 4, 24] # MP( ‚ ƒ ‚ )
BTSKIN_04XY = [ 32, -6] # HP( • —)
BTSKIN_05XY = [ 36, 10] # MP( • —)
BTSKIN_03XY = [-39, 2] # ‚ ƒ† ƒ ƒˆ ‚ ‚ ƒ
BTSKIN_06XY = [-35, 7] # ‚ ƒ† ƒ ƒˆ
# Various Settings
BTSKIN_01GS = 2 # 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 = 5 # State Icon Scroll Speed
# (Values close to 1 are fast)
# ƒ ƒˆ ƒ ‚ ƒ† ƒ ‚ ‚ 座 ™
def set_xy
@x = []
@y = []
for i in 0...$game_party.members.size
x = (i * 161) + 40
y = 3
@x = x + 16#+ STRRGSS2::ST_SX
@y = 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, 480-128, 640, 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
#--------------------------------------------------------------------------
# — ƒ ƒ• ƒ ƒƒ ‚ ƒ 潰 —
#--------------------------------------------------------------------------
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_f(-40, 40, 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.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])
# ‚ ƒ† ƒ ƒˆ
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.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
# ƒ…報 ˜ † (actor, x, y, size = 151)
@s_lv[index] = actor.level
@s_party[index] = [actor.name, actor.hp, actor.maxhp,
actor.mp, actor.maxmp, actor.states]
#
x = index * 161 - 20
y = 15
s[16] = Sprite.new
s[16].bitmap = Cache.system("HUD_" + actor.name)
s[16].x = @x[index] + 4 - 66
s[16].y = @y[index] + 2 + 273
s[16].z = 0
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]
@s_sprite[l].bitmap.dispose
@s_sprite[l].dispose
end
for l in [5,6,7]
@s_sprite[l].dispose
end
end
@@f = false
end
#--------------------------------------------------------------------------
# — ƒ• ƒ ƒ ƒ › –
#--------------------------------------------------------------------------
def update
super
return unless @f
for i in 0...@s_sprite.size
s = @s_sprite
a = $game_party.members
m = @s_party
@state_opacity = 0 if @state_opacity == nil
# 不 € ˜Ž度 ‚ ƒƒ ƒ—
@state_opacity += 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)
# ‚ ƒ† ƒ ƒˆ › –
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 < 272
for l in [8,9]
s[l].opacity = @state_opacity
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)
s[10] = state_size($game_party.members)
@state_opacity = 0
for l in [8,9]
s[l].opacity = @state_opacity
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.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
#--------------------------------------------------------------------------
# — ƒ• ƒ ƒ ƒ › – (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
#--------------------------------------------------------------------------
# — ‚ ƒ– ‚ ‚ ‚ ƒˆ ˆ œŸ Œ–
#--------------------------------------------------------------------------
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 :eek:
#--------------------------------------------------------------------------
# — ‚ ƒ– ‚ ‚ ‚ ƒˆ ˆ œŸ Œ–
#--------------------------------------------------------------------------
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
# ‚ ƒ— ƒ ‚ ƒˆ œ ˆ
for i in 0...n
@sprite = 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 = v % 10
else
val = v / (10 ** (i)) % 10
end
end
val = val.reverse
# …ˆ頭の0 ‚’ – ‚Š ™ く
for i in 0...@n
if val == 0 and @n != i + 1
val = -1
else
break
end
end
# ‚ ƒ— ƒ ‚ ƒˆ › –
for i in 0...@n
@sprite.update(val, c)
@sprite.x = @x + (i * @s)
@sprite.y = @y
@sprite.z = @z
@sprite.opacity = @o
end
end
#--------------------------------------------------------------------------
# — 不 € ˜Ž度の適 ”
#--------------------------------------------------------------------------
def o=(val)
@o = val
for i in 0...@n
@sprite.opacity = @o
end
end
#--------------------------------------------------------------------------
# — ‚ ƒ– ‚ ‚ ‚ ƒˆ –‹ ”
#--------------------------------------------------------------------------
def dispose
for i in 0...@sprite.size
@sprite.bitmap.dispose
@sprite.dispose
end
end
end


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

class Bitmap
#--------------------------------------------------------------------------
# — –‡ —縁 – ‚Š描 ”
#--------------------------------------------------------------------------
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 = false
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


I want the HUD set up to be similar to this:
Screenshot-TargetAlly.jpg


Obviously, the HUD pieces I have made are not showing up anywhere on the screen so I would love if someone could tell me the proper coordinates on the battle screen that they should go to look correct. :)
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top