MOG Scene End Screen Sakura V2.2

29 de julho de 2014

MOG Scene End Screen Sakura é um script de Scene End com movimentos e layout em pictures, desenvolvido pelo Moghunter, para ser usado no RPG Maker XP.

O script adiciona a opção Load, apresenta a quantidade de encontros de batalha, Saves, Load, inimigos e personagens abatidos e permite criar condições especiais de eventos, pois o valor fica registrado nas variáveis globais de eventos.

Exemplos:

  1. Derrote 100 inimigos e ganhe a espada do dragão.
  2. Termine o jogo sem salvar que você verá o final verdadeiro.
  3. Chegue na parte final do jogo sem deixar nenhum personagem morrer que o personagem secreto entrará no seu grupo.

Isso pode ser útil para criar algo tipo medalhas ou achievements também, como vemos em vários jogos mais contemporâneos, se o desenvolvedor tiver um pouco de criatividade.

Screenshot

MOG Scene End Screen Sakura

Instalação

Adicione o código abaixo acima do Main. Baixe e dê uma olhada na Demo para ter mais noção!

#_______________________________________________________________________________
# MOG_Scene_End V2.2           
#_______________________________________________________________________________
# By Moghunter   
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# Scene_End com movimento e layout em pictures.
# Apresenta a quantidade de batalhas, saves, loads, etc...
# Permite criar condições especiais de eventos.
#_______________________________________________________________________________
module MOG
  #Transition Time.
  ENDTT = 10  
  #Transition Type(Name).
  ENDTN = "004-Blind04"
  #----------------------------------------------------------------
  #Definição do texto da apresentação dos parâmetros.
  ECOUNTER_TEXT = "Número de Batalhas."
  SAVE_COUNT_TEXT = "Número de Saves."
  LOAD_COUNT_TEXT = "Número de Loads."
  ENEMY_DEFEATED_TEXT = "Inimigos derrotados."
  ACTOR_DEFEATED_TEXT = "Personagens abatidos."
  #----------------------------------------------------------------
  # Definição da variável que registrará o valor dos parâmetros.
  #(Essa função serve para criar condições especiais no jogo. 
  # Exemplo -> Mate 100 inimigos que você receberá a espada do
  # dragão.)
  #----------------------------------------------------------------
  # Quantidade de batalhas feitas.
  ENCOUNTER_COUNT = 26
  # Valor de vezes que o jogo foi Salvo(Save).
  SAVE_COUNT = 27
  # Valor de vezes que o jogo foi carregado(Load).
  LOAD_COUNT = 28
  # Quantidade de inimigos mortos.
  ENEMY_DEFEATED = 29
  # Valor de vezes que o personagens foi abatido.
  ACTOR_DEFEATED = 30
  #----------------------------------------------------------------
end

#===============================================================================
# Game_System
#===============================================================================
class Game_System
  include MOG
  attr_accessor :encounter_count   
  attr_accessor :enemy_defeated
  attr_accessor :actor_defeated
  attr_accessor :load_count
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------  
  alias mog21_initialize initialize  
  def initialize  
    @encounter_count = 0  
    @enemy_defeated = 0   
    @actor_defeated = 0
    @load_count = 0
    mog21_initialize    
  end
#--------------------------------------------------------------------------
# Ecounter_Count
#--------------------------------------------------------------------------  
  def encounter_count
    $game_variables[ENCOUNTER_COUNT] = @encounter_count  
    return @encounter_count
  end
#--------------------------------------------------------------------------
# Enemy_Defeated
#--------------------------------------------------------------------------
  def enemy_defeated
    $game_variables[ENEMY_DEFEATED] = @enemy_defeated 
    return @enemy_defeated  
  end
#--------------------------------------------------------------------------
# Actor_Defeated
#--------------------------------------------------------------------------
  def actor_defeated
    $game_variables[ACTOR_DEFEATED] = @enemy_defeated   
    return @actor_defeated  
  end
#--------------------------------------------------------------------------
# Load_Count
#--------------------------------------------------------------------------
  def load_count
    $game_variables[LOAD_COUNT] = @load_count
    return @load_count
  end
#--------------------------------------------------------------------------
# Save_Count
#--------------------------------------------------------------------------
  def save_count
    $game_variables[SAVE_COUNT] = @save_count
    return @save_count
  end
end

#===============================================================================
# Scene_Load
#===============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# Read_Save_Data
#--------------------------------------------------------------------------  
  alias mog21_read_save_data read_save_data
  def read_save_data(file)
    mog21_read_save_data(file)
    $game_system.load_count += 1
  end  
end    

#===============================================================================
# Sprite_Battler
#===============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# Collapse
#--------------------------------------------------------------------------    
  def collapse
    super
    if @battler.is_a?(Game_Enemy)
      $game_system.enemy_defeated += 1
    else
      $game_system.actor_defeated += 1  
    end
  end
end

#===============================================================================
# Scene_Battle
#===============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------      
alias mog21_main main
  def main
    $game_system.encounter_count += 1
    mog21_main  
  end 
end

#===============================================================================
# Window_Data
#===============================================================================
class Window_Data < Window_Base
  include MOG
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------        
  def initialize
    super(0, 100, 640, 280)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.name = "Georgia"
    refresh
  end
#--------------------------------------------------------------------------
# Refresh
#--------------------------------------------------------------------------      
  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, 300, 64,ECOUNTER_TEXT + "    ->    " + $game_system.encounter_count.to_s,0)  
    self.contents.draw_text(70, 50, 300, 64,SAVE_COUNT_TEXT + "    ->    " + $game_system.save_count.to_s ,0)  
    self.contents.draw_text(140, 100, 300, 64,LOAD_COUNT_TEXT + "    ->    " + $game_system.load_count.to_s,0)  
    self.contents.draw_text(210, 150, 300, 64,ENEMY_DEFEATED_TEXT + "    ->    " + $game_system.enemy_defeated.to_s,0)  
    self.contents.draw_text(280, 200, 300, 64,ACTOR_DEFEATED_TEXT + "    ->    " + $game_system.actor_defeated.to_s,0)  
  end  
end

#===============================================================================
# Scene_End
#===============================================================================
class Scene_End
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------        
  def main
    s1 = "" 
    s2 = "" 
    s3 = ""
    @command_window = Window_Command.new(100, [s1, s2, s3])
    @command_window.visible = false
    @window_data = Window_Data.new
    @endback = Plane.new
    @endback.bitmap = RPG::Cache.picture("MN_BK")
    @endback.z = 10
    @endback.opacity = 255
    @endlayout = Plane.new
    @endlayout.bitmap = RPG::Cache.picture("End_Layout")
    @endlayout.z = 20
    @endcom1 = Sprite.new
    @endcom1.bitmap  = RPG::Cache.picture("End_Com01")
    @endcom1.z = 30
    @endcom1.x = 20
    @endcom1.y = 340
    @endcom1.zoom_x = 1
    @endcom2 = Sprite.new
    @endcom2.bitmap  = RPG::Cache.picture("End_Com02")
    @endcom2.z = 30
    @endcom2.x = 100
    @endcom2.y = 395
    @endcom3 = Sprite.new
    @endcom3.bitmap  = RPG::Cache.picture("End_Com03")
    @endcom3.z = 30
    @endcom3.x = 190
    @endcom3.y = 440
    $ld = 0
    @zc = 1
    Graphics.transition(MOG::ENDTT, "Graphics/Transitions/" + MOG::ENDTN)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @window_data.dispose
    @endback.dispose
    @endcom1.dispose
    @endcom2.dispose
    @endcom3.dispose
    @endlayout.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------      
  def update
    @zc += 0.01
    if @zc > 1.3
       @zc = 1
    end   
    @endback.ox += 1
    @endback.oy += 1
    @command_window.update
    case @command_window.index
      when 0
        @endcom1.zoom_x = @zc  
        @endcom2.zoom_x = 1 
        @endcom3.zoom_x = 1  
      when 1
        @endcom1.zoom_x = 1  
        @endcom2.zoom_x = @zc  
        @endcom3.zoom_x = 1    
      when 2  
        @endcom1.zoom_x = 1 
        @endcom2.zoom_x = 1 
        @endcom3.zoom_x = @zc   
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(5)
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0 
        command_to_title
      when 1 
        command_load
      when 2  
        command_shutdown
      end
      return
    end 
  end
#--------------------------------------------------------------------------
# Command_to_title
#--------------------------------------------------------------------------        
  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
#--------------------------------------------------------------------------
# Command_Load
#--------------------------------------------------------------------------        
  def command_load
    $ld = 1  
    $scene = Scene_Load.new  
  end 
#--------------------------------------------------------------------------
# Command_Shutdown
#--------------------------------------------------------------------------        
  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 
end

#===============================================================================
# Scene_Load
#===============================================================================
class Scene_Load  
#--------------------------------------------------------------------------
# On_Cancel
#--------------------------------------------------------------------------          
  def on_cancel
   $game_system.se_play($data_system.cancel_se)
    if $ld == 1
      $scene = Scene_End.new  
    else  
      $scene = Scene_Title.new
    end 
  end 
end  


$mog_rgss_Scene_End = true
autor, site, canal ou publisher Moghunter tamanho 266KB licençaGrátis sistemas operacionais compativeisWindows 98/98SE/Me/2000/XP/Vista/7 download link DOWNLOAD

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Clique aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!