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

Sistema de Atributos v1.0 by Torumen

Iniciado por torumen, 31/01/2020 às 04:21

31/01/2020 às 04:21 Última edição: 03/02/2020 às 18:30 por torumen
Mastery System 1.0
um sistema de distribuição de atributos




COMO FUNCIONA?
o mastery system adiciona 1 "ponto de maestria" a cada level, e esse ponto pode ser consumido para aprimora uma area de habilidade do herói.

areas de especialização:

  • força (str)
  • agilidade (agi)
  • inteligencia (int)
  • destreza (dex)
  • vitalidade (vit)

o sistema não altera o ganho padrão por level dos parâmetros do RPGXP, ou seja, no fim o herói possui os pontos por level (nativo do RPGXP) + pontos de cada especialidade.

abaixo da pra ver a função que adiciona os pontos retirada da class Game_MasterySystem


Spoiler
[box2 class=titlebg title= class Game_MasterySystem#master_param]
#------------------------------------------------------------------------------
#  Aprimora um determinado parâmetro
#  index:             parâmentro :str, :agi, :int, :dex, :vit
#------------------------------------------------------------------------------
  def master_param(index)
    if can_add?(index)
        n = @params[index] + 1
        @params[index] = [n, 99].min
        @points -= 1
        
        actor = $game_party.actors[@actor_id]
        case index
        when :str
          actor.str += 3                      #incrementa a força
        when :agi
          actor.agi += 3                      #incrementa a agilidade
        when :int
          actor.int += 3                      #incrementa a inteligencia
          actor.maxsp += 10                   #incrementa o sp maximo
        when :dex
          actor.dex += 3                      #incrementa a defesa
        when :vit
          actor.maxhp += 10                   #incrementa o hp maximo
        end
    end
  end

[/box2]
[close]


resumindo o codigo acima....


Mastery SystemRPG Maker XP
+1 str+3 força
+1 agi+3 agilidade
+1 int+3 inteligencia e +10 maxsp
+1 dex+3 defesa
+1 vit+10 maxhp


A quantidade de pontos de maestria também varia de acordo com o level do personagem. e pra explica isso vo so deixa o codigo aqui
que já da pra entender ( assim espero )


Spoiler
[box2 class=titlebg title=class Game_MasterySystem#update]
  def update
     actor = $game_party.actors[@actor_id]
    # Se o Herói subir de level
    if @last_level < actor.level
      delta = [actor.level - @last_level, 99].min
      # Calcula a quantidade de pontos ganho
      delta.times do 
        if (0...8).include?(@last_level)
          @points += 1 
        elsif (8...18 ).include?(@last_level)
          @points += 2  
        elsif (18...30).include?(@last_level)
          @points += 3 
        elsif (30...43).include?(@last_level)
          @points += 4 
        elsif (43...56).include?(@last_level)
          @points += 5 
        elsif (56...69).include?(@last_level)
          @points += 6 
        elsif (69...80).include?(@last_level)
          @points += 7 
        elsif (80...91).include?(@last_level)
          @points += 8 
        elsif (91...100).include?(@last_level)
          @points += 9 
        end
        @last_level += 1
      end
    end
  end
[/box2]
[close]


AGORA VAMOS AO QUE IMPORTA

COMO UTILIZAR?

basta copia e cola e você ja esta pronto pra uso. abaixo a imagem explica mostra a sequencia de CRTL + C e CTRL + V que você precisa usa, ou simplismente siga a sequencia de codigos abaixo.




classe principal

Spoiler
#==============================================================================
# Game_MasterySystem
#------------------------------------------------------------------------------
#
# Autor: torumen
# Versão: 1.0
#
# Esta classe representa os pontos de especialidade. Bem como 
# definir a lógica de como se é dado esses pontos ao jogador. 
# Esta classe pode ser chamada ultilizando $game_mastery.
#
#==============================================================================


class Game_MasterySystem
  attr_accessor :points
#------------------------------------------------------------------------------
# inicializa o sistema de pontos para um determinado herói
#------------------------------------------------------------------------------
  def initialize(actor_id)
    @actor_id  = actor_id
    @last_level = $game_party.actors[@actor_id].level
    @points = 0
    @params = {}
    # Representa os parametros tradicionais do RPG Maker XP
    @params[:str] = 0
    @params[:agi] = 0
    @params[:int] = 0
    @params[:dex] = 0
    # "Novo" parametro, vitalidade, aumenta o hpmax
    @params[:vit] = 0
  end
  
  def update
    actor = $game_party.actors[@actor_id]
    # Se o Herói subir de level
    if @last_level < actor.level
      delta = [actor.level - @last_level, 99].min
      # Calcula a quantidade de pontos ganho
      delta.times do
        if (0...8).include?(@last_level)
          @points += 1 
        elsif (8...18 ).include?(@last_level)
          @points += 2  
        elsif (18...30).include?(@last_level)
          @points += 3 
        elsif (30...43).include?(@last_level)
          @points += 4 
        elsif (43...56).include?(@last_level)
          @points += 5 
        elsif (56...69).include?(@last_level)
          @points += 6 
        elsif (69...80).include?(@last_level)
          @points += 7 
        elsif (80...91).include?(@last_level)
          @points += 8 
        elsif (91...100).include?(@last_level)
          @points += 9 
        end
        @last_level += 1
      end
    end
  end
#------------------------------------------------------------------------------
#  Pontos de Força Especializada
#------------------------------------------------------------------------------
  def str
    @params[:str]
  end
 
#------------------------------------------------------------------------------
#  Pontos de Agilidade Especializada
#------------------------------------------------------------------------------
  def agi
    @params[:agi]
  end
  
#------------------------------------------------------------------------------
#  Pontos de Inteligência Especializada
#------------------------------------------------------------------------------
  def int
    @params[:int]
  end
  
#------------------------------------------------------------------------------
#  Pontos de Destreza Especializada
#------------------------------------------------------------------------------
  def dex
    @params[:dex]
  end
  
#------------------------------------------------------------------------------
#  Pontos de Vitalidade Especializada
#------------------------------------------------------------------------------
  def vit
    @params[:vit]
  end
  
#------------------------------------------------------------------------------
#  Aprimora um determinado parâmetro
#  index:             parâmentro :str, :agi, :int, :dex, :vit
#------------------------------------------------------------------------------
  def master_param(index)
    
    if can_add?(index)
        n = @params[index] + 1
        @params[index] = [n, 99].min
        @points -= 1
        
        actor = $game_party.actors[@actor_id]
        case index
        when :str
          actor.str += 3
        when :agi
          actor.agi += 3
        when :int
          actor.int += 3
          actor.maxsp += 10
        when :dex
          actor.dex += 3
        when :vit
          actor.maxhp += 10
        end
    end
  end
  
#------------------------------------------------------------------------------
#  Verifica se pode adicionar pontos a um parâmetro
#------------------------------------------------------------------------------
  def can_add?(index)
    if index.is_a?(Integer)
      case index
      when 0 #Força
        index = :str
      when 1 #Agilidade
        index = :agi
      when 2 #Inteligencia
        index = :int
      when 3 #Inteligência
        index = :dex
      when 4 #Vitalidade
        index = :vit
      end
    end
    # se tem pontos para distribuir ou o parâmetro 
    # esta no máximo
    @points > 0 && @params[index] < 99
  end
end
[close]


definição das janelas para o menu ( imagem no inicio desse topico )

Spoiler
#==============================================================================
# Window_MasterPoints
#------------------------------------------------------------------------------
# Janela que exibe os pontos de maestria
#==============================================================================

class Window_MasterPoints < Window_Base
  #------------------------------------------------------------------------------
  # Inicializa a janela
  #------------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # Atualização
  #--------------------------------------------------------------------------
  
  def update
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 64, 32, 'Pontos:')
    if !$game_mastery.nil?
      self.contents.font.color = normal_color
      self.contents.draw_text(64, 0, 32, 32, $game_mastery.points.to_s)
    end
  end
end
[close]

Spoiler
#==============================================================================
# Window_MasterStatus
#------------------------------------------------------------------------------
# Janela que exibe os status de maestria e do herói
#==============================================================================

class Window_MasterStatus < Window_Base
  #----------------------------------------------------------------------------
  # Inicialização
  #----------------------------------------------------------------------------
  def initialize
    super(0, 0, 480, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = $game_party.actors[0]
    update
  end
  
  #----------------------------------------------------------------------------
  # Atualização
  #----------------------------------------------------------------------------
  def update
    self.contents.clear
    # Desenha o conteúdo da janela
    draw_actor_hp(@actor, 32, 172)
    draw_actor_sp(@actor, 32, 204)
    draw_actor_level(@actor, 32, 236)
    for i in 0...7
      draw_actor_parameter(@actor, 224, i * 32, i)
    end
    self.contents.font.color = system_color
    self.contents.draw_text(32, 0, 120, 32, 'STR')
    self.contents.draw_text(32, 32, 120, 32, 'AGI')
    self.contents.draw_text(32, 64, 120, 32, 'INT')
    self.contents.draw_text(32, 96, 120, 32, 'DEX')
    self.contents.draw_text(32, 128, 120, 32, 'VIT')
    self.contents.font.color = normal_color
    self.contents.draw_text(96, 0, 120, 32, $game_mastery.str.to_s)
    self.contents.draw_text(96, 32, 120, 32, $game_mastery.agi.to_s)
    self.contents.draw_text(96, 64, 120, 32, $game_mastery.int.to_s)
    self.contents.draw_text(96, 96, 120, 32, $game_mastery.dex.to_s)
    self.contents.draw_text(96, 128, 120, 32, $game_mastery.vit.to_s)
  end
end
[close]

Spoiler
#==============================================================================
# Window_MasteryCommand
#------------------------------------------------------------------------------
# Esta janela é utilizada para a aprimora os parâmetros do 
# sistema de especialidade
#==============================================================================

class Window_MasteryCommand < Window_Command
  
  #--------------------------------------------------------------------------
  # Inicialização dos Objetos
  #--------------------------------------------------------------------------
  
  def initialize
    super(160, ["Força", "Agilidade", "Inteligência", 
                  "Destreza", "Vitalidade"])
    self.height = 352
  end
  #---------------------------------------------------------------------------
  #  Habilita um Item
  #  index:  indice
  #---------------------------------------------------------------------------
  def enable_item(index)
    draw_item(index, normal_color)
  end
  
  #---------------------------------------------------------------------------
  # Atualiza o Texto de ajuda
  #---------------------------------------------------------------------------
  def update_help
    case self.index
    when 0
      @help_window.set_text("aprimora o poder de ataque fisico.")
    when 1
      @help_window.set_text("aprimora a velociade de ataque e esquiva.")
    when 2
      @help_window.set_text("aprimora o poder magico e aumenta o maxhp.")
    when 3
      @help_window.set_text("aprimora a defesa.")
    when 4
      @help_window.set_text("aumenta o maxhp.")
    end
  end
end
[close]

o menu para o sistema

Spoiler
#==============================================================================
# Scene_Mastery
#------------------------------------------------------------------------------
# Autor: torumen                                           
# Versão: 1.0                                               
#==============================================================================

class Scene_Mastery
  #----------------------------------------------------------------------------
  # Processamento Principal
  #----------------------------------------------------------------------------
  def main
    # cria a janela de comandos
    @command_window = Window_MasteryCommand.new
    @command_window.y = 64
    # cria janela de ajuda
    @help_window = Window_Help.new
    @command_window.help_window = @help_window
    # desabilita os itens do menu
    update_items
    # janela de status de aprimoramento das especialidades
    @master_status_window = Window_MasterStatus.new
    @master_status_window.x = 160
    @master_status_window.y = 64
    # janela de pontos de especialidade
    @master_points_window = Window_MasterPoints.new
    @master_points_window.x = 0
    @master_points_window.y = 416
    # Executar transição
    Graphics.transition
    # loop principal
     loop do
      # Atualizar a tela de jogo
      Graphics.update
      # Atualizar a entrada de informações
      Input.update
      # Atualizar Frame
      update
      # Abortar loop se a tela for alterada
      if $scene != self
        break
      end
    end
    # prepara para tranzição
    Graphics.freeze
    # exibe as janelas
    @help_window.dispose
    @command_window.dispose
    @master_status_window.dispose
    @master_points_window.dispose
  end
  
  #----------------------------------------------------------------------------
  # Atualização
  #----------------------------------------------------------------------------
  
  def update
    @help_window.update
    @command_window.update
    @master_status_window.update
    @master_points_window.update
    if @command_window.active
      update_command
      update_items
      return
    end
  end
  
  def update_command
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      $game_system.se_play($data_system.cancel_se)
      # Alternar para a tela do mapa
      $scene = Scene_Menu.new(3)
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        $game_mastery.master_param(:str)
      when 1
        $game_system.se_play($data_system.decision_se)
        $game_mastery.master_param(:agi)
      when 2
        $game_system.se_play($data_system.decision_se)
        $game_mastery.master_param(:int)
      when 3
        $game_system.se_play($data_system.decision_se)
        $game_mastery.master_param(:dex)
      when 4
        $game_system.se_play($data_system.decision_se)
        $game_mastery.master_param(:vit)
      end
    end
  end
  
  def update_items
    for i in 0...5
      if $game_mastery.points == 0 || !$game_mastery.can_add?(i)
        @command_window.disable_item(i)
      else
        @command_window.enable_item(i)
      end
    end
  end
end
[close]

umas coisas que é preciso....

Spoiler
#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# inicia o sistema de especialidade
#==============================================================================

class Scene_Title
  alias _new_game command_new_game
  def command_new_game
    _new_game
    $game_mastery = Game_MasterySystem.new(0)
  end
end
[close]

Spoiler
#==============================================================================
# Scene_Map
#------------------------------------------------------------------------------
# ajuste da classe original para poder sempre atualiza o sistema
# de especialidades, assim o sistema pode identifica quando o heroi
# passa de nivel
#------------------------------------------------------------------------------

class Scene_Map
  alias _update update
  def update
    $game_mastery.update
    _update
  end
end
[close]

Spoiler
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe processa a Tela de Menu
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # Processamento Principal
  #--------------------------------------------------------------------------
  
  def main
    # Criar janela de comando
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Especialidade"
    s5 = "Status"
    s6 = "Salvar"
    s7 = "Fim de Jogo"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.height += 64
    @command_window.index = @menu_index
    # Se o número de membros do Grupo de Heróis for 0
    if $game_party.actors.size == 0
      # Desabilar as janelas de Item, Habilidades, Equipamento e Status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # Se Salvar for Proibido
    if $game_system.save_disabled
      # Desabilitar Salvar
      @command_window.disable_item(4)
    end
    # Criar janela de Tempo de Jogo
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = @command_window.height
    # Criar janela de Dinheiro
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # Criar janela de Status
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    # Executar transição
    Graphics.transition
    # Loop principal
    loop do
      # Atualizar a tela de jogo
      Graphics.update
      # Atualizar a entrada de informações
      Input.update
      # Atualizar Frame
      update
      # Abortar loop se a tela for alterada
      if $scene != self
        break
      end
    end
    # Preparar para transiçõa
    Graphics.freeze
    # Exibição das janelas
    @command_window.dispose
    @playtime_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  
  #--------------------------------------------------------------------------
  # Atualização do Frame
  #--------------------------------------------------------------------------
  
  def update
    # Atualizar janelas
    @command_window.update
    @playtime_window.update
    @gold_window.update
    @status_window.update
    # Se a janela de comandos estiver ativo: chamar update_command
    if @command_window.active
      update_command
      return
    end
    # Se a janela de Status estiver ativa: call update_status
    if @status_window.active
      update_status
      return
    end
  end
  

  #--------------------------------------------------------------------------
  # Atualização do Frame (Quando a janela de Comandos estiver Ativa)
  #--------------------------------------------------------------------------
  
  def update_command
    # Se o botão B for pressionado
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      $game_system.se_play($data_system.cancel_se)
      # Alternar para a tela do mapa
      $scene = Scene_Map.new
      return
    end
    # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      # Se o comando for outro senão Salvar, Fim de Jogo e o número de Heróis no
      # Grupo for 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Reproduzir SE de erro
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Ramificação por posição do cursor na janela de comandos
      case @command_window.index
      when 0  # Itens
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de Itens
        $scene = Scene_Item.new
      when 1  # Habilidades
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # Equipamentos
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3 # Maestria
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Altera para a tela de Maestria
        $scene = Scene_Mastery.new
      when 4  # Status
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 5  # Salvar
        # Se Salvar for proibido
        if $game_system.save_disabled
          # Reproduzir SE de erro
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de save
        $scene = Scene_Save.new
      when 6  # Fim de Jogo
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de Fim de Jogo
        $scene = Scene_End.new
      end
      return
    end
  end
end
[close]

Spoiler
#==============================================================================
# Scene_Save
#------------------------------------------------------------------------------
# salva os dados do sistema de especialidades ($game_mastery)
#==============================================================================
class Scene_Save
  alias _write_save_data write_save_data
  def write_save_data(file)
    _write_save_data(file)
    Marshal.dump($game_mastery, file)
  end
end
[close]

Spoiler
#==============================================================================
# Scene_Load
#------------------------------------------------------------------------------
# carrega os dados do sistema de especialidades
#==============================================================================

class Scene_Load
  alias _read_save_data read_save_data
  def read_save_data(file)
    _read_save_data(file)
    $game_mastery = Marshal.load(file)
  end
end 
[close]

demo: https://drive.google.com/open?id=1kdU8EpKVqS5cUr3Z_3ZxhQ3fasLBRlbv

OBSERVAÇÕES

Alterei o menu do jogo pra incluir o mastery system. então se ver quantos passos o herói deu é importante...sorry mas eu tirei.



O sistema é simples, então ele funciona apenas com o heroi principal. Claro que da pra se muda isso, quem sabe ate implementa isso pra toda o grupo. mas por enquanto ele é focado mais em 1 heroi apenas. (ele ainda vai roda se estiver em um grupo. porém não vai ser possivel altera os paramentros para os outros personagens do grupo, mas eu sei q vc vai fazer isso)

[box2 class=titlebg title=CREDITOS]
torumen
[/box2]


esse é um script 100% autoral, porém, é uma ideia que todo mundo já teve. eu dei uma olhada aqui no forum e achei um script do JohnBolton laaaa de 2012, porém, n cheguei nem a olha. mas deixo ai de citação.



EXTRA

sempre quis produzir algo pro RPG Maker XP  :rick9:, mas na epoca n sabia nem o que era uma variavel , hoje em dia existem outras engines em alta, VX, ace, MV....mas resolvi fazer esse script pra mostra pra min mesmo onde eu cheguei depois de 10 anos.  :clap: :wow:

nesses 10 anos eu entro e saio de forum maker sem nunca nem sequer posta um comentario. :ded:

então  fica ai meu primeiro script e primeiro topico ever para a comunidade. espero volta em breve com algo novo  :money: :coffee:



05/02/2020 às 14:37 #1 Última edição: 05/02/2020 às 14:42 por Raizen
Boaaaa! Fico bem feliz em ver o pessoal codando por aqui  :XD:

Ainda em especial um script que não é simples de se fazer, distribuição de atributos requer vários conceitos juntos para funcionar.
Bom agora vai aqui meus comentários para dar uma melhorada se quiser escutar. O primeiro é que você não precisa dividir em tantos scripts diferentes, você pode colocar várias classes no mesmo script, apesar não ser um script tão simples, ele não é complexo o suficiente para ter que quebrar ele em tantos scripts. Outro ponto é criar módulos de configuração, assim quem for usar e quiser modificar algo não precise ir diretamente no código e fazer isso. Módulos

Tem alguns métodos no seu código que tem 60+ linhas de código, sempre que está grande assim tente quebrar em outros métodos, por exemplo:

class Scene_Menu
  #--------------------------------------------------------------------------
  # Processamento Principal
  #--------------------------------------------------------------------------
  
  def main
    # Criar janela de comando
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Especialidade"
    s5 = "Status"
    s6 = "Salvar"
    s7 = "Fim de Jogo"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.height += 64
    @command_window.index = @menu_index
    # Se o número de membros do Grupo de Heróis for 0
    if $game_party.actors.size == 0
      # Desabilar as janelas de Item, Habilidades, Equipamento e Status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # Se Salvar for Proibido
    if $game_system.save_disabled
      # Desabilitar Salvar
      @command_window.disable_item(4)
    end
    # Criar janela de Tempo de Jogo
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = @command_window.height
    # Criar janela de Dinheiro
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # Criar janela de Status
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    # Executar transição
    Graphics.transition
    # Loop principal
    loop do
      # Atualizar a tela de jogo
      Graphics.update
      # Atualizar a entrada de informações
      Input.update
      # Atualizar Frame
      update
      # Abortar loop se a tela for alterada
      if $scene != self
        break
      end
    end
    # Preparar para transiçõa
    Graphics.freeze
    # Exibição das janelas
    @command_window.dispose
    @playtime_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end

 
  Aqui no mesmo método você cria a janela de tempo, a janela de gold a janela de status, atualiza tudo e ainda tira tudo da memória, tudo isso em uma única função, isso é bem ruim pra dar manutenção caso você necessite algum dia. Veja um ponto, por causa disso você adiciona vários comentários, mas se você criasse um método do tipo, def create_gold_window, esse comentário nem precisaria existir : # Criar janela de Dinheiro
  Nesse mesmo método você usa loop do, esse tipo de loop eu fortemente não recomendo, você basicamente colocou tudo que tem no loop criado no RGSS dentro desse bloco, isso pode dar incompatibilidade com outros scripts além de não ser visualmente muito bonito, acho que você consegue reescrever isso sem ter que usar o loop do.

Enfins, de resto acho que eu precisaria destrinchar um pouco mais XD, mas ainda sim dou os parabéns porque esse é um script meio complicado de realizar e bem útil também.

05/02/2020 às 14:55 #2 Última edição: 05/02/2020 às 15:03 por torumen
Vlw @Raizen, eu entendi sim o que vc quis dizer, depois q postei o topico e fui olha meu codigo eu ate percebi que dava pra eu ter arracado e colocado em uma funções. 

mas tinha q da seu exemplo logo com meu frankstein da  class scene_map  :T.T:  :XD: :XD: :XD:
essa classe ai foi so copy 'n paste e troquei umas linhas. Mas to levando seu comentario pra outras partes do codigo pra tenta melhora-las.

vou procura usa mais essa ideia de por as coisas em modulos, eu tentei segui um estilo parecido em como estão os scriptes la no maker, separando classes por arquivos. Mas a ideia de por em modolos é mais sustentavel a longo prazo. sem conta q torna a vida das pessoas mais faceis e com menos problemas.

eu vou procura uns exemplos pra estuda, ja q assim boas praticas de uso de modulos, n é meu forte.

sobre o loop do, como dei copy 'n paste, n parei muito pra questiona se seria bom ou ruim, eu so tinha uma certeza, ele funcionaria.

esse codigo foi mais pra executa a ideia, então algumas coisas ficaram meio feia mesmo. mas eu penso em fazer uma v2 dele, limpa algumas coisas, usa modulos como vc aconcelhou, e tbm torna o sistema disponivel pra todo grupo.