#==============================================================================
# +++ MOG - Simple Anti Lag (V1.0) +++
#==============================================================================
# By Moghunter
# [url]http://www.atelier-rgss.com[/url]
#==============================================================================
# Sistema de antilag.
#==============================================================================
# Para desativar ou ativar o sistema de antilag use o comando abaixo
#
# $game_system.anti_lag = true
#
#==============================================================================
# NOTA - Este script não funciona em mapas com efeito LOOP.
#
#==============================================================================
module MOG_ANTI_LAG
#Area que será atualizada fora da tela.
UPDATE_OUT_SCREEN_RANGE = 3
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :anti_lag
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_antilag_initialize initialize
def initialize
@anti_lag = true
mog_antilag_initialize
end
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Event < Game_Character
attr_accessor :can_update
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_anti_lag_initialize initialize
def initialize(map_id, event)
mog_anti_lag_initialize(map_id, event)
@can_update = true
@anti_lag = true
if $game_map.loop_horizontal? or $game_map.loop_vertical?
@anti_lag = false
end
end
#--------------------------------------------------------------------------
# ● Check Event on Screen
#--------------------------------------------------------------------------
def update_anti_lag
unless $game_system.anti_lag
@can_update = true
return
end
anti_lag_event_on_screen
end
#--------------------------------------------------------------------------
# ● Event On Screen
#--------------------------------------------------------------------------
def anti_lag_event_on_screen
@can_update = false
out_screen = MOG_ANTI_LAG::UPDATE_OUT_SCREEN_RANGE
px = ($game_map.display_x).truncate
py = ($game_map.display_y).truncate
distance_x = @x - px
distance_y = @y - py
if distance_x.between?(0 - out_screen, 16 + out_screen) and
distance_y.between?(0 - out_screen, 12 + out_screen)
@can_update = true
end
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias mog_anti_lag_update update
def update
update_anti_lag unless !@anti_lag
return if !@can_update
mog_anti_lag_update
end
end
#==============================================================================
# ■ Sprite Character
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● Check Can Update Sprite
#--------------------------------------------------------------------------
def check_can_update_sprite
if self.visible and !@character.can_update
reset_sprite_effects
end
self.visible = @character.can_update
end
#--------------------------------------------------------------------------
# ● Reset Sprite Effects
#--------------------------------------------------------------------------
def reset_sprite_effects
dispose_animation
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias mog_anti_lag_update update
def update
if $game_system.anti_lag and @character.is_a?(Game_Event)
check_can_update_sprite
return unless self.visible
end
mog_anti_lag_update
end
end
$mog_rgss3_anti_lag = true