Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP][VX][VXA] Exportar e Importar Script Facilmente

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP][VX][VXA] Exportar e Importar Script Facilmente

Mensaje por AsFzKakarotto el 2018-03-25, 00:53

Bueno, este es un script algo fuera de lo común y puede que nos sirva como una pequeña herramienta:

Autor: KK20
traducción: Yo XD...

Introducción:

Alguna vez has querido exportar tus scripts pertenecientes del RPG en archivos de formato .rb, para posteriormente hacer los
cambios con un editor de textos como es el bloc de notas de windows, y luego importar ellos hacia otros proyectos o el mismo?, con este script podrás hacerlo muy fácil.

Instrucciones:

Añada este script al limite de su lista para asegurarse que inicie primero. Cambie la variable de configuración que se encuentra en
la linea 60 de el script como usted lo desee. Ejecute su proyecto y una ventana le aparecerá señalando el reporte y cerrará el proyecto.

Si exporta, usted va a crear una carpeta que contiene los archivos.rb de sus script. Un nuevo archivo llamado "!script_order.Csv" tendrá el orden de los script en el caso de importarlos a su proyecto, usted puede añadir nuevos archivos .rb para importar a su proyecto pero deberá incluir su nombre en el archivo "!script_order.Csv" para que se pueda entender en que orden colocarlo sin necesidad de abrir el maker.

Script:
Código:
=begin
================================================================================
Easy Script Importer-Exporter                                     Versión 3.0
por: KK20                                                         Jun-31-2018
traducción: AsFzkakarotto
--------------------------------------------------------------------------------

Introducción:

  Alguna vez has querido exportar tus scripts pertenecientes del RPG
  en archivos de formato .rb, para posteriormente hacer los cambios
  con un editor de textos como es el bloc de notas de windows, y
  luego importar ellos hacia otros proyectos o el mismo?, con este
  script podras hacerlo muy facil.

Instrucciones:

  Añada este script al limite de su lista para asegurarse que inicie
  primero. Cambie la variable de configuración que se encuentra en
  la linea 60 de el script como usted lo desee.
  Ejecute su proyecto y una ventana le aparecerá señalando el reporte
  y cerrará el proyecto.

  Si exporta, usted va a crear una carpeta que contiene los
  archivos.rb de sus script. Un nuevo archivo llamado
  "!script_order.Csv" tendrá el orden de los script en el caso de
  importarlos a su proyecto, usted puede añadir nuevos archivos .rb
  para importar a su proyecto pero deberá incluir su nombre en el
  archivo "!script_order.Csv" para que se pueda entender en que orden
  colocarlo sin necesidad de abrir el maker.

[Compatibilidad]
  Este script ya tiene métodos de asegurar que correrá apropiadamente
  sobre cualquier versión de RPG. Este script no dependen ni hace los
  cambios para los Scripts existentes, así que es 100 % compatible.

[Créditos]
  KK20 - hizo este script
  GubiD - mencionó su importar / exportación de script de VXA
  FiXato y Yasuyuki de HIRATA - exportador de script mencionado para VX/VXA
  ForeverZer0 - indico y uso Win32API lo hace leyendo archivo .ini

================================================================================
=end

#******************************************************************************
# EMPIECE LA CONFIGURACIÓN
#******************************************************************************
#------------------------------------------------------------------------------
# Ponga el modo del script.
# Exportar los scripts, importar los scripts, o hacer completamente nada.
#
#       Valores aceptados:
#       0 = Desactivar (finge como si este script no existe)
#       1 = Exportar
#       2 = Importar
#       3 = Revisar Juego (Importa script de la carpeta a la Partida de Prueba
#                          no reemplaza o crea archivos'Scripts.r_data' )
#------------------------------------------------------------------------------
IMPORT_EXPORT_MODE = 0
#------------------------------------------------------------------------------
# Nombre de la carpeta en dónde son importados y exportados los scripts.
#------------------------------------------------------------------------------
FOLDER_NAME = "Scripts"
#------------------------------------------------------------------------------
# Donde exportar, si el NOMBRE DE LA CARPETA ya existe, creará otra carpeta del
# mismo nombre junto con un documento de identidad. Este se asegurará para que
# usted no sobreescriba los cambios que usted a hecho a sus scripts por
# casualidad. Si es false, borrará todos los archivos de la carpeta antes de
# exportar. Inservible para el modo importar.
#------------------------------------------------------------------------------
MAKE_EXPORT_COPIES = true
#------------------------------------------------------------------------------
# Crea un duplicado de los archivos scripts.r_data para asegurar que usted
# no estropeé su proyecto. El duplicado será puesto en la carpeta de datos
# (Data) como un archivo llamado "Copia - Scripts". Inútil para modo exportar.
#------------------------------------------------------------------------------
CREATE_SCRIPTS_COPY = true
#------------------------------------------------------------------------------
# Si es true, Ignora crear scripts que no tienen clave entre ellos.
# Cambiar esto a false es útil si le gusta (a usted) categorizar su lista de
# script para distinguirlos más facilmente. Inservible para el modo importar.
#------------------------------------------------------------------------------
SKIP_EMPTY = false
#------------------------------------------------------------------------------
# Si es true, convierte cualquier ejemplos de carácteres de tabulador (t de \)
# en dos espacios. Esto es sumamente provechoso si se escribe la clave de un
# editor externo y cambia de lugar. En donde Rpg maker los carácteres de
# tabulador son tratados como dos espacios en un instante.
#------------------------------------------------------------------------------
TABS_TO_SPACES = true
#******************************************************************************
# FIN DE LA CONFIGURACIÓN
#******************************************************************************
#------------------------------------------------------------------------------
if IMPORT_EXPORT_MODE != 0

RGSS = (RUBY_VERSION == "1.9.2" ? 3 : defined?(Hangup) ? 1 : 2)

if RGSS == 3
  def p(*args)
    msgbox_p *args
  end
end

# From GubiD's script
INVALID_CHAR_REPLACE = {
  '\\'=> '&',
  '/' => '&',
  ':' => ';',
  '*' => '°',
  '?' => '!',
  '<' => '«',
  '>' => '»',
  '|' => '¦',
  '"'=> '\''
}

begin
  # Get project's script file
  ini = Win32API.new('kernel32', 'GetPrivateProfileString','PPPPLP', 'L')
  scripts_filename = "\0" * 256
  ini.call('Game', 'Scripts', '', scripts_filename, 256, '.\\Game.ini')
  scripts_filename.delete!("\0")
  
  counter = 0
  # Exporting?
  if IMPORT_EXPORT_MODE == 1
    folder_name = FOLDER_NAME
    if File.exists?(FOLDER_NAME)
      # Keep a history of exports? Or only one folder?
      if MAKE_EXPORT_COPIES
        i = 1
        i += 1 while File.exists?("#{FOLDER_NAME}_#{i}")
        Dir.mkdir("#{FOLDER_NAME}_#{i}")
        folder_name = "#{FOLDER_NAME}_#{i}"
      else
        Dir['Scripts/*'].each { |file| File.delete(file) }
      end
    else
      Dir.mkdir(FOLDER_NAME) unless File.exists?(FOLDER_NAME)
    end
    # Create script order list
    script_order = File.open("#{folder_name}/!script_order.csv", 'w')
    script_names = {}
    # Load the raw script data
    scripts = load_data(scripts_filename)
    scripts.each_index do |index|
      next if index == 0
      script = scripts[index]
      id, name, code = script
      next if id.nil?
      # Replace invalid filename characters with valid characters
      name = name.split('').map{ |chr| INVALID_CHAR_REPLACE[chr] || chr }.join
      # Convert script data to readable format
      code = Zlib::Inflate.inflate(code)
      next if SKIP_EMPTY && code.size == 0
      code.gsub!(/\t/) {'  '} if TABS_TO_SPACES
      # If this script name has been used more than once
      if script_names.key?(name)
        script_names[name] += 1
        name = "#{name}~@#{script_names[name]}"
      # Make sure blank script names have a filename
      elsif name == ''
        script_names[''] = 1
        name = '~@1'
      else
        script_names[name] = 0
      end
      # Output script to file
      script_order.write("#{name}\n")
      File.open("#{folder_name}/#{name}.rb", 'wb') do |f|
        f.write code
      end
      counter += 1
    end
    script_order.close
    p "#{counter} archivos exportados con éxito a la carpeta '#{folder_name}'"
    exit
  end
  # If importing or play-testing
  if IMPORT_EXPORT_MODE >= 2
    counter = 1
    # If strictly importing, we want to replace the data directly in the scripts
    # data file. Otherwise, just override the scripts global variable.
    if IMPORT_EXPORT_MODE == 2
      scripts_file = File.open(scripts_filename, 'rb')
      import_obj = Marshal.load(scripts_file)
    else
      import_obj = $RGSS_SCRIPTS
    end
    # If strictly importing, create a copy of the scripts file in case something
    # goes wrong with the import.
    if IMPORT_EXPORT_MODE == 2 && CREATE_SCRIPTS_COPY
      base_name = File.basename(scripts_filename)
      dir_name = File.dirname(scripts_filename)
      copy = File.open(dir_name + "/Copia - " + base_name, 'wb')
      Marshal.dump(import_obj, copy)
      copy.close
    end
    # Load each script file
    File.open("Scripts/!script_order.csv", 'r') do |list|
      list = list.read.split("\n")
      list.each do |filename|
        script_name = filename.gsub(/(.*?)(?:~@\d+)?$/) {$1}
        code = File.open("Scripts/#{filename}.rb", 'r') { |f| f.read }
        code.gsub!(/\t/) {'  '} if TABS_TO_SPACES
        # If strictly importing, compress script. Otherwise, keep script in
        # readable format.
        if IMPORT_EXPORT_MODE == 2
          z = Zlib::Deflate.new(6)
          data = z.deflate(code, Zlib::FINISH)
        else
          data = code
        end
        # If strictly importing, replaces entries in the scripts file data with
        # the newly-compressed imported scripts. Otherwise, replace entries in
        # $RGSS_SCRIPTS with imported scripts.
        import_obj[counter] = [counter] if import_obj[counter].nil?
        import_obj[counter][1] = script_name
        import_obj[counter][IMPORT_EXPORT_MODE] = data
        counter += 1
      end
    end
    # Dump imported file data to a new Scripts file and close the program.
    if IMPORT_EXPORT_MODE == 2
      data = File.open(scripts_filename, 'wb')
      Marshal.dump(import_obj[0, counter], data)
      data.close
      p "#{counter-1} archivos importados con éxito. Por favor cierre su rpg maker " +
      "sin guardar. Reabra su proyecto para conseguir los scripts importados."
      exit
    end
  end
end

end # if IMPORT_EXPORT_MODE != 0

Más Instrucciones:
En el script...

Demostración, aquí:
http://share.cherrytree.at/showfile-31067/easy_script_importer_exporter.rar
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 324

Gracias : 70

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.