scripts_n_asm
Thread Id: 30155
Thread Name: GBA | Scripting | "Climas Dinámicos" [Ahora también influye la estación]
#0
Dani_SR_17 28493


Climas Dinámicos


Saludos Hackers de GBA, hoy traigo un nuevo script que como siempre es de libre uso con créditos, el script en cuestión es bastante sencillito, pero te permite tener mapas con climas dinámicos.

No veo necesario añadir imágenes, ni un vídeo que muestre el script porque espero que el script sea bastante claro, aun así no descarto subir un vídeo en un futuro.

Requisitos:



El script debéis insertarlo como un script de nivel 05. Recomiendo este >>Manual<< de Javi

También como he dicho, debeís tener insertado el >>DNS<<, mas concrétamente la rutina de esta herramienta del "RTC".


Voy a poner 2 versiones del script.





Versión simple

Como su propio nombre indica, es la versión más simple del script, esta forma simplemente guardará la última hora a la que entraste al mapa en una variable y el clima que hacía en otra, al volver a entrar comprobará si la hora a cambiado y en tal caso volverá a recalcular el clima.

Script Clima Dinámico Sencillo - Dani_SR_17

#dynamic 0x800000

' Este es un script para crear un clima dinámico en los mapas.
' Se necesitará una variable dinámica (solo 1 para todos los mapas, no 1 por cada mapa) y dos variable para cada mapa.
' En la variable 1 de cada mapa, se almacenará la última hora en la que entraste al mapa, si entrás a las 3pm, y después a las 4pm el clima podrá cambiar.
' En la variable 2 de cada mapa, se almacenará el clima que hacía en la última hora en la que entraste, en caso de que siga siendo la misma hora.

#org @start
copybyte 0x20370D0 0x3005542 'Vamos a revisar si ha cambiado la hora o no.
comparevars LASTRESULT 0x(Variable 1)
if 0x1 goto @Nada 'Si es la misma hora que la última vez que el script se ejecuto, no pasa nada.
goto [MENTION=26827]Camb[/MENTION]ioDeClima

#org @Nada 'Sigue el clima anterior
compare 0x(Variable 2) 0x0
if 0x1 goto @Sol
compare 0x(Variable 2) 0x1
if 0x1 goto @Nublado
compare 0x(Variable 2) 0x2
if 0x1 goto @Llueve

#org [MENTION=26827]Camb[/MENTION]ioDeClima
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.

#org @Sol
setvar 0x(Variable 2) 0x0
setweather 0x0
nop
doweather
end

#org @Nublado
setvar 0x(Variable 2) 0x1
setweather 0x0B
nop
doweather
end

#org @Llueve
setvar 0x(Variable 2) 0x2
setweather 0x3
nop
doweather
end




Versión compleja

Esta versión, funciona como la anterior, solo que esta tiene más factores a tener en cuenta y además usa las mismas variables.
La particularidad de esta versión, es que en función del clima anterior en el mapa variarán los % de futuros climas, traducio, que si a las 3pm hay tormenta es muy poco probable que a las 4pm haga un sol bestial.

Script Clima Dinámico Complejo - Dani_SR_17

#dynamic 0x800000

' Este es un script para crear un clima dinámico en los mapas.
' Se necesitará una variable dinámica (1 para todos los mapas, no 1 por cada mapa) y dos variable para cada mapa.
' En la variable 1 de cada mapa, se almacenará la última hora en la que entraste al mapa, si entrás a las 3pm, y después a las 4pm, el clima podrá cambiar.
' En la variable 2 de cada mapa, se almacenará el clima que hacía en la última hora en la que entraste, en caso de que siga siendo la misma hora.

' Esta es una versión un poco más compleja del script, según el clima anterior variarán los % de los siguientes climas.

#org @start
copybyte 0x20370D0 0x3005542 'Vamos a revisar si ha cambiado la hora o no.
comparevars LASTRESULT 0x(Variable 1)
if 0x1 goto @Nada
goto [MENTION=26827]Camb[/MENTION]ioDeClima

#org @Nada 'Sigue el clima anterior
compare 0x(Variable 2) 0x0
if 0x1 goto @Sol
compare 0x(Variable 2) 0x1
if 0x1 goto @Nublado
compare 0x(Variable 2) 0x2
if 0x1 goto @Llueve


#org [MENTION=26827]Camb[/MENTION]ioDeClima 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSol
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNublado
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueve


#org @TeniamosSol
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNublado
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueve
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.



#org @Sol
setvar 0x(Variable 2) 0x0
setweather 0x0
nop
doweather
end

#org @Nublado
setvar 0x(Variable 2) 0x1
setweather 0x0B
nop
doweather
end

#org @Llueve
setvar 0x(Variable 2) 0x2
setweather 0x3
nop
doweather
end



Actualización del post
Sistema de Estaciones añadido

Como dije, he mejorado los scripts, ahora son compatibles con las Estaciones del DNS, evidentemente, requiere tener insertada la rutina de las Estaciones de DNS.

Para entender mejor el script recomiendo leer este >>tutorial<< de [MENTION=13374]Javi4315♪[/MENTION]



Tengo que aclarar, que como podréis ver, hay 3 scripts, el primero como explico más abajo es opcional.

También, si veis que los climas son los mismos para todas las estaciones, aunque tengo notas en los scripts que explican el motivo, lo aclaro aquí, como es una base y vais a cambiar lo % y los climas seguramente, he puesto los que ya tenia más que nada porque si los vais a cambiar es inútil pegarme el curo de cambiarlos.



Script cambio de Estación

Ahora tengo que explicar una cosa, este fragmento, debéis insertarlo en el script solo si queréis que al cambiar de estación el cambio de clima pueda ser brusco, me explico, si no lo ponéis y el último día de Otoño tenéis Sol, al comenzar el Invierno tendréis Sol (en principio), mientras que si lo ponéis es más probable de que cambie.

Script cambio de Estación - Dani_SR_17

' Este script es por si lo queréis añadir al del clima con estaciones, aahora explico como añadirlo.

' Lo primero, necesitamos una 3º Variable, en este caso solo 1 para todos los mapas, voy a llamarla (Variable 3)
' Después, en cada "@(Estación)", por ejemplo, @Verano, debéis poner un "setvar 0x(Variable 3) 0x(Nº Estación)", los Nº de las estaciones son: Verano -> 0, Otoño -> 1, Invierno -> 2, Primavera -> 3.
' Y ahora, debéis añadir esto, nada más comenzar, antes del "@Start".

#org @MirarEstación
copybyte 0x20370D0 0x203C001
comparevars LASTRESULT 0x(Variable 3) 'Vamos a ver si estamos en la misma estación.
if 0x1 goto @Start 'Si lo estamos, el script del clima comienza normalmente, mirando si ha cambiado la hora y tal.
goto @Estaciones 'Si es una nueva estación, pasamos directamente a ver en que estacción estamos, para un nuevo clima.




Versión simple con Estaciones

Ahora le toca a la versión simple del script, pero con la influencia de las estaciones.

Script Clima Dinámico Sencillo con Estaciones - Dani_SR_17

#dynamic 0x800000

' Este es un script para crear un clima dinámico en los mapas.
' Se necesitará una variable dinámica (solo 1 para todos los mapas, no 1 por cada mapa) y dos variable para cada mapa.
' En la variable 1 de cada mapa, se almacenará la última hora en la que entraste al mapa, si entrás a las 3pm, y después a las 4pm el clima podrá cambiar.
' En la variable 2 de cada mapa, se almacenará el clima que hacía en la última hora en la que entraste, en caso de que siga siendo la misma hora.

' Esta es una versión mejorada del script sencillo, compatible con las estaciones del DNS.
' Voy a poner las 4 estaciones con los mismos climas, porque es algo muy personal lo que queráis poner, así que los % y los climas los ponéis vosotros.
' ¿Por qué no guardo la estación en una Variable? Pues muy sencillo, se puede hacer que si se cambia de estación (lo pondré a parte aun así), cambié el clima, pero es gastar una variable más para algo que no es necesario, porque aunque se cambié de estación de golpe el clima no tiene por qué cambiar.

#org @Start
copybyte 0x20370D0 0x3005542 'Vamos a revisar si ha cambiado la hora o no.
comparevars LASTRESULT 0x(Variable 1)
if 0x1 goto @Nada 'Si es la misma hora que la última vez que el script se ejecuto, no pasa nada.
goto @Estaciones

#org @Nada 'Sigue el clima anterior
compare 0x(Variable 2) 0x0
if 0x1 goto @Sol
compare 0x(Variable 2) 0x1
if 0x1 goto @Nublado
compare 0x(Variable 2) 0x2
if 0x1 goto @Llueve

#org @Estaciones
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x0 'Si estamos en Verano.
if 0x1 goto @Verano
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x1 'Si estamos en Otoño.
if 0x1 goto @Otoño
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x2 'Si estamos en Primavera.
if 0x1 goto @Invierno
goto @Primavera 'Aquí nos ahorramos la comparación, porque si lleguamos aquí es porque es Primavera.


' Ahora solo debemos hacer el script para cada estación, en este caso como es un script "base", no voy a ponerme a cambiar climas ni nada, de eso ya os encargais vosotros.


'--------------------------------- Verano ---------------------------------

#org @Verano
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Otoño ---------------------------------

#org @Otoño
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Invierno ---------------------------------

#org @Invierno
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Primavera ---------------------------------

#org @Primavera
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Los climas ---------------------------------

' No hace falta poner los climas en cada estación, como con ellos acaba el script se pueden poner al final.

#org @Sol
setvar 0x(Variable 2) 0x0
setweather 0x0
nop
doweather
end

#org @Nublado
setvar 0x(Variable 2) 0x1
setweather 0x0B
nop
doweather
end

#org @Llueve
setvar 0x(Variable 2) 0x2
setweather 0x3
nop
doweather
end




Versión compleja con Estaciones

Versión compleja del script, pero con la influencia de las estaciones.

Script Clima Dinámico Complejo con Estaciones - Dani_SR_17

#dynamic 0x800000

' Este es un script para crear un clima dinámico en los mapas.
' Se necesitará una variable dinámica (1 para todos los mapas, no 1 por cada mapa) y dos variable para cada mapa.
' En la variable 1 de cada mapa, se almacenará la última hora en la que entraste al mapa, si entrás a las 3pm, y después a las 4pm, el clima podrá cambiar.
' En la variable 2 de cada mapa, se almacenará el clima que hacía en la última hora en la que entraste, en caso de que siga siendo la misma hora.

' Esta es una versión un poco más compleja del script, según el clima anterior variarán los % de los siguientes climas.

' Esta es una versión mejorada del script complejo, compatible con las estaciones del DNS.
' Voy a poner las 4 estaciones con los mismos climas, porque es algo muy personal lo que queráis poner, así que los % y los climas los ponéis vosotros.
' ¿Por qué no guardo la estación en una Variable? Pues muy sencillo, se puede hacer que si se cambia de estación (lo pondré a parte aun así), cambié el clima, pero es gastar una variable más para algo que no es necesario, porque aunque se cambié de estación de golpe el clima no tiene por qué cambiar.

#org @start
copybyte 0x20370D0 0x3005542 'Vamos a revisar si ha cambiado la hora o no.
comparevars LASTRESULT 0x(Variable 1)
if 0x1 goto @Nada
goto @Estaciones

#org @Nada 'Sigue el clima anterior
compare 0x(Variable 2) 0x0
if 0x1 goto @Sol
compare 0x(Variable 2) 0x1
if 0x1 goto @Nublado
compare 0x(Variable 2) 0x2
if 0x1 goto @Llueve

#org @Estaciones
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x0 'Si estamos en Verano.
if 0x1 goto @Verano
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x1 'Si estamos en Otoño.
if 0x1 goto @Otoño
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x2 'Si estamos en Primavera.
if 0x1 goto @Invierno
goto @Primavera 'Aquí nos ahorramos la comparación, porque si lleguamos aquí es porque es Primavera.


' Ahora solo debemos hacer el script para cada estación, en este caso como es un script "base", no voy a ponerme a cambiar climas ni nada, de eso ya os encargais vosotros.
' Si os vijais, en cada zona, hay por ejemplo: "@TeniamosSol_", acabado en una letra, cada letra es la inicial de la estación que corresponde, por una razón muy sencilla, si en Verano tenemos Sol, es menos probable que llueva que si en Invierno tenemos Sol.


'--------------------------------- Verano ---------------------------------


#org @Verano 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolV
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoV
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveV


#org @TeniamosSolV
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoV
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveV
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Otoño ---------------------------------


#org @Otoño 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolO
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoO
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveO


#org @TeniamosSolO
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoO
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveO
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Invierno ---------------------------------


#org @Invierno 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolI
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoI
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveI


#org @TeniamosSolI
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoI
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveI
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Primavera ---------------------------------


#org @Primavera 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolP
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoP
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveP


#org @TeniamosSolP
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoP
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveP
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Los climas ---------------------------------

' No hace falta poner los climas en cada estación, como con ellos acaba el script se pueden poner al final.

#org @Sol
setvar 0x(Variable 2) 0x0
setweather 0x0
nop
doweather
end

#org @Nublado
setvar 0x(Variable 2) 0x1
setweather 0x0B
nop
doweather
end

#org @Llueve
setvar 0x(Variable 2) 0x2
setweather 0x3
nop
doweather
end





:blush: Espero que os guste esta actualización, aunque no muchos usen las estaciones, pero bueno, puede ser útil para los que las usen. :blush:
#1
Tito Dafting301_4315♪ Kuchiki 24341
Canela en rama, qué más decir?

Excelente, excelente. Muero por aplicarlo primero en mi hack.
#2
Flame4315♪ 28899
Iniciado por Dafting
Canela en rama, qué más decir?

Excelente, excelente. Muero por aplicarlo primero en mi hack.


El primero no vas a ser jeje ;)

Eres muy grande Dani!!! Muchas gracias por ayudarme con esto y además compartirlo al foro. Me voy a poner ahora mismo a ello :blush:
#3
BLAx/Atlas 26580
Me parece una idea fenomenal. Es algo que no es demasiado difícil de hacer, pero si es un coñazo redactarlo entero, así que chapó por el aporte, sigue así perro ;)
#4
Tito Sayer301 26309
ouh fuck yeah, y es que esto demuestra la clase, unos haciendo consultorios inútiles y otros haciendo aportazos al foro!!!

Fuck yeah! voy a ver si lo pruebo o que, que todavia no tenia muy claro el tema de los climas en mi hack y la verdad que puede ser de gran ayuda.

Muy grande dani!
#5
Dani_SR_17 28493
Actualización del post
Sistema de Estaciones añadido

Como dije, he mejorado los scripts, ahora son compatibles con las Estaciones del DNS, evidentemente, requiere tener insertada la rutina de las Estaciones de DNS.

Para entender mejor el script recomiendo leer este >>tutorial<< de [MENTION=13374]Javi4315♪[/MENTION]



Tengo que aclarar, que como podréis ver, hay 3 scripts, el primero como explico más abajo es opcional.

También, si veis que los climas son los mismos para todas las estaciones, aunque tengo notas en los scripts que explican el motivo, lo aclaro aquí, como es una base y vais a cambiar lo % y los climas seguramente, he puesto los que ya tenia más que nada porque si los vais a cambiar es inútil pegarme el curo de cambiarlos.



Script cambio de Estación

Ahora tengo que explicar una cosa, este fragmento, debéis insertarlo en el script solo si queréis que al cambiar de estación el cambio de clima pueda ser brusco, me explico, si no lo ponéis y el último día de Otoño tenéis Sol, al comenzar el Invierno tendréis Sol (en principio), mientras que si lo ponéis es más probable de que cambie.

Script cambio de Estación - Dani_SR_17

' Este script es por si lo queréis añadir al del clima con estaciones, aahora explico como añadirlo.

' Lo primero, necesitamos una 3º Variable, en este caso solo 1 para todos los mapas, voy a llamarla (Variable 3)
' Después, en cada "@(Estación)", por ejemplo, @Verano, debéis poner un "setvar 0x(Variable 3) 0x(Nº Estación)", los Nº de las estaciones son: Verano -> 0, Otoño -> 1, Invierno -> 2, Primavera -> 3.
' Y ahora, debéis añadir esto, nada más comenzar, antes del "@Start".

#org @MirarEstación
copybyte 0x20370D0 0x203C001
comparevars LASTRESULT 0x(Variable 3) 'Vamos a ver si estamos en la misma estación.
if 0x1 goto @Start 'Si lo estamos, el script del clima comienza normalmente, mirando si ha cambiado la hora y tal.
goto @Estaciones 'Si es una nueva estación, pasamos directamente a ver en que estacción estamos, para un nuevo clima.




Versión simple con Estaciones

Ahora le toca a la versión simple del script, pero con la influencia de las estaciones.

Script Clima Dinámico Sencillo con Estaciones - Dani_SR_17

#dynamic 0x800000

' Este es un script para crear un clima dinámico en los mapas.
' Se necesitará una variable dinámica (solo 1 para todos los mapas, no 1 por cada mapa) y dos variable para cada mapa.
' En la variable 1 de cada mapa, se almacenará la última hora en la que entraste al mapa, si entrás a las 3pm, y después a las 4pm el clima podrá cambiar.
' En la variable 2 de cada mapa, se almacenará el clima que hacía en la última hora en la que entraste, en caso de que siga siendo la misma hora.

' Esta es una versión mejorada del script sencillo, compatible con las estaciones del DNS.
' Voy a poner las 4 estaciones con los mismos climas, porque es algo muy personal lo que queráis poner, así que los % y los climas los ponéis vosotros.
' ¿Por qué no guardo la estación en una Variable? Pues muy sencillo, se puede hacer que si se cambia de estación (lo pondré a parte aun así), cambié el clima, pero es gastar una variable más para algo que no es necesario, porque aunque se cambié de estación de golpe el clima no tiene por qué cambiar.

#org @Start
copybyte 0x20370D0 0x3005542 'Vamos a revisar si ha cambiado la hora o no.
comparevars LASTRESULT 0x(Variable 1)
if 0x1 goto @Nada 'Si es la misma hora que la última vez que el script se ejecuto, no pasa nada.
goto @Estaciones

#org @Nada 'Sigue el clima anterior
compare 0x(Variable 2) 0x0
if 0x1 goto @Sol
compare 0x(Variable 2) 0x1
if 0x1 goto @Nublado
compare 0x(Variable 2) 0x2
if 0x1 goto @Llueve

#org @Estaciones
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x0 'Si estamos en Verano.
if 0x1 goto @Verano
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x1 'Si estamos en Otoño.
if 0x1 goto @Otoño
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x2 'Si estamos en Primavera.
if 0x1 goto @Invierno
goto @Primavera 'Aquí nos ahorramos la comparación, porque si lleguamos aquí es porque es Primavera.


' Ahora solo debemos hacer el script para cada estación, en este caso como es un script "base", no voy a ponerme a cambiar climas ni nada, de eso ya os encargais vosotros.


'--------------------------------- Verano ---------------------------------

#org @Verano
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Otoño ---------------------------------

#org @Otoño
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Invierno ---------------------------------

#org @Invierno
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Primavera ---------------------------------

#org @Primavera
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Sol 'Tienes un 60% de tener Sol.
compare 0x(Variable dinámica) 0x9
if 0x0 goto @Nublado 'Tienes un 30% de tener Nublado
goto @Llueve 'Tienes un 10% de tener Lluvia.


'--------------------------------- Los climas ---------------------------------

' No hace falta poner los climas en cada estación, como con ellos acaba el script se pueden poner al final.

#org @Sol
setvar 0x(Variable 2) 0x0
setweather 0x0
nop
doweather
end

#org @Nublado
setvar 0x(Variable 2) 0x1
setweather 0x0B
nop
doweather
end

#org @Llueve
setvar 0x(Variable 2) 0x2
setweather 0x3
nop
doweather
end




Versión compleja con Estaciones

Versión compleja del script, pero con la influencia de las estaciones.

Script Clima Dinámico Complejo con Estaciones - Dani_SR_17

#dynamic 0x800000

' Este es un script para crear un clima dinámico en los mapas.
' Se necesitará una variable dinámica (1 para todos los mapas, no 1 por cada mapa) y dos variable para cada mapa.
' En la variable 1 de cada mapa, se almacenará la última hora en la que entraste al mapa, si entrás a las 3pm, y después a las 4pm, el clima podrá cambiar.
' En la variable 2 de cada mapa, se almacenará el clima que hacía en la última hora en la que entraste, en caso de que siga siendo la misma hora.

' Esta es una versión un poco más compleja del script, según el clima anterior variarán los % de los siguientes climas.

' Esta es una versión mejorada del script complejo, compatible con las estaciones del DNS.
' Voy a poner las 4 estaciones con los mismos climas, porque es algo muy personal lo que queráis poner, así que los % y los climas los ponéis vosotros.
' ¿Por qué no guardo la estación en una Variable? Pues muy sencillo, se puede hacer que si se cambia de estación (lo pondré a parte aun así), cambié el clima, pero es gastar una variable más para algo que no es necesario, porque aunque se cambié de estación de golpe el clima no tiene por qué cambiar.

#org @start
copybyte 0x20370D0 0x3005542 'Vamos a revisar si ha cambiado la hora o no.
comparevars LASTRESULT 0x(Variable 1)
if 0x1 goto @Nada
goto @Estaciones

#org @Nada 'Sigue el clima anterior
compare 0x(Variable 2) 0x0
if 0x1 goto @Sol
compare 0x(Variable 2) 0x1
if 0x1 goto @Nublado
compare 0x(Variable 2) 0x2
if 0x1 goto @Llueve

#org @Estaciones
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x0 'Si estamos en Verano.
if 0x1 goto @Verano
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x1 'Si estamos en Otoño.
if 0x1 goto @Otoño
copybyte 0x20370D0 0x203C001
compare LASTRESULT 0x2 'Si estamos en Primavera.
if 0x1 goto @Invierno
goto @Primavera 'Aquí nos ahorramos la comparación, porque si lleguamos aquí es porque es Primavera.


' Ahora solo debemos hacer el script para cada estación, en este caso como es un script "base", no voy a ponerme a cambiar climas ni nada, de eso ya os encargais vosotros.
' Si os vijais, en cada zona, hay por ejemplo: "@TeniamosSol_", acabado en una letra, cada letra es la inicial de la estación que corresponde, por una razón muy sencilla, si en Verano tenemos Sol, es menos probable que llueva que si en Invierno tenemos Sol.


'--------------------------------- Verano ---------------------------------


#org @Verano 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolV
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoV
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveV


#org @TeniamosSolV
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoV
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveV
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Otoño ---------------------------------


#org @Otoño 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolO
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoO
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveO


#org @TeniamosSolO
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoO
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveO
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Invierno ---------------------------------


#org @Invierno 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolI
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoI
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveI


#org @TeniamosSolI
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoI
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveI
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Primavera ---------------------------------


#org @Primavera 'En este caso, el script es más complejo, según el clima de la hora anterior, variarán los % para horas siguientes.
copybyte 0x20370D0 0x3005542
copyvar 0x(Variable 1) LASTRESULT 'Vamos a guardar la nueva hora
compare 0x(Variable 2) 0x0
if 0x1 goto @TeniamosSolP
compare 0x(Variable 2) 0x1
if 0x1 goto @TeniamosNubladoP
compare 0x(Variable 2) 0x2
if 0x1 goto @TeniamosLlueveP


#org @TeniamosSolP
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x8
if 0x0 goto @Sol 'Tienes un 80% de tener Sol.
goto @Nublado 'Tienes un 20% de tener Nublado

#org @TeniamosNubladoP
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x3
if 0x0 goto @Sol 'Tienes un 30% de tener Sol.
compare 0x(Variable dinámica) 0x7
if 0x0 goto @Nublado 'Tienes un 40% de tener Nublado.
goto @Llueve 'Tienes un 30% de tener Llueve.

#org @TeniamosLlueveP
random 0x10
copyvar 0x(Variable dinámica) LASTRESULT
compare 0x(Variable dinámica) 0x6
if 0x0 goto @Llueve 'Tienes un 60% de tener Llueve.
goto @Nublado 'Tienes un 40% de tener Nublado.


'--------------------------------- Los climas ---------------------------------

' No hace falta poner los climas en cada estación, como con ellos acaba el script se pueden poner al final.

#org @Sol
setvar 0x(Variable 2) 0x0
setweather 0x0
nop
doweather
end

#org @Nublado
setvar 0x(Variable 2) 0x1
setweather 0x0B
nop
doweather
end

#org @Llueve
setvar 0x(Variable 2) 0x2
setweather 0x3
nop
doweather
end




Espero que os guste esta actualización, aunque no muchos usen las estaciones, pero bueno, puede ser útil para los que las usen.