Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Sistema de Interruptores y Variables

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP] Sistema de Interruptores y Variables

Mensaje por Wecoc el 2018-01-07, 01:09

Solo por si acaso, el contenido de este topic era broma... Aunque el script funciona, a su manera xDD

Spoiler:
Como los programadores que usáis el RPG maker ya sabéis de sobra, uno de los principales problemas del maker a la hora de montar eventos es que no tienen variables ni interruptores. Tienen algo llamado como eso pero es prácticamente solo de adorno, puesto que no se le puede dar apenas uso. Eso implica que solo para que un evento no haga lo mismo tras hablar con él varias veces hay que cambiar de mapa entero por otro igual con el evento cambiado, y eso es muy poco rentable para el proyecto.

Es por eso que integré un sistema de interruptores y variables funcional que recicla los que supuestamente lleva el maker por defecto, pero ahora sí funcionales.
Mirad el script para instrucciones, veréis que es muy fácil de usar, y no tenéis que cambiarle nada es plug & play.

Código:
#==============================================================================
# ** [XP] Sistema de Interruptores y Variables
#==============================================================================
# * INTRODUCCIÓN
#
# Como los programadores que usáis el RPG maker ya sabéis de sobra, uno de los
# principales problemas del maker a la hora de montar eventos es que no tienen
# variables ni interruptores. Tienen algo llamado como eso pero es prácticamente
# solo de adorno, puesto que no se le puede dar apenas uso. Eso implica que solo
# para que un evento no haga lo mismo tras hablar con él varias veces hay que
# cambiar de mapa entero por otro igual con el evento cambiado, y eso es muy
# poco rentable para el proyecto.
#
# Es por eso que integré un sistema de interruptores y variables funcional que
# recicla los que supuestamente lleva el maker por defecto, pero ahora sí
# funcionales :)
#------------------------------------------------------------------------------
# Autor: Libre de uso, no me déis créditos por esto pls, es para la comunidad :)
#------------------------------------------------------------------------------
# Cómo usar: Usa muchos Llamar Script y opción Script de Condiciones y Efectos
# así que 'id' con cuidado.
# Nota: Cuando usas opciones por defecto de los interruptores y variables,
# se efectuarán en modo global (global_switch / global_variable), pero no local.
#
# * LLAMAR SCRIPT
# - Para obtener/cambiar los interruptores usad:
#     switches[id]          # Obtiene valor del interruptor 'id' (cambiad id por
#                           # un número o un texto entre comillas
#     switches[id] = value  # Asigna nuevo valor al interruptor, cambiar value
#                           # por el nuevo valor, generalmente será true o false
# - Para obtener/cambiar las variables usad:
#     variables[id]         # Obtiene valor de la variable 'id'
#     variables[id] = value # Asigna nuevo valor a la variable, normalmente un
#                           # número (por defecto 0)
# * CONDICIONES Y EFECTOS - SCRIPT
#   * Obtiene si el interruptor 'id' está activado por el evento actual
#       switch(id)
#   * Obtiene si el interruptor 'id' está activado por algún evento concreto
#       event_switch(id, event_id)
#   * Obtiene si el interruptor 'id' está activado por algún evento del mapa
#       map_switch(id)
#   * Obtiene si el interruptor 'id' está activado por algún evento (en global)
#       global_switch(id)
#
# (lo mismo cambiando 'switch' por 'variable' para las variables)
#
# * LLAMAR SCRIPT (Especiales)
#     reset_global_switch(id)   # Vuelve a reiniciar el interruptor 'id' como si
#                               # nunca se hubiera activado
#     reset_global_variable(id) # Vuelve a reiniciar la variable 'id' como si
#                               # nunca se hubiera activado
#------------------------------------------------------------------------------
# Para + info ver este tutorial:
# Uso extendido de switches/variables - https://youtu.be/Gc2u6AFImn8?t=8
#
# Espero que os sirva :D
#==============================================================================

class RPG_Switches < Hash
  def []=(key, value)
    super(key, value)
    if value == true && key.is_a?(Integer)
      $game_switches[key] = true
    end
  end
end

class RPG_Variables < Hash
  def []=(key, value)
    super(key, value)
    if $game_variables[key] == 0 && key.is_a?(Integer)
      $game_variables[key] = value
    end
  end
end

class Game_Event < Game_Character
  attr_accessor :switches, :variables
  alias n00b_trolling_ini initialize unless $@
  def initialize(*args)
    n00b_trolling_ini(*args)
    @switches = RPG_Switches.new
    @switches.default = false
    @variables = RPG_Variables.new
    @variables.default = 0
  end
end

class Interpreter
  def switches
    $game_map.events[@event_id].switches
  end
  def switch(switch_id)
    $game_map.events[@event_id].switches[switch_id]
  end
  def event_switch(switch_id, event_id)
    $game_map.events[event_id].switches[switch_id]
  end
  def map_switch(switch_id)
    result = false
    for event in $game_map.events
      result |= event.switches[switch_id]
    end
    return result
  end
  def global_switch(switch_id)
    $game_switches[switch_id]
  end
  def reset_global_switch(switch_id)
    $game_switches[switch_id] = false
  end
  def variables
    $game_map.events[@event_id].variables
  end
  def variable(variable_id)
    $game_map.events[@event_id].variables[variable_id]
  end
  def event_variable(variable_id, event_id)
    $game_map.events[event_id].variables[variable_id]
  end
  def map_variable(variable_id)
    result = 0
    for event in $game_map.events
      result += event.variables[variable_id]
    end
    return result
  end
  def global_variable(variable_id)
    $game_variables[variable_id]
  end
  def reset_global_variable(variable_id)
    $game_variables[variable_id] = 0
  end
end

Ojalá os sirva para mejorar muchos vuestros proyectos. Saludos :D


Última edición por Wecoc el 2018-08-25, 18:12, editado 2 veces (Razón : olvide algo)
avatar
Wecoc
Administrador
Administrador



Créditos 12240

Gracias : 639

Volver arriba Ir abajo

Re: [XP] Sistema de Interruptores y Variables

Mensaje por xXIsrael0499Xx el 2018-01-07, 01:20

Aplauses señores, esto se lo merece Aplauso

Esto si que es raro, pero me pondré a verlo detenidamente, aunque se ve que mola, no me esperaba que lo hicieras xD, estos temas en discord al fin están sacando algo bueno xDD.

Pero bueno se te agradece papuh.
avatar
xXIsrael0499Xx
Veterano
Veterano

0/3

Créditos 2047

Gracias : 112

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.