Project1

标题: 如何不用编辑器修改rvdata2? [打印本页]

作者: 皇城阳光    时间: 2017-6-21 15:43
标题: 如何不用编辑器修改rvdata2?
因为有一个名词需要修改,而一个个打开事件去找非常麻烦,还有可能遗漏。我打算取出Map***.rvdata中的文本直接进行正则匹配。

首先我用
  1. $map = load_data("Data/Map"+s+".rvdata2")
复制代码

取到了Map里面的数据。

再用
  1. 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呢?

因为这堆好像是哈希的东西??? 不能直接导入???

  1. $map.events = File.open(Map"+s+","r").read
  2. 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已经是个实例了,你要替换也得保持他的数据结构
  1. $map.events.each do |key,value|
  2.   value.pages.each do |page|
  3.     page.list.each do |line|
  4.      #command.parameters
  5.     end
  6.   end
  7. end
复制代码


注释部分查找你要找的指令和内容,替换之,再将$map,save_data回去




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1