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
Script
Créditos e agradecimentos
Masked
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:
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