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.

Menu mix

~R~

Member

screenshot:
http://img172.imageshack.us/img172/3039/samplestp9.th.jpg[/IMG]

Edit: can it be 3 players window?
in the white background of the screenshot, it have to be the map or an horizontal scrolling panorama(if isn't possible the panorama, make the map,please)
someone can fix the icons to appears under the font?

my friend's menu(location, gold and options, with icons)(may be easier to understand if you can read portuguese)
Code:
#============================================================================== 
# Sundry Menu (Menu Diverso)
#------------------------------------------------------------------------------ 
# Criador: ->mArCeLo?QeJiNhO
# Agradecimentos ? LegendsX, por apresentar os scripts que inspiraram esse
# Baseado no Alternative Menu e no Icon Menu Command, de criadores desconhecidos.
# 07/08 de Julho de 2007
# Vers?o 1.1
#============================================================================== 
# ? o Menu original com algumas mudan?as.
# Acrescenta imagens dos Battlers, icones, o local e a op??o de Carregar.
# Para ativar esse Menu, cole o c?digo acima do Main com qualquer nome.
# Aten??o! O Battler e o Character devem ter o mesmo nome!
# Voc? pode apagar todos os coment?rios! Exceto os cr?ditos! xD
#============================================================================== 
# Erros conhecidos: (Os erros ser?o consertados, se poss?vel.)
# Se o nome da classe do personagem for muito grande, pode passar por cima do Status do personagem.
# Pode ser incompat?vel com alguns scripts de Save/Load...
# Quando se acessa a op??o 'Status', ? aberto autom?ticamente o menu do 1? Personagem...
# ? recomendado o uso de fonte pequena ou tamanho de fonte baixo (entre 20 e 25). (Arial 24 ? ideal)
#============================================================================== 
class Scene_Menu
#--------------------------------------------------------------------------
def initialize (menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
def main
#==============================================================================
# Defini??o dos ?cones
#==============================================================================
# Aqui s?o definidos os ?cones que aparecer?o no menu. Personalize a seu gosto! =)
$stepsicon = "020-Accessory05" # ?cone dos passos
$goldicon = "032-Item01" # ?cone do dinheiro
$mapicon = "038-Item07" # ?cone do mapa
$itemicon = "034-Item03" # icone do item
$skillicon = "044-Skill01" # ?cone da habilidade
$equipicon = "009-Shield01" # ?cone do equipamento
$statusicon = "040-Item09" # ?cone do status
$saveicon = "047-Skill04" # ?cone de salvar
$loadicon = "048-Skill05" # ?cone de carregar
$exiticon = "046-Skill03" # ?cone de sair
$clockicon = "036-Item05" # ?cone do rel?gio (tempo de jogo)
#==============================================================================
# Os espa?os dados antes da palavra s?o necess?rios para que os ?cones n?o fiquem 'por cima' do texto.
# Talvez voc? tenha que adicionar ou remover espa?os entre as aspas, para adaptar o texto do menu aos ?cones.
# Por exemplo, a palavra "Habilidade" fica por baixo do ?cone, mas um espa?o a mais resolve isso.
# Dependendo da fonte do texto, tamb?m pode ser necess?rio que voc? altere os espa?os.
s1 = "    " + $data_system.words.item
s2 = "    " + $data_system.words.skill
s3 = "    " + $data_system.words.equip
s4 = "    " + "Status"
s5 = "    " + "Salvar"
s6 = "    " + "Carregar"
s7 = "    " + "Sair"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
@command_window.x = 0
@command_window.y = 0
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
#==============================================================================
# Defini??o das Janelas do Menu
#==============================================================================
@playtime_window = Window_PlayTime1.new
@playtime_window.x = 0
@playtime_window.y = 336
@steps_window = Window_Steps1.new
@steps_window.x = 0 
@steps_window.y = 255
@gold_window = Window_Gold1.new
@gold_window.x = 0
@gold_window.y = 416
@status_window = Window_MenuStatus1.new
@status_window.x = 160
@status_window.y = 0
@title_window = Window_Title.new
@title_window.x = 160 
@title_window.y = 416 
#==============================================================================
# Defini??o das Posi??es em que os ?cones ser?o exibidos
#==============================================================================
@icon_item = Sprite.new
@icon_item.bitmap = RPG::Cache.icon($itemicon)
@icon_item.x = 18
@icon_item.y = 20
@icon_item.z = 255
@icon_skill = Sprite.new
@icon_skill.bitmap = RPG::Cache.icon($skillicon)
@icon_skill.x = 19
@icon_skill.y = 52
@icon_skill.z = 255
@icon_equip = Sprite.new
@icon_equip.bitmap = RPG::Cache.icon($equipicon)
@icon_equip.x = 18
@icon_equip.y = 84
@icon_equip.z = 255
@icon_status = Sprite.new
@icon_status.bitmap = RPG::Cache.icon($statusicon)
@icon_status.x = 18
@icon_status.y = 116
@icon_status.z = 255
@icon_save = Sprite.new
@icon_save.bitmap = RPG::Cache.icon($saveicon)
@icon_save.x = 18
@icon_save.y = 148
@icon_save.z = 255
@icon_load = Sprite.new
@icon_load.bitmap = RPG::Cache.icon($loadicon)
@icon_load.x = 18
@icon_load.y = 180
@icon_load.z = 255
@icon_exit = Sprite.new
@icon_exit.bitmap = RPG::Cache.icon($exiticon)
@icon_exit.x = 19
@icon_exit.y = 212
@icon_exit.z = 255
@icon_steps = Sprite.new
@icon_steps.bitmap = RPG::Cache.icon($stepsicon)
@icon_steps.x = 20
@icon_steps.y = 300
@icon_steps.z = 255
@icon_map = Sprite.new
@icon_map.bitmap = RPG::Cache.icon($mapicon)
@icon_map.x = 180
@icon_map.y = 436
@icon_map.z = 255
@icon_clock = Sprite.new
@icon_clock.bitmap = RPG::Cache.icon($clockicon)
@icon_clock.x = 20
@icon_clock.y = 375
@icon_clock.z = 255

Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@playtime_window.dispose
@gold_window.dispose
@status_window.dispose
@steps_window.dispose
@icon_item.dispose
@icon_skill.dispose
@icon_equip.dispose
@icon_status.dispose
@icon_save.dispose
@icon_load.dispose
@icon_exit.dispose
@icon_steps.dispose
@icon_map.dispose
@icon_clock.dispose
@title_window.dispose 

end
#--------------------------------------------------------------------------
def update
@command_window.update
@playtime_window.update
@gold_window.update
@status_window.update
@steps_window.update
@icon_item.update
@icon_skill.update
@icon_equip.update
@icon_status.update
@icon_save.update
@icon_load.update
@icon_exit.update
@icon_clock.update
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if $game_party.actors.size == 0 and @command_window.index < 4
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
$scene = Scene_Status.new
when 4
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_MenuSave.new
when 5
$game_system.se_play($data_system.decision_se)
$scene = Scene_MenuLoad.new
when 6
$game_system.se_play($data_system.decision_se)
$scene = Scene_MenuEnd.new
end
return
end
end
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 1
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@status_window.index)
when 2
$game_system.se_play($data_system.decision_se)
$scene = Scene_Equip.new(@status_window.index)
when 3
$game_system.se_play($data_system.decision_se)
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
#==============================================================================
# Janela de Status (Personagens)
#==============================================================================

class Window_MenuStatus1 < Window_Selectable 
def initialize 
super(0, 0, 480, 416) #medidas da janela de status (personagens)
self.contents = Bitmap.new(width - 32, height - 32) 
self.contents.font.name = $fontface #fonte da janela de status
self.contents.font.size = $fontsize #tamanho da fonte da janela de status
refresh 
self.active = false 
self.index = -1 
end 

def refresh 
self.contents.clear 
@item_max = $game_party.actors.size 
for i in 0...$game_party.actors.size 
x = 64 
y = i * 90 
actor = $game_party.actors[i] 
draw_actor_face(actor, x + 200, y + 79) #coordenadas do desenho do Battler
draw_actor_graphic(actor, x - 50, y + 80)#Coordenadas do desenho do Character
self.contents.font.size = 18 #Fonte definida em tamanho 18 para caber o texto
draw_actor_name(actor, x - 60, y + 4) #desenho do nome do personagem
self.contents.font.color = system_color 
self.contents.draw_text(x - 5, y + 2, 120, 32, '-') 
self.contents.font.color = normal_color 
draw_actor_class(actor, x + 75, y + 4) #desenho do nome da classe
draw_actor_level(actor, x + 5, y + 4) #desenho do n?vel
draw_actor_state(actor, x + 135, y + 4) #desenho do status
draw_actor_exp(actor, x - 35, y + 54) #desenho da experi?ncia
draw_actor_hp(actor, x - 35, y + 32) #desenho do HP
draw_actor_sp(actor, x + 115, y + 32) #desenho do MP
end 
end 

def update_cursor_rect 
if @index < 0 
self.cursor_rect.empty 
else 
self.cursor_rect.set(1, @index * 90 + 33, 26, 48) 
end 
end 

def draw_actor_face(actor, x, y) 
face = RPG::Cache.battler(actor.character_name, actor.character_hue) 
fw = face.width 
fh = 90 # Posi??o vertical do Battler.
src_rect = Rect.new(3, -1, fw, fh) 
opacity = 255 # opacidade do desenho do Battler, de 0 a 255.
self.contents.blt(x - fw / 23, y - fh, face, src_rect, opacity) 
end 
end

#==============================================================================
# Janela de Localiza??o ("Title")
#==============================================================================
class Window_Title < Window_Base 

def initialize 
super(0, 0, 480, 64) #medida da janela de localiza??o
self.contents = Bitmap.new (width - 32, height - 32) 
self.contents.font.name = $fontface #fonte da janela de localiza??o
self.contents.font.size = 18 # tamanho da fonte da janela de localiza??o
refresh 
end 
def refresh 
self.contents.clear 
self.contents.font.color = system_color 
self.contents.font.color = normal_color 
$maps = load_data("Data/MapInfos.rxdata") 
@map_id = $game_map.map_id 
@currmap = $maps[@map_id].name 
self.contents.draw_text(40, 0, 120, 32, "Localiza??o:") #Defini??o da palavra "Localiza??o"
self.contents.draw_text(140, 0, 820, 32, @currmap) #mapa corrente (localiza??o)
end 
end

#==============================================================================
# Janela do Tempo de Jogo
#==============================================================================

class Window_PlayTime1< Window_Base
#--------------------------------------------------------------------------
def initialize 
super(0, 0, 160, 80) # medida da janela de tempo de jogo
self.contents = Bitmap.new(width - 32, height - 32) 
self.contents.font.name = $fontface #fonte da janela do tempo de jogo
self.contents.font.size = $fontsize #tamanho da fonte da janela do tempo de jogo
refresh 
end 
def refresh 
self.contents.clear 
self.contents.font.color = system_color 
self.contents.draw_text(4, -5, 120, 32, "Tempo") #Esse c?digo define as posi??es da palavra "Tempo"
@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.font.color = normal_color 
self.contents.draw_text(30, 20, 90, 32, text, 2) #Posi??es do texto do tempo de jogo
end 
def update 
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec 
refresh 
end 
end 
end 
#==============================================================================
# Janela da Contagem dos Passos
#==============================================================================

class Window_Steps1 < Window_Base 
def initialize 
super(0, 0, 160, 81)#Medida da janela de passos
self.contents = Bitmap.new(width - 32, height - 32) 
self.contents.font.name = $fontface #fonte da janela de passos
self.contents.font.size = $fontsize #tamanho da fonte da janela de passos
refresh 
end 
def refresh 
self.contents.clear 
self.contents.font.color = system_color 
self.contents.draw_text(4, -3, 120, 32, "Passos") #definida a posi??o da palavra "Passos"
self.contents.font.color = normal_color 
self.contents.draw_text(30, 20, 80, 32, $game_party.steps.to_s, 2) # definida a posi??o dos passos contados
end 
end 

#==============================================================================
# Janela do Dinheiro
#==============================================================================

class Window_Gold1 < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
def refresh
rect = Rect.new(x, y, self.width - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon($goldicon)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
cx = contents.text_size($data_system.words.gold).width
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
end
end
#==============================================================================
# Cena de Carregar
#==============================================================================

class Scene_MenuLoad < Scene_File
#--------------------------------------------------------------------------
def initialize
$game_temp = Game_Temp.new
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..3
filename = make_filename(i)
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
super("Carregar qual slot?")
end
#--------------------------------------------------------------------------
def on_decision(filename)
unless FileTest.exist?(filename)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.load_se)
file = File.open(filename, "rb")
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$scene = Scene_Menu.new(5)
end
#--------------------------------------------------------------------------
def on_cancel
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(5)
end
#--------------------------------------------------------------------------
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
if $game_system.magic_number != $data_system.magic_number
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
$game_party.refresh
end
end

#==============================================================================
# Menu de Sa?da
#==============================================================================

class Scene_MenuEnd
#--------------------------------------------------------------------------
def main
s1 = "Tela de T?tulo"
s2 = "Sair do Jogo"
s3 = "Voltar"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 240 - @command_window.height / 2
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
def update
@command_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(6)
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 0 
command_to_title
when 1
command_shutdown
when 2
command_cancel
end
return
end
end
#--------------------------------------------------------------------------
def command_to_title
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = Scene_Title.new
end
#--------------------------------------------------------------------------
def command_shutdown
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = nil
end
#--------------------------------------------------------------------------
def command_cancel
$game_system.se_play($data_system.decision_se)
$scene = Scene_Menu.new(6)
end
end
#==============================================================================
# Cena de Salvar
#==============================================================================

class Scene_MenuSave < Scene_File
#--------------------------------------------------------------------------
def initialize
super("Salvar em qual slot?")
end
#--------------------------------------------------------------------------
def on_decision(filename)
$game_system.se_play($data_system.save_se)
file = File.open(filename, "wb")
write_save_data(file)
file.close
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
end
#--------------------------------------------------------------------------
def on_cancel
$game_system.se_play($data_system.cancel_se)
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
end
#--------------------------------------------------------------------------
def write_save_data(file)
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
end
thanks for read it and sorry for my really bad English
 

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