# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
# ■ MOG - XAS反延迟 VX (V1.0)
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
# ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
# 作者 Moghunter
# [url]http://www.atelier-rgss.com[/url]
#●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
# 开启XAS系统的反延迟。
#==============================================================================
# 用下面这条指令来开启或关闭反延迟系统。
#
# $game_system.anti_lag = true
#==============================================================================
#=begin
module XAS_ANTI_LAG
#在屏幕外刷新的范围。
UPDATE_OUT_SCREEN_RANGE = 4
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :anti_lag
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
alias mog_antilag_initialize initialize
def initialize
@anti_lag = true
mog_antilag_initialize
end
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 检查屏幕上的事件
#--------------------------------------------------------------------------
def update_anti_lag
unless $game_system.anti_lag
@can_update = true
return
end
anti_lag_event_on_screen
end
#--------------------------------------------------------------------------
# ● 屏幕上的事件
#--------------------------------------------------------------------------
def anti_lag_event_on_screen
@can_update = false
if anti_lag_need_update_out_screen?
@can_update = true
return
end
out_screen = XAS_ANTI_LAG::UPDATE_OUT_SCREEN_RANGE
px = ($game_map.display_x / 256).truncate
py = ($game_map.display_y / 256).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
#--------------------------------------------------------------------------
# ● 屏幕上的事件
#--------------------------------------------------------------------------
def anti_lag_need_update_out_screen?
if self.force_update
return true
end
if self.battler != nil
if self.battler.sensor_range >= 17
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 屏幕外的事件效果
#--------------------------------------------------------------------------
def execute_effects_out_screen
return if erased
if self.battler != nil
self.erase if self.battler.dead?
end
if self.tool_id > 0
self.action.duration = 1
$game_system.tools_on_map.delete(self.tool_id)
self.erase
end
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias mog_anti_lag_update update
def update
unless self.is_a?(Game_Player)
update_anti_lag
unless @can_update
execute_effects_out_screen
return
end
end
mog_anti_lag_update
end
end
#==============================================================================
# ■ Sprite Character
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● 检查是否可以刷新精灵
#--------------------------------------------------------------------------
def check_can_update_sprite
if self.visible and @character.can_update == false
reset_sprite_effects
end
self.visible = @character.can_update
end
#--------------------------------------------------------------------------
# ● 重置精灵效果
#--------------------------------------------------------------------------
def reset_sprite_effects
dispose_animation
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias mog_anti_lag_update update
def update
if $game_system.anti_lag
check_can_update_sprite
return unless self.visible
end
mog_anti_lag_update
end
end
$mog_rgss2_xas_anti_lag = true
#=end