#============================================================================== # ★ タイルフラシュ ver1.0 by USK #------------------------------------------------------------------------------ # ・指定した座標のタイルを指定したフレームの間指定した色でフラッシュします。 #============================================================================== =begin   イベントコマンドのスクリプトで tile_flash(5,6,60,:red) のようにtile_flash(x座標, y座標, 表示フレーム, フラッシュカラー)と記述すると 指定した座標のタイルがフラッシュします。 フラッシュカラーには :white :red :green :blue :yellow :purple の6色が使用で きます。 表示フレームに-1と記述すると手動で消すかマップを切り替えない限りフラッシュ が続きます。 イベントコマンドのスクリプトで clear_tile_flash(5,6) のようにclear_tile_flash(x座標, y座標)と記述するとその座標の座標のフラッシュ を終了します。clear_tile_flashとだけ記述するとすべてのフラッシュが終了します。 =end #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def clear_tile_flash(x = -1, y = -1) SceneManager.scene.clear_tile_flash(x, y) end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def tile_flash(x, y, f, c = :white) SceneManager.scene.tile_flash(x, y, f, ColorList[c]) end ColorList = { :white => 0xFFF, :red => 0xF00, :green => 0x0F0, :blue => 0x00F, :yellow => 0xFF0, :purple => 0xF0F } end #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def clear_tile_flash(x = -1, y = -1) @spriteset.clear_tile_flash(x, y) end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def tile_flash(x, y, f, c) @spriteset.tile_flash(x, y, f, c) end end #============================================================================== # ■ Spriteset_Map #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def clear_tile_flash(x = -1, y = -1) @tilemap.clear_tile_flash(x, y) end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def tile_flash(x, y, f, c) @tilemap.tile_flash(x, y, f, c) end end #============================================================================== # ■ #============================================================================== class Tilemap #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- alias :usk_adv_initialize :initialize def initialize(viewport = nil) usk_adv_initialize(viewport) @flash_list = {} self.flash_data = Table.new($game_map.width, $game_map.height) end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def clear_tile_flash(x = -1, y = -1) if (x == -1) && (y == -1) @flash_list.clear self.flash_data = Table.new($game_map.width, $game_map.height) else @flash_list.each_key do |key| if [key[0],key[1]] == [x, y] @flash_list[key] = nil flash_data[x, y] = 0 end end end end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def tile_flash(x, y, f, c) @flash_list[[x, y, c]] = f flash_data[x, y] |= c end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- alias :usk_adv_update :update def update usk_adv_update @flash_list.each do |key, f| pos = key[0..1] if f == 0 flash_data[*pos] ^= key[2] @flash_list[key] = nil elsif f @flash_list[key] -= 1 end end end end