OBS: Não vou colocar em spoilers porque eles diminuem o tamanho da caixa de códigos.
Vou levar em consideração que você entenda o básico de programação e de que não ficará perdido se eu for um pouco mais direto:
Precisamos trabalhar em duas classes para fazer tudo funcionar corretamente. Primeiro vamos ter em mente quais são essas classes que iremos utilizar. Se a ideia é adicionar a opção no menu principal, teremos que trabalhar com a janela de comandos do menu principal e na própria cena do menu principal. Respectivamente estas são:
Scene_Menu e
Window_MenuCommand.
Vamos então começar o trabalho alterando e incrementando a classe da janela de comandos do menu (
Window_MenuCommand) para criamos o comando dentro dela.
Criaremos então um código limpo onde iniciaremos primeiramente dentro da classe
Window_MenuCommand adicionando um
alias para incrementar(sem modificar o que já existe) o método
make_command_list. Dentro desse método, chamaremos um novo método onde iremos criar a opção dentro da janela.
class Window_MenuCommand < Window_Command
alias new_command make_command_list
def make_command_list
new_command
add_checkpoint_command
end
endAgora, criaremos o comando:
class Window_MenuCommand < Window_Command
alias new_command make_command_list
def make_command_list
new_command
add_checkpoint_command
end
def add_checkpoint_command
add_command("Carregar", :checkpoint)
end
endExplicação rápida:
add_command("nome", :symbol, condition)
#"nome" = Nome do comando no menu
#:symbol = Simbolo que usaremos pra identificador o comando futuramente
#condition = não é obrigatório, mas usá-se caso deseje adicionar alguma condição para que o comando seja ativável ou não.A parte na classe da janela está pronta. Agora iremos trabalhar com a classe da cena do menu. Dentro dela, adicionaremos um
alias no método
create_command_window. Neste método, associaremos o comando que criamos na janela com um método que criaremos dentro dessa classe (cena) e nele iremos finalmente criar a ação que desejamos que o comando realize.
class Scene_Menu < Scene_MenuBase
alias new_command create_command_window
def create_command_window
new_command
@command_window.set_handler(:checkpoint, method(:command_checkpoint))
end
endExplicação rápida:
@command_window.set_handler(:symbol, method(:method))
#:symbol = O mesmo de antes, lembra? É com ele que iremos associar o comando da janela com o método a seguir
#:method = O método onde realizaremos a ação que ocorrerá quando o comando for ativadoVamos então terminar tudo criando o último método, que já foi referenciado pelo nome na etapa anterior.
class Scene_Menu < Scene_MenuBase
alias new_command create_command_window
def create_command_window
new_command
@command_window.set_handler(:checkpoint, method(:command_checkpoint))
end
def command_checkpoint
#adicione a ação que você deseja
end
end
Você mencionou que gostaria de chamar o game over, mas te pergunto, esse sistema de checkpoint não cria um save? Se criar, não seria mais fácil em vez de chamar o game over, chamar um load do save?
Mas enfim, eis aqui o resultado final seguindo o seu pedido do comando chamar a cena de game over:
class Window_MenuCommand < Window_Command
alias new_command make_command_list
def make_command_list
new_command
add_checkpoint_command
end
def add_checkpoint_command
add_command("Carregar", :checkpoint)
end
end
class Scene_Menu < Scene_MenuBase
alias new_command create_command_window
def create_command_window
new_command
@command_window.set_handler(:checkpoint, method(:command_checkpoint))
end
def command_checkpoint
SceneManager.call(Scene_Gameover)
end
endTalvez o código sirva de exemplo para você fazer o que achar melhor com o comando.
Qualquer dúvida basta dizer.
