Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[RMXP] Pequeño edit para interruptores y variables

Ver el tema anterior Ver el tema siguiente Ir abajo

[RMXP] Pequeño edit para interruptores y variables

Mensaje por Wecoc el 2013-09-25, 21:42

Otro post que hice antes me recordó un script que hice hace tiempo y que diría que no aporté. No es muy guay pero bueno quizá os sirva de algo.

Código:
class Game_Switches
  def [](switch)
    if switch.is_a?(Integer)
      if switch <= self.size and @data[switch] != nil
        return @data[switch]
      else
        return false
      end
    end
    if switch.is_a?(Range)
      result = []
      for i in switch
        result.push @data[i]
      end
      return result
    end
    if switch.is_a?(String)
      return unless $data_system.switches.include?(switch)
      index = []
      for i in 1...self.size
        if $data_system.switches[i] == switch
          index.push i
        end
      end
      result = []
      index.each { |i| result.push self[i] }
      return result
    end
  end
  
  def []=(switch, value)
    if switch.is_a?(Integer)
      if switch <= self.size
        @data[switch] = value
      end
    end
    if switch.is_a?(Range)
      for i in switch
        if i <= self.size
          @data[i] = value
        end
      end
    end
    if switch.is_a?(String)
      return unless $data_system.switches.include?(switch)
      index = []
      for i in 1...self.size
        if $data_system.switches[i] == switch
          index.push i
        end
      end
      for i in index
        self[i] = value
      end
    end
  end
  
  def size
    return $data_system.switches.size
  end
end

class Game_Variables
  def [](variable)
    if variable.is_a?(Integer)
      if variable <= self.size and @data[variable] != nil
        return @data[variable]
      else
        return 0
      end
    end
    if variable.is_a?(Range)
      result = []
      for i in variable
        result.push @data[i]
      end
      return result
    end
    if variable.is_a?(String)
      return unless $data_system.variables.include?(variable)
      index = []
      for i in 1...self.size
        if $data_system.variables[i] == variable
          index.push i
        end
      end
      result = []
      index.each { |i| result.push self[i] }
      return result
    end
  end

  def []=(variable, value)
    if variable.is_a?(Integer)
      if variable <= self.size
        @data[variable] = value
      end
    end
    if variable.is_a?(Range)
      for i in variable
        if i <= self.size
          @data[i] = value
        end
      end
    end
    if variable.is_a?(String)
      return unless $data_system.variables.include?(variable)
      index = []
      for i in 1...self.size
        if $data_system.variables[i] == variable
          index.push i
        end
      end
      for i in index
        self[i] = value
      end
    end
  end
  
  def size
    return $data_system.variables.size
  end
end
Así es cómo funciona:
Hasta ahora podías referirte a interruptores así:
$game_switches[id]
y a variables así:
$game_variables[id]

Ahora tendrás las siguientes posibilidades:
$game_switches[id]
$game_switches[range]
$game_switches["name"]

$game_variables[id]
$game_variables[range]
$game_variables["name"]

Además para obtener más fácilmente el número de variables o interruptores totales que asignaste a tu proyecto puedes usar:
$game_switches.size
$game_variables.size

Posiblemente sea mejorable, pero es lo que hay xD
avatar
Wecoc
Administrador
Administrador



Créditos 12211

Gracias : 632

Volver arriba Ir abajo

Re: [RMXP] Pequeño edit para interruptores y variables

Mensaje por silvanash el 2013-09-25, 21:51

Se me ocurre un pequeño edit para esto:

El número total de interruptores y variables que realmente se han usado. Sería comprobar dentro de .size, los que sean "name" == nil, y después imprimir la lista de los interruptores/variables que no tienen nombre (y por extensión se asumiría que no se usan/se borraron al cambiar el motor del juego). Muchas veces, al hacer engines, reservo más variables de las necesarias, y luego se quedan variables sin usar en medio.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1666

Gracias : 239

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.