Menu Simples
:cool:
[box class=catbg2]Ficha Técnica[/box]
[box class=catbg1]
Nome: Menu Simples do Cristiano
Lag gerado: Desprezível
Compatibilidade: Boa
Engines Aplicáveis: RPG Maker XP
Customizável: Sim
Requer Recursos Extras: Não
Criador: Cristiano ([user]cristianoforce[/user])
Versão: 1.0
[/box]
[box class=catbg2]Explicações do Script[/box]
[box class=catbg1]
Um menu de funcionalidade simples para usuários que queiram fazer jogos que não exijam menus muito complexos. Ele possui quatro opções: Itens, Salvar Jogo, Carregar Jogo e Finalizar. As opções levam a diferentes cenas do próprio RTP.
Algumas coisas podem ser modificadas no módulo do script:
#==============================================================
# Modificações do usuário
#==============================================================
LOAD_OK = 1 # ID da switch que desabilita o comando de carregar jogo (se true)
SIZE_WINDOW = 200 # Tamanho da janela de Menu
SEM_FUNDO = true # Decide se o menu irá abrir com fundo ou sem
OPACITY = 180 # Opacidade da janela
ITEM_ICON = "032-Item01" # Ícone da opção Item
SAVE_ICON = "030-Key02" # Ícone da opção Salvar
LOAD_ICON = "031-Key03" # Ícone da opção Carregar
FINAL_ICON = "020-Accessory05" # Ícone da opção Finalizar
[/box]
[box class=catbg2]Imagens[/box]
[box class=catbg1]
Alguma(s) imagem(ns) demonstrativa(s):
(http://i.imgur.com/rloYh.gif) (http://i.imgur.com/rloYh.gif)
[/box]
Código
#==============================================================================
# Menu Simples Cristiano
# Criador: cristianoforce
# Versão: 1.0
# Engine: RPG Maker XP
#------------------------------------------------------------------------------
# Menu simples com 4 opções para uso rápido
#==============================================================================
module Cris
#==============================================================
# Modificações do usuário
#==============================================================
LOAD_OK = 1 # ID da switch que desabilita o comando de carregar jogo (se true)
SIZE_WINDOW = 200 # Tamanho da janela de Menu
SEM_FUNDO = true # Decide se o menu irá abrir com fundo ou sem
OPACITY = 180 #Opacidade da janela
ITEM_ICON = "032-Item01" # Ícone da opção Item
SAVE_ICON = "030-Key02" # Ícone da opção Salvar
LOAD_ICON = "031-Key03" # Ícone da opção Carregar
FINAL_ICON = "020-Accessory05" # Ícone da opção Finalizar
end
#==============================================================================
# Window_Icon_Command
#------------------------------------------------------------------------------
# Esta é a janela que exibe as escolhas (com ícones)
#==============================================================================
class Window_Icon_Command < Window_Command
def initialize(width, commands, icons)
@icons = icons
super(width, commands)
end
#--------------------------------------------------------------------------
# Desenhar Item
#
# index : índice
# color : cor do texto
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
bitmap = RPG::Cache.icon(@icons[index])
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(4, 32 * index + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
rect = Rect.new(32, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
end
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Janela do Menu
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# Inicialização dos Objetos
#
# menu_index : posição inicial do cursor de comando
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# Processamento Principal
#--------------------------------------------------------------------------
def main
# Se o fundo for o mapa
if Cris::SEM_FUNDO
@spriteset = Spriteset_Map.new
end
# Criar janela de comando
s1 = $data_system.words.item
s2 = "Salvar Jogo"
s3 = "Carregar Jogo"
s4 = "Finalizar"
@command_window = Window_Icon_Command.new(Cris::SIZE_WINDOW, [s1, s2, s3, s4], [Cris::ITEM_ICON, Cris::SAVE_ICON, Cris::LOAD_ICON, Cris::FINAL_ICON])
@command_window.index = @menu_index
@command_window.x = (640 - @command_window.width) / 2
@command_window.y = (480 - @command_window.height) / 2
@command_window.opacity = Cris::OPACITY
# Se o número de membros do Grupo de Heróis for 0
if $game_party.actors.size == 0
# Desabilar as janelas de Item
@command_window.disable_item(0)
end
# Se Salvar for Proibido
if $game_system.save_disabled
# Desabilitar Salvar
@command_window.disable_item(1)
end
# Se Carregar o jogo for proibido
if $game_switches[Cris::LOAD_OK] == true
# Desabilitar carregar jogo
@command_window.disable_item(2)
end
# Executar transição
Graphics.transition
# Loop principal
loop do
# Atualizar a tela de jogo
Graphics.update
# Atualizar a entrada de informações
Input.update
# Atualizar Frame
update
# Abortar loop se a tela for alterada
if $scene != self
break
end
end
# Preparar para transiçõa
Graphics.freeze
# Exibição das janelas
@command_window.dispose
@spriteset.dispose unless Cris::SEM_FUNDO == false
end
#--------------------------------------------------------------------------
# Atualização do Frame
#--------------------------------------------------------------------------
def update
# Atualizar janelas
@command_window.update
# Se a janela de comandos estiver ativo: chamar update_command
if @command_window.active
update_command
return
end
end
#--------------------------------------------------------------------------
# Atualização do Frame (Quando a janela de Comandos estiver Ativa)
#--------------------------------------------------------------------------
def update_command
# Se o botão B for pressionado
if Input.trigger?(Input::B)
# Reproduzir SE de cancelamento
$game_system.se_play($data_system.cancel_se)
# Alternar para a tela do mapa
$scene = Scene_Map.new
return
end
# Se o botão C for pressionado
if Input.trigger?(Input::C)
# Se o comando for outro senão Salvar, Carregar, Fim de Jogo e o número de Heróis no
# Grupo for 0
if $game_party.actors.size == 0 and @command_window.index < 1
# Reproduzir SE de erro
$game_system.se_play($data_system.buzzer_se)
return
end
# Ramificação por posição do cursor na janela de comandos
case @command_window.index
when 0 # Itens
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela de Itens
$scene = Scene_Item.new
when 1 # Salvar
# Se Salvar for proibido
if $game_system.save_disabled
# Reproduzir SE de erro
$game_system.se_play($data_system.buzzer_se)
return
end
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela de save
$scene = Scene_Save.new
when 2 # Carregar
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela de load
$scene = Scene_Load.new
when 3 # Finalizar
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela de Fim de Jogo
$scene = Scene_End.new
end
return
end
end
end
#==============================================================================
# Scene_Save
#------------------------------------------------------------------------------
# Esta classe processa o Save
#==============================================================================
class Scene_Save
#--------------------------------------------------------------------------
# Processamento de Decisão
#--------------------------------------------------------------------------
alias on_decision_new on_decision
def on_decision(filename)
on_decision_new(filename)
# Mudar para a tela do Menu
$scene = Scene_Menu.new(1)
end
#--------------------------------------------------------------------------
# Processo de Cancelamento
#--------------------------------------------------------------------------
alias on_cancel_new on_cancel
def on_cancel
on_cancel_new
# Mudar para a tela do Menu
$scene = Scene_Menu.new(1)
end
end
#==============================================================================
# Scene_Load
#------------------------------------------------------------------------------
# Esta classe processa a tela de Continuar
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# Cancelando o Processamento
#--------------------------------------------------------------------------
alias on_cancel_new on_cancel
def on_cancel
on_cancel_new
# Reproduzir SE de cancelamento
$game_system.se_play($data_system.cancel_se)
# Mudar para a tela do Menu
$scene = Scene_Menu.new(2)
end
end
#==============================================================================
# Scene_End
#------------------------------------------------------------------------------
# Esta classe processa a tela de Game Over
#==============================================================================
class Scene_End
#--------------------------------------------------------------------------
# Atualização do Frame
#--------------------------------------------------------------------------
alias update_new update
def update
update_new
# Se o botão B for pressionado
if Input.trigger?(Input::B)
# Reproduzir SE de cancelamento
$game_system.se_play($data_system.cancel_se)
# Alternar para a tela de Menu
$scene = Scene_Menu.new(3)
return
end
end
#--------------------------------------------------------------------------
# Processamento na Escolha do Comando Cancelar
#--------------------------------------------------------------------------
alias command_cancel_new command_cancel
def command_cancel
command_cancel_new
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela do Menu
$scene = Scene_Menu.new(3)
end
end
[box class=catbg2]Agradecimentos[/box]
[box class=catbg1]
- Madajuv - Ajuda com a inserção de ícones através da classe filha da Window_Command.
[/box]
Isso :P, renda-se ao RGSS, bom está bem simples, mas eu dei uma olhada no code ele está bem bonitin ^^, parabéns ficou legal mesmo olhei tudo e nada a adicionar ou tirar *--*.
Citação de: Raizen online 18/01/2013 às 15:57
Isso :P, renda-se ao RGSS, bom está bem simples, mas eu dei uma olhada no code ele está bem bonitin ^^, parabéns ficou legal mesmo olhei tudo e nada a adicionar ou tirar *--*.
kkkkkkkkkkkkkk. Eu ainda estou tentando aprender este bagulho :c
Um dia eu chego no nível de vocês (eu espero ;-; kkkkkkkk)
Obrigado por comentar Raizen, fico feliz que tenha gostado *-*
Parabéns me parece que é novato na vida scripter, é isso ai força pois somos meio solitários....:D niguém ajuda no começo.....Frase de Felix Blayder....Script dado não se olha os Bug's.
Citação de: Komuro Takashi online 11/02/2013 às 00:08
Parabéns me parece que é novato na vida scripter, é isso ai força pois somos meio solitários....:D niguém ajuda no começo.....Frase de Felix Blayder....Script dado não se olha os Bug's.
Sou um novato mesmo, e estou apanhando bastante kkkkkkk. Mas espero um dia poder dominar um pouco melhor o RGSS, apenas para eu poder me ajudar no RPG Maker mesmo =x kkkkkkk.
Obrigado pelo comentário. :ok:
Oi, eu sou novo aqui... acabei de me registrar.
Só queria saber se tem como deixar esse menu sobreposto as imagens porque ele fica em baixo delas.
Muito bom script.
(Não sei nada de programação em ruby e nem em nd. Só um pouco em C++)
Já agradeço.
Caraca, muito bom cara ! To estudando Ruby, e isso irá ajudar bastante !