Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Últimos temas
» Gameplay - Mansión Rybi - RMVXA.
por Miky Joe 2018-12-10, 08:36

» The Town of The Lost Witch [Horror/Suspense] - Enero 2019
por rstudios 2018-12-10, 01:20

» muchas dudas
por DiegoArancibia 2018-12-09, 16:55

» Galería Miky Art [Bocetos y más]
por Miky Joe 2018-12-09, 09:16

» Hemos vuelto
por alex1633 2018-12-08, 23:17

» [MV] Precognition
por franciscojapones 2018-12-08, 07:06

» (AJUDA) Conpatibilidade de 2 scripts simples
por orochii 2018-12-08, 03:14

» ("TCG") Que RPG Maker es el recomendado?
por orochii 2018-12-08, 03:03

» BOAS VINDAS
por orochii 2018-12-08, 02:58

» Script de mensaje de Wecoc
por orochii 2018-12-07, 23:43

Afiliados

[RMXP] [Herramienta de scripter] Kernel code / def line

Ver el tema anterior Ver el tema siguiente Ir abajo

[RMXP] [Herramienta de scripter] Kernel code / def line

Mensaje por Wecoc el 2013-10-06, 18:59

Éste script es muy tonto en cuanto a utilidad pero bueno, quien sabe. Además no estoy al 100% seguro de que funcione del todo bien, ni tampoco si sirve para VX o Ace xD Consideradlo una prueba muy random como cuando Orochii hizo eso del MD5.

Éste script permite ejecutar una línea que esté dentro de un def desde fuera del def.

Hay diferentes métodos que se llaman directamente sin nada delante:

codeline(code, line)

Devuelve una versión printeable de la línea line del script code.
Para que a parte la evalúe hace falta poner eval(codeline(code, line))

code - Nombre del script. Atención; del script, no de la class. Por ejemplo "Scene_Battle 1", no "Scene_Battle"
line - Número de línea del script que se quiere ejecutar

Ejemplo:
Código:
p codeline("Game_System", 9) # => class Game_System


get_codeline(code, linecode)


Devuelve la línea que incluya linecode dentro del script code. Si hay más de una devuelve la primera.

code - Nombre del script. Atención; del script, no de la class. Por ejemplo "Scene_Battle 1", no "Scene_Battle"
linecode - String a evaluar.

Ejemplo:
Código:
p get_codeline("Game_System", "class Game_System") # => 9


defline(code, method, line)


Devuelve una versión printeable de la línea line dentro del def method del script code.
Para que a parte la evalúe hace falta poner eval(defline(code, method, line))

code - Nombre del script. Atención; del script, no de la class. Por ejemplo "Scene_Battle 1", no "Scene_Battle"
method - Nombre del método, por ejemplo initialize, update ...
line - Número de línea, considerando la del def como 0

Ejemplo:
Código:
eval(defline("Game_System", "initialize", 5)) # => @save_disabled = false


get_defline(code, method, linecode)


Devuelve la línea que incluya linecode dentro del def method del script code xDD.
Si hay más de una devuelve la primera.

code - Nombre del script. Atención; del script, no de la class. Por ejemplo "Scene_Battle 1", no "Scene_Battle"
method - Nombre del método, por ejemplo initialize, update ...
linecode - String a evaluar.

Ejemplo:
Código:
save_line = get_defline("Game_System", "initialize", "@save_disabled = false") # => 5
Y aquí el código:

Código:
module Kernel
  def code_check(code)
    if code.is_a?(String)
      for i in 0...$RGSS_SCRIPTS.size
        return i if $RGSS_SCRIPTS[i][1] == code
      end
    end
    return nil
  end
  
  def codeline(code, line)
    line -= 1
    code = code_check(code)
    return nil unless code.is_a?(Integer)
    cod = code
    linearray = $RGSS_SCRIPTS[cod][3].split("\n")
    return linearray[line]
  end
    
  def get_codeline(code, linecode)
    code = code_check(code)
    return nil unless code.is_a?(Integer)
    cod = code
    linearray = $RGSS_SCRIPTS[cod][3].split("\n")
    for i in 0...linearray.size
      if linearray[i].include?(linecode)
        return i + 1
      end
    end
    return nil
  end
  
  def defline(code, method, line)
    code = code_check(code)
    return nil unless code.is_a?(Integer)
    cod = code
    defline = $RGSS_SCRIPTS[cod][3].index("def #{method}")
    return nil if defline.nil?
    newcode = $RGSS_SCRIPTS[cod][3].split("def #{method}")[1].split("def ")[0]
    linearray = newcode.split("\n")
    return linearray[line]
  end
  
  def get_defline(code, method, linecode)
    code = code_check(code)
    return nil unless code.is_a?(Integer)
    cod = code
    defline = $RGSS_SCRIPTS[cod][3].index("def #{method}")
    return nil if defline.nil?
    newcode = $RGSS_SCRIPTS[cod][3].split("def #{method}")[1].split("def ")[0]
    linearray = newcode.split("\n")
    for i in 0...linearray.size
      if linearray[i].include?(linecode)
        return i
      end
    end
    return nil
  end
end
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

Re: [RMXP] [Herramienta de scripter] Kernel code / def line

Mensaje por orochii el 2013-10-06, 21:38

No sé si es útil o no, pero todo aquello que de una u otra manera "desenmascare" la forma en que las cosas del RPG Maker funcionan me interesa xD. En fin, está interesante por eso. Y también seguro habrá alguna utilidad extraña xDD.

En cieeeeeerta forma uno podría usarlo para evitar hacer alias, pero es un poco lol x'D. Porque termina siendo igual que trascribir xd.

Salut,
OZ
avatar
orochii
Reportero

0/3

Créditos 7343

Gracias : 477

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.