1 MK - Custom Menu v 1.0 22/5/2012, 21:04
The Lucas Wugades
Membro Honorário III
# MK - Custom Menu v 1.0 |
# Created by Shepher and MK-DarckY
Script para ajudar o fórum crescer, eu gostei muito doscript espero que goste tbm
# Created by Shepher and MK-DarckY
Script para ajudar o fórum crescer, eu gostei muito doscript espero que goste tbm
- Código:
# Colar em cima do MAIN ( Apague essa linha )#
#==============================================================================|
# MK - Custom Menu v 1.0 |
# Created by Shepher and MK-DarckY |
#------------------------------------------------------------------------------|
# Novo menu para RPG Maker(já ouvi gente falando que poderia ser o padrão) |
# É bem bonito, simples e com bastante recursos(não muitos mas irá ter muitos |
# aí pela frente). |
#------------------------------------------------------------------------------|
# Caracteristicas |
# • Fundo personalizável |
# • Imagem FOG(névoa atrás) |
# • Imagem FOG com movimentos |
# • Música |
# • Pasta diferenciada para música do menu(não tão importante HAHA)' |
# • Opacidades para cada parte do menu |
# • Posições "Z" das janelas(posições para sobrepor uma janela ou imagem |
# • Textos que tiverem no menu podem ser trocados fácilmente |
# • Ao mudar de menu(equipamente, skill, etc) não sai a música somente quando |
# saí do menu. |
# • Fundo trocável em qualquer parte do jogo |
# • Desabilitamento da música em qualquer parte do jogo |
# • Trocar música no meio do jogo |
# Bom é isso por enquanto |
#------------------------------------------------------------------------------|
# Comandos para trocar partes do menu: |
# • $Fundo = "NomeDaImagem" |TROCA A IMAGEM DE FUNDO |
# • $Fog = "NomeDaImagem" |TROCA A IMAGEM DE FOG |
# • $Musica = true/false | Botar ou tirar a música respectivamente |
# • $Musicas = "nomedamusica" | Trocar a música |
#------------------------------------------------------------------------------|
# Caracteristicas nova versão |
# • Música aleatória |
# • Velocidade do deslocamento do FOG aleátorio |
# • Ícones ao lado das opções |
# • Atualização no Window_Status |
# É isso também, vamo lá, fiquem ligados nas atualizações |
#==============================================================================|
module Shepher # Hahaha , adoro meu nick
##############################################################
############### CONFIGURAÇÕES DO MENU PRINCIPAL ##############
##############################################################
# Nome da imagem de fundo do menu, deve estar na pasta System
$Fundo = "" # Padrao = Fundo
# Nome do arquivo da nevoa - Deve estar na pasta Pictures
$Fog = "Fogi" # Padrão = fog
# Opacidades #
# Opacidade da nevoa
OpacidadeFog = 230 # Padrao = 100
# Opacidade da janela de gold
OpacidadeGold = 110 # Padrao = 100
# Opacidade da janela d status
OpacidadeStatus = 105 # Padrao = 100
# Opacidade da janela de comando
OpacidadeComando = 121 # Padrão = 100
# Opacidade da janela de Timer(tempo)
OpacidadeTimer = 100
# Posições Z - Aqui define qual janela fica na frente de qual #
# Recomendo deixar as janelas todas iguais e para imagens diferentes #
# Ex: Janelas = 200 | Fog(nevoa) = 100 | Fundo = 140 #
# Posição Z do fog
# Isso faz com que as janelas se sobreponham sobre o plano de funo e do fog :)
# Sempre deixe as posiçoes Z das janelas maiores que a do plano de fundo e fog :P
PosicaoFog_Z = 100 # Padrão 100
# Posição Z do fundo
PosicaoFundo_Z = 140 # Padrão 100
# Posição Z da janela de gold
PosicaoGold_Z = 200 # Padrão 200
# Posição Z da janela de status
PosicaoStatus_Z = 200 # Padrão 200
# Posição Z da janela de comando
PosicaoComando_Z = 200 # Padrão 200
# Música no menu #
Pasta = "BGM/" # Pasta onde fica a música OBS; Sempre deixe o / no final
$Musica = true # Isso é se voce quer música no menu
$Musicas = "Florestas" # Se vc quiser música, qual será ela?
Volume = 120 # Volume da muúsica do menu
# Opçoes sobre o FOG
# Recomendo as 2 velocidades serem iguais , se nao pode dar problema ^^
VelocidadeX_Fog = 1.5 # Defina a velocidade do deslocamento para coordenada X
VelocidadeY_Fog = 1.5 # Defina a velocidade do deslocamento para coordenada Y
# Textos
TextoLocal = "Area: " # Texto que aparece na janela local
TextoTime = "Tempo de jogo:" # Texto que aparece na janela de Timer
end
#==============================================================================
# Window_MenuStatus
#------------------------------------------------------------------------------
# Janela que exibe os status dos membros da equipe no menu.
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Inicialização do objeto
# x : coordenada X da janela
# y : coordenada Y da janela
#--------------------------------------------------------------------------
def initialize(x, y)
super(63, y, 418, 290)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
draw_actor_face(actor, actor.index * 96 + 2, 2, 92)
x = actor.index * 97 + WLH / 2
y = 104
draw_actor_name(actor, x, y)
draw_actor_graphic(actor, x + 70, y + 150)
draw_actor_class(actor, x , y + 120)
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x, y + WLH * 2)
draw_actor_hp(actor, x + 5 , y + 60, 60)
draw_actor_mp(actor, x + 5, y + 80, 60)
end
end
#--------------------------------------------------------------------------
# Atualização do cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # No cursor
self.cursor_rect.empty
elsif @index < @item_max # Normal
self.cursor_rect.set( @index * 96, 0, 96, 250)
elsif @index >= 100 # Self
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
else # All
self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
end
end
end
class Scene_Menu < Scene_Base
include Shepher
#--------------------------------------------------------------------------
# Inicialização do objeto
# menu_index : posição inicial do cursor
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# Inicialização do processo
#--------------------------------------------------------------------------
def start
super
# Criaçao das janelas #
create_menu_background
create_command_window
@command_window.z = (Shepher::PosicaoComando_Z)
@command_window.opacity = (Shepher::OpacidadeComando)
@sprite = Sprite.new
@sprite.bitmap = Cache.system($Fundo)
@sprite.opacity = 155
@sprite.z = (Shepher::PosicaoFundo_Z)
@fog = Plane.new
@fog.bitmap = Cache.picture($Fog)
@fog.opacity = 55
@fog.z = (Shepher::PosicaoFog_Z)
@fog.opacity = (Shepher::OpacidadeFog)
@gold_window = Window_Gold.new(384, 0) # 0,360
@gold_window.z = (Shepher::PosicaoGold_Z)
@gold_window.opacity = (Shepher::OpacidadeGold)
@status_window = Window_MenuStatus.new(160, 0 + @gold_window.height)
@status_window.z = (Shepher::PosicaoStatus_Z)
@status_window.opacity = (Shepher::OpacidadeStatus)
@local_window = Window_Local.new(0, @status_window.height + @gold_window.height,@status_window.height + @gold_window.height + 38)
@tempo_window = Window_PlayTime.new(@local_window.width, @gold_window.height + @status_window.height)
end
#--------------------------------------------------------------------------
# Fim do processo
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@sprite.dispose
@fog.dispose
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@local_window.dispose
@tempo_window.dispose
$game_map.refresh
$game_map.update
$game_map.autoplay
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
super
update_menu_background
@sprite.update
@command_window.update
@gold_window.update
@status_window.update
@local_window.update
@tempo_window.update
@fog.ox += Shepher::VelocidadeX_Fog
@fog.oy += Shepher::VelocidadeY_Fog
Audio.bgm_play("Audio/"+ Shepher::Pasta + $Musicas, Shepher::Volume, 100) if $Musica == true
if Input.press?(Input::B)
Audio.bgm_stop
end
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# Criação da janela de comandos
#--------------------------------------------------------------------------
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(544 - 160, [s1, s2, s3, s4, s5, s6], 6, 0, 10)
@command_window.index = @menu_index
@command_window.x = 0
if $game_party.members.size == 0 # Se não houver membros na equipe
@command_window.draw_item(0, false) # Desabilita "Items"
@command_window.draw_item(1, false) # Desabilita "Habilidades"
@command_window.draw_item(2, false) # Desabilita "Equipamentos"
@command_window.draw_item(3, false) # Desabilita "Status"
end
if $game_system.save_disabled # Se salvar for proibido
@command_window.draw_item(4, false) # Desabilita "Salvar"
end
end
#--------------------------------------------------------------------------
# Atualização da escolha de comando
#--------------------------------------------------------------------------
def update_command_selection
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 # Item
$scene = Scene_Item.new
when 1,2,3 # Habilidades, equipamento, status
start_actor_selection
when 4 # Salvar
$scene = Scene_File.new(true, false, false)
when 5 # Fim de jogo
$scene = Scene_End.new
end
end
end
#--------------------------------------------------------------------------
# Início da seleção de herói
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Fim da seleção de herói
#--------------------------------------------------------------------------
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# Atualização da seleção de herói
#--------------------------------------------------------------------------
def update_actor_selection
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 # Habilidades
$scene = Scene_Skill.new(@status_window.index)
when 2 # Equipamento
$scene = Scene_Equip.new(@status_window.index)
when 3 # Status
$scene = Scene_Status.new(@status_window.index)
end
end
end
class Game_Map
attr_reader :map_id
def namemap
$name_map = load_data("Data/MapInfos.rvdata")
$name_map[@map_id].name
end
end
class Window_PlayTime < Window_Base
def initialize(x,y)
super(x, y, 160, 72)
self.x = x # Cordenada X
self.y = y # Cordenada Y
self.back_opacity = Shepher::OpacidadeTimer # Opacidade(Transparência)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(2, -4, 120, 24, Shepher::TextoTime)
@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(4, 20, 120, 24, text, 2)
end
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
end
class Game_Map
attr_reader :map_id
def namemap
$name_map = load_data("Data/MapInfos.rvdata")
$name_map[@map_id].name
end
end
class Window_Local < Window_Base
def initialize(x,y,width)
super(x, y, width, 72)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(0, 2, 200, 32, Shepher::TextoLocal)
self.contents.font.color = normal_color
self.contents.draw_text(60, 2, 210, 32, $game_map.namemap.to_s)
end
end