[RGSS2] Menu Yui
5 participantes
- kabrionNovato
- Mensagens : 56
Reputação : 18
[RGSS2] Menu Yui
Ter Set 14, 2010 10:54 pm
Eu sou novato nessenovo fórum da RMB e antes de qualquer coisa me desculpem caso errei no post.
---------------------------------------------------------------------------------------------------------------------------------------
Introdução
Menu de status com layout baseado em pictures.
Screenshots
Screenshot do Menu Yui.
Screenshot do MOG Menu Status Aya, para que se faça uma comparação.
Script
Download
Download da Demo aqui.
Créditos
Moghunter
Peguei na antiga RMB
Obs
Obs1: Não postei sobre o MOG Menu Status Aya, pois já existe um post sobre ele. Caso queira ver clique aqui.
Obs2: Caso o post não tenha ficado bom, porfavor me indiquem como melhorar, ou então entre em contato comigo para que eu possa passar outros scripts para que você post.
Quero ajudar para que o RMB cresça novamente!
---------------------------------------------------------------------------------------------------------------------------------------
[RGSS2] Menu Yui
Introdução
Menu de status com layout baseado em pictures.
Screenshots
Screenshot do Menu Yui.
Screenshot do MOG Menu Status Aya, para que se faça uma comparação.
Script
- Código:
##################################################
# Mog Menu Yui V 1.0 #
##################################################
# By Moghunter
# http://www.atelier-rgss.com
##################################################
# Menu 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 Cache #
###############
module Cache
def self.menu(filename)
load_bitmap("Graphics/Menus/", filename)
end
end
###############
# Window_Base #
###############
class Window_Base < Window
def draw_actor_level_menu(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, WLH, Vocab::level_a)
self.contents.font.color = normal_color
self.contents.draw_text(x + 16, y, 24, WLH, actor.level, 2)
end
def draw_currency_value_menu(value, x, y, width)
cx = contents.text_size(Vocab::gold).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width-cx-2, WLH, value, 1)
end
def draw_actor_hp_menu(actor, x, y)
back = Cache.menu("Meter_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = Cache.menu("HP_Meter")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
text = Cache.menu("HP_Text")
cw = text.width
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 35, y - ch + 30, text, src_rect)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 81, y - 1, 48, 32, actor.hp.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 80, y - 2, 48, 32, actor.hp.to_s, 2)
end
def draw_actor_mp_menu(actor, x, y)
back = Cache.menu("Meter_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = Cache.menu("MP_Meter")
cw = meter.width * actor.mp / actor.maxmp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
text = Cache.menu("MP_Text")
cw = text.width
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 35, y - ch + 30, text, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 81, y - 1, 48, 32, actor.mp.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 80, y - 2, 48, 32, actor.mp.to_s, 2)
end
def draw_actor_name_menu(actor, x, y)
self.contents.font.color = text_color(23)
self.contents.draw_text(x, y, 108, WLH, actor.name,1)
end
def draw_actor_level_menu(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, WLH, " L")
self.contents.font.color = text_color(10)
self.contents.draw_text(x + 18, y, 24, WLH, actor.level, 1)
end
end
############
# Game_Map #
############
class Game_Map
attr_reader :map_id
def mpname
$mpname = load_data("Data/MapInfos.rvdata")
$mpname[@map_id].name
end
end
########################
# Window_Selectable_Menu #
########################
class Window_Selectable_Menu < Window_Base
attr_reader :item_max
attr_reader :column_max
attr_reader :index
def initialize(x, y, width, height, spacing = 32)
@item_max = 1
@column_max = 1
@index = -1
@spacing = spacing
super(x, y, width, height)
end
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32, [height - 32, row_max * WLH].max)
end
def index=(index)
@index = index
end
def row_max
return (@item_max + @column_max - 1) / @column_max
end
def top_row
return self.oy / WLH
end
def top_row=(row)
row = 0 if row < 0
row = row_max - 1 if row > row_max - 1
self.oy = row * WLH
end
def page_row_max
return (self.height - 32) / WLH
end
def page_item_max
return page_row_max * @column_max
end
def bottom_row
return top_row + page_row_max - 1
end
def bottom_row=(row)
self.top_row = row - (page_row_max - 1)
end
def cursor_movable?
return false if (not visible or not active)
return false if (index < 0 or index > @item_max or @item_max == 0)
return false if (@opening or @closing)
return true
end
def cursor_down(wrap = false)
if (@index < @item_max - @column_max) or (wrap and @column_max == 1)
@index = (@index + @column_max) % @item_max
end
end
def cursor_up(wrap = false)
if (@index >= @column_max) or (wrap and @column_max == 1)
@index = (@index - @column_max + @item_max) % @item_max
end
end
def cursor_right(wrap = false)
if (@column_max >= 2) and
(@index < @item_max - 1 or (wrap and page_row_max == 1))
@index = (@index + 1) % @item_max
end
end
def cursor_left(wrap = false)
if (@column_max >= 2) and
(@index > 0 or (wrap and page_row_max == 1))
@index = (@index - 1 + @item_max) % @item_max
end
end
def update
super
if cursor_movable?
last_index = @index
if Input.repeat?(Input::DOWN)
cursor_down(Input.trigger?(Input::DOWN))
end
if Input.repeat?(Input::UP)
cursor_up(Input.trigger?(Input::UP))
end
if Input.repeat?(Input::RIGHT)
cursor_down(Input.trigger?(Input::DOWN))
end
if Input.repeat?(Input::LEFT)
cursor_up(Input.trigger?(Input::UP))
end
if @index != last_index
Sound.play_cursor
end
end
end
end
#######################
# Window_MenuStatus_Yui #
#######################
class Window_MenuStatus_Yui < Window_Selectable_Menu
def initialize(x, y)
super(x, y, 460, 300)
self.contents.font.bold = true
self.contents.font.shadow = true
self.contents.font.size = 16
refresh
self.active = false
self.index = -1
end
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
if actor.index == 0
draw_actor_graphic(actor, 65, 110)
draw_actor_name_menu(actor, 15, 120)
draw_actor_level_menu(actor, -5, 55)
draw_actor_state(actor, 20, 100)
draw_actor_hp_menu(actor, -30, 25)
draw_actor_mp_menu(actor, 0, 45)
elsif actor.index == 1
draw_actor_graphic(actor, 170, 210)
draw_actor_name_menu(actor, 120, 220)
draw_actor_level_menu(actor, 100, 155)
draw_actor_state(actor, 125, 200)
draw_actor_hp_menu(actor, 75, 120)
draw_actor_mp_menu(actor, 105, 145)
elsif actor.index == 2
draw_actor_graphic(actor, 265, 110)
draw_actor_name_menu(actor, 215, 120)
draw_actor_level_menu(actor, 195, 55)
draw_actor_state(actor, 220, 100)
draw_actor_hp_menu(actor, 170, 20)
draw_actor_mp_menu(actor, 205, 45)
elsif actor.index == 3
draw_actor_graphic(actor, 370, 210)
draw_actor_name_menu(actor, 320, 220)
draw_actor_level_menu(actor, 370, 155)
draw_actor_state(actor, 325, 200)
draw_actor_hp_menu(actor, 275, 120)
draw_actor_mp_menu(actor, 245, 145)
end
end
end
def update_cursor
end
end
###############
# Window_Time #
###############
class Window_Mapname < Window_Base
def initialize(x, y)
super(x, y, 160, WLH + 32)
self.contents.font.bold = true
self.contents.font.size = 16
refresh
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, $game_map.mpname.to_s, 1)
end
end
###################
# Window_Gold_Menu #
###################
class Window_Gold_Menu < Window_Base
def initialize(x, y)
super(x, y, 160, WLH + 32)
self.contents.font.bold = true
self.contents.font.size = 16
self.contents.font.color = power_up_color
refresh
end
def refresh
self.contents.clear
draw_currency_value_menu($game_party.gold, 10, 0, 120)
end
end
###############
# Window_Time #
###############
class Window_Time < Window_Base
def initialize(x, y)
super(x, y, 160, WLH + 32)
self.contents.font.bold = true
self.contents.font.size = 16
self.contents.font.color = power_up_color
refresh
end
def refresh
self.contents.clear
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.draw_text(4, 0, 120, 32, text, 2)
end
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
##############
# Scene_Menu #
##############
class Scene_Menu
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(menu_index = 0)
@menu_index = menu_index
end
def perform_transition
Graphics.transition(10, "Graphics/System/BattleStart", 80)
end
def start
@menu_back = Plane.new
@menu_back.bitmap = Cache.menu("Background")
@menu_layout = Sprite.new
@menu_layout.bitmap = Cache.menu("Menu_Layout")
@menu_com = Sprite.new
@menu_com.bitmap = Cache.menu("Menu_Com01")
@menu_select = Sprite.new
@menu_select.bitmap = Cache.menu("Menu_Select00")
create_command_window
@gold_window = Window_Gold_Menu.new(195, 45)
@status_window = Window_MenuStatus_Yui.new(100, 60)
@playtime_window = Window_Time .new(165, 0)
@mapname_window = Window_Mapname.new(195,360)
@status_window.opacity = 0
@playtime_window.opacity = 0
@mapname_window.opacity = 0
@gold_window.opacity = 0
end
def pre_terminate
end
def terminate
@menu_back.dispose
@menu_layout.dispose
@menu_com.dispose
@menu_select.dispose
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@playtime_window.dispose
@mapname_window.dispose
end
def update
@menu_back.ox += 1
@command_window.update
@gold_window.update
@status_window.update
@mapname_window.update
@playtime_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.openness = 0
@command_window.open
@command_window.opacity = 0
@command_window.contents_opacity = 0
if $game_system.save_disabled
@command_window.draw_item(4, false)
end
end
def update_command_selection
case @command_window.index
when 0
@menu_com.bitmap = Cache.menu("Menu_Com01")
when 1
@menu_com.bitmap = Cache.menu("Menu_Com02")
when 2
@menu_com.bitmap = Cache.menu("Menu_Com03")
when 3
@menu_com.bitmap = Cache.menu("Menu_Com04")
when 4
@menu_com.bitmap = Cache.menu("Menu_Com05")
when 5
@menu_com.bitmap = Cache.menu("Menu_Com06")
end
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0
$scene = Scene_Item.new
when 1,2,3
start_actor_selection
when 4
$scene = Scene_File.new(true, false, false)
when 5
$scene = Scene_End.new
end
end
end
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
def end_actor_selection
@command_window.active = true
@status_window.active = false
@menu_select.bitmap = Cache.menu("Menu_Select00")
@status_window.index = -1
end
def update_actor_selection
case @status_window.index
when 0
@menu_select.bitmap = Cache.menu("Menu_Select01")
when 1
@menu_select.bitmap = Cache.menu("Menu_Select02")
when 2
@menu_select.bitmap = Cache.menu("Menu_Select03")
when 3
@menu_select.bitmap = Cache.menu("Menu_Select04")
end
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1
$scene = Scene_Skill.new(@status_window.index)
when 2
$scene = Scene_Equip.new(@status_window.index)
when 3
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
$mogscript = {} if $mogscript == nil
$mogscript["menu_yui"] = true
Download
Download da Demo aqui.
Créditos
Moghunter
Peguei na antiga RMB
Obs
Obs1: Não postei sobre o MOG Menu Status Aya, pois já existe um post sobre ele. Caso queira ver clique aqui.
Obs2: Caso o post não tenha ficado bom, porfavor me indiquem como melhorar, ou então entre em contato comigo para que eu possa passar outros scripts para que você post.
Quero ajudar para que o RMB cresça novamente!
Re: [RGSS2] Menu Yui
Qua Set 15, 2010 2:35 pm
Muito bom, existem vários scripts do Moghunter que são bons (dos que eu vi, todos eram XD), +rep pela disponibilização e dar os devidos créditos.
- NaxusVeterano
- Mensagens : 500
Reputação : 68
Re: [RGSS2] Menu Yui
Qua Set 15, 2010 6:53 pm
Muito bom esse menu!
Eu já conhecia ele mais, obrigado por disponibilizar!
Eu já conhecia ele mais, obrigado por disponibilizar!
- kabrionNovato
- Mensagens : 56
Reputação : 18
Re: [RGSS2] Menu Yui
Sáb Set 25, 2010 9:47 am
Vlw Galera, faço o que posso para ajudar a RMB a crescer. \o/
- Caiobz009Novo Membro
- Mensagens : 136
Reputação : 51
Re: [RGSS2] Menu Yui
Sáb Set 25, 2010 9:52 am
Muito bom cara , +rep. :D
- Max KeisersMembro
- Mensagens : 267
Reputação : 49
Re: [RGSS2] Menu Yui
Sáb Set 25, 2010 3:01 pm
Muito irado esse menu, parabens !
- kabrionNovato
- Mensagens : 56
Reputação : 18
Re: [RGSS2] Menu Yui
Dom Set 26, 2010 9:14 am
Vlw cara, que pena que so disponibilizei, mas um dia estarei postando um feito por mim o/.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|