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

Ativando Script de Distribuição de Atributos apenas por Switch (VX Ace)

Iniciado por HammerStrike, 27/01/2023 às 23:55

Olá! Estou desde a metade do ano passado voltando ao RPG Maker voltando com um projeto muito velho, por conta disso estou fazendo algumas modificações e etc.

PROBLEMA: Estou querendo usar o script "[JB] Distribuição de atributos" no meu projeto, mas queria saber se tem alguma forma de que ele só ficasse ativo caso um Switch X fosse ativado. Link do script: https://centrorpg.com/index.php?topic=861.0

MOTIVO: No game vai ter o Modo Normal e o Modo Complexo, nessa segunda opção é que esse script ficaria ativo, não quero que ele fique no modo normal, já que o jogo vai tem mais de 30 personagens jogavéis distribuir pontos deixa o jogo MUITO mais lento, queria que fosse uma opção apenas para os doidos da customização ou para fator replay.

Agradecido.
Hammer Strike

Fala HAMMERSTRIKE tudo certo?

Olha, acredito que desativar um script por completo não é possível, mas o que da pra fazer é alterar a função onde ele é chamado, fiz uma alteração aqui, veja se é isso que queria:

#========================================================
# JB{Distribuição de Atributos} - Versão 1.0
#--------------------------------------------------------
# Autor: JohnBolton
# Data : 19/03/2012
#--------------------------------------------------------
# Descrição: Permite o aumento dos status dos personagem
# utilizando pontos de distribuição ganhos ao upar.
#--------------------------------------------------------
# Instruções:
#      Para acessar a tela de distribuição
#         Evento > 3ª Aba > Chamar Script
#         Insira: SceneManager.call(Scene_Distribuct)
#
#      Adicionar pontos a um personagem
#         Evento > 3ª Aba > Chamar Script
#         Insira: $game_actors[id].points += pontos
#
#         Exemplo: $game_actors[1].points += 3
#   No tela de distribuição, utilize as teclas "Q" e "W"
#   para alterar o jogador que receberá os pontos
#========================================================
module JohnBolton92
  module Dist_Points

  #--------------------------------------------------------------------------
  # * Configurações
  #--------------------------------------------------------------------------
      
    #Pontos Iniciais
    Start_points = 10

    #Pontos adquiridos ao upar
    Points_level = 1

    #Atributos adquiridos de HP ao utilizar 1 ponto
    HP_Points = 10

    #Atributos adquiridos de MP ao utilizar 1 ponto
    MP_Points = 7

    #Atributos adquiridos de Ataque ao utilizar 1 ponto
    Atack_Points = 5

    #Atributos adquiridos de Defesa ao utilizar 1 ponto
    Defense_Points = 4

    #Atributos adquiridos de Inteligencia ao utilizar 1 ponto
    Inteligence_Points = 5

    #Atributos adquiridos de Resistência ao utilizar 1 ponto
    Resistence_Points = 6

    #Atributos adquiridos de Agilidade ao utilizar 1 ponto
    Agility_Points = 7

    #Atributos adquiridos de Sorte ao utilizar 1 ponto
    Luck_Points = 8

    #Cabeçalho (Nome do Menu)
    Head_Name = "Distribuição de atributos"

    #Nomes das opções
    HP_Name = "HP"
    MP_Name = "MP"
    Atack_Name = "Ataque"
    Defense_Name = "Defesa"
    Inteligence_Name = "Inteligencia"
    Resistence_Name = "Resistência"
    Agility_Name = "Agilidade"
    Luck_Name = "Sorte"

    #Adicionar a opção de acesso ao Distribuição de atributos no menu?
    Active_in_Menu = true #(Obs: Só ative esta opção se usar o menu padrão)
    Option_Menu_Name = "Atributos" #Nome da opção no menu
    

  #--------------------------------------------------------------------------
  # * Fim das Configurações
  #--------------------------------------------------------------------------
 
    module_function
 
    def setup(actor)
      cond = Array.new(8)
      cond[0] = actor.hp  >= actor.param_max(1) ? false : true
      cond[1] = actor.mp  >= actor.param_max(1) ? false : true
      cond[2] = actor.atk >= actor.param_max(2) ? false : true
      cond[3] = actor.def >= actor.param_max(3) ? false : true
      cond[4] = actor.mat >= actor.param_max(4) ? false : true
      cond[5] = actor.mdf >= actor.param_max(5) ? false : true
      cond[6] = actor.agi >= actor.param_max(6) ? false : true
      cond[7] = actor.luk >= actor.param_max(7) ? false : true
      @cond = cond
    end
 
    def get
      return @cond
    end
 
  end
end

#==============================================================================
# ** Window_DistribuctCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos para a distribuição de atributos
#==============================================================================
class Window_DistribuctCommand < Window_Command
  include JohnBolton92::Dist_Points
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize
    super(300, 47)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    return 244
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    add_main_commands
  end
  #--------------------------------------------------------------------------
  # * Adição dos comandos principais
  #--------------------------------------------------------------------------
  def add_main_commands
    m_actor = JohnBolton92::Dist_Points
    points = $game_system.points_enabled
    add_command(HP_Name,         :hp,     points && m_actor.get[0])
    add_command(MP_Name,         :mp,     points && m_actor.get[1])
    add_command(Atack_Name,      :atack,  points && m_actor.get[2])
    add_command(Defense_Name,    :defense,points && m_actor.get[3])
    add_command(Inteligence_Name,:int,    points && m_actor.get[4])
    add_command(Resistence_Name, :res,    points && m_actor.get[5])
    add_command(Agility_Name,    :agility,points && m_actor.get[6])
    add_command(Luck_Name,       :luck,   points && m_actor.get[7])
  end
end

class Window_DistribuctStatus < Window_Selectable
  
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 47, 300, 369)
    @actor = actor
    refresh
    activate
  end
  #--------------------------------------------------------------------------
  # * Atualização da Window
  #--------------------------------------------------------------------------
  def refresh; contents.clear
    module_actor = JohnBolton92::Dist_Points
    module_actor.setup(@actor)
    draw_block1   (line_height * 0)
    draw_block2   (line_height * 2)
    draw_block3   (line_height * 7)
  end
  #--------------------------------------------------------------------------
  # * Definição de herói selecionado no menu
  #     actor : herói
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 1
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block1(y)
    draw_actor_name(@actor, 4, y)
    draw_actor_class(@actor, 128, y)
    draw_actor_nickname(@actor, 288, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 2
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block2(y)
    draw_actor_face(@actor, 8, y)
    draw_basic_info(136, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 3
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block3(y)
    draw_parameters(32, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho das informações básicas
  #     x : coordenada X
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_basic_info(x, y)
    draw_actor_level(@actor, x, y + line_height * 0)
    draw_actor_icons(@actor, x, y + line_height * 1)
    draw_actor_hp(@actor, x, y + line_height * 2)
    draw_actor_mp(@actor, x, y + line_height * 3)
  end
  #--------------------------------------------------------------------------
  # * Desenho dos parâmetros
  #     x : coordenada X
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_parameters(x, y)
    6.times {|i| draw_actor_param(@actor, x, y + line_height * i, i + 2) }
  end
end

class Scene_Distribuct < Scene_MenuBase
  include JohnBolton92::Dist_Points
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de ajuda.
  #--------------------------------------------------------------------------
  def create_help_window
    @help_window = Window_Help.new(1)
    @help_window.set_text(Head_Name)
    @help_window_points = Window_Help.new(1)
    @help_window_points.set_text("Pontos: " + @actor.points.to_s)
    @help_window_points.x, @help_window_points.y = 300, 366
    @help_window_points.width, @help_window_points.height = 244, 50
    @status_window = Window_DistribuctStatus.new(@actor)
    @window_options = Window_DistribuctCommand.new
    create_command_window_status
    create_command_window_distribucts
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de status.
  #--------------------------------------------------------------------------
  def create_command_window_status
    @status_window.set_handler(:cancel,   method(:return_scene))
    @status_window.set_handler(:pagedown, method(:next_actor))
    @status_window.set_handler(:pageup,   method(:prev_actor))
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de comandos.
  #--------------------------------------------------------------------------
  def create_command_window_distribucts
    @window_options.set_handler(:hp, method(:hp))
    @window_options.set_handler(:mp, method(:mp))
    @window_options.set_handler(:atack, method(:atack))
    @window_options.set_handler(:defense, method(:defense))
    @window_options.set_handler(:int, method(:int))
    @window_options.set_handler(:res, method(:res))
    @window_options.set_handler(:agility, method(:agility))
    @window_options.set_handler(:luck, method(:luck))
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    Graphics.update
    Input.update
    check_points
    update_windows
    refresh_windows
  end
  #--------------------------------------------------------------------------
  # * Atualização das windows
  #--------------------------------------------------------------------------
  def update_windows
    @status_window.update
    @window_options.update
    @help_window.update
    @help_window_points.set_text("Pontos: " + @actor.points.to_s)
  end
  #--------------------------------------------------------------------------
  # * Checagem da quantidade pontos
  #--------------------------------------------------------------------------
  def check_points
    if @actor.points > 0
      $game_system.points_enabled = true
    else
      $game_system.points_enabled = false
    end
  end
  #--------------------------------------------------------------------------
  # * Atualização algumas windows
  #--------------------------------------------------------------------------
  def refresh_windows
    @window_options.refresh
  end
  #--------------------------------------------------------------------------
  # * Processo da mudança de herói
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @status_window.activate
  end
  #--------------------------------------------------------------------------
  # * Processa a distribuição
  #     param_id : Parametro a aumentar
  #--------------------------------------------------------------------------
  def distribuct(param_id)
    @actor.add_param(param_id, @atribucts)
  end
  #--------------------------------------------------------------------------
  # * Aumento de HP
  #--------------------------------------------------------------------------
  def hp
    @atribucts = HP_Points
    distribuct(0)
    @select = :hp
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de MP
  #--------------------------------------------------------------------------
  def mp
    @atribucts = MP_Points
    distribuct(1)
    @select = :mp
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Demage
  #--------------------------------------------------------------------------
  def atack
    @atribucts = Atack_Points
    distribuct(2)
    @select = :atack
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Defesa
  #--------------------------------------------------------------------------
  def defense
    @atribucts = Defense_Points
    distribuct(3)
    @select = :defense
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Inteligência
  #--------------------------------------------------------------------------
  def int
    @atribucts = Inteligence_Points
    distribuct(4)
    @select = :int
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Resistência
  #--------------------------------------------------------------------------
  def res
    @atribucts = Resistence_Points
    distribuct(5)
    @select = :res
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Agildade
  #--------------------------------------------------------------------------
  def agility
    @atribucts = Agility_Points
    distribuct(6)
    @select = :agility
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Sorte
  #--------------------------------------------------------------------------
  def luck
    @atribucts = Luck_Points
    distribuct(7)
    @select = :luck
    take_off
  end
  #--------------------------------------------------------------------------
  # * Retira os pontos gastos
  #--------------------------------------------------------------------------
  def take_off
    @actor.points -= 1
    terminate
    create_help_window
    @window_options.select_symbol(@select)
  end
  #--------------------------------------------------------------------------
  # * Finalização do processo
  #--------------------------------------------------------------------------
  def terminate
    @status_window.dispose
    @window_options.dispose
    @help_window_points.dispose
    @help_window.dispose
  end
end
#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos do menu.
#==============================================================================
class Window_MenuCommand < Window_Command
    
  if JohnBolton92::Dist_Points::Active_in_Menu
    #--------------------------------------------------------------------------
    # * Modificação da adição do comando de formação
    #--------------------------------------------------------------------------
    alias dist_bolton_make_command_list add_formation_command
    def add_formation_command
      add_dist_points
      dist_bolton_make_command_list
    end
    #--------------------------------------------------------------------------
    # * Inclue a opção de Distribuição do Menu
    #--------------------------------------------------------------------------
    def add_dist_points
      if $game_switches[100] == true #MUDE AQUI PARA A SWITCH QUE DESEJA USAR
      add_command(JohnBolton92::Dist_Points::Option_Menu_Name, :dist)
    else
      
      end
    end
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de menu.
#==============================================================================
class Scene_Menu < Scene_MenuBase
  include JohnBolton92::Dist_Points
    #--------------------------------------------------------------------------
    # * Criação da janela de comando
    #--------------------------------------------------------------------------
    def create_command_window
      if $game_switches[100] == true #MUDE AQUI PARA A SWITCH QUE DESEJA USAR
      @command_window = Window_MenuCommand.new
      @command_window.set_handler(:item,      method(:command_item))
      @command_window.set_handler(:skill,     method(:command_personal))
      @command_window.set_handler(:equip,     method(:command_personal))
      @command_window.set_handler(:status,    method(:command_personal))
      @command_window.set_handler(:formation, method(:command_formation))
      @command_window.set_handler(:dist,      method(:dist))
      @command_window.set_handler(:save,      method(:command_save))
      @command_window.set_handler(:game_end,  method(:command_game_end))
      @command_window.set_handler(:cancel,    method(:return_scene))
    else
      @command_window = Window_MenuCommand.new
      @command_window.set_handler(:item,      method(:command_item))
      @command_window.set_handler(:skill,     method(:command_personal))
      @command_window.set_handler(:equip,     method(:command_personal))
      @command_window.set_handler(:status,    method(:command_personal))
      @command_window.set_handler(:formation, method(:command_formation))
      @command_window.set_handler(:save,      method(:command_save))
      @command_window.set_handler(:game_end,  method(:command_game_end))
      @command_window.set_handler(:cancel,    method(:return_scene))
      end
  end
  #--------------------------------------------------------------------------
  # * Chama o script
  #--------------------------------------------------------------------------
  def dist
    SceneManager.call(Scene_Distribuct)
  end
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Esta classe gerencia os heróis. Ela é utilizada internamente pela classe
# Game_Actors ($game_actors). A instância desta classe é referenciada
# pela classe Game_Party ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  include JohnBolton92::Dist_Points
  attr_accessor :points
  def points
    return @points
  end
  #--------------------------------------------------------------------------
  # * Modificação da inicialização do processo
  #--------------------------------------------------------------------------
  alias bolton_distri_initialize initialize unless $@
  def initialize(*args)
    bolton_distri_initialize(*args)
    case Start_points
    when String,Symbol
      @points = 0
      msgbox("Defina corretamente os valores dos atributos")
    when Integer
      @points = Start_points
    when Float
      @points = Start_points.to_i
    end
  end
  alias bolton_level_up level_up
  def level_up
    @points += Points_level
    bolton_level_up
  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
  attr_accessor :points_enabled
  #--------------------------------------------------------------------------
  # * Modificação da inicialização do processo
  #--------------------------------------------------------------------------
  alias bolton92_distribuct_initialize initialize
  def initialize
    @points_enabled = nil
    bolton92_distribuct_initialize
  end
end


Nas linhas 426 e 446 eu adicionei uma condição de switch, utilizei a switch 100 de exemplo, é só alterar la para qual deseja usar, lembrando que o comando SceneManager.call(Scene_Distribuct) que chama a função, ainda pode ser utilizado independente se a switch estiver ligada ou não, espero que tenha lhe ajudado.

Abraços do Lyca.

Fazer mapas é uma arte, faça como se fosse o seu último.




Citação de: Lycanimus online 02/02/2023 às 22:32
Fala HAMMERSTRIKE tudo certo?

Olha, acredito que desativar um script por completo não é possível, mas o que da pra fazer é alterar a função onde ele é chamado, fiz uma alteração aqui, veja se é isso que queria:

#========================================================
# JB{Distribuição de Atributos} - Versão 1.0
#--------------------------------------------------------
# Autor: JohnBolton
# Data : 19/03/2012
#--------------------------------------------------------
# Descrição: Permite o aumento dos status dos personagem
# utilizando pontos de distribuição ganhos ao upar.
#--------------------------------------------------------
# Instruções:
#      Para acessar a tela de distribuição
#         Evento > 3ª Aba > Chamar Script
#         Insira: SceneManager.call(Scene_Distribuct)
#
#      Adicionar pontos a um personagem
#         Evento > 3ª Aba > Chamar Script
#         Insira: $game_actors[id].points += pontos
#
#         Exemplo: $game_actors[1].points += 3
#   No tela de distribuição, utilize as teclas "Q" e "W"
#   para alterar o jogador que receberá os pontos
#========================================================
module JohnBolton92
  module Dist_Points

  #--------------------------------------------------------------------------
  # * Configurações
  #--------------------------------------------------------------------------
      
    #Pontos Iniciais
    Start_points = 10

    #Pontos adquiridos ao upar
    Points_level = 1

    #Atributos adquiridos de HP ao utilizar 1 ponto
    HP_Points = 10

    #Atributos adquiridos de MP ao utilizar 1 ponto
    MP_Points = 7

    #Atributos adquiridos de Ataque ao utilizar 1 ponto
    Atack_Points = 5

    #Atributos adquiridos de Defesa ao utilizar 1 ponto
    Defense_Points = 4

    #Atributos adquiridos de Inteligencia ao utilizar 1 ponto
    Inteligence_Points = 5

    #Atributos adquiridos de Resistência ao utilizar 1 ponto
    Resistence_Points = 6

    #Atributos adquiridos de Agilidade ao utilizar 1 ponto
    Agility_Points = 7

    #Atributos adquiridos de Sorte ao utilizar 1 ponto
    Luck_Points = 8

    #Cabeçalho (Nome do Menu)
    Head_Name = "Distribuição de atributos"

    #Nomes das opções
    HP_Name = "HP"
    MP_Name = "MP"
    Atack_Name = "Ataque"
    Defense_Name = "Defesa"
    Inteligence_Name = "Inteligencia"
    Resistence_Name = "Resistência"
    Agility_Name = "Agilidade"
    Luck_Name = "Sorte"

    #Adicionar a opção de acesso ao Distribuição de atributos no menu?
    Active_in_Menu = true #(Obs: Só ative esta opção se usar o menu padrão)
    Option_Menu_Name = "Atributos" #Nome da opção no menu
    

  #--------------------------------------------------------------------------
  # * Fim das Configurações
  #--------------------------------------------------------------------------
 
    module_function
 
    def setup(actor)
      cond = Array.new(8)
      cond[0] = actor.hp  >= actor.param_max(1) ? false : true
      cond[1] = actor.mp  >= actor.param_max(1) ? false : true
      cond[2] = actor.atk >= actor.param_max(2) ? false : true
      cond[3] = actor.def >= actor.param_max(3) ? false : true
      cond[4] = actor.mat >= actor.param_max(4) ? false : true
      cond[5] = actor.mdf >= actor.param_max(5) ? false : true
      cond[6] = actor.agi >= actor.param_max(6) ? false : true
      cond[7] = actor.luk >= actor.param_max(7) ? false : true
      @cond = cond
    end
 
    def get
      return @cond
    end
 
  end
end

#==============================================================================
# ** Window_DistribuctCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos para a distribuição de atributos
#==============================================================================
class Window_DistribuctCommand < Window_Command
  include JohnBolton92::Dist_Points
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize
    super(300, 47)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    return 244
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    add_main_commands
  end
  #--------------------------------------------------------------------------
  # * Adição dos comandos principais
  #--------------------------------------------------------------------------
  def add_main_commands
    m_actor = JohnBolton92::Dist_Points
    points = $game_system.points_enabled
    add_command(HP_Name,         :hp,     points && m_actor.get[0])
    add_command(MP_Name,         :mp,     points && m_actor.get[1])
    add_command(Atack_Name,      :atack,  points && m_actor.get[2])
    add_command(Defense_Name,    :defense,points && m_actor.get[3])
    add_command(Inteligence_Name,:int,    points && m_actor.get[4])
    add_command(Resistence_Name, :res,    points && m_actor.get[5])
    add_command(Agility_Name,    :agility,points && m_actor.get[6])
    add_command(Luck_Name,       :luck,   points && m_actor.get[7])
  end
end

class Window_DistribuctStatus < Window_Selectable
  
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 47, 300, 369)
    @actor = actor
    refresh
    activate
  end
  #--------------------------------------------------------------------------
  # * Atualização da Window
  #--------------------------------------------------------------------------
  def refresh; contents.clear
    module_actor = JohnBolton92::Dist_Points
    module_actor.setup(@actor)
    draw_block1   (line_height * 0)
    draw_block2   (line_height * 2)
    draw_block3   (line_height * 7)
  end
  #--------------------------------------------------------------------------
  # * Definição de herói selecionado no menu
  #     actor : herói
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 1
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block1(y)
    draw_actor_name(@actor, 4, y)
    draw_actor_class(@actor, 128, y)
    draw_actor_nickname(@actor, 288, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 2
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block2(y)
    draw_actor_face(@actor, 8, y)
    draw_basic_info(136, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho do bloco 3
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_block3(y)
    draw_parameters(32, y)
  end
  #--------------------------------------------------------------------------
  # * Desenho das informações básicas
  #     x : coordenada X
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_basic_info(x, y)
    draw_actor_level(@actor, x, y + line_height * 0)
    draw_actor_icons(@actor, x, y + line_height * 1)
    draw_actor_hp(@actor, x, y + line_height * 2)
    draw_actor_mp(@actor, x, y + line_height * 3)
  end
  #--------------------------------------------------------------------------
  # * Desenho dos parâmetros
  #     x : coordenada X
  #     y : coordenada Y
  #--------------------------------------------------------------------------
  def draw_parameters(x, y)
    6.times {|i| draw_actor_param(@actor, x, y + line_height * i, i + 2) }
  end
end

class Scene_Distribuct < Scene_MenuBase
  include JohnBolton92::Dist_Points
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de ajuda.
  #--------------------------------------------------------------------------
  def create_help_window
    @help_window = Window_Help.new(1)
    @help_window.set_text(Head_Name)
    @help_window_points = Window_Help.new(1)
    @help_window_points.set_text("Pontos: " + @actor.points.to_s)
    @help_window_points.x, @help_window_points.y = 300, 366
    @help_window_points.width, @help_window_points.height = 244, 50
    @status_window = Window_DistribuctStatus.new(@actor)
    @window_options = Window_DistribuctCommand.new
    create_command_window_status
    create_command_window_distribucts
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de status.
  #--------------------------------------------------------------------------
  def create_command_window_status
    @status_window.set_handler(:cancel,   method(:return_scene))
    @status_window.set_handler(:pagedown, method(:next_actor))
    @status_window.set_handler(:pageup,   method(:prev_actor))
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de comandos.
  #--------------------------------------------------------------------------
  def create_command_window_distribucts
    @window_options.set_handler(:hp, method(:hp))
    @window_options.set_handler(:mp, method(:mp))
    @window_options.set_handler(:atack, method(:atack))
    @window_options.set_handler(:defense, method(:defense))
    @window_options.set_handler(:int, method(:int))
    @window_options.set_handler(:res, method(:res))
    @window_options.set_handler(:agility, method(:agility))
    @window_options.set_handler(:luck, method(:luck))
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    Graphics.update
    Input.update
    check_points
    update_windows
    refresh_windows
  end
  #--------------------------------------------------------------------------
  # * Atualização das windows
  #--------------------------------------------------------------------------
  def update_windows
    @status_window.update
    @window_options.update
    @help_window.update
    @help_window_points.set_text("Pontos: " + @actor.points.to_s)
  end
  #--------------------------------------------------------------------------
  # * Checagem da quantidade pontos
  #--------------------------------------------------------------------------
  def check_points
    if @actor.points > 0
      $game_system.points_enabled = true
    else
      $game_system.points_enabled = false
    end
  end
  #--------------------------------------------------------------------------
  # * Atualização algumas windows
  #--------------------------------------------------------------------------
  def refresh_windows
    @window_options.refresh
  end
  #--------------------------------------------------------------------------
  # * Processo da mudança de herói
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @status_window.activate
  end
  #--------------------------------------------------------------------------
  # * Processa a distribuição
  #     param_id : Parametro a aumentar
  #--------------------------------------------------------------------------
  def distribuct(param_id)
    @actor.add_param(param_id, @atribucts)
  end
  #--------------------------------------------------------------------------
  # * Aumento de HP
  #--------------------------------------------------------------------------
  def hp
    @atribucts = HP_Points
    distribuct(0)
    @select = :hp
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de MP
  #--------------------------------------------------------------------------
  def mp
    @atribucts = MP_Points
    distribuct(1)
    @select = :mp
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Demage
  #--------------------------------------------------------------------------
  def atack
    @atribucts = Atack_Points
    distribuct(2)
    @select = :atack
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Defesa
  #--------------------------------------------------------------------------
  def defense
    @atribucts = Defense_Points
    distribuct(3)
    @select = :defense
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Inteligência
  #--------------------------------------------------------------------------
  def int
    @atribucts = Inteligence_Points
    distribuct(4)
    @select = :int
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Resistência
  #--------------------------------------------------------------------------
  def res
    @atribucts = Resistence_Points
    distribuct(5)
    @select = :res
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Agildade
  #--------------------------------------------------------------------------
  def agility
    @atribucts = Agility_Points
    distribuct(6)
    @select = :agility
    take_off
  end
  #--------------------------------------------------------------------------
  # * Aumento de Sorte
  #--------------------------------------------------------------------------
  def luck
    @atribucts = Luck_Points
    distribuct(7)
    @select = :luck
    take_off
  end
  #--------------------------------------------------------------------------
  # * Retira os pontos gastos
  #--------------------------------------------------------------------------
  def take_off
    @actor.points -= 1
    terminate
    create_help_window
    @window_options.select_symbol(@select)
  end
  #--------------------------------------------------------------------------
  # * Finalização do processo
  #--------------------------------------------------------------------------
  def terminate
    @status_window.dispose
    @window_options.dispose
    @help_window_points.dispose
    @help_window.dispose
  end
end
#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos do menu.
#==============================================================================
class Window_MenuCommand < Window_Command
    
  if JohnBolton92::Dist_Points::Active_in_Menu
    #--------------------------------------------------------------------------
    # * Modificação da adição do comando de formação
    #--------------------------------------------------------------------------
    alias dist_bolton_make_command_list add_formation_command
    def add_formation_command
      add_dist_points
      dist_bolton_make_command_list
    end
    #--------------------------------------------------------------------------
    # * Inclue a opção de Distribuição do Menu
    #--------------------------------------------------------------------------
    def add_dist_points
      if $game_switches[100] == true #MUDE AQUI PARA A SWITCH QUE DESEJA USAR
      add_command(JohnBolton92::Dist_Points::Option_Menu_Name, :dist)
    else
      
      end
    end
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de menu.
#==============================================================================
class Scene_Menu < Scene_MenuBase
  include JohnBolton92::Dist_Points
    #--------------------------------------------------------------------------
    # * Criação da janela de comando
    #--------------------------------------------------------------------------
    def create_command_window
      if $game_switches[100] == true #MUDE AQUI PARA A SWITCH QUE DESEJA USAR
      @command_window = Window_MenuCommand.new
      @command_window.set_handler(:item,      method(:command_item))
      @command_window.set_handler(:skill,     method(:command_personal))
      @command_window.set_handler(:equip,     method(:command_personal))
      @command_window.set_handler(:status,    method(:command_personal))
      @command_window.set_handler(:formation, method(:command_formation))
      @command_window.set_handler(:dist,      method(:dist))
      @command_window.set_handler(:save,      method(:command_save))
      @command_window.set_handler(:game_end,  method(:command_game_end))
      @command_window.set_handler(:cancel,    method(:return_scene))
    else
      @command_window = Window_MenuCommand.new
      @command_window.set_handler(:item,      method(:command_item))
      @command_window.set_handler(:skill,     method(:command_personal))
      @command_window.set_handler(:equip,     method(:command_personal))
      @command_window.set_handler(:status,    method(:command_personal))
      @command_window.set_handler(:formation, method(:command_formation))
      @command_window.set_handler(:save,      method(:command_save))
      @command_window.set_handler(:game_end,  method(:command_game_end))
      @command_window.set_handler(:cancel,    method(:return_scene))
      end
  end
  #--------------------------------------------------------------------------
  # * Chama o script
  #--------------------------------------------------------------------------
  def dist
    SceneManager.call(Scene_Distribuct)
  end
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Esta classe gerencia os heróis. Ela é utilizada internamente pela classe
# Game_Actors ($game_actors). A instância desta classe é referenciada
# pela classe Game_Party ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  include JohnBolton92::Dist_Points
  attr_accessor :points
  def points
    return @points
  end
  #--------------------------------------------------------------------------
  # * Modificação da inicialização do processo
  #--------------------------------------------------------------------------
  alias bolton_distri_initialize initialize unless $@
  def initialize(*args)
    bolton_distri_initialize(*args)
    case Start_points
    when String,Symbol
      @points = 0
      msgbox("Defina corretamente os valores dos atributos")
    when Integer
      @points = Start_points
    when Float
      @points = Start_points.to_i
    end
  end
  alias bolton_level_up level_up
  def level_up
    @points += Points_level
    bolton_level_up
  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
  attr_accessor :points_enabled
  #--------------------------------------------------------------------------
  # * Modificação da inicialização do processo
  #--------------------------------------------------------------------------
  alias bolton92_distribuct_initialize initialize
  def initialize
    @points_enabled = nil
    bolton92_distribuct_initialize
  end
end


Nas linhas 426 e 446 eu adicionei uma condição de switch, utilizei a switch 100 de exemplo, é só alterar la para qual deseja usar, lembrando que o comando SceneManager.call(Scene_Distribuct) que chama a função, ainda pode ser utilizado independente se a switch estiver ligada ou não, espero que tenha lhe ajudado.

Abraços do Lyca.

Olá! Era EXATAMENTE isso, muito obrigado pela ajuda. Até a próxima.
Hammer Strike