이하는 스크립트입니다.
변함없이 소재하위에 인스톨 하시면 적용 됩니다.
그리고 첨부한 Menus압축을 자신의 게임 Graphics폴더에다가 풀어주시면 됩니다.
GraphicsMenus/그림파일
이런 상태를 만들어주세요.
p.s
스테이터스 최대 표시량은 999입니다.
그리고 마나를 비롯한 스테이터스바(status bar)가 뜨는 속성값은 절대 0을 주면 안됩니다.(에러뜨는상황을 확인했습니다.)
감사합니다~
##################################################
# Mog Menu_Status_Aya V 1.0 #
##################################################
# By Moghunter
# http://www.atelier-rgss.com
##################################################
# Menu Status com layout em pictures.
# É necessário criar uma pasta com o nome de
# Menus e colocar todas as imagens dentro dela, de resto
# é só criar o seu próprio estilo de menu através de um
#editor de imagem.
#-------------------------------------------------
module MOG_VX07
#Definição do parameter maximo.
MAX_PARAMETER = 999
end
##############
# Game_Actor #
##############
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
###############
# module Cache #
###############
module Cache
def self.menu(filename)
load_bitmap("Graphics/Menus/", filename)
end
end
##############
# Window_Base #
##############
class Window_Base < Window
def draw_actor_atk_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.atk / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.atk.to_s , 2)
end
def draw_actor_def_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.def / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.def.to_s , 2)
end
def draw_actor_spi_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.spi / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.spi.to_s , 2)
end
def draw_actor_agi_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.agi / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.agi.to_s , 2)
end
def draw_item_name_menu_status(item, x, y, enabled = true)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 30, y, 155, WLH, item.name)
end
end
def draw_equipments_menu_status(actor, x, y)
draw_item_name_menu_status(actor.equips[0], x , y)
draw_item_name_menu_status(actor.equips[1], x , y + 45)
draw_item_name_menu_status(actor.equips[2], x , y + 90)
draw_item_name_menu_status(actor.equips[3], x + 125, y + 20)
draw_item_name_menu_status(actor.equips[4], x + 125, y + 65)
end
def draw_actor_hp_menu_status(actor, x, y)
back = Cache.menu("MeterBack")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("HPMeter")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 22, y + 5 , 80, 32, actor.hp.to_s + " / " + actor.maxhp.to_s, 1)
end
def draw_actor_mp_menu_status(actor, x, y)
back = Cache.menu("MeterBack")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("MPMeter")
cw = meter.width * actor.mp / actor.maxmp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 22, y + 5 , 80, 32, actor.mp.to_s + " / " + actor.maxmp.to_s, 1)
end
def draw_actor_class_menu_status(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 90, WLH, actor.class.name, 1)
end
def draw_actor_level_menu_status(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, WLH, actor.level, 1)
end
def draw_menu_status_obj(x,y)
lay = Cache.menu("Menu_Status_OBJ")
cw = lay.width
ch = lay.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, lay, src_rect)
end
def draw_actor_exp_meter_status_menu(actor, x, y)
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
back = Cache.menu("MeterBack")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch , back, src_rect)
bitmap = Cache.menu("EXPMeter")
if actor.level < 99
cw = bitmap.width * rate
else
cw = bitmap.width
end
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch , bitmap, src_rect)
if actor.next_exp != 0
self.contents.draw_text(x + 30, y - 20, 80, 32, actor.next_rest_exp_s, 2)
else
self.contents.draw_text(x + 30, y - 20, 80, 32, "Max", 2)
end
self.contents.draw_text(x - 30, y + 10, 120, 32, actor.exp_s.to_s, 2)
end
end
####################
# Window_Status_Left #
####################
class Window_Status_Left < Window_Base
def initialize(actor)
super(0, 0, 560, 430)
@actor = actor
self.opacity = 0
self.contents.font.bold = true
self.contents.font.shadow = true
refresh
end
def refresh
self.contents.clear
draw_actor_face(@actor, 350, 90)
draw_actor_class_menu_status(@actor, 350, 195)
draw_actor_level_menu_status(@actor, 450, 195)
draw_actor_hp_menu_status(@actor, 350, 213)
draw_actor_mp_menu_status(@actor, 380, 240)
draw_actor_exp_meter_status_menu(@actor, 350, 300)
draw_actor_atk_menu_status(@actor, 50, 170)
draw_actor_def_menu_status(@actor, 70, 200)
draw_actor_spi_menu_status(@actor, 90, 230)
draw_actor_agi_menu_status(@actor, 110, 260)
draw_equipments_menu_status(@actor, 30, 40)
draw_actor_state(@actor,190, 320)
end
end
#####################
# Window_Status_Right #
#####################
class Window_Status_Right < Window_Base
def initialize(actor)
super(0, 0, 560, 430)
@actor = actor
self.opacity = 0
self.contents.font.bold = true
self.contents.font.shadow = true
refresh
end
def refresh
self.contents.clear
draw_actor_name(@actor, 55, 367)
draw_menu_status_obj(0, 380)
end
end
###############
# Scene_Status #
###############
class Scene_Status
def main
start
perform_transition
Input.update
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.update
pre_terminate
Graphics.freeze
terminate
end
def initialize(actor_index = 0)
@actor_index = actor_index
end
def start
@actor = $game_party.members[@actor_index]
@status_window_right = Window_Status_Right.new(@actor)
@status_window_right.x = 544
@status_window_right.contents_opacity = 0
@status_window_left = Window_Status_Left.new(@actor)
@status_window_left.x = -544
@status_window_left.contents_opacity = 0
@menu_back = Plane.new
@menu_back.bitmap = Cache.menu("Background")
@menu_layout = Sprite.new
@menu_layout.bitmap = Cache.menu("Menu_Status_Layout")
end
def perform_transition
Graphics.transition(0)
end
def pre_terminate
for i in 0..25
@status_window_right.x += 25
@status_window_left.x -= 25
@status_window_right.contents_opacity -= 15
@status_window_left.contents_opacity -= 15
@menu_back.ox += 1
Graphics.update
end
end
def terminate
@status_window_right.dispose
@status_window_left.dispose
@menu_back.dispose
@menu_layout.dispose
end
def return_scene
$scene = Scene_Menu.new(3)
end
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Status.new(@actor_index)
end
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Status.new(@actor_index)
end
def update
@menu_back.ox += 1
@status_window_right.contents_opacity += 10
@status_window_left.contents_opacity += 10
if @status_window_right.x > 0
@status_window_right.x -= 25
elsif @status_window_right.x <= 0
@status_window_right.x = 0
@status_window_right.contents_opacity = 255
end
if @status_window_left.x < 0
@status_window_left.x += 25
elsif @status_window_left.x >=0
@status_window_left.x = 0
@status_window_left.contents_opacity = 255
end
@status_window_right.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
Sound.play_cursor
prev_actor
end
super
end
end
#-------------------------------------------------
$mogscript = {} if $mogscript == nil
$mogscript["menu_status_aya"] = true
#-------------------------------------------------
변함없이 소재하위에 인스톨 하시면 적용 됩니다.
그리고 첨부한 Menus압축을 자신의 게임 Graphics폴더에다가 풀어주시면 됩니다.
GraphicsMenus/그림파일
이런 상태를 만들어주세요.
p.s
스테이터스 최대 표시량은 999입니다.
그리고 마나를 비롯한 스테이터스바(status bar)가 뜨는 속성값은 절대 0을 주면 안됩니다.(에러뜨는상황을 확인했습니다.)
감사합니다~
##################################################
# Mog Menu_Status_Aya V 1.0 #
##################################################
# By Moghunter
# http://www.atelier-rgss.com
##################################################
# Menu Status com layout em pictures.
# É necessário criar uma pasta com o nome de
# Menus e colocar todas as imagens dentro dela, de resto
# é só criar o seu próprio estilo de menu através de um
#editor de imagem.
#-------------------------------------------------
module MOG_VX07
#Definição do parameter maximo.
MAX_PARAMETER = 999
end
##############
# Game_Actor #
##############
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
###############
# module Cache #
###############
module Cache
def self.menu(filename)
load_bitmap("Graphics/Menus/", filename)
end
end
##############
# Window_Base #
##############
class Window_Base < Window
def draw_actor_atk_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.atk / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.atk.to_s , 2)
end
def draw_actor_def_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.def / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.def.to_s , 2)
end
def draw_actor_spi_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.spi / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.spi.to_s , 2)
end
def draw_actor_agi_menu_status(actor, x, y)
back = Cache.menu("Parameter_Bar_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("Parameter_Bar")
cw = meter.width * actor.agi / MOG_VX07::MAX_PARAMETER
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.agi.to_s , 2)
end
def draw_item_name_menu_status(item, x, y, enabled = true)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 30, y, 155, WLH, item.name)
end
end
def draw_equipments_menu_status(actor, x, y)
draw_item_name_menu_status(actor.equips[0], x , y)
draw_item_name_menu_status(actor.equips[1], x , y + 45)
draw_item_name_menu_status(actor.equips[2], x , y + 90)
draw_item_name_menu_status(actor.equips[3], x + 125, y + 20)
draw_item_name_menu_status(actor.equips[4], x + 125, y + 65)
end
def draw_actor_hp_menu_status(actor, x, y)
back = Cache.menu("MeterBack")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("HPMeter")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 22, y + 5 , 80, 32, actor.hp.to_s + " / " + actor.maxhp.to_s, 1)
end
def draw_actor_mp_menu_status(actor, x, y)
back = Cache.menu("MeterBack")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, back, src_rect)
meter = Cache.menu("MPMeter")
cw = meter.width * actor.mp / actor.maxmp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch + 30, meter, src_rect)
self.contents.font.size = 14
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 22, y + 5 , 80, 32, actor.mp.to_s + " / " + actor.maxmp.to_s, 1)
end
def draw_actor_class_menu_status(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 90, WLH, actor.class.name, 1)
end
def draw_actor_level_menu_status(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, WLH, actor.level, 1)
end
def draw_menu_status_obj(x,y)
lay = Cache.menu("Menu_Status_OBJ")
cw = lay.width
ch = lay.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, lay, src_rect)
end
def draw_actor_exp_meter_status_menu(actor, x, y)
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
back = Cache.menu("MeterBack")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch , back, src_rect)
bitmap = Cache.menu("EXPMeter")
if actor.level < 99
cw = bitmap.width * rate
else
cw = bitmap.width
end
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch , bitmap, src_rect)
if actor.next_exp != 0
self.contents.draw_text(x + 30, y - 20, 80, 32, actor.next_rest_exp_s, 2)
else
self.contents.draw_text(x + 30, y - 20, 80, 32, "Max", 2)
end
self.contents.draw_text(x - 30, y + 10, 120, 32, actor.exp_s.to_s, 2)
end
end
####################
# Window_Status_Left #
####################
class Window_Status_Left < Window_Base
def initialize(actor)
super(0, 0, 560, 430)
@actor = actor
self.opacity = 0
self.contents.font.bold = true
self.contents.font.shadow = true
refresh
end
def refresh
self.contents.clear
draw_actor_face(@actor, 350, 90)
draw_actor_class_menu_status(@actor, 350, 195)
draw_actor_level_menu_status(@actor, 450, 195)
draw_actor_hp_menu_status(@actor, 350, 213)
draw_actor_mp_menu_status(@actor, 380, 240)
draw_actor_exp_meter_status_menu(@actor, 350, 300)
draw_actor_atk_menu_status(@actor, 50, 170)
draw_actor_def_menu_status(@actor, 70, 200)
draw_actor_spi_menu_status(@actor, 90, 230)
draw_actor_agi_menu_status(@actor, 110, 260)
draw_equipments_menu_status(@actor, 30, 40)
draw_actor_state(@actor,190, 320)
end
end
#####################
# Window_Status_Right #
#####################
class Window_Status_Right < Window_Base
def initialize(actor)
super(0, 0, 560, 430)
@actor = actor
self.opacity = 0
self.contents.font.bold = true
self.contents.font.shadow = true
refresh
end
def refresh
self.contents.clear
draw_actor_name(@actor, 55, 367)
draw_menu_status_obj(0, 380)
end
end
###############
# Scene_Status #
###############
class Scene_Status
def main
start
perform_transition
Input.update
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.update
pre_terminate
Graphics.freeze
terminate
end
def initialize(actor_index = 0)
@actor_index = actor_index
end
def start
@actor = $game_party.members[@actor_index]
@status_window_right = Window_Status_Right.new(@actor)
@status_window_right.x = 544
@status_window_right.contents_opacity = 0
@status_window_left = Window_Status_Left.new(@actor)
@status_window_left.x = -544
@status_window_left.contents_opacity = 0
@menu_back = Plane.new
@menu_back.bitmap = Cache.menu("Background")
@menu_layout = Sprite.new
@menu_layout.bitmap = Cache.menu("Menu_Status_Layout")
end
def perform_transition
Graphics.transition(0)
end
def pre_terminate
for i in 0..25
@status_window_right.x += 25
@status_window_left.x -= 25
@status_window_right.contents_opacity -= 15
@status_window_left.contents_opacity -= 15
@menu_back.ox += 1
Graphics.update
end
end
def terminate
@status_window_right.dispose
@status_window_left.dispose
@menu_back.dispose
@menu_layout.dispose
end
def return_scene
$scene = Scene_Menu.new(3)
end
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Status.new(@actor_index)
end
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Status.new(@actor_index)
end
def update
@menu_back.ox += 1
@status_window_right.contents_opacity += 10
@status_window_left.contents_opacity += 10
if @status_window_right.x > 0
@status_window_right.x -= 25
elsif @status_window_right.x <= 0
@status_window_right.x = 0
@status_window_right.contents_opacity = 255
end
if @status_window_left.x < 0
@status_window_left.x += 25
elsif @status_window_left.x >=0
@status_window_left.x = 0
@status_window_left.contents_opacity = 255
end
@status_window_right.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
Sound.play_cursor
prev_actor
end
super
end
end
#-------------------------------------------------
$mogscript = {} if $mogscript == nil
$mogscript["menu_status_aya"] = true
#-------------------------------------------------