Registrarse

[FR] ¿Como hago para que un script se realice una vez por día?

Estado
Cerrado para nuevas respuestas.

zaux

Usuario mítico
¿Como hago para que un script se realice una vez por día?
Lógicamente tengo el DNS en el rom...
Gracias de antemano!
 

Javi4315

Babyface
Miembro de honor
Tuve hace algún tiempo una charla sobre esto con laflaca. Te cito los mensajes.

Sobre la duda, si usas DNS, en la herramienta te da la información de todo. Los datos estarían en el offset 0x300553C. Los dos primeros bytes son el año, el cuarto el mes y el quinto el día. Yo para que los eventos funcionen una vez al día utilizo dos variables en las que guardo la información de la última vez que se produjo el evento. En una guardo el año y en la otra el día y el mes. Cuando se ejecuta el script, guardo los datos actuales en las variables 0x8000 y 0x8001 y las comparo con las dos donde guardo los datos, si alguna es distinta, es que ya es otro día y, en ese caso, se lleva a cabo el evento y actualizo los valores de las variables; si, por el contrario, son iguales, se entiende que sigue siendo el mismo día.
Me refiero en la ram. En el offset que te he dicho están los datos del año, del día, la hora... Bueno, pues de esos bytes, los dos primeros se corresponden con el año, el cuarto byte se corresponde con el mes y el quinto con el día.

Por ejemplo, hoy, en la Ram pondría (en el offset que te he dicho):

DE 07 00 0B 1D

DE 07 => Año (en realidad sería 07DE, está permutado).
0B => Mes.
1D => Día.

Pues bien guardas el año en la variable 0x8000 y el mes y el día en la 0x8001, de manera que quedaría así:

0x8000 => DE07
0x8001 => 0B1D

Entonces lo compruebas con las variables donde vayas a guardar la información para que no se pierda, imagínate que la 0x4050 y la 0x4051.

Si los valores son iguales, entonces es que es el mismo día y se acabaría el evento (o lo que sea).

Si los valores son distintos, es que es otro día. Entonces se ejecutaría el evento y guardarías el valor de la variable 0x8000 en la variable 0x4050 y la 0x8001 en la 0x4051 para actualizar los datos.
Puedes utilizar el comando copybyte para guardar los datos en las variables directamente a través de la ram. Estos son los offsets de las variables:

0x8000 - 0x20370B8
0x8001 - 0x20370BA

Luego para pasar los datos de estas dos variables a las otras dos variables seguras, puedes hacerlo con el comando copyvar.
No, sería algo así:

Código:
copybyte 0x20370B8 0x300553C
copybyte 0x20370B9 0x300553D 'Con estos dos copybytes guardas el año en la 0x8000
copybyte 0x20370BA 0x300553F
copybyte 0x20370BB 0x3005540 'Con estos dos guardas el mes y el día en la 0x8001
comparevars 0x8000 0x4050 'Compruebas si el año ha cambiado
if 0x5 goto @snippet1 'Si ha cambiado, va a @snippet1
comparevars 0x8001 0x4051 'Compruebas si el día y/o el mes ha cambiado
if 0x5 goto @snippet1 'Si ha cambiado, va a @snippet1
(lo que pasa si ya se ha ejecutado ese día)

#org @snippet1
copyvar 0x4050 0x8000 'Actualiza la información del año
copyvar 0x4051 0x8001 'Actualiza la información del mes y el día
(el evento diario)
Lo he hecho ahora mismo sobre la marcha, creo que no me he equivocado ni falta nada, pero no estoy seguro xD
Mira a ver si esa información te sirve. Si tienes cualquier duda, lo aclaramos ;D
 
Estado
Cerrado para nuevas respuestas.
Arriba