Project1

标题: 关于rxdata数据结构 [打印本页]

作者: 熊猫    时间: 2011-2-13 23:38
标题: 关于rxdata数据结构
本帖最后由 熊猫 于 2011-2-13 23:40 编辑

最近心血来潮想来读一下这个数据结构。先可一个简单的来Actors.rxdata。
我参看了如下帖子:
http://rpg.blue/forum.php?mod=viewthread&tid=102118
http://rpg.blue/thread-139590-1-1.html
顺利地读出了Actors.rxdata中的全部角色的基本数据。
唯一的不足就是所有角色,我都略掉了Table这个结构没有读。
根据紫苏和DNA的帖子,Actors.rxdata,主要包含的是一个数组,有9个元素,排除0号Nil,就有8个(默认数据库中8个角色)。
我看了一下,只有第一个角色的属性既写了变量名又写了值。后面的都仅仅是有变量的值,没有变量名。
这样的话我就拿1号角色说事了。
1号角色的7号属性@parameters,使用save_data出来的是“@parameters=#<Table:0x43d1ae8>”可见这与其他变量不同,实际上我看,这个Table中包含了大量的数据。
由于学艺不精,对于数据结构所知甚少,所以说分析不出详细的结构,唯一能做的就是把这个部分略掉读后面的。
目前我对于Table这块的分析:
变量名@parameters
后面跟的类型是u,也就是75h(这里紫苏的表中有)
根据表,接着的是s和n,类名和个数
然后是一个标识符“:”也就是3Ah。
接着跟的是0Ah,也就是5+5=10->A。
往下读5个字符是Table
接着读是02h。我理解的是:2小于5,所以不减。说明读两位。
读两位分别是 C4h 04h,我想这应该是一个数,组合起来是4C4h=1220
说明接下来的长度是1220,也就是这个Table结构长度
我直接把文件指针往下移了1220个长度读第二个角色了……
所以这部分忽略掉了。

请求高人讲解一下这个Table的结构。
还有Save_Data之后为什么这里显示的是#<Table:0x43d1ae8>,0x43d1ae8是啥。

谢谢。

最后传一下我分析的Actors.rxdata: Actors.rar (2.23 KB, 下载次数: 47)

那个,此帖只讨论rxdata数据文件,不涉及对RGSSAD的讨论,也就是没有任何与解密有关的信息。dsu_plus_rewardpost_czw
作者: tamashii    时间: 2011-2-13 23:52
本帖最后由 tamashii 于 2011-2-14 00:11 编辑

为啥十六进制要写作XXh啊,用0xXXXX躲好啊。
我只能告诉你 那个 0x43d1ae8 是内存地址

Table 相当于一个二维或三维数组
Game_Actor中关于$data_actors.parameters的使用方法:
  1. #--------------------------------------------------------------------------
  2. # ● 获取基本 MaxHP
  3. #--------------------------------------------------------------------------
  4. def base_maxhp
  5.   return $data_actors[@actor_id].parameters[0, @level]
  6. end
复制代码
可以看到[]里面两个索引:第一个为参数种类,从0-5。
第二个是等级
也就是说,@parameter里面存储的是属性曲线。
建议使用for循环进行输出
  1. for i in 0..parameters.xsize
  2.   for j in 0..parameters.ysize
  3.     p parameters[i, j]
  4.   end
  5. end
复制代码

作者: 熊猫    时间: 2011-2-14 00:12
回复 tamashii 的帖子

谢了,忘记Parameter这个变量了!
作者: IamI    时间: 2011-2-14 07:04
Table我写过一个分析贴,前面是数据总长 然后4位是总数据量 再4位x长 y长 z长 后面就是数据。  
可以搜下我在发布区发过的帖子...自己懒得翻orz
p出来后面那个是指针地址




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