海のLUGIA 发表于 2012-6-30 20:01:19

[数据原理流]关于黑/白龙与冰龙合体的那些事

-。-虽然不保证结论一定对,转载请注明原帖地址,Thx

- -嘛,首先楔子的事情大家都应该知道了

合体用的楔子在重要道具中其实有两个,图像一样,说明不一样,一个用来合体,一个用来解体

使用完合体道具后,黑或白龙与冰龙合体,成为黑/白冰龙,同时合体楔子消失,解体楔子出现

使用解体楔子后,黑/白冰龙分裂成黑或白龙与冰龙,解体楔子消失,合体楔子出现

也正是因为如此,我们才只能在游戏中拥有一只合体的冰龙。

今天坐了半天的车从学校赶回家里,打开电脑就看到新闻说是BW2修改器能顺利修改出楔子了,又因为之前的版本就可以直接改出黑/白冰龙了,于是我就有了些猜想,到底合体的数据处理过程是咋样的呢?

于是对韩枫君使用了洗脑术,在我的鞭挞(误~)下,韩枫君按指示做了些实验,结果如下↓

猜测:消失掉的黑或白龙应该有一个内存区域专门用来存储他

准备工作:新开一个记录(确保记录没有发生过冰龙合体或解体的事件),修改出一只白冰龙和解体的楔子

操作:对白冰龙使用解体的楔子

结果:使用后解体出一个蛋,一点这个“蛋”就出现如下画面↓


没译错的话意思应该是“发生错误请切断电源”

这个结果符合我的猜想,因为之前并没有发生过合体的事件,那么专门用来存放被合体掉的龙的内存区域自然就应该是一系列的初始数值啦,这样的话如果允许解体,那么解体操作使得该块内存里的数值被写入到身上的空位中,如果是无规则的数据的话,最可能的自然就是死机之类的现象了(比如未发生过合体事件的话那块区域的内容为用随机值填充满,那么把这些数据取出来形成一只精灵的话当然是个不三不四的东西);有规则的数据的话,可能死机(全是00或全是FF填充也不三不四),也可能什么都没发生(如果身上空位的数据本来就是00或FF填充的话,那么用00或FF去覆盖00或FF,并没有产生变化)。

继续试验

准备工作,同样是新记录,一只改出来的白冰龙,取名为BaiBingA,一只普通冰龙,取名为BingA,一只白龙,取名为BaiA,一个合体的楔子

操作:先将BingA和BaiA合体,于是BaiA消失,BingA变成白冰龙,此时有两只白冰龙,改出来的BaiBingA,另一只是刚合体出来的BingA,这时我们对BaiBingA使用解体的楔子

猜测:BaiBingA变成普通冰龙,还原出白龙BaiA。

结果:和所料的一样,可见在BingA和BaiA合体后,BaiA的数据被放到了那块对应的内存区,尽管是对改出来的白冰龙BaiBingA解体,被还原的数据是最近被写入该内存区的BaiA的数据。

继续试验

准备工作,新记录,一只改出来的白冰龙,取名为BaiBingA,一只普通冰龙,取名为BingA,一只黑龙,取名为HeiA,一个合体的楔子

操作:先将BingA和HeiA合体,于是HeiA消失,BingA变成黑冰龙,此时有一只改出来的白冰龙BaiBingA,一只刚才合体出来的黑冰龙BingA,这时我们对白冰龙BaiBingA使用解体的楔子

猜测:结果应该跟上一个实验类似,BaiBingA变成普通的冰龙,还原出来的是黑龙HeiA。

结果:与所料一样,临时存放龙的内存区域是一个共享的区域,不管是黑龙还是白龙被合体掉,都存放在这个内存区域里,不存在黑龙有一个区域白龙有另一个区域这种事

这时我又想到了一个细节,那么解体完成后,内存区域里的数值会怎么样呢,会不会清空或者说回到初始状态呢?

于是继续试验

接着上面的操作,再添加一个解体的楔子,刚才实验做完的状态应该是普通冰龙BaiBingA,黑冰龙BingA,黑龙HeiA。

操作:对黑冰龙BingA使用解体楔子,黑冰龙BingA变回普通冰龙,又还原出来一只黑龙HeiA!

这是怎么回事呢?明明之前已经把黑龙HeiA还原出来了啊,怎么现在变成复制出一只黑龙HeiA了呢?

我的猜测是这样的,在BingA和HeiA合体时,HeiA的数据被写入到那个专用内存区域,在解体的时候,虽然从这里读取了数据还原出了一只黑龙HeiA的数据,但是这块内存区域里的数值却没有被释放,那么你又立马去解体一只黑/白冰龙的话,又一次从那块区域里去取值,还原出来的当然是最近的一次对该内存块写入的数据啦。

总结:

①内存中划分了一块区域,专门用来存放被合体掉的黑龙或白龙的数据

②如果没有发生过合体事件,这块内存里的数值并不是一只精灵的有效数据

③每发生一次合体事件,执行的程序为,把黑或白龙的数据写入到该块内存中,对应的位置的精灵数据清空。

④每发生一次解体事件,执行的程序为,从该块内存中获取暂存的黑或白龙的信息,写入队伍中的一个空位(该块内存区域中的黑或白龙的数据只被用来取值,并不产生任何变化)。

例子一:玩家从来没有执行过合体事件,用修改的手段改出了一只合体的冰龙与解体楔子,对该冰龙使用解体楔子,因为内存中的“被合体吸收掉的精灵”是无效数据,这块数据被写入到了队伍中的空位,数据非法,死机。

例子二:玩家正常地将黑龙(取名为A)与冰龙合体成了黑冰龙,又解体回了黑龙与冰龙。接着立马改出了一只黑冰龙和一个解体的楔子,对改出来的黑冰龙使用解体楔子,得到普通冰龙和A,再改出一只白冰龙和一个解体的楔子,对改出来的白冰龙使用解体楔子,得到普通冰龙和A。

十四 发表于 2012-6-30 21:38:25

前排占位!!!
沙发了~~~

韩枫 发表于 2012-6-30 21:38:26

占位~

xhzx6340 发表于 2012-6-30 21:40:10

非法合体会招来错误,恩。

这样可以量产黑白龙么=。=

[ 本帖最后由 xhzx6340 于 2012-6-30 21:47 编辑 ]

poohades 发表于 2012-6-30 21:42:00

技术贴!
话说解体的原理和钻地虫进化成苍蝇和鬼蝉应该是两回事吧

海のLUGIA 发表于 2012-6-30 21:44:51

原帖由 poohades 于 2012-6-30 21:42 发表 http://www.pmcenter.cn/images/common/back.gif
技术贴!
话说解体的原理和钻地虫进化成苍蝇和鬼蝉应该是两回事吧
我没研究过,而且这次也是从表面推测,并没有debug程序执行的内部过程……

韩枫 发表于 2012-6-30 21:52:30

回复 #4 xhzx6340 的帖子

我今天量产了好几只黑冰和白冰,而且这种合体出错误的可能性很小吧,也没做太大的改动,
做实验的这些龙都是孵蛋出来的= =,虽然也是修改器调的。

xhzx6340 发表于 2012-6-30 22:00:04

回复 #7 韩枫 的帖子

实际上这些量产的黑龙白龙应该是一模一样的吧?
也就是说这其实只是一种对pm的复制?

marsviper 发表于 2012-6-30 22:19:20

BaiBingA变成普通冰龙,还原出白龙BaiA。
这还原出的普通冰龙是什么数据?

poohades 发表于 2012-6-30 22:29:49

原帖由 海のLUGIA 于 2012-6-30 09:44 PM 发表 http://www.pmcenter.cn/images/common/back.gif

我没研究过,而且这次也是从表面推测,并没有debug程序执行的内部过程……
L可以研究下,说不定可以给绿改新的想法

风的岚十字 发表于 2012-6-30 22:42:01

小问一下,L洗韩枫的脑是物理还是语言?物理的话 ····有JQ啊 【奸笑】

tpax007 发表于 2012-6-30 22:57:13

L姐能想到这个真厉害

海のLUGIA 发表于 2012-6-30 23:31:32

原帖由 poohades 于 2012-6-30 22:29 发表 http://www.pmcenter.cn/images/common/back.gif

L可以研究下,说不定可以给绿改新的想法
合体也好,分裂也好,很讨厌呢

hnzzy123 发表于 2012-7-1 00:22:01

...如果我求黑/白冰龙的修改器日文/英文名字会被吐槽吗?

韩枫 发表于 2012-7-1 00:27:15

黑冰和白冰的名字就是冰龙的名字
页: [1] 2
查看完整版本: [数据原理流]关于黑/白龙与冰龙合体的那些事