Últimos temas
» [VX/Ace]PersonajesEscolares
por mdk3dd Hoy a las 3:30 pm

» Chaos of Destiny - The Origin
por mdk3dd Ayer a las 9:24 pm

» Laminación [VXACE] [NUEVO LAVADO DE CARA!]
por Pocari Ayer a las 8:22 pm

» [Avance] Chaos of Destiny - The origin
por IvalteK_Dev Ayer a las 7:11 pm

» Proyecto: "En busca del biberón perdido"
por IvalteK_Dev Ayer a las 6:59 pm

» Muz-taller: Charas
por Ruben_modder Ayer a las 2:30 pm

» 2 Dudas: Compatibilidad maker PC y Android
por Ruben_modder Ayer a las 1:36 pm

» Duda Bases Maker MV
por Ruben_modder Ayer a las 11:46 am

» [MV] Precognition
por JapoZero Sáb Dic 08, 2018 8:06 am

» ("TCG") Que RPG Maker es el recomendado?
por JKLmaster Vie Dic 07, 2018 7:48 pm

» Problema con los charas
por mdk3dd Dom Dic 02, 2018 5:55 pm

» Heartland | IGMC 2018
por InvariableZ Dom Dic 02, 2018 11:20 am


[ACE] Theo Fog Script

Ir abajo

[ACE] Theo Fog Script

Mensaje por Santi_Lee el Miér Mar 01, 2017 3:51 am

¡Buenas! Venía a compartir un script que he estado usando por un tiempo en el maker, se trata de un script de Theo el cual te permite añadir fogs, es decir, niebla.

Todos los créditos a Theo.
Código:
# --------------------------------------------------------------------------
# They said that too much global variables isn't good. So, I used an
# instance variable to store my fogs database =P
# --------------------------------------------------------------------------
alias theo_fog_init initialize
def initialize
theo_fog_init
@fogs = DataFogs.new
@clear_fog = false
end

end
# =============================================================================
# ▼ Game_System
# =============================================================================
class Game_System
attr_reader :used_fog

alias theo_fog_init initialize
def initialize
theo_fog_init
@used_fog = []
end

end
# =============================================================================
# ▼ Game_Interpreter
# =============================================================================
class Game_Interpreter

def clear_fogs
$game_system.used_fog.clear
$game_temp.clear_fog = true
Fiber.yield
end

def get_fog(key)
plane = planefogs
return nil unless plane
plane.get_fog(key)
end

def planefogs
scene = SceneManager.scene
spriteset = scene.instance_variable_get("@spriteset")
return spriteset.instance_variable_get("@fogs")
end

def delete_fog(key,speed = 255)
fog = get_fog(key)
return unless fog
$game_system.used_fog.delete(key)
fog.fadeout(speed)
fog.fade_delete = true
end

def add_fog(key,speed = 255)
return if $game_system.used_fog.include?(key)
$game_system.used_fog.push(key)
fog = planefogs[key]
fog.fadein(speed)
end

end
# =============================================================================
# ▼ Game_Map
# =============================================================================
class Game_Map
attr_accessor :used_fogs

alias theo_fog_init initialize
def initialize
theo_fog_init
@used_fogs = []
end

alias theo_fog_setup setup
def setup(map_id)
theo_fog_setup(map_id)
setup_fogs
end

def setup_fogs
@used_fogs = []
@map.note.split(/[\r\n]+/).each do |line|
case line
when /<(?:ADD_FOG|add fog): (.*)>/i
key = $1.to_s
next if @used_fogs.include?(key)
@used_fogs.push(key)
end
end
end

end
# =============================================================================
# ▼ PlaneFog
# =============================================================================
class PlaneFog < Plane
attr_accessor :fade_delete
attr_accessor :key

def initialize(key, viewport)
super(viewport)
@real_ox = self.ox.to_f + rand(Graphics.width)
@real_oy = self.oy.to_f + rand(Graphics.height)
load_data(key)
update_oxoy
@fade = 0
@fade_delete = false
end

def load_data(key)
@data = THEO::Fog.fog_data[key]
self.bitmap = Cache.picture(@data.name)
@data.instance_variables.each do |varsymb|
ivar_name = varsymb.to_s.gsub(/@/){""}
eval("
if self.respond_to?(\"#{ivar_name}\")
self.#{ivar_name} = @data.#{ivar_name}
end
")
end
end

def fadeout(speed)
@fade = -speed
end

def fadein(speed)
@fade = speed
self.opacity = 0
end

def spd_x
@data.speed_x
end

def spd_y
@data.speed_y
end

def update
update_real_oxoy
update_oxoy
update_visible
update_fade
end

def update_real_oxoy
@real_ox += spd_x
@real_oy += spd_y
end

def update_oxoy
self.ox = fog_display_x + @real_ox
self.oy = fog_display_y + @real_oy
end

def update_fade
self.opacity = [[opacity + @fade,0].max,max_opacity].min
end

def max_opacity
@data.opacity
end

def fog_display_x
$game_map.display_x * (32.0 * @data.scroll_scale_x)
end

def fog_display_y
$game_map.display_y * (32.0 * @data.scroll_scale_y)
end

def update_visible
self.visible = @data.visible
end

end
# =============================================================================
# ▼ PlaneFogs
# =============================================================================
class PlaneFogs

def initialize(viewport)
@data = {}
@viewport = viewport
init_used_fog
end

def init_used_fog
$game_system.used_fog.each do |fogname|
self[fogname]
end
end

def get_fog(key)
@data[key]
end

def delete(key)
fog = @data[key]
return unless fog
fog.dispose
@data.delete(key)
end

def [](key)
@data[key] ||= PlaneFog.new(key, @viewport)
end

def update
update_basic
@data.values.each {|fog| fog.update unless fog.disposed?}
end

def update_basic
update_delete
update_clear
end

def update_delete
@data.values.each do |fog|
next unless fog.fade_delete && fog.opacity == 0
delete(fog.key)
$game_system.used_fog.delete(fog.key)
end
end

def update_clear
if $game_temp.clear_fog
@data.keys.each do |key|
delete(key)
end
$game_temp.clear_fog = false
end
end

def dispose
@data.values.each {|fog| fog.dispose}
end

end
# =============================================================================
# ▼ MapFogs
# =============================================================================
class Mapfogs < PlaneFogs

def init_used_fogs
@used_fogs = $game_map.used_fogs.dup
@used_fogs.each do |fogname|
self[fogname]
end
end

def update_basic
update_used_fog
end

def update_used_fog
if @used_fogs != $game_map.used_fogs
delete_all
init_used_fogs
end
end

def delete_all
@data.values.each do |fog|
delete(fog.key)
end
end

end
# =============================================================================
# ▼ Spriteset_Map
# =============================================================================
class Spriteset_Map

alias theo_fog_viewports create_viewports
def create_viewports
theo_fog_viewports
create_mapfogs
create_global_fogs
end

def create_mapfogs
@mapfogs = Mapfogs.new(@viewport1)
end

def create_global_fogs
@fogs = PlaneFogs.new(@viewport1)
end

alias theo_fog_update update
def update
theo_fog_update
update_global_fogs
update_mapfogs
end

def update_global_fogs
@fogs.update
end

def update_mapfogs
@mapfogs.update
end

alias theo_fog_dispose dispose
def dispose
theo_fog_dispose
dispose_global_fogs
dispose_mapfogs
end

def dispose_global_fogs
@fogs.dispose
end

def dispose_mapfogs
@mapfogs.dispose 
end

end
# =============================================================================
# ▼ Spriteset_Battle
# =============================================================================
class Spriteset_Battle

def use_fog?
THEO::Fog::BattleFog
end

alias theo_fog_viewports create_viewports
def create_viewports
theo_fog_viewports
return unless use_fog?
create_mapfogs
create_global_fogs
end

def create_mapfogs
@mapfogs = Mapfogs.new(@viewport1)
end

def create_global_fogs
@fogs = PlaneFogs.new(@viewport1)
end

alias theo_fog_update update
def update
theo_fog_update
return unless use_fog?
update_global_fogs
update_mapfogs
end

def update_global_fogs
@fogs.update
end

def update_mapfogs
@mapfogs.update
end

alias theo_fog_dispose dispose
def dispose
theo_fog_dispose
return unless use_fog?
dispose_global_fogs
dispose_mapfogs
end

def dispose_global_fogs
@fogs.dispose
end

def dispose_mapfogs
@mapfogs.dispose 
end

end



Las instrucciones de uso vienen dentro, un saludo.
avatar
Santi_Lee
PJ Recurrente
PJ Recurrente

Masculino
Bolivia
RPG Maker : Ace
Mensajes : 99
Monedas : 501
Reputación : 10
Edad : 17
Localización : Mi puto casa.

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.