Suporte no desenvolvimento de jogos


    MBS - Quebrador de limites do database

    Blast
    Blast
    Administrador
    Administrador

    Medalhas : MBS - Quebrador de limites do database 94JxvMBS - Quebrador de limites do database ZgLkiRU
    Mensagens : 5007
    Créditos : 1109
    Cash : 0

    MBS - Quebrador de limites do database Empty MBS - Quebrador de limites do database

    Mensagem por Blast em Ter Maio 22, 2018 1:07 pm

    Características
    O script altera os arquivos da pasta Data de forma a permitir a criação de mais de [s]8000[/s] 999 heróis, habilidades, itens, animações...

    Screens
    Spoiler:
    MBS - Quebrador de limites do database BHyW4kt

    Script
    Código:
    #==============================================================================
    # MBS - Quebrador de limites do database
    #------------------------------------------------------------------------------
    # por Masked
    #==============================================================================
    module MBS
      module LimitBreaker
    #==============================================================================
    # Configurações
    #==============================================================================
     
        #--------------------------------------------------------------------------
        # Caso queira ativar o script, deixe como true, se não, mude para false
        #--------------------------------------------------------------------------
        BREAK_LIMITS = true
        
        #--------------------------------------------------------------------------
        # Caso queira criar um backup dos dados na pasta Data/Backup, deixe como
        # true, se não, mude para false
        #--------------------------------------------------------------------------
        BACKUP = true
     
        #--------------------------------------------------------------------------
        # Definição do limite de itens para cada parte do database
        #--------------------------------------------------------------------------
        LIMITS = {
          actors:        999, # Heróis
          classes:       999, # Classes
          skills:        999, # Habilidades
          items:         999, # Itens
          weapons:       999, # Armas
          armors:        999, # Armaduras
          enemies:       999, # Inimigos
          troops:        999, # Grupos de inimigos
          states:        999, # Estados
          animations:    999, # Animações
          tilesets:      999, # Tilesets
          common_events: 999, # Eventos comuns
        }
        
    #==============================================================================
    # Fim das configurações
    #==============================================================================
     
        #------------------------------------------------------------------------
        # Carregamento dos dados do database
        #------------------------------------------------------------------------
        DataManager.load_database
     
    #==============================================================================
    # Funções das janelas
    #==============================================================================
        FindWindow = Win32API.new('user32', 'FindWindow', 'vp', 'i')
        MessageBox = Win32API.new('user32', 'MessageBox', 'ippi', 'v')
        
        #--------------------------------------------------------------------------
        # Transformação do texto em ASCII
        #--------------------------------------------------------------------------
        def self.ascii(txt)
          txt.unpack('U*').pack('C*')
        end
        
        #--------------------------------------------------------------------------
        # * Caixa de aviso
        #--------------------------------------------------------------------------
        def self.warnbox(message)
          MessageBox.call(FindWindow.call($data_system.game_title), ascii(message), $data_system.game_title, 0x2030)
        end
        
        #--------------------------------------------------------------------------
        # * Caixa de aviso
        #--------------------------------------------------------------------------
        def self.infobox(message)
          MessageBox.call(FindWindow.call($data_system.game_title), ascii(message), $data_system.game_title, 0x2040)
        end
        
        #--------------------------------------------------------------------------
        # * Caixa de erro
        #--------------------------------------------------------------------------
        def self.errorbox(message)
          MessageBox.call(FindWindow.call($data_system.game_title), ascii(message), $data_system.game_title, 0x2010)
        end
        
    #==============================================================================
    # Parte funcional
    #==============================================================================
    #------------------------------------------------------------------------------
    # Condição para evitar que todos os dados do jogo sejam salvos a menos que ele
    # esteja sendo usado no modo de teste
    #------------------------------------------------------------------------------
        if $TEST && BREAK_LIMITS
          1.times do      
            #------------------------------------------------------------------------
            # Aviso antes de começar...
            #------------------------------------------------------------------------
            warnbox( 'O script MBS - Quebrador de limites do database está ativado,' +
                    ' se não salvou suas alterações, feche o jogo e salve-as.' )
            
    #==============================================================================
    # Variáveis úteis
    #==============================================================================
            #------------------------------------------------------------------------
            # Associação dos símbolos do LIMITS com as variáveis do banco de dados
            #------------------------------------------------------------------------
            Data = {
              actors:        $data_actors,
              classes:       $data_classes,
              skills:        $data_skills,
              items:         $data_items,
              weapons:       $data_weapons,
              armors:        $data_armors,
              enemies:       $data_enemies,
              troops:        $data_troops,
              states:        $data_states,
              animations:    $data_animations,
              tilesets:      $data_tilesets,
              common_events: $data_common_events,
            }
            
            #------------------------------------------------------------------------
            # Associação dos símbolos do LIMITS com as classes usadas pelas variáveis
            # do banco de dados
            #------------------------------------------------------------------------
            Data_S = {
              actors:        RPG::Actor,
              classes:       RPG::Class,
              skills:        RPG::Skill,
              items:         RPG::Item,
              weapons:       RPG::Weapon,
              armors:        RPG::Armor,
              enemies:       RPG::Enemy,
              troops:        RPG::Troop,
              states:        RPG::State,
              animations:    RPG::Animation,
              tilesets:      RPG::Tileset,
              common_events: RPG::CommonEvent,
            }
            
            #------------------------------------------------------------------------
            # Associação dos símbolos do LIMITS com os arquivos da pasta Data
            #------------------------------------------------------------------------
            Data_F = {
              actors:        'Actors.rvdata2',
              classes:       'Classes.rvdata2',
              skills:        'Skills.rvdata2',
              items:         'Items.rvdata2',
              weapons:       'Weapons.rvdata2',
              armors:        'Armors.rvdata2',
              enemies:       'Enemies.rvdata2',
              troops:        'Troops.rvdata2',
              states:        'States.rvdata2',
              animations:    'Animations.rvdata2',
              tilesets:      'Tilesets.rvdata2',
              common_events: 'CommonEvents.rvdata2',
            }
          
    #==============================================================================
    # Criação do backup
    #==============================================================================
            if BACKUP
              begin
                Dir.mkdir('Data/Backup') unless FileTest.directory?('Data/Backup')
                Data_F.each do |key, filename|
                  save_data(Data[key], 'Data/Backup/' + filename)
                end
              rescue
                errorbox( 'Um erro aconteceu enquanto o backup era salvo, para evitar ' +
                          'perda de dados, o script será encerrado.')
                break
              end
            end
     
    #==============================================================================
    # Ajuste dos itens das arrays do banco de dados
    #==============================================================================
            begin
              LIMITS.each do |key, max|
                max.times do |i|
                  next if Data[key][i+1]
                  Data[key][i+1] = Data_S[key].new
                end
              end
            rescue
              errorbox( 'Um erro aconteceu durante o ajuste dos itens das arrays ' +
                        'do banco de dados, para evitar perda de dados, o script ' +
                        'será encerrado')
              break
            end
    #==============================================================================
    # Salvamento dos dados nos arquivos da pasta Data
    #==============================================================================
            begin
              Data.each do |key, data|
                save_data(data, 'Data/' + Data_F[key])
              end
            rescue
              errorbox( 'Um erro aconteceu durante o salvamento dos dados, para ' +
                        'evitar problemas, o script será encerrado')
              break
            end
     
    #==============================================================================
    # Finalização
    #==============================================================================
            infobox( 'O script terminou as alterações no banco de dados, para que as'  +
                     ' alterações façam efeito, feche o RPG Maker sem salvar e depois' +
                     ' abra-o novamente')
            
            infobox( 'É recomendável desativar o script após usá-lo, para isso, mude' +
                    ' a constante BREAK_LIMITS nas configurações' )
                    
            if BACKUP
              infobox( 'Um backup foi salvo na pasta Data/Backups' )
            end
            
          end
        end
      end
    end

    Créditos e agradecimentos
    Masked


    _________________
    MBS - Quebrador de limites do database AIymW
    Kies
    Kies
    Aldeia Friend
    Aldeia Friend

    Mensagens : 1133
    Créditos : 120
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    MBS - Quebrador de limites do database Left_bar_bleue0/0MBS - Quebrador de limites do database Empty_bar_bleue  (0/0)
    Vida:
    MBS - Quebrador de limites do database Left_bar_bleue30/30MBS - Quebrador de limites do database Empty_bar_bleue  (30/30)

    MBS - Quebrador de limites do database Empty Re: MBS - Quebrador de limites do database

    Mensagem por Kies em Sex Maio 25, 2018 5:51 am

    na época que eu usava o vx ace, nem pensava em fazer isso. pô 255 é muita coisa vei

      Data/hora atual: Qua Out 23, 2019 10:56 am