¡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
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3697 miembros registrados.
El último usuario registrado es PapiSaig.

Nuestros miembros han publicado un total de 82060 mensajes en 11613 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
avatar
Wecoc
Administrador
Administrador



Créditos 8778

Gracias : 412

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.