Код:
	#==============================================================================   
# ** ExMap_AutoPlane   
#------------------------------------------------------------------------------   
# Скрипт для единой настройки отображения тумана для каждой карты.   
#==============================================================================   
  
# Настройки для карт.   
# Формат:   
# 1) ID карты   
# 2) название графики   
# 3) горизонтальная прокрутка   
# 4) вертикальная прокрутка   
# 5) координата Z   
# 6) непрозрачность (0 ~ 255)   
# 7) смешивание (0: обычное, 1: добавление, 2: замещение)   
# по порядку   
# Все настройки содержатся в массиве.   
# Пример: карта № 5 с полупрозрачной графикой "fog.png" и с движением:   
#   => [5, "fog", 5, -2, 50, 128, 0]   
EXMAP_ATPLN_MAPS = [   
  [3, "fog_1", 3, -3, 140, 200, 2],   
  [5, "fog_1", 3, -3, 140, 200, 2],   
  [8, "fog", 3, -3, 140, 100, 2],  
  [12,"fog_1", 3, -3, 140, 200, 2],   
  [16, "fog_1", 3, -3, 140, 70, 1],   
]   
      
# Папка с графикой.   
# Определяет подпапку (Graphic/xxx/), где будет производится поиск графики.   
# 0:System 1:Parallaxes 2:Pictures 3:Animations   
EXMAP_ATPLN_FOLDER = 1  
  
#------------------------------------------------------------------------------   
  
class Game_Map   
  alias _exmapln_setup setup   
  alias _exmapln_update update   
  alias _exmapln_set_display_pos set_display_pos   
  alias _exmapln_scroll_down scroll_down   
  alias _exmapln_scroll_left scroll_left   
  alias _exmapln_scroll_right scroll_right   
  alias _exmapln_scroll_up scroll_up   
  #--------------------------------------------------------------------------   
  # • Глобальные переменные экземпляра (дополнительное определение)   
  #--------------------------------------------------------------------------   
  attr_reader   :fog                      # туман   
  #--------------------------------------------------------------------------   
  # • Настройка (добавление определения)   
  #     map_id : ID карты   
  #--------------------------------------------------------------------------   
  def setup(map_id)   
    _exmapln_setup(map_id)   
    setup_fog   
  end  
  #--------------------------------------------------------------------------   
  # * Установка тумана   
  #--------------------------------------------------------------------------   
  def setup_fog   
    @fog = [0, "", 0, 0, 50, 0, 0]   
    @fog_sx = 0  
    @fog_sy = 0  
    @fog_x = 0  
    @fog_y = 0  
    for data in EXMAP_ATPLN_MAPS   
      if @map_id == data[0]   
        @fog = data   
        @fog_sx = data[2]   
        @fog_sy = data[3]   
        break  
      end  
    end  
  end  
  #--------------------------------------------------------------------------   
  # • Обновление кадра (дополнительное определение)   
  #--------------------------------------------------------------------------   
  def update   
    _exmapln_update   
    update_fog   
  end  
  #--------------------------------------------------------------------------   
  # • Установка позиции отображения (дополнительное определение)   
  #     x : новая координата X (*256)   
  #     y : новая координата Y (*256)   
  #--------------------------------------------------------------------------   
  def set_display_pos(x, y)   
    _exmapln_set_display_pos(x, y)   
    @fog_x = x   
    @fog_y = y   
  end  
  #--------------------------------------------------------------------------   
  # * Вычисление координаты X тумана   
  #     bitmap : графика   
  #--------------------------------------------------------------------------   
  def calc_fog_x(bitmap)   
    return bitmap == nil ? 0 : @fog_x / 8  
  end  
  #--------------------------------------------------------------------------   
  # * Вычисление координаты Y тумана   
  #     bitmap : графика   
  #--------------------------------------------------------------------------   
  def calc_fog_y(bitmap)   
    return bitmap == nil ? 0 : @fog_y / 8  
  end  
  #--------------------------------------------------------------------------   
  # • Прокрутка вниз (дополнительное определение)   
  #     distance : дистанция   
  #--------------------------------------------------------------------------   
  def scroll_down(distance)   
    last_y = @display_y  
    _exmapln_scroll_down(distance)   
    if loop_vertical?   
      @fog_y += distance   
    else  
      @fog_y += @display_y - last_y   
    end  
  end  
  #--------------------------------------------------------------------------   
  # • Прокрутка влево (дополнительное определение)   
  #     distance : дистанция   
  #--------------------------------------------------------------------------   
  def scroll_left(distance)   
    last_x = @display_x  
    _exmapln_scroll_left(distance)   
    if loop_horizontal?   
      @fog_x -= distance   
    else  
      @fog_x += @display_x - last_x   
    end  
  end  
  #--------------------------------------------------------------------------   
  # • Прокрутка вправо (дополнительное определение)   
  #     distance : дистанция   
  #--------------------------------------------------------------------------   
  def scroll_right(distance)   
    last_x = @display_x  
    _exmapln_scroll_right(distance)   
    if loop_horizontal?   
      @fog_x += distance   
    else  
      @fog_x += @display_x - last_x   
    end  
  end  
  #--------------------------------------------------------------------------   
  # • Прокрутка вверх (дополнительное определение)   
  #     distance : дистанция   
  #--------------------------------------------------------------------------   
  def scroll_up(distance)   
    last_y = @display_y  
    _exmapln_scroll_up(distance)   
    if @fog != nil  
      if loop_vertical?   
        @fog_y -= distance   
      else  
        @fog_y += @display_y - last_y   
      end  
    end  
  end  
  #--------------------------------------------------------------------------   
  # * Обновление тумана   
  #--------------------------------------------------------------------------   
  def update_fog   
    @fog_x += @fog_sx * 2  
    @fog_y += @fog_sy * 2  
 end  
end  
  
class Spriteset_Map   
  alias _exmapln_initialize initialize   
  alias _exmapln_dispose dispose   
  alias _exmapln_update update   
  #--------------------------------------------------------------------------   
  # • Инициализация объекта (дополнительное определение)   
  #--------------------------------------------------------------------------   
  def initialize   
    create_fog   
    _exmapln_initialize   
  end  
  #--------------------------------------------------------------------------   
  # * Создание тумана   
  #--------------------------------------------------------------------------   
  def create_fog   
    @fog = Plane.new  
    if $game_map.fog != nil  
      @fog.z = $game_map.fog[4]   
      @fog.opacity = $game_map.fog[5]   
      @fog.blend_type = $game_map.fog[6]   
    end  
  end  
  #--------------------------------------------------------------------------   
  # • Освободить объект (дополнительное определение)   
  #--------------------------------------------------------------------------   
  def dispose   
    _exmapln_dispose   
    @fog.dispose   
  end  
  #--------------------------------------------------------------------------   
  # • Обновление кадра (дополнительное определение)   
  #--------------------------------------------------------------------------   
  def update   
    _exmapln_update   
    update_fog   
  end  
  #--------------------------------------------------------------------------   
  # * Обновление тумана   
  #--------------------------------------------------------------------------   
  def update_fog   
    if @fog_name != $game_map.fog[1]   
      @fog_name = $game_map.fog[1]   
      if @fog.bitmap != nil  
        @fog.bitmap.dispose   
        @fog.bitmap = nil  
      end  
      if @fog_name != ""  
        case EXMAP_ATPLN_FOLDER   
        when 0  
          @fog.bitmap = Cache.system(@fog_name)   
        when 1  
          @fog.bitmap = Cache.parallax(@fog_name)   
        when 2  
          @fog.bitmap = Cache.picture(@fog_name)   
        when 3  
          @fog.bitmap = Cache.animation(@fog_name, 0)   
        end  
      end  
      Graphics.frame_reset   
    end  
    @fog.ox = $game_map.calc_fog_x(@fog.bitmap)   
    @fog.oy = $game_map.calc_fog_y(@fog.bitmap)   
  end  
end
 
Социальные закладки