(Script) Clima Automatico V 2.0 (by MidnightMoon)
TallerGamer :: RECURSOS :: RPG MAKER XP
Página 1 de 1.
(Script) Clima Automatico V 2.0 (by MidnightMoon)
Descripcion:
Permite modificar el Clima de los mapas, poner efectos de manera muy sencilla.
Permite poner el clima desde el script solo poniendo el ID del mapa.
Permite llamar el script desde un evento.
Tiene climas de Normal, Soleado, Nublado, Soleado con Nubes, Lluvia, Lluvia con Truenos, Tormenta, Nevando, Tormenta de Nieve y Clima Aleatorio con posibilidades de Lluvia
El clima aleatorio con posibilidades de lluvia, indica que puede ser soleado, normal o lloviendo y a un respectivo tiempo definido en un rango aleatorio cambiarlo, pudiendo intensificar la lluvia, dejar de llover, etc.
Si se configura un mapa como Casa al entrar en ella se pausan los efectos y al salir se vuelve a poner el clima que estaba independientemente del clima que este configurado en el script. (Aqui detecte un pequeño bug que tengo que corregir; cuando esta clima aleatorio y sales de una casa se tarda un par de segundos en volver a poner el clima)
Basicamente usa los elementos por default del RTP, pero extra se añade un Fog y una Picture, para ver mejor descargar el Demo.
Creo que los archivos ya guardados no serviran al incluir este script; no estoy seguro de esto. Ya que como dije unas cosas las base del Script de Falcao y una de esas fue como configura al empezar un juego, al guardar y al cargar. Y si no mal me equivoco a mi me sucedio esto con su script.
Registro de Cambios:
Version 2.0
Cambio principalmente interno que da mejor rendimiento en el script.
Se permite dar de alta climas segun como se desee, seguir de ejemplo los climas ya mostrados.
Se sustituyo el clima aleatorio por secuencias, las secuencias se pueden definir cada uno, en la siguiente variable: MapISequence = {} De ejemplo viene una y en la informacion viene como dar de alta las secuencias.
Si se da de alta una secuencia o un clima se debe de dar de alta en su respectivo variable (MapISequences y MapIMaps) el nombre de la variable con un arreglo vacio, para poder poner en el arreglo el ID del mapa y el clima sea automatico.
Imagenes:
Permite modificar el Clima de los mapas, poner efectos de manera muy sencilla.
Permite poner el clima desde el script solo poniendo el ID del mapa.
Permite llamar el script desde un evento.
Tiene climas de Normal, Soleado, Nublado, Soleado con Nubes, Lluvia, Lluvia con Truenos, Tormenta, Nevando, Tormenta de Nieve y Clima Aleatorio con posibilidades de Lluvia
El clima aleatorio con posibilidades de lluvia, indica que puede ser soleado, normal o lloviendo y a un respectivo tiempo definido en un rango aleatorio cambiarlo, pudiendo intensificar la lluvia, dejar de llover, etc.
Si se configura un mapa como Casa al entrar en ella se pausan los efectos y al salir se vuelve a poner el clima que estaba independientemente del clima que este configurado en el script. (Aqui detecte un pequeño bug que tengo que corregir; cuando esta clima aleatorio y sales de una casa se tarda un par de segundos en volver a poner el clima)
Basicamente usa los elementos por default del RTP, pero extra se añade un Fog y una Picture, para ver mejor descargar el Demo.
Creo que los archivos ya guardados no serviran al incluir este script; no estoy seguro de esto. Ya que como dije unas cosas las base del Script de Falcao y una de esas fue como configura al empezar un juego, al guardar y al cargar. Y si no mal me equivoco a mi me sucedio esto con su script.
Registro de Cambios:
Version 2.0
Cambio principalmente interno que da mejor rendimiento en el script.
Se permite dar de alta climas segun como se desee, seguir de ejemplo los climas ya mostrados.
Se sustituyo el clima aleatorio por secuencias, las secuencias se pueden definir cada uno, en la siguiente variable: MapISequence = {} De ejemplo viene una y en la informacion viene como dar de alta las secuencias.
Si se da de alta una secuencia o un clima se debe de dar de alta en su respectivo variable (MapISequences y MapIMaps) el nombre de la variable con un arreglo vacio, para poder poner en el arreglo el ID del mapa y el clima sea automatico.
- Código:
#======================================================================#
# Script de Control de Clima Automatico V 2.0 #
# ****** By Midnight Mooon ****** #
# ****** Basado en el Script de Control de Clima V 1.1 ****** #
# ****** Originalmente Realizado por Falcao ****** #
# Descripcion: Script para RPG Maker XP, que controla el clima #
# Con sencillos comandos, y para mas facilidad se puede #
# configurar un clima para un mapa en especifico. #
#======================================================================#
module ConfigIClima
#-----------------------------------------------------------------------
# Poner entre los corchetes el ID del Mapa, segun el efecto que se quiera.
MapIMaps = {
"Normal" => [], # Normal
"House" => [3, 5], # House (Parecido a Normal, solo que en este se guarda
#el status antes de entrar para al salir tener el mismo clima.
"Fog" => [], # Niebla
"Sun" => [], # Soleado
"Night" => [], # Noche
"Cloudy" => [], # Nublado
"SunWithCloud" => [], # Nubes con Rayos de Sol
"Rain" => [], # Lloviendo
"ThunderRain" => [], # Lloviendo con Truenos
"Storm" => [4], # Tormenta Electrica
"Ice" => [2], # Nevando
"IceStorm" => [], # Tormenta de Nieve
"AleatoryRain" => [] # Exterior, puede llover o no, soleado o nublado,
#o estar soleado y despues empezar a llover.
}
# Declarar las secuencias en la variable MapISequence, poner su nombre aqui,
# Para poder declarar mapas con esa secuencia.
MapISequences = {
"AleatorySun" => [1]
}
# A continuacion esta la configuracion de los climas.
# No borrar los existentes, solo dar de alta si lo requieres.
# Si se da de alta aqui un clima tambien se debe de dar de alta en MapIMaps
# Para poder poner default en uno.
# En todos los grupos de arreglos de 2 al estilo [0, 0].
# Indica que tiene un valo con posible variacion.
# El primer valor indica el valor por default y el segundo la variacion.
# Por ejemplo si se pone [5, 7] en un movimiento de eje de las x en fog
# Indica que su movimiento ira de 5 a maximo 12 cada vez que se cargue.
# O Tambien si se pone [-5, 3] en un movimiento de eje de las x en fog
# Indica que su movimiento ira de -5 a maximo -2 cada vez que se cargue.
MapIWeather = {
"Normal" => { # Clima Normal
"Tone" => [[0, 0], [0, 0], [0, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Fade" => [800 , 0]# Dispersion del sonido del anterior clima.
},
"House" => { # Clima House
"Tone" => [[0, 0], [0, 0], [0, 0], [0, 0], [10, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Fade" => [800, 0], # Dispersion del sonido del anterior clima.
"SaveWeather" => true # Indica si se guardara el clima del mapa anterior que no sea otro SaveWeather = true
},
"Fog" => { # Clima con Niebla
"Tone" => [[-68, 0], [-68, 0], [-68, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Fade" => [800, 0], # Dispersion del sonido del anterior clima.
"Fog" => ["001-Fog01", [70, 0], [5, 7], [3, 6]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Change" => [250, 450] # Cambio de Niebla
},
"Sun" => { # Clima Soleado
"Tone" => [[0, 0], [0, 0], [-28, 0], [-34, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"BFade" => [800, 0], # Dispersion del sonido del anterior clima.
"Fog" => ["011-Bondia01", [15, 0], [5, 0], [5, 0]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Picture" => ["001-Bondia01.png" , [50, 0]] # Imagen [Nombre, Opacidad]
},
"Cloudy" => { # Clima Nublado
"Tone" => [[-16, 0], [-16, 0], [-16, 0], [-10, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"BGSFade" => [800, 0], # Dispersion del sonido del anterior clima.
"Fog" => ["001-Fog01", [15, 0], [1, 6], [1, 7]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Change" => [250, 450] # Cambio de Niebla
},
"Night" => { # Clima de Noche
"Tone" => [[-110, 0], [-110, 0], [-110, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Fade" => [800, 0], # Dispersion del sonido del anterior clima.
"Fog" => ["001-Fog01", [15, 0], [1, 6], [1, 7]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Change" => [250, 450] # Cambio de Niebla
},
"SunWithCloud" => { # Clima de Sol con Nubes
"Tone" => [[0, 0], [0, 0], [-28, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [0, [0, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Fade" => [800, 0], # Dispersion del sonido del anterior clima.
"Fog" => ["001-Fog01", [23, 0], [-1, 9], [-1, 9]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Picture" => ["001-Bondia01.png" , [50, 0]], # Imagen [Nombre, Opacidad]
"Change" => [250, 450] # Cambio de Niebla
},
"Rain" => { # Clima de lluvia
"Tone" => [[-68, 0], [-68, 0], [-68, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [1, [6, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Audio" => ["005-Rain01", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Fog" => ["001-Fog01", [40, 0], [3, 4], [2, 3]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Change" => [250, 450] # Cambio de Niebla
},
"ThunderRain" => { # Clima de lluvia con truenos
"Tone" => [[-68, 0], [-68, 0], [-68, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [1, [6, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Audio" => ["005-Rain01", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Fog" => ["001-Fog01", [40, 0], [3, 4], [2, 3]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Change" => [250, 450], # Cambio de Niebla
"Effect" => { # Configuracion del Efecto
"Change" => [230, 120], # Cambio de Efecto
"Type" => 0, # Tipo de Efecto.
# 0 - Efecto de una sola vez cada vez que abarque el tiempo.
"Audio" => ["061-Thunderclap01", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Flash" => [[255, 0], [255, 0], [255, 0], [255, 0], [15, 0]] # Definimos un color para un flash en pantalla [R, G, B, Gray, Tiempo]
}
},
"Storm" => { # Clima de Tormenta
"Tone" => [[-68, 0], [-68, 0], [-68, 0], [0, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [2, [9, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Audio" => ["006-Rain02", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Fog" => ["001-Fog01", [40, 0], [5, 4], [3, 4]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Change" => [250, 450], # Cambio de Niebla
"Effect" => { # Configuracion del Efecto
"Change" => [120, 120], # Cambio de Efecto
"Type" => 0, # Tipo de Efecto. 0 - Inemadiato
# 0 - Efecto de una sola vez cada vez que abarque el tiempo.
"Audio" => ["061-Thunderclap01", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Flash" => [[255, 0], [255, 0], [255, 0], [255, 0], [15, 0]] # Definimos un color para un flash en pantalla [R, G, B, Gray, Tiempo]
}
},
"Ice" => { # Clima Nevando
"Tone" => [[15, 0], [15, 0], [15, 0], [15, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [3, [4, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Audio" => ["002-Wind02", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Fog" => ["001-Fog01", [10, 0], [4, 2], [3, 3]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Effect" => { # Configuracion del Efecto
"Change" => [180, 40], # Cambio de Efecto
"Type" => 1, # Tipo de Efecto.
# 0 - Efecto de una sola vez cada vez que abarque el tiempo.
# 1 - Progresivo. Cuando se cumple el tiempo del efecto ocurre algo hasta un limite.
# Y posteriormente regresa a otro punto del efecto y reinicia el contador despues.
"Max" => { # Parametros que se iran incrementando, hasta llegar a un limite.
"Fog" => {
"Opacity" => [1,0] # Esto quiere decir que habra un incremento de 1 en uno
},
"Limit" => [ # En limit es un arreglo de hashes, meter en el mismo hash todas las condiciones
# para que solo al cumplirse todas llegue al limit. Crerar Varios Hashes en el caso que se
# quiera dar de alta varias condiciones posibles para volver a bajar.
{
"Fog" => {
"Opacity" => [70, 0]
}
}
]
},
"Min" => { # Parametros que se iran decrementando, hasta llegar a un limite.
"Fog" => {
"Opacity" => [-1,0] # Esto quiere decir que habra un incremento de 1 en uno con variacion de 0
},
"Limit" => [ # En limit es un arreglo de hashes, meter en el mismo hash todas las condiciones
# para que solo al cumplirse todas llegue al limit. Crerar Varios Hashes en el caso que se
# quiera dar de alta varias condiciones posibles para volver a bajar.
{
"Fog" => {
"Opacity" => 15
}
}
]
}
}
},
"IceStorm" => { # Clima de Tormenta de Nieve
"Tone" => [[30, 0], [30, 0], [30, 0], [25, 0], [20, 0]], # Definir el Tone [R, G, B, Gray, Tiempo_Cambio]
"Weather" => [3, [9, 0], [20, 0]], # Definimos el Clima [Clima, Fuerza, Tiempo_Cambio]
"Audio" => ["003-Wind03", [100, 0], [100, 0]], # Reproducir un archivo de audio [Archivo, Volumen, ???]
"Fog" => ["001-Fog01", [15, 0], [8, 6], [3, 5]], # Definir la Niebla [Nombre, Opacity, movimiento_x, movimiento_y]
"Effect" => { # Configuracion del Efecto
"Change" => [130, 40], # Cambio de Efecto
"Type" => 1, # Tipo de Efecto.
# 0 - Efecto de una sola vez cada vez que abarque el tiempo.
# 1 - Progresivo. Cuando se cumple el tiempo del efecto ocurre algo hasta un limite.
# Y posteriormente regresa a otro punto del efecto y reinicia el contador despues.
"Max" => { # Parametros que se iran incrementando, hasta llegar a un limite.
"Fog" => {
"Opacity" => [0.5,0] # Esto quiere decir que habra un incremento de 1 en uno
},
"Limit" => [ # En limit es un arreglo de hashes, meter en el mismo hash todas las condiciones
# para que solo al cumplirse todas llegue al limit. Crerar Varios Hashes en el caso que se
# quiera dar de alta varias condiciones posibles para volver a bajar.
{
"Fog" => {
"Opacity" => [100, 0]
}
}
]
},
"Min" => { # Parametros que se iran decrementando, hasta llegar a un limite.
"Fog" => {
"Opacity" => [-2,0] # Esto quiere decir que habra un incremento de 1 en uno con variacion de 0
},
"Limit" => [ # En limit es un arreglo de hashes, meter en el mismo hash todas las condiciones
# para que solo al cumplirse todas llegue al limit. Crerar Varios Hashes en el caso que se
# quiera dar de alta varias condiciones posibles para volver a bajar.
{
"Fog" => {
"Opacity" => 20
}
}
]
}
}
}
}
# Declarar Secuencias como se muestra en el ejemplo.
# Initialize muestra los climas que puede tener al iniciar, se pone asi cada clima
# separado por una coma [nombre_clima, porcentaje], si se desea que siempre aparezca
# cierto clima para empezar poner [nombre_clima, 100]
# Change indica que si se esta en un clima a cual puede cambiar al cumplir cierto tiempo.
# Dentro se pone cada clima de los que pueda haber en la secuencia.
# "nombre_clima" => {}
# Dentro de los corchetes van dos opciones, Duration y Weather.
# Duration es la duracion del clima antes de ejecutar un cambio, si se desea
# que al llegar a un clima ya no cambie poner [0, 0] se maneja una base y una variacion
# si pones [200, 400] quiere decir que la base es 200 y la variacion es 400, entonces
# el tiempo de cambio sera entre 200 y 600
# Y en weather se ponen los climas con el mismo formato que en Initialize
MapISequence = {
"AleatorySun" => {
"Initialize" => [
["Normal", 50],
["Cloudy", 30],
["Sun", 20]
],
"Change" => {
"Normal" => {
"Duration" => [400, 600],
"Weather" => [
["Cloudy", 50],
["Normal", 50]
]
},
"Cloudy" => {
"Duration" => [300, 200],
"Weather" => [
["Cloudy", 50],
["Normal", 50]
]
},
"Sun" => {
"Duration" => [400, 200],
"Weather" => [
["SunWithCloud", 60],
["Sun", 20],
["Normal", 20]
]
}
}
}
}
#-----------------------------------------------------------------------
end
#-----------------------------------------------------------------------
# Los Climas se pueden llamar desde un evento con una llamdo a script.
# $clima.weather([Nombre_del_clima])
# Nombre_del_clima es el nombre con el que existe el clima o con el que se dio de alta.
# Ejemplo: $clima.weather("Ice")
#
# Las secuencia se pueden llamar desde un evento con un script llamado.
# $clima.call_sequence([Nombre_de_la_secuencia])
# Nombre_de_la_secuencia es el nombre con el que existe la secuencia o con el que se dio de alta.
# Ejemplo: $clima.call_sequence("AleatorySun")
#
# IMPORTANTE: Si manualmente se llama un clima, y anteriormente existe una secuencia, corriendo.
# antes de llamar el clima se llama el metodo stop_sequence.
# Ejemplo:
# stop_sequence
# $clima.weather("Ice")
#-----------------------------------------------------------------------
class Clima
include ConfigIClima
# Definimos Acceso a Atributos
attr_accessor :type
attr_accessor :sequence
# Inicializamos Clase
def initialize
@type = [
{
"weather" => "Normal",
"change" => [0, 0],
"effect" => [0, 0]
},
{
"weather" => "",
"change" => [0, 0],
"effect" => [0, 0]
}
]
@save = false
@restore = false
@initialize = false
@sequence = {
"type" => "",
"change" => [0, 0]
}
end
# Metodo para Cargar el Clima
def weather(clima)
@initialize = true
# Metodos para reiniciar, el clima por si sales o entras a una casa
if MapIWeather[clima]["SaveWeather"] != nil
if MapIWeather[clima]["SaveWeather"] == true
if @type[1]["weather"] != ""
if MapIWeather[@type[1]["weather"]]["SaveWeather"] != nil
if MapIWeather[@type[1]["weather"]]["SaveWeather"] == false
saveweather(1)
end
else
saveweather(1)
end
else
saveweather(1)
end
else
saveweather(2)
end
else
saveweather(2)
end
# Metodos que inicializan cada clima, en caso de ser el mismo solo reinicia el efecto y cambio
if @type[0]["weather"] != clima
clean
@type[0]["weather"] = clima
@type[0]["change"][0] = 0
@type[0]["change"][1] = 0
@type[0]["effect"][0] = 0
@type[0]["effect"][1] = 0
end
update
end
def update
if MapIWeather[@type[0]["weather"]]["Change"] == nil
change = true
elsif MapIWeather[@type[0]["weather"]]["Change"] != nil
change = false
end
# Lee todos los efectos del clima mandado y ejecuta uno por uno
# Tambien en la mayoria valida que cambio sea menor igual a 0
# Para en caso de estar iterando el mismo clima no lo cambie a menos que realmente sea necesario
MapIWeather[@type[0]["weather"]].each do |key, value|
case key
when "Change"
if @type[0]["change"][0] < @type[0]["change"][1] || @type[0]["change"][0] == 0
temp_0 = random(value[0], value[1])
@type[0]["change"][0] = temp_0.round
@type[0]["change"][1] = 0
change = true
end
end
end
if @initialize == true
change = true
@initialize = false
end
MapIWeather[@type[0]["weather"]].each do |key, value|
case key
when "Tone"
if change == true
temp_0 = random(value[0][0], value[0][1])
temp_1 = random(value[1][0], value[1][1])
temp_2 = random(value[2][0], value[2][1])
temp_3 = random(value[3][0], value[3][1])
temp_4 = random(value[4][0], value[4][1])
$game_screen.start_tone_change(Tone.new(temp_0.round, temp_1.round, temp_2.round, temp_3.round), temp_4.round)
end
when "Weather"
if change == true
temp_0 = random(value[1][0], value[1][1])
temp_1 = random(value[2][0], value[2][1])
$game_screen.weather(value[0], temp_0.round, temp_1.round)
end
when "Fade"
temp_0 = random(value[0], value[1])
Audio.bgs_fade(temp_0.round)
when "Fog"
if change == true
temp_0 = random(value[1][0], value[1][1])
temp_1 = random(value[2][0], value[2][1])
temp_2 = random(value[3][0], value[3][1])
$game_map.fog_name = value[0]
$game_map.fog_opacity = temp_0.round
$game_map.fog_sx = temp_1.round
$game_map.fog_sy = temp_2.round
end
when "Picture"
if change == true
temp_0 = random(value[1][0], value[1][1])
$game_screen.pictures[1].show(value[0], 0, 0, 0, 100, 100, temp_0.round, 0)
end
when "Audio"
temp_0 = random(value[1][0], value[1][1])
temp_1 = random(value[2][0], value[2][1])
$game_system.bgs_play(RPG::AudioFile.new(value[0], temp_0.round, temp_1.round))
when "Effect"
if @type[0]["effect"][0] == 0
effect(value)
end
end
end
end
# Efecto de Limpiar todos los climas
def clean
$game_screen.start_tone_change(Tone.new(0, 0, 0, 0), 20)
$game_screen.weather(0, 0,20)
Audio.bgs_fade(800)
$game_map.fog_name = ""
$game_screen.pictures[1].erase
end
# Metodo que devuelve el random de un metodo.
def random(base, factor)
if factor > 0
temp = rand(factor) + (base)
else
temp = base
end
return temp
end
# Metodo para resumir codigo
def effect(value)
if value["Type"] == 0
if @type[0]["effect"][0] == 0 || @type[0]["effect"][0] < @type[0]["effect"][1]
temp_0 = random(value["Change"][0], value["Change"][1])
@type[0]["effect"][0] = temp_0.round
@type[0]["effect"][1] = 0
value.each do |key2, value2|
case key2
when "Audio"
temp_0 = random(value2[1][0], value2[1][1])
temp_1 = random(value2[2][0], value2[2][1])
$game_system.se_play(RPG::AudioFile.new(value2[0], temp_0.round, temp_1.round))
when "Flash"
temp_0 = random(value2[0][0], value2[0][1])
temp_1 = random(value2[1][0], value2[1][1])
temp_2 = random(value2[2][0], value2[2][1])
temp_3 = random(value2[3][0], value2[3][1])
temp_4 = random(value2[4][0], value2[4][1])
$game_screen.start_flash(Color.new(temp_0.round, temp_1.round, temp_2.round, temp_3.round), temp_4.round)
end
end
end
elsif value["Type"] == 1
if @type[0]["effect"][0] == 0
temp_0 = random(value["Change"][0], value["Change"][1])
@type[0]["effect"][0] = temp_0.round
@type[0]["effect"][1] = 0
@restore = false
else
if @restore == false
value["Max"].each do |key2, value2|
case key2
when "Fog"
value2.each do |key3, value3|
case key3
when "Opacity"
temp_0 = random(value3[0], value3[1])
$game_map.fog_opacity = $game_map.fog_opacity + (temp_0.round)
end
end
end
end
if value["Max"]["Limit"] != nil
for s in value["Max"]["Limit"]
limit = value["Max"]["Limit"].size
cuenta = 0
s.each do |key2, value2|
case key2
when "Fog"
value2.each do |key3, value3|
case key3
when "Opacity"
temp_0 = random(value3[0], value3[1])
if $game_map.fog_opacity > temp_0
cuenta += 1
end
end
end
end
if limit == cuenta
@restore = true
break
end
end
end
end
elsif @restore == true
value["Min"].each do |key2, value2|
case key2
when "Fog"
value2.each do |key3, value3|
case key3
when "Opacity"
temp_0 = random(value3[0], value3[1])
$game_map.fog_opacity = $game_map.fog_opacity + (temp_0.round)
end
end
end
end
if value["Min"]["Limit"] != nil
for s in value["Min"]["Limit"]
limit = value["Min"]["Limit"].size
cuenta = 0
s.each do |key2, value2|
case key2
when "Fog"
value2.each do |key3, value3|
case key3
when "Opacity"
temp_0 = random(value3[0], value3[1])
if $game_map.fog_opacity < temp_0
cuenta += 1
end
end
end
end
if limit == cuenta
temp_0 = random(value["Change"][0], value["Change"][1])
@type[0]["effect"][0] = temp_0.round
@type[0]["effect"][1] = 0
@restore = false
break
end
end
end
end
end
end
end
end
# Metodos para guardar o regresar el clima en la variables.
def saveweather(type)
if type == 1
@save = true
@type[1]["weather"] = @type[0]["weather"]
@type[1]["change"][0] = @type[0]["change"][0]
@type[1]["change"][1] = @type[0]["change"][1]
@type[1]["effect"][0] = @type[0]["effect"][0]
@type[1]["effect"][1] = @type[0]["effect"][1]
elsif type == 2
@save = false
if @type[1]["weather"] != ""
@type[0]["weather"] = @type[1]["weather"]
@type[0]["change"][0] = @type[1]["change"][0]
@type[0]["change"][1] = @type[1]["change"][1]
@type[0]["effect"][0] = @type[1]["effect"][0]
@type[0]["effect"][1] = @type[1]["effect"][1]
@type[1]["weather"] = ""
end
end
end
# Llama una secuencia
def call_sequence(sequence)
stop_sequence
@sequence["type"] = sequence
if MapISequence[@sequence["type"]] != nil
clima = rand(100)+1
clima_temp = 0
for s in MapISequence[@sequence["type"]]["Initialize"]
if clima <= clima_temp + s[1]
weather(s[0])
temp_0 = random(MapISequence[@sequence["type"]]["Change"][s[0]]["Duration"][0], MapISequence[@sequence["type"]]["Change"][s[0]]["Duration"][1])
@sequence["change"][0] = temp_0.round
@sequence["change"][1] = 0
break
else
clima_temp += s[1]
end
end
else
weather("normal")
end
end
# Actualiza la secuencia actual
def update_sequence
if @sequence["type"] != "" && @save == false
if MapISequence[@sequence["type"]]["Change"][@type[0]["weather"]] != nil
if MapISequence[@sequence["type"]]["Change"][@type[0]["weather"]]["Duration"][0] != 0 && MapISequence[@sequence["type"]]["Change"][@type[0]["weather"]]["Duration"][1] != 0
@sequence["change"][1] += 1
if @sequence["change"][0] < @sequence["change"][1] || @sequence["change"][0] == 0
temp_0 = random(MapISequence[@sequence["type"]]["Change"][@type[0]["weather"]]["Duration"][0], MapISequence[@sequence["type"]]["Change"][@type[0]["weather"]]["Duration"][1])
@sequence["change"][0] = temp_0.round
@sequence["change"][1] = 0
clima = rand(100)+1
clima_temp = 0
for s in MapISequence[@sequence["type"]]["Change"][@type[0]["weather"]]["Weather"]
if clima <= clima_temp + s[1]
weather(s[0])
break
else
clima_temp += s[1]
end
end
end
end
end
end
end
#Metodo Para detener secuencia
def stop_sequence
@sequence["type"] = ""
@sequence["change"][0] = 0
@sequence["change"][1] = 0
end
end
#**********************************************************************#
#************************Scene_Map*************************************#
# Actualiza el clima con el mapa. #
#**********************************************************************#
class Scene_Map
include ConfigIClima
alias midnightmoon_update update
def update
if $clima.type[0]["change"][0] > 0
$clima.type[0]["change"][1] += 1
$clima.update
end
if $clima.type[0]["effect"][0] > 0
$clima.type[0]["effect"][1] += 1
$clima.effect(MapIWeather[$clima.type[0]["weather"]]["Effect"])
end
if $clima.sequence["type"] != ""
$clima.update_sequence
end
midnightmoon_update
end
# Evento que ocurre cuando se llega a un nuevo mapa.
# De aqui para abajo es exactamente el script que antes mencione de Falcao.
alias midnightmoon_transfer_player transfer_player
def transfer_player
midnightmoon_transfer_player
MapIMaps.each do |key, value|
if value.include?($game_map.map_id)
$clima.stop_sequence
$clima.weather(key)
break
end
end
MapISequences.each do |key, value|
if value.include?($game_map.map_id)
$clima.call_sequence(key)
break
end
end
end
end
class Scene_Title
include ConfigIClima
alias midnightmoon_weather_main main
def main
$clima = Clima.new
midnightmoon_weather_main
end
alias midnightmoon_weather_command command_new_game
def command_new_game
$clima = Clima.new
midnightmoon_weather_command
MapIMaps.each do |key, value|
if value.include?($game_map.map_id)
$clima.weather(key)
break
end
end
MapISequences.each do |key, value|
if value.include?($game_map.map_id)
$clima.call_sequence(key)
break
end
end
end
end
class Scene_Save
alias midnightmoon_write_data write_save_data
def write_save_data(file)
midnightmoon_write_data(file)
Marshal.dump($clima, file)
end
end
class Scene_Load
alias midnightmoon_read_data read_save_data
def read_save_data(file)
midnightmoon_read_data(file)
$clima = Marshal.load(file)
end
end
Imagenes:
- Spoiler:
MasterMoonNight- Moderador
- Mensajes : 82
Fecha de inscripción : 06/11/2011
Edad : 28
Localización : Argentina
Temas similares
» (Script) Script de Alquimia
» [Script] H-MODE 7
» (Script)Copyright
» (Script) DVD System
» (Script) Sistema de banco
» [Script] H-MODE 7
» (Script)Copyright
» (Script) DVD System
» (Script) Sistema de banco
TallerGamer :: RECURSOS :: RPG MAKER XP
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.