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

Dificulty System

Iniciado por Raizen, 16/12/2012 às 17:30

[box class=titlebg]
Difficulty System
[/box]
[box class=errorbox2]

[box class=titlebg]Introdução:[/box]
[box class=errorbox2]
Insere no jogo um sistema de dificuldade, onde a escolha de um certo nível resultará em uma alteração nos atributos dos inimigos, tornando-os mais fortes ou mais fracos. Uma das quatro opções só será liberada caso o jogador já tenha terminado o jogo pelo menos uma vez.
[/box]


[box class=titlebg]Características:[/box]
[box class=errorbox2] - Plug 'n' Play
- Facilidade no uso
- Configurável
- Compatível com SAS
[/box]

[box class=titlebg]Screenshots:[/box]
[box class=errorbox2]
Com o jogo não zerado (Versão 1.0)
Spoiler
[close]
Com o jogo zerado (Versão 1.0)
Spoiler
[close]
Com o jogo zerado (Versão 1.2)
Spoiler
[close]
[/box]

[box class=titlebg]Como usar:[/box]
[box class=errorbox2]Coloque o script acima do Main e configure as opções no módulo feito para isto.
Para determinar se o jogo já foi zerado ou não, basta ativar a Switch indicada no módulo de configurações.
[/box]

[box class=titlebg]Script:[/box]
[box class=errorbox2]
#=========================================================
# JB - Difficulty System
# Versão: 1.2
# Autor: JohnBolton
#---------------------------------------------------------
# Insere no jogo um sistema de dificuldade, onde a
# escolha de um certo nível resultará em uma alteração
# nos atributos dos inimigos, tornando-os mais fortes
# ou mais fracos. Uma das quatro opções só será liberada
# para o jogador se ele já tiver terminado o jogo pelo
# menos uma vez.
#==========================================================

#==========================================================
# * Change_Log
#----------------------------------------------------------
#
#  Versão 1.1
# 
#    - Modificação em GOLD e EXP adicionados
#    - Correção nos tipos de dados
#
#  Versão 1.2
#
#    - Adicionado um cabeçalho
#    - Correção no número de arquivos zerados
#
#==========================================================

module JohnBolton
  module Difficulty_System
    
    #=============================================================#
    #    **                 Configurações                  **     #
    #=============================================================#
    
# Opções que aparecerão na janela de seleção de dificuldade :
Options = [ 'Fácil', 'Normal', 'Difícil', 'Insano' ]

# Atributos dos monstros multiplicados respectivamente por :
JB_Some = [    0.5   ,    1   ,     2    ,    3    ]  

# Switch que dirá se o jogo já foi zerado ou não :
JB_SWITCH = 2

#Texto que aparecerá no cabeçalho :
Text = "              Selecione a dificuldade"

    #=============================================================#
    #     ----------     Fim das Configurações  -----------       #
    #=============================================================#

  end
end



#==============================================================================
# ** Window_DifficultyCommand
#------------------------------------------------------------------------------
#  Esta janela para seleção das opções Novo Jogo/Continuar na tela de título.
#==============================================================================

class Window_DifficultyCommand < Window_Command
  include JohnBolton::Difficulty_System
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    @insane = false
    for i in 1..DataManager.savefile_max
      filename = i <= 9 ? "Save0#{i}.rvdata2" : "Save#{i}.rvdata2"
      filename = '#01010AE.bull' if @insane
      if File.file?(filename)
        file = File.open(filename, "rb")
        Marshal.load(file)
        extract_save_contents(Marshal.load(file))
        @insane = $game_switches[JB_SWITCH]
      end
    end
    super(0, 0)
    update_placement
    self.openness = 0
    self.active, self.visible = false, false
    open
  end
  #--------------------------------------------------------------------------
  # * Atualização da posição da janela
  #--------------------------------------------------------------------------
  def update_placement
    self.x = (Graphics.width - width) / 2
    self.y = (Graphics.height * 1.6 - height) / 2
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Options[0], :easy)
    add_command(Options[1], :normal)
    add_command(Options[2], :hard)
    add_command(Options[3], :insane, @insane)
  end
  #--------------------------------------------------------------------------
  # * Extrair conteúdo salvo
  #--------------------------------------------------------------------------
  def extract_save_contents(contents)
    $game_system        = contents[:system]
    $game_switches      = contents[:switches]
  end
end


#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de título.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  alias johnBolton_Difficulty_start start
  def start
    johnBolton_Difficulty_start
    create_command_difficulty
    create_window_help
    close_difficulty_command
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  alias johnBolton_Difficulty_update update
  def update
    johnBolton_Difficulty_update
    if Input.trigger?(:B) && !@difficulty_window.close?
      Sound.play_cancel
      close_difficulty_command
      @command_window.open
      @command_window.active, @command_window.visible = true, true
    end
  end
  
  def create_window_help
    @window_help = Window_Help.new(1)
    @window_help.set_text(JohnBolton::Difficulty_System::Text)
    @window_help.visible = false
    @window_help.opacity = 150
  end
  #--------------------------------------------------------------------------
  # * Comando [Novo Jogo]
  #--------------------------------------------------------------------------
  def command_new_game
    open_difficulty_command
  end
  #--------------------------------------------------------------------------
  # * Abre a janela de Dificuldade
  #--------------------------------------------------------------------------
  def open_difficulty_command
    @difficulty_window.visible, @difficulty_window.active = true, true
    @difficulty_window.open
    @window_help.visible = true
    @window_help.open
    close_command_window
  end
  #--------------------------------------------------------------------------
  # * Fechamento da janela de Dificuldade
  #--------------------------------------------------------------------------
  def close_difficulty_command
    @difficulty_window.close
    @window_help.close
    update until @difficulty_window.close?
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de Dificuldade
  #--------------------------------------------------------------------------
  def create_command_difficulty
    @difficulty_window = Window_DifficultyCommand.new
    @difficulty_window.set_handler(:easy, method(:command_easy))
    @difficulty_window.set_handler(:normal, method(:command_normal))
    @difficulty_window.set_handler(:hard, method(:command_hard))
    @difficulty_window.set_handler(:insane, method(:command_insane))
  end
  #--------------------------------------------------------------------------
  # * Comando [Fácil]
  #--------------------------------------------------------------------------
  def command_easy
    new_game
    $game_system.vitamin_r(JohnBolton::Difficulty_System::JB_Some[0])
  end
  #--------------------------------------------------------------------------
  # * Comando [Normal]
  #--------------------------------------------------------------------------
  def command_normal
    new_game
    $game_system.vitamin_r(JohnBolton::Difficulty_System::JB_Some[1])
  end
  #--------------------------------------------------------------------------
  # * Comando [Díficil]
  #--------------------------------------------------------------------------
  def command_hard
    new_game
    $game_system.vitamin_r(JohnBolton::Difficulty_System::JB_Some[2])
  end
  #--------------------------------------------------------------------------
  # * Comando [Insano]
  #--------------------------------------------------------------------------
  def command_insane
    new_game
    $game_system.vitamin_r(JohnBolton::Difficulty_System::JB_Some[3])
  end
  #--------------------------------------------------------------------------
  # * Inicia um novo jogo
  #--------------------------------------------------------------------------
  def new_game
    DataManager.setup_new_game
    close_command_window
    @difficulty_window.close
    fadeout_all
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  Esta classe gerencia os dados relacionados ao sistema. Também gerencia
# veículos, BGM, etc.
# A instância desta classe é referenciada por $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Variável pública
  #--------------------------------------------------------------------------
  attr_accessor :difficulty
  #--------------------------------------------------------------------------
  # * Definição do nível de dificuldade
  #--------------------------------------------------------------------------
  def vitamin_r(chevelle)
    @difficulty = chevelle
  end
end


#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  Esta classe gerencia os inimigos. Ela é utilizada internamente pela 
# classe Game_Troop ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * [Alias] Aquisição do valor base do parâmetro
  #--------------------------------------------------------------------------
  alias jb_difsys_param_base param_base
  def param_base(*args)
    (jb_difsys_param_base(*args) * $game_system.difficulty).to_i
  end
  #--------------------------------------------------------------------------
  # * [Alias] Aquisição de experiência
  #--------------------------------------------------------------------------
  alias jb_difsys_exp exp
  def exp
    (jb_difsys_exp * $game_system.difficulty).to_i
  end
  #--------------------------------------------------------------------------
  # * [Alias] Aquisição de dinheiro
  #--------------------------------------------------------------------------
  alias jb_difsys_gold gold
  def gold
    (jb_difsys_gold * $game_system.difficulty).to_i
  end
end


Mais scripts do mesmo autor?
R -> Aqui

[/box]

[box class=titlebg]Créditos:[/box]
[box class=errorbox2]JohnBolton - Criação do script
[/box][/box]