¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» Hola mucho gusto
por Hk Diamond Hoy a las 13:49

» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 12:03

» Holaaa a tod@s!!!
por nacho Hoy a las 09:47

» SoraDeathss se presenta!
por chronoMxx Hoy a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Hoy a las 06:45

» las cosas como son...
por Bleuw Hoy a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas Ayer a las 20:52

» Duda con música en RPG MV
por Fleabass Ayer a las 20:25

» Recopilación de páginas con recursos RPG Maker
por RiKennedy-Maker Ayer a las 20:00

» [DUDA] Titulo de RPGM XP con varias imagenes
por Wecoc Ayer a las 08:38

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79749 mensajes en 11244 argumentos.
Navega con Google Chrome
[DESCARGA]

[XP/VX] [Herramienta de scripter] Table + (v0.5)

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP/VX] [Herramienta de scripter] Table + (v0.5)

Mensaje por Wecoc el 2014-03-23, 01:00

Bueno, aquí vengo con otra chapuza de las mías, que muy útiles no son, pero alguien tiene que hacerlas, digo yo xDD
EJEM...

Ésta vez os traigo el script Table +, que con suerte os hará la vida un poco más fácil. Veréis, Table no es una clase fácil de entender, con sus xsize, ysize y zsize, y con su estúpido inspect que simplemente dice xD Así que creé éste script para poder controlarlo casi como si fuera una Array. De hecho, puse una conversión de Table a Array (de Arrays) y de Array a Table otra vez, y de ahí se basan el resto de métodos.

No es versión definitiva porque tiene una série de problemas que soy incapaz de solucionar por ahora, si alguien sabe cómo solucionarlos que lo diga, pero eso no significa que lo que hay no sea funcional.

Código:
#==============================================================================
# ** [Herramienta de scripter] Table + (v0.5)
#------------------------------------------------------------------------------
#  Nuevas funciones para la class Table (con Array)
#  Autor: Wecoc (no hace falta dar créditos)
#==============================================================================
# COSAS A ARREGLAR (para poderlo considerar versión definitiva)
# - Algunos métodos sólo funcionan con Table de 2 dimensiones (las más típicas)
# - fill no queda guardado (como un fill!) porque no existe un replace para Table
#       (y no lo sé recrear yo mismo)
# - Por exactamente la misma razón no se pudieron hacer map! ni map_d!
# - (Convendría testear bugs por si acaso)
#==============================================================================

class Array
 def group(n)
    array = self.clone
    result = []
    array.size.quo(n).ceil.times do
      new_array = []
      for i in 0...n
        new_array.push(array.shift)
      end
      result.push(new_array)
    end
    return result
  end
  
  def group!(n)
    self.replace(self.group(n))
  end

  def to_t
    table = Table.new(self.size, self[0].size)
    for i in 0...self[0].size
      for j in 0...self.size
        table[j,i] = self[j][i]
      end
    end
    return table
  end
end

class Table
  def fill(n)
    array = self.to_a.flatten
    array.fill(n).group!(self.ysize)
    return array.to_t
  end
  
  def to_a
    array = []
    for i in 0...self.xsize
      for j in 0...self.ysize
        array.push(self[i, j])
      end
    end
    array.group!(self.ysize)
  end
  
  def size
    self.to_a.flatten.size
  end
  
  def inspect
    self.to_a.inspect
  end
  
  def each
    self.to_a.flatten.each {|x| yield x}
  end
  
  def each_with_index
    self.to_a.flatten.each_with_index {|x, i| yield [x, i]}
  end
  
  def each_d
    self.to_a.each {|x| yield x}
  end
  
  def each_d_with_index
    self.to_a.each_with_index {|x, i| yield [x, i]}
  end
  
  def map
    array = self.to_a.flatten.map {|x| yield x}
    array.group!(self.ysize)
    return array.to_t
  end
  
  def map_d
    array = self.to_a.map {|x| yield x}
    return array.to_t
  end

  def pretty
    string = self.to_a.transpose.join("\t")
    deep = self.to_a.size
    array = string.split("\t")
    array.each{|x| x.concat("\t")}
    for i in 0...array.size
      next if i % deep != deep - 1
      array[i].chop! << "\n"
    end
    return array
  end
end


Y aquí una lista con los nuevos métodos

Array

- group | group!
- to_t


Table

- fill
- to_a
- size
- inspect
- each
- each_with_index
- each_d
- each_d_with_index
- map
- map_d
- pretty


( los que tienen _d esa d es de "dimensión" )

PD.- En teoría debería funcionar en Ace pero prefiero no mojarme por si acaso xD

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

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