Credits
Moghunter
Screenshot
(http://imagesload.net/daten_no/1202148098_VX_Menu04_IM01.GIF)
Anleitung
Erstelle einen Ordner in Graphics namens Menus. Dann kopiere aus den Beispielprojekt alle nötigen Grafiken. Wenn Grafiken bearbeitet werden, sollte man beachten, dass man die Größe nicht ändern sollte, da sonst das Menü nicht richtig dargestellt werden kann!
Skript
##################################################
# 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
#-------------------------------------------------
Links
Beispielprojekt und Grafiken (v1.0) (http://atelier-rgss.com/RGSS/Demos/VX_MOG_Menu_Status_Aya.exe)
Mog Menu Yui (dazupassendes Menü) (http://rpgvx.de/forum.php?topic=221)
Atelier-RGSS.com (Quelle) (http://atelier-rgss.com/RGSS/Menu/VX_Menu04.html)