Название: Copy Map
Автор: DeadElf79
Версия: 1.0 (от 15.05.2013)
Возможности:
+Позволяет скопировать часть карты или всю карту в выбранное место
+Позволяет копировать из других карт в нужную
+Результат сохраняется и будет виден в редакторе
Недостатки:
-Необходимо перезагружать карту после применения, чтобы увидеть результат
-На картах с разными тайлсетами сработает убого
Инструкция:
Вызываем скрипт с такими параметрами:
Copy_Map.new(src_map_id,dest_map_id,src_rect,dest_x,dest_y)
где src_map_id - номер той карты, из которой мы копируем,
dest_map_id - номер той карты, в которую мы вставляем,
src_rect - прямоугольник карты,
dest_x - координата X, куда вставляем,
dest_y - координата Y, куда вставляем.
Пример вызова:
Copy_Map.new(2,2,Rect.new(0,0,5,8),12,0)
Скрипт:
#=============================================================================
# COPY MAP or part of these
# Author: DeadElf79
# Version: 1.0
# Date: 15.05.2013
#=============================================================================
class Scene_Map
attr_accessor :spriteset
end
class Copy_Map
def initialize(src_map_id,dest_map_id,src_rect,dest_x,dest_y)
@src_map=load_data(sprintf("Data/Map%03d.rxdata", src_map_id))
@dest_map=load_data(sprintf("Data/Map%03d.rxdata", dest_map_id))
@id=dest_map_id
@src_rect = src_rect
@x,@y = dest_x,dest_y
start_copy
save_result
refresh
end
def start_copy
for i in @src_rect.x..@src_rect.x+@src_rect.width
for j in @src_rect.y..@src_rect.y+@src_rect.height
for k in 0..3
@dest_map.data[@x+i,@y+j,k]=@src_map.data[i,j,k]
end
end
end
end
def save_result
save_data(@dest_map,sprintf("Data/Map%03d.rxdata", @id))
end
def refresh
if $scene.is_a?(Scene_Map) then
Graphics.freeze
$game_map.refresh
Graphics.transition
end
end
end