FANDOM


Esta página explica sobre los eventos dependientes del tiempo. Estos son eventos que están disponible solo durante un determinado periodo de tiempo (por ejemplo, un PNJ que aparece solamente los Viernes), o se restablecen a sí mismos cada cierto tiempo (por ejemplo, la medianoche en cada día), o que tienen un determinado retraso despues de ser usado (por ejemplo, una espera de 24 horas).

Interruptores de script Editar

Página principal en Eventos

Todos los eventos dependientes del tiempo necesitarán distinguir el momento de activar sus efectos especiales, y cuándo no hacerlo. Se puede hacer esto usando Interruptores Globales (vea la página principal para obtener más información).

Ya que en esta página se describen los eventos dependientes del tiempo, se usarán los Interruptor Globales que dependen de la hora/día/etc. Por supuesto, se pueden crear más interruptores para cubrir periodos de tiempo específicos según el comportamiento que se quiera en los eventos.

Solo por periodo de tiempo Editar

Estos eventos estarán activos solamente durante un periodo de tiempo determinado (por ejemplo, sólo entre las 6pm y 8 pm de cada día, o sólo los Viernes).

Los usos más comunes para este tipo de eventos son:

  • Un encuentro fijo que solo puede ser disparado durante la noche.
  • Un PNJ que aparezca solamente en cierto día de la semana.
  • Un entrenador que pelea solamente por la noche.
  • Un descuento en objetos que está disponible solamente un determinado periodo de tiempo.

Los eventos como éstos deberían ser configurados de la siguiente manera:

  • Página 1 - Define cómo se comportará el evento durante la mayor parte del tiempo. Puede estar en blanco, o ser un PNJ que tenga un diálogo simple, lo que sea apropiado.
  • Página 2 - Define cómo se comportará el evento durante el periodo de tiempo especial (por ejemplo, el NPJ desafía al jugador a una batalla). Esta página dependerá de uno o más interruptores de script (ver abajo).
  • Otras páginas adicionales - Define el comportamiento del evento en algún otro periodo de tiempo en particular, o una página secundaria para "el diálogo con el PNJ atras derrotarlo", etc.

Contador de tiempo Editar

Una vez disparado, estos eventos comenzarán a contar el tiempo, y no tendrán habilitada la interacción primaria nuevamente hasta que haya pasado una cantidad de tiempo determinada (por ejemplo, 24 horas). Si se interactúa con el evento mientras está contando el tiempo, pueden ocurrir una cadena de eventos diferente (por ejemplo, un mensaje que diga "Lo siento. Regresa mañana...").

Los usos más comunes de estos eventos temporizados son:

  • Un PNJ que entrega un regalo cada 24 horas.
  • Una lotería que se puede jugar una sola vez cada 24 horas.
  • Un árbol de bayas o bonguris que madure cada 24 horas.
  • Un árbol donde se pueda usar Golpe Cabeza, pero que sólo produce un encuentro tras dejalo solo durante un hora.
  • Un interruptor que abrirá una puerta solamente durante una cierta cantidad de tiempo.
  • Un encuentro con un Pokémon fijo que ocurre una vez cada 24 horas.

Página de evento 1 Editar

Headbutt1

Página 1 de un evento con temporizador.

La primera página de evento define la interacción primaria, y algo en esta interacción iniciará el temporizador del evento. Para hacer que el evento comience a contar el tiempo, se llama al siguiente método:

pbSetEventTime

Este método asigna a la variable personal de ese evento la hora actual, y también activa el Interruptor Local A del mismo. Una vez que se usa este método, el procesamiento del evento debería terminar.

Se puede utilizar el método anterior para afectar a varios eventos al mismo tiempo (por ejemplo, un interruptor que activa una puerta por un tiempo). Para hacer esto, simplemente se agrega el ID de esos eventos como argumentos. Por ejemplo:

pbSetEventTime(2,3)

Este ejemplo asignará la hora actual a la variable personal de ese evento y activará su Interruptor Local A; y hará lo mismo para el evento 2 y 3 del mismo mapa. Tenga en cuenta que este método solamente puede afectar a los eventos del mismo mapa.

Página de evento 2 Editar

Headbutt2

Página 2 de un evento con temporizador.

La segunda página del evento define el comportamiento "intermedio", que es lo que sucede cuando el jugador interactúa con el evento mientras está contando el tiempo. Simplemente suele usarse un mensaje diciendo "Vuelve mañana." o algo similar.

Esta página debe tener como condición que esté activo el Interruptor Local A.

Página de evento 3 Editar

Headbutt3

Página 3 de un evento con temporizador.

La tercera página del evento verifica si ha pasado la cantidad de tiempo esperada. La verificación se realiza automáticamente cada vez que el jugador ingresa al mapa donde está el evento, pero no lo hace mientras el jugador permanezca sobre el mapa. Debe salir y volver a entrar para reiniciar el evento.

Esta página debe estar condicionado por la activación del Interruptor Local A (como en la segunda página), también debe tener el disparador de Inicio automático, y debe tener la condición de un Interruptor Global (por ejemplo, 23: s:cooledDown?(86400)) activado.

El contenido de la página es el siguiente:

@>Control Interruptol local : A =OFF
@>Script: setTempSwitchOn("A")
@>

Esta página contiene solamente dos líneas, y deben estar las dos.

El Interruptor Local usado en una de las condiciones de esta página determina la cantidad de tiempo que esperará el evento. Suele ser un script de la siguiente forma:

s:cooledDown?(86400)

El número es la duración del tiempo en segundos (86400 segundos = 24 horas). Se pueden crear interruptores de script personalizados con distintos periodos de tiempo.

Reinicio a medianoche Editar

Este tipo de evento es similar al anterior, salvo que cuenta días en lugar de segundos. Más precisamente, cuenta la cantidad de medianoches que han pasado entre usos. Esto es, si el evento es creado para contar 1 dia, podría suceder que el jugador interactúe con el evento justo antes de medianoche, se reinicie a la medianoche, y el jugador vuelva a interactuar con él de forma adecuando en los dos casos.

Los usos más comunes de estos eventos de tiempo son:

  • Un PNJ que entrega un regalo cada 24 horas.
  • Una lotería que se puede jugar una sola vez cada 24 horas.
  • Un dispositivo misterioso que se activa a medianoche.
  • Un puzzle que se reinicia o cambia a la medianoche.

El diseño de las páginas del evento es el mismo que ya se explicó para los eventos temporizados. La única diferencia está en el Interruptor Global usado como condición en la página 3. El interruptor que se deberá usar es uno de script como el siguiente:

s:expiredDays?(1)&&tsOff?("A")

El número es la cantidad de días que se debe esperar entre interacciones regulares (es decir, la cantidad de medianoches que deben pasar). El 1 significa que se puede usar una vez al día (a cualquier hora), 2 significa cada dos días, etc.

Reinicio a otra hora Editar

Este tipo de evento es el mismo que el anterior, con la diferencia que la hora de reinicio no será la medianoche sino cualquier otro momento (por ejemplo, a las 4 pm). Para crear este tipo de evento, se comienza por crear un evento temporizado (no un evento de reinicio a medianoche).

Este evento calculará la cantidad de segundos entre la hora actual y la hora de reinicio siguiente. El resultado se guardará en una Variable Global usada específicamente para este propósito (número 42 en el ejemplo). Cada evento o juego de eventos necesitarán su propia Variable Global.

La página 3 del evento deberá tener un Interruptor Global nuevo en sus condiciones. El Interruptor Global deberá tener el siguiente nombre:

s:cooledDown?(pbGet(42))

El número es el de la Variable Global que se explicó anteriormente. Cada evento o juego de eventos necesitará su propio Interruptor Global cuyo número es el de su Variable Global.

La otra modificación al evento será en la página 1, donde aparece pbSetEventTime. Además de esa línea de código, se deberá agregar lo siguiente:

checkpoint=16; number=1
t=0; tnow=pbGetTimeNow
t+=(checkpoint-tnow.hour-1)*3600
t+=3600-tnow.min*60-tnow.sec
t+=24*3600 if tnow.hour>=checkpoint
t+=24*3600*(number-1)
pbSet(42,t)

Los dos números resaltados son las únicas cosas que se necesitarán cambiar para los demás eventos de este tipo. El primero es la hora a la que se quiere realizar el reinicio (en este ejemplo se calcula para las 4 pm), y el segundo es la cantidad de veces que pasará por esa hora para que el evento de reinicie (1 significa cada día, 2 significa cada dos días, etc.).

Este código permitirá crear puntos de verificaciones a una determinada hora, pero debería ser suficiente para la mayoría de los usuarios de Essentials.