#==============================================================================
# ★RGSS2
# STR02_マップ画面軽量化 v1.0
# サポート:http://otsu.cool.ne.jp/strcatyou/
# ・画面外のキャラクターのスプライト・自律移動を停止させて負担を軽減させます。
# ・トリガーが"なし"のコモンイベントの更新を止めて負担を軽減させます。
# ・自律移動失敗時にウェイトを設定できます。(それなりに重要)
#==============================================================================
# ■ STRRGSS2
#==============================================================================
module STRRGSS2
# 画面外のイベントの自律移動を行わない true = 有効 false = 無効
SELF_MOVEMENT = true
# カスタム移動失敗時に設けるウェイト 0 以上に設定
MOVE_FAILED_WAIT = 30
# 画面外判定
STR02_RECT = Rect.new(-48, -32, 544+48, 416+64)
end
#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ★ エイリアス
#--------------------------------------------------------------------------
alias setup_events_str02 setup_events
def setup_events
setup_events_str02
@common_events.clear
for i in 1...$data_common_events.size
@common_events[i] = Game_CommonEvent.new(i) if $data_common_events[i].trigger != 0
end
end
end
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ★ 再定義
#--------------------------------------------------------------------------
def update_characters
for sprite in @character_sprites
if sprite.character.screenin_str02
sprite.update
else
sprite.visible = false
end
end
end
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :screenin_str02
#--------------------------------------------------------------------------
# ★ エイリアス
#--------------------------------------------------------------------------
alias initialize_str02 initialize
def initialize
initialize_str02
@screenin_str02 = true
end
alias update_str02 update
def update
r = STRRGSS2::STR02_RECT
@screenin_str02 = (screen_x > r.x and screen_x < r.width and
screen_y > r.y and screen_y < r.height)
update_str02
end
alias update_self_movement_str02 update_self_movement
def update_self_movement
return if STRRGSS2::SELF_MOVEMENT and not @screenin_str02
update_self_movement_str02
end
end
#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 自律移動の更新
#--------------------------------------------------------------------------
def update_self_movement
if @stop_count >= 30 * (5 - @move_frequency)
@wait_count = STRRGSS2::MOVE_FAILED_WAIT + (@id / 4) if @move_failed
end
super
end
end
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이 스크립트 사용시 주인공 기준 화면 밖에선
이벤트 설정하고 이동루트에 주인공으로 다가오기 이벤트로 하면 먹히지 않고
그 어떤 이벤트의 움직임도 화면 밖에선 되지가 않네요
해결 방법이 있나요?
이거 맵 렉 줄여주는건 매우 좋은데...말이죠