|
呵呵,虽然目前还只是理论。大家给点意见
野怪掉宝触发的核心函数是
native ChooseRandomItemEx takes itemtype whichType, integer level returns integer
随机选择某等级某类型的宝物
如我们所见,是一个native函数,不知道具体如何工作
但目前已经证实的有:
1. 使用随机种子的伪随机(废话)。
2. 不受GetRandomInt, GetRandomReal影响,即他自成一套系统
3. 也不受随机攻击等其他随机事件影响
4. 会受到ChooseRandomItem 函数的影响。不过这个函数基本没有使用
5. 更改其中某一行的类型或者等级参数,不会影响到下一个以及之后掉宝的结果
初步结论是,野怪掉宝物只和2个因素有关: 1是随机种子。2是顺序:他是第几个被mf的能掉宝物的野怪
一个确定的随机种子产生一个确定的伪随机数列,而后应用到不同的野怪上去。
这里有意思的一点是,尽管对不同等级不同类型返回的不同,但实际上它是近似于按顺序选择的
例如选择2级永久宝物,假如某次随机出按顺序为第3个该类宝物,我们在保持随机种子不变的前提下,
将2级永久宝物改为3级消耗宝物,则随出来的是第3个3级消耗宝物。
利用这个特性我们可以提前“预测”也就是提前察看第n次随机对应第x个宝物,而又不会造成无法回去的局面
假如地图上共有10个野怪会掉宝物,我在一开始就运行10次随机函数,
这样我就知道,比如第1次是第3个宝物,第2次是第2个宝物,第3次是第4个宝物,如此类推
但是当野怪真正掉宝时,如果不加改变,这时结果会不同,造成断线
野怪掉宝使用了blizzard.j内的unitdropitem函数,我们修改之,使得它忽略输入的物品id,而从我们储存的全局变量中选物品
例如我这时知道该野怪是第几个被杀死的,于是我知道应该掉第几个宝物;
我又通过类似查表的方法知道他应该掉什么类型什么等级的宝物,于是就强行让他与原来的结果一致。
这样游戏得以正常进行;而我则在一开始就得到了所有野怪掉宝的不完全结果
(实际上我只知道第一个死的掉第三个宝,等等。。还需要自己记住什么类型宝物第几个是什么才有意义)
当然也可以给野怪头上加个texttag宣称:如果接下来我死了,我掉x宝物。 |
评分
-
查看全部评分
|