Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP][Herramienta de Enginer] Interpreter EX

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Wecoc el 2017-02-05, 07:19

Últimamente por la comunidad se ha hablado bastante, medio en broma, de algo así como una guerra entre enginers y scripters.
Pues bien, para que haya paz hoy os traigo un script que será una buena herramienta para enginers.
Es compatible con todo, no causa lag, va encima de main y pese a ser un script complejo estructuralmente su uso es bastante fácil si se siguen las instrucciones.

Descripción:

Éste script permite obtener comandos de evento en formato texto.

Básicamente obtiene todos los comandos de los eventos que quieras y te los guarda en el archivo interpreter.rtf dentro de la carpeta de tu proyecto, para que luego con ello puedas hacer lo que quieras. El texto del documento es exactamente el que se ve en el maker. Además se genera el documento que le digas nada más empezar el proyecto en modo Debug, y te abrirá en otra ventana el documento generado, por lo que es muy cómodo.

A parte de obtener todos los comandos de evento hay otras opciones, mirad las instrucciones del script porque hay mucho contenido ahí. Por ejemplo se pueden obtener solo los textos, con formato tipo \c[1] o bien sin formato. También se pueden obtener todos los textos de la base de datos incluyendo los nombres de las variables e interruptores.

Utilidad:

- Compartir engines en el foro puede ser complicado, pero obteniéndolos en formato texto te permite ponerlos copiando y pegando tal como se hace con los scripts.
- Para GDs, la distribución de RTF para comprobar códigos de engines es mucho menos pesada que compartir demos cada vez.
- Hacer capturas de pantalla de engines largos suele ser problemático; con un documento hay mucho más espacio disponible para hacerlas.
- Para usuarios con la versión inglesa del RPG maker XP, ésto les permite ver y compartir directamente todos los comandos tal y como se ven en español.
- Extraer solo los textos de los eventos y la base de datos permite hacer un chequeo rápido de la ortografía del juego.

Script:

Como es largo, lo pongo en una descarga. Ponedlo encima de main, en la posición que queráis respecto a los otros scripts.

Descarga: Interpreter EX 1.0.txt
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 646

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Ledai el 2017-02-05, 12:35

Ohhhhhh, Super!!
Una herramienta fabulosa, en serio!
Me quedan dos preguntas al respecto:
Esto te permite exportar en modo texto los enguines, ¿pero no te permite importarlos al programa verdad?

¿No habrá un modo de hacer que el resultado apareciera en modo script? (Para ver el modo de estar hecho el enguine como si fuera un script (Para aprendizaje más bien))

Por lo demás, me parece una herramienta práctica para compartir nuestros trabajos!!!! Por mi esa tal guerra está más que zanjada XDD
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 5209

Gracias : 215

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Wecoc el 2017-02-05, 15:14

Respondo a tus dudas:

Esto te permite exportar en modo texto los enguines, ¿pero no te permite importarlos al programa verdad?

No, no se puede importar de nuevo porque no todos los parámetros aparecen en la lista (por ejemplo en Elecciones no aparece la elección que se elige por defecto, y hay muchos casos más). A parte de eso sería más peligroso importar que exportar, porque implicaría reescribir los datos del proyecto, así que es mejor no hacerlo.

¿No habrá un modo de hacer que el resultado apareciera en modo script?

No le veo mucho sentido. Lo único de interés respecto a script es saber cómo se hace un comando concreto... y eso se mira en el Interpreter normal, buscando ese comando. Pasar todo un engine a su símil de script en su totalidad no es algo que recomiende... Al fin y al cabo muchas opciones del engine estan pensadas para funcionar solo dentro del intérprete, por ejemplo el Mostrar mensaje o el Esperar x frames.
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 646

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Producciones The Golden el 2017-02-05, 20:11

¿Cómo funciona? ¿y cómo se activa el modo Debug? XD
avatar
Producciones The Golden
Veterano
Veterano

0/3

Créditos 653

Gracias : 71

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Ledai el 2017-02-05, 20:17

Pega el script encima de Main, y luego lo editas pegando las llamadas en la parte habilitada para ello (A partir de la linea 101) diciendo lo que quieres exportar (las llamadas explicadas), luego desde el programa abres el juego y listo, en la carpeta tendrás un documento Word que tendrá escrito tu enguine.

Nota: a mi no me lo abre automáticamente por que se ve que traza otra ruta de instalación, pero tampoco da error, así que con abrirlo tú mismo está solucionado.
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 5209

Gracias : 215

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Producciones The Golden el 2017-02-05, 20:25

Muchas gracias por las dos cosas, yo toda la vida pensé que había alguna tecla o algo para entrar al "modo Debug" XD. 
Saludos!  Warrior
avatar
Producciones The Golden
Veterano
Veterano

0/3

Créditos 653

Gracias : 71

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Alex_Game_Maker el 2017-02-05, 20:50

Una herramienta para facilitarnos el trabajo a los enginers? Wecoc, te luciste. Un increible script que nos ayudara mucho a los enginers a compartir nuestro trabajo.

Supongo que podemos aceptar el script como ofrenda de paz. Hoy la guerra ha terminado.

Att. Tu amigo loriense,
Alex_game_maker
avatar
Alex_Game_Maker
Soñador
Soñador

0/3

Créditos 209

Gracias : 22

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Wecoc el 2017-02-05, 21:17

Leda: Cierto, me olvidé de decir que dependiendo del ordenador que uses puede que no se abra directamente el documento, pero como dijiste tampoco salta error.

Gracias por vuestros comentarios.

Quiero añadir algo opcional a la hora de exportar textos.

Como pone en las instrucciones, el texto se puede obtener con formato o sin formato.
Con formato significa que muestra los códigos tipo \c[1], \n[1] ...
Sin formato significa que no los muestra, solo muestra el texto, lo que hace más fácil la comprobación de ortografía.

Pero para ello se usan los códigos de mensaje que hay por defecto, no los que se hayan definido nuevos con sistemas de mensaje avanzados tipo UMS. Se pueden añadir más dentro de los métodos gsub_format! y gsub_unformat! del script.

Pongo aquí los dos métodos, ampliados para el uso de varios sistemas avanzados.

UMS (Universal Message System):
Código:
 #--------------------------------------------------------------------------
  # * [UMS 1.8.0] Visualizar los formatos de un texto de un color
  #--------------------------------------------------------------------------
  def gsub_format!
    self.gsub!(/\\\\face\[(.*?)\]/)    { "\\cf[3]\\\\face[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\font\[(.*?)\]/)    { "\\cf[3]\\\\font[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\bopc\[([0-9]+)\]/) { "\\cf[3]\\\\bopc[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\opc\[([0-9]+)\]/)  { "\\cf[3]\\\\opc[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\nm\[(.*?)\]/)      { "\\cf[3]\\\\nm[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\oa\[([0-9]+)\]/)   { "\\cf[3]\\\\oa[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\oi\[([0-9]+)\]/)   { "\\cf[3]\\\\oi[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\os\[([0-9]+)\]/)   { "\\cf[3]\\\\os[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\ow\[([0-9]+)\]/)   { "\\cf[3]\\\\ow[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\shk\[([0-9]+)\]/)  { "\\cf[3]\\\\shk[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\slv\[(.*?)\]/)     { "\\cf[3]\\\\slv[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\ta\[([0-9]+)\]/)   { "\\cf[3]\\\\ta[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\ws\[([0-9]+)\]/)   { "\\cf[3]\\\\ws[#{$1}]\\cf[0]" }

    self.gsub!(/\\\\v\[([0-9]+)\]/) { "\\cf[3]\\\\v[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\V\[([0-9]+)\]/) { "\\cf[3]\\\\V[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\n\[([0-9]+)\]/) { "\\cf[3]\\\\n[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\N\[([0-9]+)\]/) { "\\cf[3]\\\\N[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\c\[(.*?)\]/)    { "\\cf[3]\\\\c[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\C\[(.*?)\]/)    { "\\cf[3]\\\\C[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\e\[([0-9]+)\]/) { "\\cf[3]\\\\e[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\p\[([0-9]+)\]/) { "\\cf[3]\\\\p[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\w\[([0-9]+)\]/) { "\\cf[3]\\\\w[#{$1}]\\cf[0]" }
    
    self.gsub!(/\\\\fl/)      { "\\cf[3]\\\\fl\\cf[0]" }
    self.gsub!(/\\\\fr/)      { "\\cf[3]\\\\fr\\cf[0]" }
    self.gsub!(/\\\\jc/)      { "\\cf[3]\\\\jc\\cf[0]" }
    self.gsub!(/\\\\jl/)      { "\\cf[3]\\\\jl\\cf[0]" }
    self.gsub!(/\\\\jr/)      { "\\cf[3]\\\\jr\\cf[0]" }
    self.gsub!(/\\\\font/)    { "\\cf[3]\\\\font\\cf[0]" }
    self.gsub!(/\\\\width/)   { "\\cf[3]\\\\width\\cf[0]" }
    self.gsub!(/\\\\height/)  { "\\cf[3]\\\\height\\cf[0]" }
    self.gsub!(/\\\\ignr/)    { "\\cf[3]\\\\ignr\\cf[0]" }
    self.gsub!(/\\\\inc/)     { "\\cf[3]\\\\inc\\cf[0]" }
    self.gsub!(/\\\\pt/)      { "\\cf[3]\\\\pt\\cf[0]" }
    self.gsub!(/\\\\skip/)    { "\\cf[3]\\\\skip\\cf[0]" }
    self.gsub!(/\\\\t1/)      { "\\cf[3]\\\\t1\\cf[0]" }
    self.gsub!(/\\\\t2/)      { "\\cf[3]\\\\t2\\cf[0]" }
    self.gsub!(/\\\\tc/)      { "\\cf[3]\\\\tc\\cf[0]" }
    self.gsub!(/\\\\th/)      { "\\cf[3]\\\\th\\cf[0]" }
    self.gsub!(/\\\\tl/)      { "\\cf[3]\\\\tl\\cf[0]" }
    self.gsub!(/\\\\tr/)      { "\\cf[3]\\\\tr\\cf[0]" }
    
    self.gsub!(/\\\\g/) { "\\cf[3]\\\\g\\cf[0]" }
    self.gsub!(/\\\\G/) { "\\cf[3]\\\\G\\cf[0]" }
    
    self.gsub!(/\\\\b/) { "\\cf[3]\\\\b\\cf[0]" }
    self.gsub!(/\\\\i/) { "\\cf[3]\\\\i\\cf[0]" }
    self.gsub!(/\\\\m/) { "\\cf[3]\\\\m\\cf[0]" }
    self.gsub!(/\\\\s/) { "\\cf[3]\\\\s\\cf[0]" }
    return self
  end
  #--------------------------------------------------------------------------
  # * [UMS 1.8.0] Quitar los formatos de un texto
  #--------------------------------------------------------------------------
  def gsub_unformat!
    self.gsub!(/\\\\face\[(.*?)\]/, "")
    self.gsub!(/\\\\font\[(.*?)\]/, "")
    self.gsub!(/\\\\bopc\[([0-9]+)\]/, "")
    self.gsub!(/\\\\opc\[([0-9]+)\]/, "")
    self.gsub!(/\\\\nm\[(.*?)\]/, "")
    self.gsub!(/\\\\oa\[([0-9]+)\]/, "")
    self.gsub!(/\\\\oi\[([0-9]+)\]/, "")
    self.gsub!(/\\\\os\[([0-9]+)\]/, "")
    self.gsub!(/\\\\ow\[([0-9]+)\]/, "")
    self.gsub!(/\\\\shk\[([0-9]+)\]/, "")
    self.gsub!(/\\\\slv\[(.*?)\]/, "")
    self.gsub!(/\\\\ta\[([0-9]+)\]/, "")
    self.gsub!(/\\\\ws\[([0-9]+)\]/, "")

    self.gsub!(/\\\\v\[([0-9]+)\]/, "")
    self.gsub!(/\\\\V\[([0-9]+)\]/, "")
    self.gsub!(/\\\\n\[([0-9]+)\]/, "")
    self.gsub!(/\\\\N\[([0-9]+)\]/, "")
    self.gsub!(/\\\\c\[(.*?)\]/, "")
    self.gsub!(/\\\\C\[(.*?)\]/, "")
    self.gsub!(/\\\\e\[([0-9]+)\]/, "")
    self.gsub!(/\\\\p\[([0-9]+)\]/, "")
    self.gsub!(/\\\\w\[([0-9]+)\]/, "")
    
    self.gsub!(/\\\\fl/, "")
    self.gsub!(/\\\\fr/, "")
    self.gsub!(/\\\\jc/, "")
    self.gsub!(/\\\\jl/, "")
    self.gsub!(/\\\\jr/, "")
    self.gsub!(/\\\\font/, "")
    self.gsub!(/\\\\width/, "")
    self.gsub!(/\\\\height/, "")
    self.gsub!(/\\\\ignr/, "")
    self.gsub!(/\\\\inc/, "")
    self.gsub!(/\\\\pt/, "")
    self.gsub!(/\\\\skip/, "")
    self.gsub!(/\\\\t1/, "")
    self.gsub!(/\\\\t2/, "")
    self.gsub!(/\\\\tc/, "")
    self.gsub!(/\\\\th/, "")
    self.gsub!(/\\\\tl/, "")
    self.gsub!(/\\\\tr/, "")
    
    self.gsub!(/\\\\g/, "")
    self.gsub!(/\\\\G/, "")
    
    self.gsub!(/\\\\b/, "")
    self.gsub!(/\\\\i/, "")
    self.gsub!(/\\\\m/, "")
    self.gsub!(/\\\\s/, "")
    return self
  end

AMS (Advanced Message System):
Código:
  #--------------------------------------------------------------------------
  # * [AMS R4 #2] Visualizar los formatos de un texto de un color
  #--------------------------------------------------------------------------
  def gsub_format!
    self.gsub!(/\\\\[pP]rice\[([0-9]+)\]/) { "\\cf[3]\\\\price[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[cC]lass\[([0-9]+)\]/) { "\\cf[3]\\\\class[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[cC]olor\[([0-9]+)\]/) { "\\cf[3]\\\\color[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[nN]ame\[(.*?)\]/)  { "\\cf[3]\\\\name[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[vV]\[i([0-9]+)\]/) { "\\cf[3]\\\\v[i#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[vV]\[a([0-9]+)\]/) { "\\cf[3]\\\\v[a#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[vV]\[w([0-9]+)\]/) { "\\cf[3]\\\\v[w#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[vV]\[s([0-9]+)\]/) { "\\cf[3]\\\\v[s#{$1}]\\cf[0]" }
   
    self.gsub!(/\\\\[vV]\[([0-9]+)\]/) { "\\cf[3]\\\\v[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[nN]\[([0-9]+)\]/) { "\\cf[3]\\\\n[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[mM]\[([0-9]+)\]/) { "\\cf[3]\\\\m[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[oO]\[([0-9]+)\]/) { "\\cf[3]\\\\o[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[sS]\[([0-9]+)\]/) { "\\cf[3]\\\\s[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[hH]\[([0-9]+)\]/) { "\\cf[3]\\\\s[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[cC]\[(.*?)\]/) { "\\cf[3]\\\\c[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[zZ]\[(.*?)\]/) { "\\cf[3]\\\\z[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[fF]\[(.*?)\]/) { "\\cf[3]\\\\f[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[pP]\[(.*?)\]/) { "\\cf[3]\\\\p[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[tT]\[(.*?)\]/) { "\\cf[3]\\\\t[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[aA]\[(.*?)\]/) { "\\cf[3]\\\\a[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[mM]ap/) { "\\cf[3]\\\\map\\cf[0]" }
    self.gsub!(/\\\\[gG]/)  { "\\cf[3]\\\\g\\cf[0]" }
   
    self.gsub!(/\\\\\[(.*?)\]([0-9]+)/) { "\\cf[9]\\\(#{$1}\^#{$2}\)\\cf[0]" }
    self.gsub!(/\\\\\|/) { "\\cf[7]\\\\\|\\cf[0]" }
    self.gsub!(/\\\\\./) { "\\cf[7]\\\\\.\\cf[0]" }
    self.gsub!(/\\\\\~/) { "\\cf[7]\\\\\~\\cf[0]" }
    self.gsub!(/\\\\\!/) { "\\cf[7]\\\\\!\\cf[0]" }
    self.gsub!(/\\\\\</) { "\\cf[7]\\\\\<\\cf[0]" }
    self.gsub!(/\\\\\>/) { "\\cf[7]\\\\\>\\cf[0]" }
    self.gsub!(/\\\\\%/) { "\\cf[7]\\\\\%\\cf[0]" }
    return self
  end
  #--------------------------------------------------------------------------
  # * [AMS R4 #2] Quitar los formatos de un texto
  #--------------------------------------------------------------------------
  def gsub_unformat!
    self.gsub!(/\\\\[pP]rice\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[cC]lass\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[cC]olor\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[nN]ame\[(.*?)\]/, "")
    self.gsub!(/\\\\[vV]\[i([0-9]+)\]/, "")
    self.gsub!(/\\\\[vV]\[a([0-9]+)\]/, "")
    self.gsub!(/\\\\[vV]\[w([0-9]+)\]/, "")
    self.gsub!(/\\\\[vV]\[s([0-9]+)\]/, "")
   
    self.gsub!(/\\\\[vV]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[nN]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[mM]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[oO]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[sS]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[hH]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[cC]\[(.*?)\]/, "")
    self.gsub!(/\\\\[zZ]\[(.*?)\]/, "")
    self.gsub!(/\\\\[fF]\[(.*?)\]/, "")
    self.gsub!(/\\\\[pP]\[(.*?)\]/, "")
    self.gsub!(/\\\\[tT]\[(.*?)\]/, "")
    self.gsub!(/\\\\[aA]\[(.*?)\]/, "")
    self.gsub!(/\\\\[mM]ap/, "")
    self.gsub!(/\\\\[gG]/, "")
   
    self.gsub!(/\\\\\[(.*?)\]([0-9]+)/) { "\\cf[9]\\\(#{$1}\^#{$2}\)\\cf[0]" }
    self.gsub!(/\\\\\|/, "")
    self.gsub!(/\\\\\./, "")
    self.gsub!(/\\\\\~/, "")
    self.gsub!(/\\\\\!/, "")
    self.gsub!(/\\\\\</, "")
    self.gsub!(/\\\\\>/, "")
    self.gsub!(/\\\\\%/, "")
    return self
  end

WMS (Wecoc's Message System):
Código:
  #--------------------------------------------------------------------------
  # * [WMS 1.0] Visualizar los formatos de un texto de un color
  #--------------------------------------------------------------------------
  def gsub_format!
    self.gsub!(/\\\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) {
      "\\cf[3]\\\\font[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Ss][Ii][Zz][Ee]\[([0-9]+)\]/) {
      "\\cf[3]\\\\size[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Ss][Hh][Xx]\[([0-9]+)\]/) {
      "\\cf[3]\\\\shx[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Ss][Hh][Yy]\[([0-9]+)\]/) {
      "\\cf[3]\\\\shy[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Ss][Hh][Cc]\[([0-9]+)\]/) {
      "\\cf[3]\\\\shc[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Oo][Uu][Cc]\[([0-9]+)\]/) {
      "\\cf[3]\\\\ouc[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Cc][Hh][Cc]\[([0-9]+)\]/) {
      "\\cf[7]\\\\chc[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/) {
      "\\cf[3]\\\\bopc[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Oo][Pp][Cc]\[([0-9]+)\]/) {
      "\\cf[3]\\\\opc[#{$1}]\\cf[0]"
    }
    self.gsub!(/\\\\[Mm][Aa][Pp]\[([0-9]+)\]/) {
      "\\cf[3]\\\\map[#{$1}]\\cf[0]"
    }
   
    self.gsub!(/\\\\[Ss][Cc]\[([0-9]+)\]/)  { "\\cf[3]\\\\sc[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Ii][Cc]\[(.*?)\]/)    { "\\cf[3]\\\\ic[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Oo][Aa]\[([0-9]+)\]/)  { "\\cf[3]\\\\oa[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Oo][Ii]\[([0-9]+)\]/)  { "\\cf[3]\\\\oi[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Oo][Ss]\[([0-9]+)\]/)  { "\\cf[3]\\\\os[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Oo][Ww]\[([0-9]+)\]/)  { "\\cf[3]\\\\ow[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Ww][Ss]\[([0-9]+)\]/)  { "\\cf[3]\\\\ws[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Ww][Aa]\[([0-9]+)\]/)  { "\\cf[3]\\\\wa[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Ll][Ss]\[([0-9]+)\]/)  { "\\cf[3]\\\\ls[#{$1}]\\cf[0]" }
   
    self.gsub!(/\\\\[Ss]\[([0-9]+)\]/) { "\\cf[7]\\\\s[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Qq]\[([0-9]+)\]/) { "\\cf[7]\\\\q[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Zz]\[([0-9]+)\]/) { "\\cf[3]\\\\z[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Ee]\[([0-9]+)\]/) { "\\cf[3]\\\\e[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Pp]\[([0-9]+)\]/) { "\\cf[3]\\\\p[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Nn]\[([0-9]+)\]/) { "\\cf[3]\\\\n[#{$1}]\\cf[0]" }
    self.gsub!(/\\\\[Cc]\[([0-9]+)\]/) { "\\cf[3]\\\\c[#{$1}]\\cf[0]" }
   
    self.gsub!(/\\\\dn/) { "\\cf[8]+\\cf[0]" }
    self.gsub!(/\\\\\+/) { "\\cf[8]->\\cf[0]" }
    self.gsub!(/\\\\\!/) { "\\cf[3]\\\\!\\cf[0]" }
   
    self.gsub!(/\\\\[Dd][Ff]/) { "\\cf[3]\\\\df\\cf[0]" }
    self.gsub!(/\\\\[Uu][Pp]/) { "\\cf[3]\\\\up\\cf[0]" }
    self.gsub!(/\\\\[Ss][Hh]/) { "\\cf[3]\\\\sh\\cf[0]" }
    self.gsub!(/\\\\[Oo][Uu]/) { "\\cf[3]\\\\ou\\cf[0]" }
    self.gsub!(/\\\\[Jj][Ll]/) { "\\cf[3]\\\\jl\\cf[0]" }
    self.gsub!(/\\\\[Jj][Cc]/) { "\\cf[3]\\\\jc\\cf[0]" }
    self.gsub!(/\\\\[Jj][Rr]/) { "\\cf[3]\\\\jr\\cf[0]" }
    self.gsub!(/\\\\[Tt][Ll]/) { "\\cf[3]\\\\tl\\cf[0]" }
    self.gsub!(/\\\\[Tt][Cc]/) { "\\cf[3]\\\\tc\\cf[0]" }
    self.gsub!(/\\\\[Tt][Rr]/) { "\\cf[3]\\\\tr\\cf[0]" }   
   
    self.gsub!(/\\\\[Bb]/) { "\\cf[3]\\\\b\\cf[0]" }
    self.gsub!(/\\\\[Ii]/) { "\\cf[3]\\\\i\\cf[0]" }
    self.gsub!(/\\\\[Gg]/) { "\\cf[3]\\\\g\\cf[0]" }
   
    self.gsub!(/\\\\n/) { "\\line" }
    self.gsub!(/\\\\t/) { "\\tab" }
    return self
  end
  #--------------------------------------------------------------------------
  # * [WMS 1.0] Quitar los formatos de un texto
  #--------------------------------------------------------------------------
  def gsub_unformat!
    self.gsub!(/\\\\[Ff][Oo][Nn][Tt]\[(.*?)\]/, "")
    self.gsub!(/\\\\[Ss][Ii][Zz][Ee]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ss][Hh][Xx]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ss][Hh][Yy]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ss][Hh][Cc]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Oo][Uu][Cc]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Cc][Hh][Cc]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Oo][Pp][Cc]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Mm][Aa][Pp]\[([0-9]+)\]/, "")
   
    self.gsub!(/\\\\[Ss][Cc]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ii][Cc]\[(.*?)\]/, "")
    self.gsub!(/\\\\[Oo][Aa]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Oo][Ii]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Oo][Ss]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Oo][Ww]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ww][Ss]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ww][Aa]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ll][Ss]\[([0-9]+)\]/, "")
   
    self.gsub!(/\\\\[Ss]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Qq]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Zz]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Ee]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Pp]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Nn]\[([0-9]+)\]/, "")
    self.gsub!(/\\\\[Cc]\[([0-9]+)\]/, "")
   
    self.gsub!(/\\\\dn/) { "\\cf[8]+\\cf[0]" }
    self.gsub!(/\\\\\+/) { "\\cf[8]->\\cf[0]" }
    self.gsub!(/\\\\\!/) { "\\cf[3]\\\\!\\cf[0]" }
   
    self.gsub!(/\\\\[Dd][Ff]/, "")
    self.gsub!(/\\\\[Uu][Pp]/, "")
    self.gsub!(/\\\\[Ss][Hh]/, "")
    self.gsub!(/\\\\[Oo][Uu]/, "")
    self.gsub!(/\\\\[Jj][Ll]/, "")
    self.gsub!(/\\\\[Jj][Cc]/, "")
    self.gsub!(/\\\\[Jj][Rr]/, "")
    self.gsub!(/\\\\[Tt][Ll]/, "")
    self.gsub!(/\\\\[Tt][Cc]/, "")
    self.gsub!(/\\\\[Tt][Rr]/, "") 
   
    self.gsub!(/\\\\[Bb]/, "")
    self.gsub!(/\\\\[Ii]/, "")
    self.gsub!(/\\\\[Gg]/, "")
   
    self.gsub!(/\\\\n/) { "\\line" }
    self.gsub!(/\\\\t/) { "\\tab" }
    return self
  end
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 646

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por DioArcangel el 2017-02-06, 07:05

Ooooo muy bueno ! Very Happy

Sin duda compartire mis creaciones <3
Share the love hahahaha Colega
avatar
DioArcangel
Soñador
Soñador

0/3

Créditos 226

Gracias : 5

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Wecoc el 2018-07-04, 15:43

Me pidieron un script que puede hacerse fácilmente ampliando el Interpreter EX.
Lo que hace es buscar a lo largo de los mensajes de evento (y elecciones) de todo el juego un texto concreto, y luego devuelve una lista con todos los eventos que lo incluyen.

Es útil por ejemplo si cambias de nombre un personaje o sitio y quieres estar seguro de que en ningún evento quedó el nombre viejo.

Código:
#==============================================================================
# ** [XP] Message Text Finder 1.0 (Interpreter EX Addon)
#==============================================================================
# Permite buscar textos concretos en eventos
# Útil por ejemplo si cambias el nombre a un personaje o ciudad y quieres
# modificarlo a lo largo de los eventos
#==============================================================================

module InterpreterEX
  
  # Cambia a false para no distinguir entre mayúsculas y minúsculas
  CASE_SENSITIVE = true
  
  def self.message_text_finder
    text = ""
    
    # Asigna aquí el texto a buscar, con String, Regexp o Array
    match = ""
    
    if !match.nil? and match != "" and match != //
      every_event do |map, event, page|
        result = get_event_format_text(map, event, page)
        x, y = get_event_pos(map, event)
        if match.is_a?(Array)
          for m in match
            if CASE_SENSITIVE == false and m.is_a?(String)
              if result.downcase.match(m.downcase)
                text.concat("Mapa #{map}, Evento #{event} (X: #{x}, Y: #{y})\n")
              end
            else
              if result.match(m)
                text.concat("Mapa #{map}, Evento #{event} (X: #{x}, Y: #{y})\n")
              end
            end
          end
        else
          if CASE_SENSITIVE == false and match.is_a?(String)
            if result.downcase.match(match.downcase)
              text.concat("Mapa #{map}, Evento #{event} (X: #{x}, Y: #{y})\n")
            end
          else
            if result.match(match)
              text.concat("Mapa #{map}, Evento #{event} (X: #{x}, Y: #{y})\n")
            end
          end
        end
      end
      print text
      
      #save_rtf(text) # Aciva esta linea para guardar el resultado en un txt
      
    end
  end
end

def get_event_pos(map_id, event_id)
  map_r = sprintf("%03d", map_id)
  ev_r  = sprintf("%03d", event_id)
  load_rxdata if $data_actors.nil?
  $data_map = load_data(sprintf("Data/Map%03d.rxdata", map_id)) rescue nil
  if $data_map == nil
    print("Error: Invalid Map ID (#{map_r})")
    return nil, nil
  end
  map = $data_map.clone
  event = map.events[event_id]
  return event.x, event.y
end

InterpreterEX.message_text_finder

Ponedlo debajo del script Interpreter EX y encima de main.
Buscad la línea [line]match = ""[/line] y poned ahí el código a buscar, por ejemplo [line]match = "Alexis"[/line] encontrará todos los textos donde aparezca "Alexis". También se puede usar Regexp o bien una Array para buscar varios resultados simultáneamente.

Espero que os sea de utilidad ;)
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 646

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Wecoc el 2018-07-14, 15:40

He tenido otra idea para una pequeña utilidad usando este script, bastante similar a la anterior.
Sirve para localizar líneas largas de texto en los mensajes de evento (y elecciones). Seguramente a vosotros también os pasa que algunas líneas os quedan cortadas; testear todo el juego para arreglar eso puede ser tedioso así que este script localiza las líneas más susceptibles a cortarse, y así luego vas a buscar el evento, los testeas rápidamente y lo arreglas. El script indica ID mapa, ID evento, página, coordenadas de evento y la línea de texto en cuestión, para cada caso.



El script tiene cierta configuración para esos juegos en los que el límite es muy distinto al que hay por defecto.
Además permite comprobarlo solo por número de carácteres o también por ancho real de línea, en píxeles (en ese caso el script tarda un poco más, pero igualmente lo recomiendo)

Alternativa:
Con ScreenEX técnicamente se podría obtener una screen de como se muestra cada ventana y verlo exactamente sin tener que comprobar... pero aún quedándose solo con los susceptibles el archivo guardado podría ser muy largo así que no vale la pena.

Los códigos \n[X], etc. por defecto son substituidos correctamente. Por defecto se usan los nombres de los actores, pero si el jugador puede asignar nombres a los personajes, tienes la opción de usar un nombre personalizado con los carácteres máximos admitidos para el nombre.

Los códigos \m[X], etc. implementados con un script de mensajes avanzados, no son substituidos y se usan como texto plano. Si en algún caso os interesa que uno de esos códigos se sustituya por otra cosa para hacer el testeo, tendréis que añadirlo en el método clean_text_format.

No molesto más, aquí tenéis el script:

Código:
#==============================================================================
# ** [XP] Message Cut Warning 1.0 (Interpreter EX Addon)
#==============================================================================
# Indica esos textos de evento que son susceptibles de quedar contrados en el ju
#==============================================================================

module InterpreterEX
  
  # Mostrar nombres de personaje con \n[X]
  USE_DEFAULT_NAMES = true
  CUSTOM_NAME = "< Nombre >"
  
  # Número de carácteres aceptables por línea (puede usarse el ancho del texto)
  USE_TEXT_WIDTH = false
  # Según la fuente de tu juego quizá deberás definir estos parámetros a mano
  LIMIT_TEXT_SIZE = 30 # Número de carácteres máximo
  LIMIT_WIDTH = 380    # Ancho de línea máximo (solo si USE_TEXT_WIDTH = true)
  
  def self.message_cut_warning
    text = ""
    every_event do |map, event, page|
      lines = get_event_lines(map, event, page)
      for line in lines
        clean_text_format(line)
        result = false
        if USE_TEXT_WIDTH
          bmp = Bitmap.new(1, 1)
          if bmp.text_size(line).width >= LIMIT_WIDTH
            result = true
          end
        end
        if line.size >= LIMIT_TEXT_SIZE
          result = true
        end
        if result == true
          x, y = get_event_pos(map, event)
          text.concat("Mapa #{map}, Evento #{event} (X: #{x}, Y: #{y})\n")
          text.concat("'#{line}'\n")
          text.concat("---------------------------------------------\n")
        end
      end
    end
    print text
    # save_rtf(text) # Aciva esta linea para guardar el resultado en un txt
  end
end

def get_event_pos(map_id, event_id)
  map_r = sprintf("%03d", map_id)
  ev_r  = sprintf("%03d", event_id)
  load_rxdata if $data_actors.nil?
  $data_map = load_data(sprintf("Data/Map%03d.rxdata", map_id)) rescue nil
  if $data_map == nil
    print("Error: Invalid Map ID (#{map_r})")
    return nil, nil
  end
  map = $data_map.clone
  event = map.events[event_id]
  return event.x, event.y
end

def clean_text_format(text)
  if InterpreterEX::USE_DEFAULT_NAMES && $data_actors.nil?
    $data_actors = load_data("Data/Actors.rxdata")
  end
  if InterpreterEX::USE_DEFAULT_NAMES
    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
      $data_actors[$1.to_i] != nil ? $data_actors[$1.to_i].name : ""
    end
  else
    text.gsub!(/\\[Nn]\[([0-9]+)\]/, InterpreterEX::CUSTOM_NAME)
  end
  text.gsub!(/\\[Cc]\[([0-9]+)\]/, "")
  text.gsub!(/\\[Gg]/, "")
  text.gsub!(/\\[Vv]\[([0-9]+)\]/, "< Var >")
end

def get_event_lines(map_id, event_id, page_id=1)
  map_r = sprintf("%03d", map_id)
  ev_r  = sprintf("%03d", event_id)
  load_rxdata if $data_actors.nil?
  $data_map = load_data(sprintf("Data/Map%03d.rxdata", map_id)) rescue nil
  return "" if $data_map == nil
  map = $data_map.clone
  event = map.events[event_id]
  return "" if event == nil
  page = event.pages[page_id - 1]
  return "" if page == nil
  result = []
  for command in page.list
    case command.code
    when 101, 401  # Show text
      result.push(command.parameters[0])
    when 402  # When [**]
      result.push(command.parameters[1])
    end
  end
  return result
end

InterpreterEX.message_cut_warning
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 646

Volver arriba Ir abajo

RPG Maker XP Re: [XP][Herramienta de Enginer] Interpreter EX

Mensaje por Contenido patrocinado


Contenido patrocinado


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.