Project1
标题:
如何不用编辑器修改rvdata2?
[打印本页]
作者:
皇城阳光
时间:
2017-6-21 15:43
标题:
如何不用编辑器修改rvdata2?
因为有一个名词需要修改,而一个个打开事件去找非常麻烦,还有可能遗漏。我打算取出Map***.rvdata中的文本直接进行正则匹配。
首先我用
$map = load_data("Data/Map"+s+".rvdata2")
复制代码
取到了Map里面的数据。
再用
File.open("Map"+s,"wb").syswrite($map.events)
复制代码
将Map里面的事件取出来了
这时能看到一堆{8=>#<RPG::Event:0x71b2068 @id=1, @name="EV001", @x=289, @y=354, @pages=[#<RPG::Event:……………………(以下省略)
这样的数据
用正则替换将我要修改的名词全部替换之后我犯难了,该如何将替换后的东西导入到Map***.rvdata2呢?
因为这堆好像是哈希的东西??? 不能直接导入???
$map.events = File.open(Map"+s+","r").read
save_data($map, "Data/Map"+s+".rvdata2")
复制代码
这样的方法导入是失败的,不太清楚Ruby的哈希和RMVA的数据格式,请教一下大家有没有办法能够将修改后的$map.events导入。
或者有没有什么能够方便批量修改地图事件里面词组的方法?
拜谢!
@fux2
dalao可否帮帮忙
作者:
fux2
时间:
2017-6-21 17:00
你当然得遍历所有事件啊,你用marshal.dump保存的地图数据,直接读取只会得到字符串,有啥用- -
$map = load_data("Data/Map"+s+".rvdata2")
这里map已经是个实例了,你要替换也得保持他的数据结构
$map.events.each do |key,value|
value.pages.each do |page|
page.list.each do |line|
#command.parameters
end
end
end
复制代码
注释部分查找你要找的指令和内容,替换之,再将$map,save_data回去
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1