Pableroski
Novato - Rpg en desarrollo
Versión RPG Maker XP – Essentials v16.2
Más de una vez he querido volver a un momento concreto de la historia. Sea para corregir algún bug, sea para modificarlo, sea para ver cómo reacciona al haber añadido alguna variable nueva. Para lograrlo, hice este pequeño script.
Guarda el valor de las Variables, Interruptores e interruptores Locales (VIL) en un archivo .txt que creará el script.
Cada momento de la historia que quieras guardar tendrá su propio trío de .txt, tal que así:
- LISTA_VIL_V_0 --> Para variables (V)
- LISTA_VIL_I_0 --> Para interruptores no locales (I)
- LISTA_VIL_L_0 --> Para interruptores locales (L)
El número representa el momento de la historia que quieras guardar. Recomiendo apuntarlos en algún lado. Yo tengo 5 momentos guardados:
En la carpeta raíz del Essentials, donde está la carpeta del audio, de los gráficos, PBS, etc… creáis una carpeta que ponga VIL. Ahí el programa irá guardando los archivos que vaya creando el script.
El script consta de cuatro funciones:
-Listar: comprueba si ya existe el archivo donde quieres guardar los datos. Esto es opcional pero en caso de no comprobarlo podrías sobrescribir uno que ya tuvieras, perdiendo los datos de ese momento.
-Exportar: guardar todas las variables e interruptores (locales incluidos) en un .txt
-Importar: según el momento que quieras reproducir, leer un archivo u otro y volcar esa información en tu juego.
-Manual de interruptores locales: Estos me dieron muchos problemas y no encontré un método de recogerlos automáticamente. Así que como no son muchos, decidí introducirlos yo a mano. Lo explicaré luego.
El código es el que sigue. Dejo enlace para descarga (enlace)
Para usarlo únicamente habría que cambiar dos cosas:
-En “Exportar_VIL”, “num_variables”:
-En “tipo=0” --> cambiar 650 por el número de variables totales que tengamos. 650 es el número con el que hice las pruebas.
-En “tipo=1 --> cambiar 153 por el número de interruptores que tengamos (NO LOCALES).
-En “tipo=2” --> cambiar 25 por el número de interruptores locales que tengamos.
(Recomiendo, dentro de vuestro juego, tener un cierto margen de variables e interruptores (no locales) libres. Así os evitaréis tener que estar tocando la función. Ej: uso hasta la variable 67 pero tengo hasta la 75. Pero en cualquier caso siempre poned el número máximo que tengáis, da igual que las estéis usando o no.)
-En MII_Loc hay que añadir manualmente los interruptores locales que quieras importar/exportar. Dejo la plantilla, que es sencilla de rellenar:
En la primera plantilla, “numero” será igual a 0, en la siguiente a 1…
DENTRO DEL JUEGO
Exportar un momento (guardarlo), aconsejo hacerlo así:
Usé una variable auxiliar (636), que no me importara modificar su valor, para comprobar si el archivo donde quiero guardar existe o no. Para ello pido un número y lo guardo en esa variable. Llamo a Listar en un condicional “Listar(pbGet(636),0)”. El primer parámetro es el número que quiero comprobar (Si quiero guardarlos en el archivo LISTA_VIL_V_15, introduciré un 15 en la entrada numérica). El segundo aconsejo dejarlo en 0, aunque funcionaría con 1 y 2 también. Recordad que trabajamos con tríos de archivos .txt, así que si hay uno (por ejemplo el de las variables), presupondré que están los otros 2 para agilizar el evento. Si quisiera más seguridad podría repetir ese condicional con “Listar(pbGet(636),1)” y “Listar(pbGet(636),2)”. Con 1 comprobará si está el archivo de los interruptores (no locales) y con 2 si está el de los interruptores locales.
En mi evento tengo puesto que si existe te pregunte si lo quieres sobrescribir o no. En caso de que no quieras hacerlo, volver a pedir el número. Si eliges sobrescribirlo, se borrarán los valores que tuvieras en ese archivo.
Cuando ya tengas el número del archivo que quieras usar (ej: 15), llamas a “Exportar_VIL(pbGet(636),0)”, “Exportar_VIL(pbGet(636),1)” y “Exportar_VIL(pbGet(636),2)” y se creará LISTA_VIL_V_15.txt, LISTA_VIL_I_15.txt, LISTA_VIL_L_15.txt en tu carpeta VIL
Importar (cargar un momento de la historia):
En mi caso, lo tengo puesto dentro del inicio rápido de “Partida Nueva” si el modo DEBUG está activado. Pero podéis ponerlo en cualquier sitio. Solo vigilad que quien vaya a jugar no pueda acceder a él. El mío está así:
Si quiero importar el momento 3, le doy a la variable que esté usando ese valor (636 en mi caso) y llamo a las funciones:
“Importar_VIL(pbGet(636),0)”, “Importar_VIL(pbGet(636),1)”, “Importar_VIL(pbGet(636),2)”.
NOTA IMPORTANTE: Desconozco el motivo pero el juego os devolverá un error si ponéis las llamadas del script seguidas. Por eso me vi obligado a darle valor a la variable después de cada llamada (siempre el mismo, para que el momento que vayas a importar sea el mismo). No debería dar ese problema pero lo da. Por suerte se puede sortear. Si hacéis esto os va a dar error:
Ya lo que quedaría es elección vuestra. En mi caso como lo tengo puesto cuando accedo desde “Partida Nueva”, aparecería sin pkm así que le añado uno al equipo y me teletransporto donde debería estar en ese momento. Ya depende de cada uno. Recomiendo ponerlo en "Partida Nueva" para no tener problemas en el mapa en el que estés en ese momento. Piensa que vas a modificar variables e interruptores de golpe.
Y para finalizar, como siempre, pegáis el script encima del main.
Eso es todo, espero que a alguien le sirva. Si tenéis alguna duda escribidme y la resolveré.
Fiel a mis principios no exijo créditos. Se agradecería la mención pero no iré detrás vuestra si no lo hacéis.
PD: Un último consejo. Yo de ustedes, a la hora de poner el juego de cara al público, borraría la carpeta VIL, o al menos los archivos. Pero eso ya es elección vuestra.
Más de una vez he querido volver a un momento concreto de la historia. Sea para corregir algún bug, sea para modificarlo, sea para ver cómo reacciona al haber añadido alguna variable nueva. Para lograrlo, hice este pequeño script.
Guarda el valor de las Variables, Interruptores e interruptores Locales (VIL) en un archivo .txt que creará el script.
Cada momento de la historia que quieras guardar tendrá su propio trío de .txt, tal que así:
- LISTA_VIL_V_0 --> Para variables (V)
- LISTA_VIL_I_0 --> Para interruptores no locales (I)
- LISTA_VIL_L_0 --> Para interruptores locales (L)
El número representa el momento de la historia que quieras guardar. Recomiendo apuntarlos en algún lado. Yo tengo 5 momentos guardados:
En la carpeta raíz del Essentials, donde está la carpeta del audio, de los gráficos, PBS, etc… creáis una carpeta que ponga VIL. Ahí el programa irá guardando los archivos que vaya creando el script.
El script consta de cuatro funciones:
-Listar: comprueba si ya existe el archivo donde quieres guardar los datos. Esto es opcional pero en caso de no comprobarlo podrías sobrescribir uno que ya tuvieras, perdiendo los datos de ese momento.
-Exportar: guardar todas las variables e interruptores (locales incluidos) en un .txt
-Importar: según el momento que quieras reproducir, leer un archivo u otro y volcar esa información en tu juego.
-Manual de interruptores locales: Estos me dieron muchos problemas y no encontré un método de recogerlos automáticamente. Así que como no son muchos, decidí introducirlos yo a mano. Lo explicaré luego.
El código es el que sigue. Dejo enlace para descarga (enlace)
Código:
################################################################################
# IMPORTAR/EXPORTAR VIL #
# Creador: Pableroski #
# No necesita dar créditos. Se agradecería pero no obligo a nadie #
# No necesita ninguna variable. #
# En Importar_VIL, modificar num_variables según la cantidad que se tenga. #
# Ej: Si tengo 152 variables, cuando tipo==0, num_variables=152. Si tengo 34 #
# interruptores (no locales), cuando tipo==1, num_variables=34. Si tengo 5 #
# interruptores locales, cuando tipo==2, num_variables=5 #
# La función MII_Loc necesita que la vayamos completando con nuestros #
# interruptores locales. Dejo una plantilla. La primera tendrá "numero=0", #
# la segunda "numero=1"... Abajo está explicado qué poner en cada sitio. #
################################################################################
#Comprobamos si el archivo existe o no
def Listar(numero,tipo)
numero=numero.to_s
iteracion=0
array=[]
maximo=50 #Si superas los 50 .txt, aumentar.
if tipo==0
array_comprobante=['LISTA_VIL_V_' + numero + '.txt']
end
if tipo==1
array_comprobante=['LISTA_VIL_I_' + numero + '.txt']
end
if tipo==2
array_comprobante=['LISTA_VIL_L_' + numero + '.txt']
end
resultado=true #No existe
array= Dir.entries("\VIL")
while (iteracion<maximo && array[iteracion]!=nil)
if array[iteracion]==array_comprobante[0]
resultado=false #Existe
end
iteracion+=1
end
return resultado
end
#Guardamos variables en archivo seleccionado
def Exportar_VIL(numero,tipo)
clase=[]
if tipo==0
num_variables=650 #Num variables que tenemos
clase=['V_']
end
if tipo==1
num_variables=153 #Num interruptores generales
clase=['I_']
end
if tipo==2
num_variables=25 #Num interruptores locales
clase=['L_']
end
numero=numero.to_s
iteracion=1 #Las variables que se pueden comprobar empiezan en 1
File.open('VIL\LISTA_VIL_'+clase[0] + numero +'.txt',"w") do|line| #Abre archivo, recorre con var line
while iteracion <=num_variables #Itera variables mientras escribe.
if tipo==0
line.puts $game_variables[iteracion]
end
if tipo==1
line.puts $game_switches[iteracion]
end
if tipo==2
line.puts $game_self_switches[[MII_Loc(iteracion,1),MII_Loc(iteracion,2),MII_Loc(iteracion,3)]]
end
iteracion +=1
end
end
end
#Copiamos en juego conjunto de variables seleccionadas
def Importar_VIL(numero,tipo)
mapa=0
id=0
interruptor=0
clase=[]
if tipo==0
num_variables=650 #Num variables || #Num interruptores (según 'tipo')
clase=['V_']
end
if tipo==1
num_variables=153 #Num variables || #Num interruptores (según 'tipo')
clase=['I_']
end
if tipo==2
num_variables=25 #Num variables || #Num interruptores (según 'tipo')
clase=['L_']
end
numero=numero.to_s
iteracion=1 #Las variables que se pueden comprobar empiezan en 1
array=[]
copia=0
archivo=File.open('VIL\LISTA_VIL_' + clase[0] + numero + '.txt')
array=archivo.readlines
while iteracion<=num_variables
if tipo==0
copia=array[iteracion-1] #El array cuenta la pos 0
copia=copia.to_i
if iteracion!=12 #Quitar el \n a las variables con texto
$game_variables[iteracion]=copia
else
$game_variables[iteracion]='Rafael'
end
end
##################################################
if tipo==1
if array[iteracion-1]== "false\n"
$game_switches[iteracion]=false
end
if array[iteracion-1]== "true\n"
$game_switches[iteracion]=true
end
end
##################################################
if tipo==2
if array[iteracion-1]== "false\n"
$game_self_switches[[MII_Loc(iteracion,1),MII_Loc(iteracion,2),MII_Loc(iteracion,3)]]=false
end
if array[iteracion-1]== "true\n"
$game_self_switches[[MII_Loc(iteracion,1),MII_Loc(iteracion,2),MII_Loc(iteracion,3)]]=true
end
end
##################################################
iteracion+=1
end
archivo.close
end
################################################################################
def MII_Loc(numero,tipo)
resultado=0
numero-=1
#Plantilla
#Aquí podéis poner el nombre del mapa
if numero==0 #Cada plantilla tiene su número. Empezar en 0, siguiente 1...
if tipo==1
resultado= #Id del mapa
end
if tipo==2
resultado= #Id del evento
end
if tipo==3
resultado="" #Interruptor local a modificar
end #MAYÚSCULA y entre ""
end
#Fin plantilla
end
Para usarlo únicamente habría que cambiar dos cosas:
-En “Exportar_VIL”, “num_variables”:
-En “tipo=0” --> cambiar 650 por el número de variables totales que tengamos. 650 es el número con el que hice las pruebas.
-En “tipo=1 --> cambiar 153 por el número de interruptores que tengamos (NO LOCALES).
-En “tipo=2” --> cambiar 25 por el número de interruptores locales que tengamos.
(Recomiendo, dentro de vuestro juego, tener un cierto margen de variables e interruptores (no locales) libres. Así os evitaréis tener que estar tocando la función. Ej: uso hasta la variable 67 pero tengo hasta la 75. Pero en cualquier caso siempre poned el número máximo que tengáis, da igual que las estéis usando o no.)
-En MII_Loc hay que añadir manualmente los interruptores locales que quieras importar/exportar. Dejo la plantilla, que es sencilla de rellenar:
En la primera plantilla, “numero” será igual a 0, en la siguiente a 1…
DENTRO DEL JUEGO
Exportar un momento (guardarlo), aconsejo hacerlo así:
Usé una variable auxiliar (636), que no me importara modificar su valor, para comprobar si el archivo donde quiero guardar existe o no. Para ello pido un número y lo guardo en esa variable. Llamo a Listar en un condicional “Listar(pbGet(636),0)”. El primer parámetro es el número que quiero comprobar (Si quiero guardarlos en el archivo LISTA_VIL_V_15, introduciré un 15 en la entrada numérica). El segundo aconsejo dejarlo en 0, aunque funcionaría con 1 y 2 también. Recordad que trabajamos con tríos de archivos .txt, así que si hay uno (por ejemplo el de las variables), presupondré que están los otros 2 para agilizar el evento. Si quisiera más seguridad podría repetir ese condicional con “Listar(pbGet(636),1)” y “Listar(pbGet(636),2)”. Con 1 comprobará si está el archivo de los interruptores (no locales) y con 2 si está el de los interruptores locales.
En mi evento tengo puesto que si existe te pregunte si lo quieres sobrescribir o no. En caso de que no quieras hacerlo, volver a pedir el número. Si eliges sobrescribirlo, se borrarán los valores que tuvieras en ese archivo.
Cuando ya tengas el número del archivo que quieras usar (ej: 15), llamas a “Exportar_VIL(pbGet(636),0)”, “Exportar_VIL(pbGet(636),1)” y “Exportar_VIL(pbGet(636),2)” y se creará LISTA_VIL_V_15.txt, LISTA_VIL_I_15.txt, LISTA_VIL_L_15.txt en tu carpeta VIL
Importar (cargar un momento de la historia):
En mi caso, lo tengo puesto dentro del inicio rápido de “Partida Nueva” si el modo DEBUG está activado. Pero podéis ponerlo en cualquier sitio. Solo vigilad que quien vaya a jugar no pueda acceder a él. El mío está así:
Si quiero importar el momento 3, le doy a la variable que esté usando ese valor (636 en mi caso) y llamo a las funciones:
“Importar_VIL(pbGet(636),0)”, “Importar_VIL(pbGet(636),1)”, “Importar_VIL(pbGet(636),2)”.
NOTA IMPORTANTE: Desconozco el motivo pero el juego os devolverá un error si ponéis las llamadas del script seguidas. Por eso me vi obligado a darle valor a la variable después de cada llamada (siempre el mismo, para que el momento que vayas a importar sea el mismo). No debería dar ese problema pero lo da. Por suerte se puede sortear. Si hacéis esto os va a dar error:
Ya lo que quedaría es elección vuestra. En mi caso como lo tengo puesto cuando accedo desde “Partida Nueva”, aparecería sin pkm así que le añado uno al equipo y me teletransporto donde debería estar en ese momento. Ya depende de cada uno. Recomiendo ponerlo en "Partida Nueva" para no tener problemas en el mapa en el que estés en ese momento. Piensa que vas a modificar variables e interruptores de golpe.
Y para finalizar, como siempre, pegáis el script encima del main.
Eso es todo, espero que a alguien le sirva. Si tenéis alguna duda escribidme y la resolveré.
Fiel a mis principios no exijo créditos. Se agradecería la mención pero no iré detrás vuestra si no lo hacéis.
PD: Un último consejo. Yo de ustedes, a la hora de poner el juego de cara al público, borraría la carpeta VIL, o al menos los archivos. Pero eso ya es elección vuestra.
Adjuntos
-
13,4 KB Visitas: 1