本帖最后由 guoxiaomi 于 2019-8-12 17:46 编辑
刚刚打开程序看了一下,发现编辑器只能显示1-999这999张地图,即使创建了地图1000,编辑器中也不能显示。
但是,地图1000是真实存在的!可以通过场所移动,利用变量指定地图ID跳转过去。所以可以用如下的操作方案:
1. 编辑好XX地图
2. 把XX地图的ID修改到1000之后
3. 把场所移动的条件进行修改
写了一个简单的脚本,允许将地图的数量扩张到2000,更多的地图会使得编辑器无法打开。这也意味着在不魔改编辑器的情况下,地图数量的上限是2000
请在 cmd 窗口中执行以避免编辑器保存时覆盖掉 MapInfos.rxdata。或者在使用编辑器的调试功能创建了地图之后,立即关闭编辑器再启动。
# 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
# 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
范例:
RMXP地图数量扩展.zip
(204.31 KB, 下载次数: 115)
|