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)
thanks for read it and sorry for my really bad English
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