Project1

标题: 【VA】很纠结scripts.rvdata2读出的数组s[id][0]的那堆数字的意义 [打印本页]

作者: 凌童鞋    时间: 2012-3-17 16:58
标题: 【VA】很纠结scripts.rvdata2读出的数组s[id][0]的那堆数字的意义
本帖最后由 fux2 于 2012-3-24 16:17 编辑
  1. p $RGSS_SCRIPTS[1][0]
复制代码
运行这段代码会输出一堆数字,这堆数字是干什么的呢?
曾经有前辈解读过scripts的结构,不过这堆数字是干什么的那位前辈也不知道…
虽然知不知道无所谓,但不知道的话还是很让人纠结呢…
不断插入删除脚本页,2,8,10,16这四种进制都p了一遍,不过怎么看都像是随机数……
作者: 雪流星    时间: 2012-3-18 13:07
p $RGSS_SCRIPTS[1] 会出现一些东西
我改成 p $RGSS_SCRIPTS[0] 又不太一样
先去睡了,明天在看
作者: 凌童鞋    时间: 2012-3-18 13:22
标题: RE: 很纠结scripts.rvdata2读出的数组s
雪流星 发表于 2012-3-18 13:07
p $RGSS_SCRIPTS[1] 会出现一些东西
我改成 p $RGSS_SCRIPTS[0] 又不太一样
先去睡了,明天在看 ...

p $RGSS_SCRIPTS[id][item]
这句就是等同于:
  1. s = load_data(Data/Scripts.rvdata2)
    p s[id][item]
复制代码
id:脚本在脚本编辑器中的从上到下的序号
item:
0:一堆不明的数字
1:脚本名称
2:zlib压缩的脚本数据,level6
作者: orzfly    时间: 2012-3-18 13:22
本帖最后由 orzfly 于 2012-3-18 13:24 编辑

据我所知和编辑器的这个功能有关:
编辑器中运行游戏 遇到脚本错误 编辑器可以自动定位到出错点

我那个叫做猫君的奇怪的编辑器 保存脚本时全部把这个字段写0 然后发现在RM中这个定位出错点的功能失效了
作者: fux2    时间: 2012-3-24 15:28
本帖最后由 fux2 于 2012-3-24 15:31 编辑

@凌童鞋@Shy07@雪流星@orzfly

先附一下脚本解压部分
  1. $RGSS_SCRIPTS=load_data(@scripts_fname)
  2. $RGSS_SCRIPTS.each{|s| s[3,0]=Zlib::Inflate.inflate(s[2])}
  3. #$RGSS_SCRIPTS.size最后返回脚本元素长度是必须的,否则程序跳出.
复制代码
读出的时候这些编号就已经存在了,说明不是动态变量,是编辑器写入的东西.
算了时间不多直接说结果。
这个编号影响到一个叫$data_exit_code的东西,他存在于编辑器里.
贴一段代码
  1. $data_scripts_cur_sel = $data_exit_code / 65536
  2. $data_scripts_top_index = [$data_scripts_cur_sel - 20, 0].max
  3. $data_scripts_cur_id = $data_scripts[$data_scripts_cur_sel][0]
  4. cur_line = $data_exit_code % 65536 - 1
  5. first_line = [cur_line - 20, 0].max
  6. $sch00 ={} if $sch00 == nil
  7. $sch00[$data_scripts_cur_id] = [first_line,cur_line, 0]
  8. $data_exit_code = %d
复制代码
所以八成楼上说的是对的,具体也没继续跟下去,这已经很明了了。




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