# encoding: utf-8
# -----------------------------------------------------------------------------
# RMXP 地图数量扩张
# 作者: guoxiaomi
# -----------------------------------------------------------------------------
# 使用方法:
# 1. 脚本插入到 main 前
# 2. 在事件场所移动前添加一行事件脚本:shift_transfer_mapid,场所移动必须是指定地图ID。
# 脚本功能:
# 1. 调试模式运行下,会读取场所移动的目标地图,复制一份新地图到 ID+1000 的地图里,并跳转到新地图
# 2. 复制的地图与跳转的地图完全一样,但复制完成后不会再同步改动
# 3. 复制的地图因为 ID > 1000 所以在编辑器中不显示也无法编辑
# 4. 地图只会复制 1 次,删掉 data 文件夹里的地图文件即可重新复制
# 5. 普通模式运行下,会跳转到新地图
# 6. 复制的地图 ID 超过 2000 时,会导致编辑器无法打开
# 7. 此脚本正常使用不用担心 6 中的问题,但是仍然要做好数据备份
# -----------------------------------------------------------------------------
class Interpreter
if $DEBUG
MapInfos = load_data("Data/MapInfos.rxdata")
end
def shift_transfer_mapid
return if @list[@index + 1].code != 201
old_map_id = @list[@index + 1].parameters[1]
max_index = 1000
if old_map_id < max_index
@list[@index + 1].parameters[1] += max_index
if $DEBUG
new_map_id = old_map_id + max_index
new_map = "Data/Map%03d.rxdata" % new_map_id
old_map = "Data/Map%03d.rxdata" % old_map_id
if !File.exist?(new_map) || !MapInfos.keys.include?(new_map_id)
p "Create Map #{new_map_id}"
# Copy Files
save_data(load_data(old_map), new_map)
# Edit MapInfos
MapInfos[new_map_id] = MapInfos[old_map_id].clone
MapInfos[new_map_id].name = "MAP%03d" % new_map_id
save_data(MapInfos, "Data/MapInfos.rxdata")
end
end
end
end
end