设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7895|回复: 2
打印 上一主题 下一主题

[已经过期] 如何不用编辑器修改rvdata2?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
62
在线时间
18 小时
注册时间
2017-5-6
帖子
7
跳转到指定楼层
1
发表于 2017-6-21 15:43:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
因为有一个名词需要修改,而一个个打开事件去找非常麻烦,还有可能遗漏。我打算取出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可否帮帮忙

点评

你没有改掉事件,只是改掉了你读取的东西吧···  发表于 2017-6-21 17:24

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
41988
在线时间
7655 小时
注册时间
2009-7-6
帖子
13527

开拓者贵宾

2
发表于 2017-6-21 17:00:16 | 只看该作者
你当然得遍历所有事件啊,你用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回去

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 清陈年老帖 认可答案

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-21 11:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表