幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1794|回复: 2

关于Scripts.rxdata的分析

[复制链接]

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2006-1-2 21:10:21 | 显示全部楼层 |阅读模式
RM游戏的Data目录下面存放的是游戏的数据,关于这些文件,帮助文档的【RMXP数据结构】一节对此都有详细的Ruby脚本描述。

但是,似乎少了这个,Scripts.rxdata,也就是脚本自身存放的地方。
下面说下这个文件的结构,如果火星了请大家指出-_-b
# 使用如下语句可以读取这个文件到一个对象
$SCRIPTS = load_data("Data/Scripts.rxdata")

# 读取之后,用如下语句了解到Scripts.rxdata保存了一个Ruby的Array对象。
p $SCRIPTS.type.to_s

# 脚本对象是一个二维数组,用$SCRIPTS[id]表示第一维。每个一维单元,是一个包含3个对象的数组。
$SCRIPTS[id][0] #一个数字,含义不明^_^bb
$SCRIPTS[id][1] #脚本段的标题字符串,比如Main
$SCRIPTS[id][2] #经过压缩的脚本内容字符串

# id的范围就是0~最大脚本段数。0就是编辑器最上面的脚本,比如Game_Temp。

# 因为脚本内容被压缩了,所以用UE等文本编辑器直接打开Scripts.rxdata是看不到脚本内容,只能看到脚本段标题。

# 经过分析,压缩使用的是Ruby的Zlib模块。解压方法如下,直接加到数组第4个单元上:
$SCRIPTS[id][3,0] = Zlib::Inflate.inflate($SCRIPTS[id][2])

# 然后可以尝试显示一下,应该可以看到自己的脚本内容了:)
p $SCRIPTS[id][3]
上面的内容可以直接粘贴到脚本框里面看效果。

知道了这个有什么用呢?呵呵,就是增进一下对RGSS的了解,毕竟存在一个未知的数据结构是很不舒服的事情:)当然知道这个后,可以对脚本的文件做一下诡异的处理。比如……#$@#$!#$,再比如……@#@#!@%$@#$。

另外,Zlib是一个压缩和解压模块,使用这个模块可以做很多事情。具体Zlib怎么使用,可以去网上搜索一下,还是比较容易找到的。

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复

使用道具 举报

89

主题

2333

帖子

3273万

积分

⑧专业

Xavier on Rails

积分
32739794
QQ
发表于 2006-1-4 18:30:06 | 显示全部楼层
那是否其他的.rxdata文件也是通过zlib加密的呢?
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
 楼主| 发表于 2006-1-5 11:56:09 | 显示全部楼层
其他文件都是Marshal.dump方法直接保存的数据,亦可以直接用Marshal.load来读取。
没有经过加密或者压缩。

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-26 01:20 , Processed in 0.010224 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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