Registrarse

[RPG - Scripting] Como crear una sala que funcione cada 24h ?

Angeluzky

Usuario de platino
Hola a todos e estado pensando como crear una ejemplo : un cuarto derrote 3 pokemon y recibe algo a cambio y q vuelva a funcionar al dia siguiente o cada dos dias saben alguna forma ?
 

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
Hola a todos e estado pensando como crear una ejemplo : un cuarto derrote 3 pokemon y recibe algo a cambio y q vuelva a funcionar al dia siguiente o cada dos dias saben alguna forma ?
easy, guarda en una variable la última vez que lo has “utilizado”.Cuando vayas a haxer lo de nuevo, mira si han pasado 1 o 2 dias desde entonces y reseteas el contador si toca
 

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
gracias aunque soy novato si lo expricaras con imagen seria mas facil xD pero gracias
Por esta vez no pasa nada pero deberías mirar la programación en ruby para al menos tantear estas cosas.

En tu puerta de acceso a dicha sala/mapa, añade una nueva página con una condición con un switch como llamada a método (ej 199) que será la que abra si la condición se da:

1666632228153.png


1666632930180.png

1666632952119.png


Para que te sea más fácil gestionar los días por si quieres cambiar el número, añade una variable mediante comandos > Variables (pag 1 de eventos). Ponle el valor de 2 mediante un evento o el número de días que creas conveniente.

1666633617911.png
1666633636919.png


Ahora tendrás que definir este método. Crea un script encima del Main (abrimos el editor de scripts y encima del main inserta uno nuevo). Lo que vamos a hacer es añadir la última vez que has entrado como variable en PokemonGlobal para que se nos guarde en el propio archivo de guardado y que así dependa de ello y el método que lo comprueba. Necesitarás eliminar el archivo de guarddo actual si es que tienes uno para que haga efecto, o inicializarlo a mano desde algún evento:

Ruby:
DAYS_TO_OPEN_SECRET_DOOR_VARIABLE = 100

class PokemonGlobalMetadata
  attr_accessor :secretDoorLastTime

   def secretDoorLastTime=(value)
    return @secretDoorLastTime = value
  end
 
  def secretDoorLastTime
    return @secretDoorLastTime
  end
end

def pbSetSecretDoorLastTime
    timeNow = pbGetTimeNow
    $PokemonGlobal.secretDoorLastTime = timeNow
end

def pbCanOpenSecretDoor
  lastTime = $PokemonGlobal.secretDoorLastTime
  return lastTime == nil || pbCheckSecretDoorTime(lastTime)
end

def pbCheckSecretDoorTime(lastTime)
  time = pbGetTimeNow
  daysPassed = ((time.day - lastTime.day )/(24.0*60*60))
  return daysPassed > $game_variables[DAYS_TO_OPEN_SECRET_DOOR_VARIABLE]
end

def pbSetSecretDoorMaxDays(value)
  $game_variables[DAYS_TO_OPEN_SECRET_DOOR_VARIABLE] = value
end
Finalmente, antes de hacer el teleport al nuevo mapa (cuando disponible) y siempre que quieras resetear dicho contador, llama a script con el método pbSetSecretDoorLastTime:

1666634193345.png


Y voilá. Para cambiar el número de días, solo modifica la variable.
 

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
Esto te permitirá entrar la primera vez, pero tendrá que esperar más de X días para que puedas volver a entrar. Si lo que quieres es que se pueda entrar siempre pero que sea el evento que te da el objeto el que no te de nada, simplemente pon la condición del script en ese evento.
 
Arriba