O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Colocar "Check point", "Save automático", "Player Respawn" e "Forçar Load"

Iniciado por Naemegashi Yokohuro, 07/09/2013 às 07:42

07/09/2013 às 07:42 Última edição: 07/09/2013 às 07:55 por Naemegashi Yokohuro
Oi gente, eu fuçando nos Scripts eu pensei como fazer o player voltar ao jogo depois de morrer?
Ai percebi que ele teria que voltar pra um ponto de save, ai comecei me assusta   :O_O: mas fuçando por um bom tempo, modificando boa parte do script consegui chegar em algum lugar.

Como funciona:
Bem, foi na verdade só modificações ou seja terá opções meio limitadas ou não. Vamos lá, primeiro as considerações.

Considerações
1º Para não ficar estranho é sempre bom ter o jogo salvo para que o jogador não reapareça no mesmo lugar que morreu.
2º Recomendo apenas o save automático para jogos em que o jogador não pode voltar a traz, como em jogos de Pets e outros.
3º O sistema de Respawn não foi 100% testado, já o testei em trocas de mapa e etc, qualquer erro me avisem.

Save Automático
Vamos lá.
Primeiro: Crie um evento e Processo Paralelo e use a opção Chamar Script e chame essa linha.
DataManager.save_game(0)

Observação. Troque o 0 pelo id do save, 0 é o primeiro

Check Point
Vendo o de cima é fácil intender.
Primeiro, crie um evento com a Condição de inicio Tocar Evento, Depois basta chamar essa mesma linha de Script.
DataManager.save_game(0)


Player Respawn
Sim, esse que até é muito utilizado em diversos jogos, é bem simples ele, na realidade ele não é bem um tutorial, pois não vai dar pra ensinar como fazer ele, nem eu lembro oque eu editei, mas aqui esta o script.
Substitua o  Scene_Gameover por este.

#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de game over.
#==============================================================================

class Scene_Gameover < Scene_Base
  #--------------------------------------------------------------------------
  # * Processamento principal
  #--------------------------------------------------------------------------
  def start
    super
    play_gameover_music
    fadeout_frozen_graphics
  end
  #--------------------------------------------------------------------------
  # * Finalização do processo
  #--------------------------------------------------------------------------
  
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    super
    goto_title
  end
  #--------------------------------------------------------------------------
  # * Execução da transição
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(fadein_speed)
  end
  #--------------------------------------------------------------------------
  # * Execução da música de game over
  #--------------------------------------------------------------------------
  def play_gameover_music
    RPG::BGM.stop
    RPG::BGS.stop
    $data_system.gameover_me.play
  end
  #--------------------------------------------------------------------------
  # * Execução do efeito de fade out e congelamento da tela
  #--------------------------------------------------------------------------
  def fadeout_frozen_graphics
    Graphics.transition(fadeout_speed)
    Graphics.freeze
  end
  def fadeout_speed
    return 1
  end
  #--------------------------------------------------------------------------
  # * Aquisção da velocidade de fade in
  #--------------------------------------------------------------------------
  def fadein_speed
    return 1
  end
  #--------------------------------------------------------------------------
  # * Transição para a tela de título
  #--------------------------------------------------------------------------
  def goto_title
    fadeout_all
    SceneManager.goto(Scene_Map)
    DataManager.load_game(0)
  end
end


Forçar Load
Como eu disse, são varias opções, inclusive se for usar apenas 1 save, pode fazer o jogador ir direto pra ele na tela de titulo.
Primeiro: Abra o editor de Scripts, depois vá em Scene_Title em seguida na linha 120, apague o SceneManager.goto(Scene_Load) e cole isso:
DataManager.load_game(0)
    SceneManager.goto(Scene_Map)

Observação: Troque o 0 pelo id do save.
Gostou?
Se você gostou, comente não custa nada  :-P
Observação: Não precisa me dar créditos se for utilizar.

Belo tutorial. É uma boa para fazer jogos no estilo aventura, ou plataforma. Também acho que seria o jeito mais interessante de se fazer num jogo de terror. Além do mais dá para aplicar em certos puzzles para evitar aquela trapaça básica de salvar, tentar, errar e dar load. Parabéns!

Viva a lenda!



Citação de: VincentVII online 07/09/2013 às 08:52
Belo tutorial. É uma boa para fazer jogos no estilo aventura, ou plataforma. Também acho que seria o jeito mais interessante de se fazer num jogo de terror. Além do mais dá para aplicar em certos puzzles para evitar aquela trapaça básica de salvar, tentar, errar e dar load. Parabéns!
Obrigado, tive essa ideia depois de tentar fazer um Tamagochi e falhar  :T.T:

Realmente muito interessante e original, pequeno e bem explicado !
Na verdade eu não tinha pensado que isso era tão fácil ate.