Код:
	=begin
                    Swap Tileset with new passage setting
Версия: 0.4
Автор: BulletXt (bulletxt@gmail.com)
Перевод: The Joker
Дата: 13/06/2009
Этот скрипт позволяет вам:
a) Менять наборы тайлов в любой момент
b) сменить один или несколько тайлсетов
c) загружать другую таблицы проходимостей в любой момент
Как это работает:
Создайте папку "extra_tiles" в Graphics/System. Поместите туда дополнительные
тайлсеты. Вы можете давать им имена по своему усмотрению. Прежде чем перемещать
игрока на другую локацию, просто вызовите скрипт внутри события таким образом:
$tileA1 = "fileName"
Вместо "fileName" впишите имя того тайлсета, на который вы хотите произвести
смену. В этом примере изменен тайлсет A1. Вы можете менять один или же несколько
тайлсетов сразу. Пример ниже меняет тайлсеты A1, A4 и E:
$tileA1 = "fileName"
$tileA4 = "fileName"
$tileE = "fileName"
Сразу после выполнения скрипта внутри события, включите переключатель SWAP_TILE
(номер переключателя можно отредактировать ниже). Чтобы вернуться к стандартному
тайлсету локации, просто выключите этот переключатель.
Вы также можете загрузить таблицу проходимости, отличную от оригинальной. Просто
откройте новый проект, скопируйте тайлсеты и выставьте проходимость так, как вам
угодно, сохраните и закройте проект. В папке Data только что созданного проекта
скопируйте файл System.rvdata. Вставьте этот файл в ваш проект в директорию
"extra_tiles" в Graphics\System и переименуйте его ка вам угодно. Убедитесь, что
расширение файла - ".rvdata"
Пример: System.rvdata переименован в:  pub.rvdata
Таблица проходимости загружается также, как и тайлсеты. Это значит, что сначала
выполнить скрипт внутри события, а затем включить переключатель 
LOAD_PASSAGE_SETTING (номер переключателя можно отредактировать ниже). Вы можете
загрузить таблицу проходимости без смены тайлсетов. Эти две вещи совершенно не
зависят друг от друга.
Скрипт для загрузки таблицы проходимости выглядит следующим образом:
$swap_passages = "filePassage"
Вместо filePassage впишите имя необходимой таблицы проходимости.
Просто выключив оба переключателя, вы автоматически смените таблицу проходимости
и все тайлсеты на стандартные.
Если вы хотите переместить игрокаи сохранить все измененные тайлсеты, и хотите
загрузить стандартный тайлсет A3, просто выполните скрипт такого рода:
$tileA3 = nil
Для такого же результата с таблицей проходимости:
$swap_passages = nil
Это изменит вашу таблицу на стандартную таблицу проходимости.
Трюки:
- Вы можете создать специалльный эффект, как в демо-версиию.
  Например, вы можете сделать смену тайлсетов без перехода на локацию.
  Для наглядности вы можете сделать смену тайла стены в реальном времени.
  Для этого сделайте все для стандартной смены тайлсетов (скрипт + свитч ВКЛ),
  затем сразу после этого выполните скрипт внутри эвента: $game_map.tileset.
  Этот скрипт перезагружает карту (экран замирает на 30 милисекунд), и у стены
  будет уже совсем другой тайл. Также можно работать и с таблицей проходимости:
  скрипт + свитч ВКЛ, затем скрипт $game_map.tileset, и к карте будет применена
  загруженная таблица проходимости.
  
=end
############################# КОНФИГУРАЦИЯ #####################################
# Это номер (ID) переключателя, вызывающего систему смены тайлсетов. Он исполь-
# зуется для смены/восстановления тайлсетов. ОН НЕ МЕНЯЕТ ТАБЛИЦУ ПРОХОДИМОСТИ!
# Убедитесь, что включаете переключатель перед вызовом скрипта (как сказано выше)
SWAP_TILE = 1
# Это номер (ID) переключателя, вызывающего систему загрузки таблицы проходимости.
# Он используется для загрузки восстановления таблицы проходжимости. ОН НЕ МЕНЯЕТ
# ТАЙЛСЕТЫ!
# Убедитесь, что включаете переключаетль перед вызовом скрипта (как сказано выше).
LOAD_PASSAGE_SETTING = 2
########################## КОНЕЦ КОНФИГУРАЦИИ ##################################
#==============================================================================
# ** Cache
module Cache_Swap_Tiles
 
  #--------------------------------------------------------------------------
  # * Get Character Graphic
  #     filename : Filename
  #--------------------------------------------------------------------------
  def self.swap(filename)
    load_bitmap("Graphics/System/extra_tiles/", filename)
  end
  
  #--------------------------------------------------------------------------
  # * Clear Cache
  #--------------------------------------------------------------------------
  def self.clear
    @cache = {} if @cache == nil
    @cache.clear
    GC.start
  end
  #--------------------------------------------------------------------------
  # * Load Bitmap
  #--------------------------------------------------------------------------
  def self.load_bitmap(folder_name, filename, hue = 0)
    @cache = {} if @cache == nil
    path = folder_name + filename
    if not @cache.include?(path) or @cache[path].disposed?
      if filename.empty?
        @cache[path] = Bitmap.new(32, 32)
      else
        @cache[path] = Bitmap.new(path)
      end
    end
    if hue == 0
      return @cache[path]
    else
      key = [path, hue]
      if not @cache.include?(key) or @cache[key].disposed?
        @cache[key] = @cache[path].clone
        @cache[key].hue_change(hue)
      end
      return @cache[key]
    end
  end
end
#initialize global variables
$tileA1 = nil
$tileA2 = nil
$tileA3 = nil
$tileA4 = nil
$tileA5 = nil
$tileB = nil
$tileC = nil
$tileD = nil
$tileE = nil
$swap_passages = nil
################################################################################
class Game_Map
include Cache_Swap_Tiles  
  alias bulletxt_goodbye_vx_limit_tile_setup setup
  def setup(map_id)
    #if false, normal vx behavior and exit
    if $game_switches[LOAD_PASSAGE_SETTING] == false
    bulletxt_goodbye_vx_limit_tile_setup(map_id) 
    $swap_passages = nil 
    return  
    end
    
 
    path = "Graphics/System/extra_tiles/" + $swap_passages.to_s() + ".rvdata" rescue nil
   if $swap_passages != nil
     @map_id = map_id
     @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
     @display_x = 0
     @display_y = 0
     
     
      # load system settings from that file
      new_system_rvdata = load_data(path)
      # Use passage settings from that file
      @passages = new_system_rvdata.passages
      
      #default vx code
      referesh_vehicles
      setup_events
      setup_scroll
      setup_parallax
      @need_refresh = false
      
    else
    bulletxt_goodbye_vx_limit_tile_setup(map_id)  
    end
   
  end
  
  #if here, player has done a $game_map.tileset call. It must reload
  #map with new passage setting (if it exists) and upate map.
  def tileset
    #if false, we must update and load default passage
    if $game_switches[LOAD_PASSAGE_SETTING] == false
    @passages = $data_system.passages 
    else
    
    #if nil, must reset passage setting to default  
    if $swap_passages == nil
    @passages = $data_system.passages
    $scene = Scene_Map.new
    return
    end 
      
      
path = "Graphics/System/extra_tiles/" + $swap_passages + ".rvdata" rescue nil
    
    # load system settings from that file
    new_system_rvdata = load_data(path)
    # Use passage settings from that file
    @passages = new_system_rvdata.passages
   
      
   end   
   #this updates the map tiles. it does not modify events or anything else.
   $scene = Scene_Map.new
  end
  
  
  
end
class Spriteset_Map
include Cache_Swap_Tiles  
  alias bulletxt_lodestone_create_tilemap create_tilemap
  def create_tilemap
    if $game_switches[SWAP_TILE] == false
     bulletxt_lodestone_create_tilemap
     $tileA1 = nil
     $tileA2 = nil
     $tileA3 = nil
     $tileA4 = nil
     $tileA5 = nil
     $tileB = nil
     $tileC = nil
     $tileD = nil
     $tileE = nil
    else 
bulletxt_lodestone_create_tilemap 
path_to_graphic = "extra_tiles/" 
#tileA1   
tile1 = Cache_Swap_Tiles.swap($tileA1 + ".png") rescue nil
@tilemap.bitmaps[0] = tile1 if $tileA1 != nil#if FileTest.exist?(path_to_graphic + $tileA1.to_s() + ".png")
#tileA2
tile2 = Cache_Swap_Tiles.swap($tileA2 + ".png") rescue nil
@tilemap.bitmaps[1] = tile2 if $tileA2 != nil#if FileTest.exist?(path_to_graphic + $tileA2.to_s() + ".png")
#tileA3
tile3 = Cache_Swap_Tiles.swap($tileA3 + ".png") rescue nil
@tilemap.bitmaps[2] = tile3 if $tileA3 != nil#if FileTest.exist?(path_to_graphic + $tileA3.to_s() + ".png")
#tileA4
tile4 = Cache_Swap_Tiles.swap($tileA4 + ".png") rescue nil
@tilemap.bitmaps[3] = tile4 if $tileA4 != nil#if FileTest.exist?(path_to_graphic + $tileA4.to_s() + ".png")
#tileA5
tile5 = Cache_Swap_Tiles.swap($tileA5 + ".png") rescue nil
@tilemap.bitmaps[4] = tile5 if $tileA5 != nil#if FileTest.exist?(path_to_graphic + $tileA5.to_s() + ".png")
#tileB
tile6 = Cache_Swap_Tiles.swap($tileB + ".png") rescue nil
@tilemap.bitmaps[5] = tile6 if $tileB != nil#if FileTest.exist?(path_to_graphic + $tileB.to_s() + ".png")
#tileC
tile7 = Cache_Swap_Tiles.swap($tileC + ".png") rescue nil
@tilemap.bitmaps[6] = tile7 if $tileC != nil#if FileTest.exist?(path_to_graphic + $tileC.to_s() + ".png")
#tileD
tile8 = Cache_Swap_Tiles.swap($tileD + ".png") rescue nil
@tilemap.bitmaps[7] = tile8 if $tileD != nil#if FileTest.exist?(path_to_graphic + $tileD.to_s() + ".png")
#tileE
tile9 = Cache_Swap_Tiles.swap($tileE + ".png") rescue nil
@tilemap.bitmaps[8] = tile9 if $tileE != nil#if FileTest.exist?(path_to_graphic + $tileE.to_s() + ".png")    
    
    end
  end
end
class Scene_File < Scene_Base
  alias bulletxt_swap_tiles_write_save_data write_save_data
  def write_save_data(file)
    bulletxt_swap_tiles_write_save_data(file)
    Marshal.dump($tileA1,      file)
    Marshal.dump($tileA2,      file)
    Marshal.dump($tileA3,      file)
    Marshal.dump($tileA4,      file)
    Marshal.dump($tileA5,      file)
    Marshal.dump($tileB,      file)
    Marshal.dump($tileC,      file)
    Marshal.dump($tileD,      file)
    Marshal.dump($tileE,      file)
    Marshal.dump($swap_passages.to_s(),   file)
  end  
  
  
  alias bulletxt_swap_tiles_read_save_data read_save_data
  def read_save_data(file)
    bulletxt_swap_tiles_read_save_data(file)
    $tileA1        = Marshal.load(file)
    $tileA2        = Marshal.load(file)
    $tileA3        = Marshal.load(file)
    $tileA4        = Marshal.load(file)
    $tileA5        = Marshal.load(file)
    $tileB        = Marshal.load(file)
    $tileC        = Marshal.load(file)
    $tileD        = Marshal.load(file)
    $tileE        = Marshal.load(file) 
    $swap_passages = Marshal.load(file)
  end
  
  
  
  end
 Эта небольшая программа с GUI предназначена для непосредственной работы в RPG Maker VX в процессе создания карт. Использования этой прогаммы имеет смысл в том случае, если вы используете мой скрипт 
Социальные закладки