Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP/VX/ACE] Dos añadidos al "include?" de String

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP/VX/ACE] Dos añadidos al "include?" de String

Mensaje por Pokepik el 2013-08-18, 03:03

INTRODUCCIÓN

Hoy quería hacer una cosa por script que no lograba y pedí ayuda a Wecoc, y me hizo un script que me solucionó el problema. Luego le añadí otra cosa que quizá también pueda servir a alguien, por eso he decidido postearlo todo en uno XD. Ninguno de los dos pedimos créditos y puede usarlo quien quiera en sus scripts.

CÓDIGO

Código:
class String
  def nf_include?(str) # No format include
    string = self.tr("A-Z","a-z").delete(" ")
    str = str.tr("A-Z","a-z").delete(" ")
    return string.include?(str)
  end
  
  def get_from_include?(string, type=0, before=false) # Get value with include
    return false if self.include?(string) == false
    array = []
    if before == false
      position = self.downcase.index(string.downcase)
      position += string.size
      while position < self.size
        position +=1
        next if self[position-1].chr == " "
        case type
        when 0 # Number
          break unless self[position-1].chr.between?("0","9")
          array << self[position-1].chr
        when 1 # Letter
          break unless self[position-1].chr.between?("A","Z") or
                       self[position-1].chr.between?("a","z")
          array << self[position-1].chr
        end
        return false if array.size == 0
        result = array.join
      end
    else
      position = self.downcase.rindex(string.downcase)
      while position > 0
        position -=1
        next if self[position].chr == " "
        case type
        when 0 # Number
          break unless self[position].chr.between?("0","9")
          array << self[position].chr
        when 1 # Letter
          break unless self[position].chr.between?("A","Z") or
                       self[position].chr.between?("a","z")
          array << self[position].chr
        end
      end
      return false if array.size == 0
      result = array.join.reverse
    end
    return type == 0 ? result.to_i : result
  end
end
FUNCIONAMIENTO

El nf_include? hace lo mismo que un include pero sin formato, eso quiere decir sin considerar mayúsculas-minúsculas ni si hay espacios en blanco tanto en una string como en la otra.

Ejemplo:
Código:
print "Hola a TODOS".include?("holaatodos") # devuelve false
print "Hola a TODOS".nf_include?("holaatodos") # devuelve true
El get_from_include? es el plato fuerte. Obtiene variables desde un include, buscando detrás o deltante de la parte que le digas. Utiliza dos cosas;
type que puede valer 0 o 1, por defecto 0. Si es 0 busca números, si es 1 busca letras.
before que puede valer true o false, por defecto false. Si es true busca cosas antes de la parte que le digas, y es false las busca después.

Atención: Si encuentra lo que le dices, devuelve lo que ha encontrado, pero si no devuelve false como un include? normal.

Ejemplo:
Código:
test = "[ratio=50]This is a test"
ratio = test.get_from_include?("ratio=")
test.gsub!("[ratio=#{ratio}]", '')
p ratio # devuelve 50
p test # devuelve "This is a test"
USOS

Aunque en principio vale para cualquier maker, es útil sobretodo para XP.
El VX y el Ace tienen algo que el XP no; las "notas" en objetos, habilidades...
Hacer eso en XP cuesta mucho. Pero con éste script ya no tanto, se puede usar en la descripción o en el nombre y leerlo desde allí.
avatar
Pokepik
Principiante
Principiante

0/3

Créditos 2134

Gracias : 4

Volver arriba Ir abajo

Re: [XP/VX/ACE] Dos añadidos al "include?" de String

Mensaje por orochii el 2013-08-18, 16:03

Pues está bien el añadido, más que todo para practicar. Porque no puedo dejar de pensar que para el get_from_include? uno puede usar un gsub/gsub!...
Código:
str="ratio=45move=666"
str.gsub(/ratio\=(\d+)/){ print $1 }
Igual, el tuyo tiene facilidad de uso. Porque RegExp para mí es una de las cosas más complicadas de entender, usar y etcétera xDD.
También esto funciona con las notas del RMVX/A. Las notas son simplemente un string, y es cosa de uno el cómo las parsea xd. Osea, como dije, daría el mismo efecto de usar gsub, o el operador "=~", que es otro que se usa mucho.

Saludos,
Orochii Zouveleki
avatar
orochii
Reportero

0/3

Créditos 7724

Gracias : 436

Volver arriba Ir abajo

Re: [XP/VX/ACE] Dos añadidos al "include?" de String

Mensaje por Wecoc el 2013-08-26, 16:05

Menudo inspect, la verdad es que lía un poco xD
Sí, se puede usar un gsub con d para dígitos. En la guía traducida que subí hace unos días puse una tabla con lo que significan esas letras entre cláusulas /de estas/ xD aunque reconozco que también es liante.

Quizá ya que tenemos esto se podrían pasar algunos de los scripts de Ace que usen notas de esas, al XP.
avatar
Wecoc
Administrador
Administrador



Créditos 12211

Gracias : 632

Volver arriba Ir abajo

Re: [XP/VX/ACE] Dos añadidos al "include?" de String

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.