#============================================================================== # ★スクロール禁止 ver1.0 by USK #------------------------------------------------------------------------------ # ・特定のスイッチがオンのときスクロールを禁止します。 #============================================================================== =begin ・21行目のFixDisplayFlagVで設定した番号のスイッチがオンのとき 縦スクロールが禁止されます。 ・22行目のFixDisplayFlagHで設定した番号のスイッチがオンのとき 横スクロールが禁止されます。 =end #============================================================================== # ■ Game_Map #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ● 設定 #-------------------------------------------------------------------------- FixDisplayFlagV = 1 #縦スクロール禁止用スイッチの番号 FixDisplayFlagH = 2 #横スクロール禁止用スイッチの番号 #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- alias :fix_display_scroll_down :scroll_down alias :fix_display_scroll_left :scroll_left alias :fix_display_scroll_right :scroll_right alias :fix_display_scroll_up :scroll_up alias :fix_display_refresh :refresh alias :fix_display_valid? :valid? #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def fix_display? $game_switches[FixDisplayFlagV] || $game_switches[FixDisplayFlagH] end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def need_centering? ret = !fix_display? && SceneManager.scene.is_a?(Scene_Map) && @on_fix_display @on_fix_display = fix_display? ret end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def centering div = 20 x = @display_x dx = $game_player.x - (Graphics.width / 32 - 1) / 2.0 - x dx /= div y = @display_y dy = $game_player.y - (Graphics.height / 32 - 1) / 2.0 - y dy /= div div.times do set_display_pos(x, y) x += dx y += dy scene = SceneManager.scene scene.update_basic scene.instance_variable_get(:@spriteset).update end end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh centering if need_centering? fix_display_refresh end #-------------------------------------------------------------------------- # ● 下にスクロール #-------------------------------------------------------------------------- def scroll_down(distance) fix_display_scroll_down(distance) unless $game_switches[FixDisplayFlagV] end #-------------------------------------------------------------------------- # ● 左にスクロール #-------------------------------------------------------------------------- def scroll_left(distance) fix_display_scroll_left(distance) unless $game_switches[FixDisplayFlagH] end #-------------------------------------------------------------------------- # ● 右にスクロール #-------------------------------------------------------------------------- def scroll_right(distance) fix_display_scroll_right(distance) unless $game_switches[FixDisplayFlagH] end #-------------------------------------------------------------------------- # ● 上にスクロール #-------------------------------------------------------------------------- def scroll_up(distance) fix_display_scroll_up(distance) unless $game_switches[FixDisplayFlagV] end #-------------------------------------------------------------------------- # ● 有効座標判定 #-------------------------------------------------------------------------- def valid?(x, y) ret = fix_display_valid?(x, y) if $game_switches[FixDisplayFlagV] ret &&= y >= @display_y && y < @display_y + (Graphics.height >> 5) end if $game_switches[FixDisplayFlagH] ret &&= x >= @display_x && x < @display_x + (Graphics.width >> 5) end ret end end