大话II奖励机制解密(附模拟程序)
下面语句将得到见闻录的机率调为以前的2.5倍
sjk(1,3)=1*jiange+500
下面语句将得到神兵的机率调为以前的百分之一
sjk(7,3)=7*jiange+2
通过对这些数值的调节,系统就基本控制藏宝图任务中物品的发放了。这也就不能明白为什么官方在公告中说调节获得某项物品的机率以及仙器传说刚开的时候,十个高级宝图中有9个能挖出来仙器的原因。
然后,我们把目光拉回来,放到我们的藏宝图上,当玩家选择打开藏宝图的时候,系统会产生一个随机数。如下以代码所示:
randomize
dim top
dim p
for p = 1 to 20
if sjk(p,1)="" then exit for
next
top=p*1000
dim jiangli
jiangli=cint(rnd()*top)
首先获取所有奖项的最大值,也就是其中的top,然后产生一个位于0到top之间的数。
随机数产生完成以后,系统再拿它和数据库中奖励的上下限对照,看它落在哪个奖励的上下限之间,就获得哪项奖励。此部分代码如下:
for p= 1 to 20
if jiangli<=sjk(p,3)and jiangli>=sjk(p,2) then item=sjk(p,1)
next
需要注意的是,数据库中的两个奖励的上下限之间是有一定的距离的,比如说第二项奖励的范围是(2000-2200),第三项奖励的范围是(3000-3200),其中(2201-2999)之间的数据则是用来调节第二项奖励的机率的。如果我们把第二项奖励获得范围调为(2000-2800),那么此项奖励得到的可能性就相当于以前的四倍了。
如果这个随机数落在两个奖项中用来调节前一项奖励的部分,比如说2990,那么系统会再重新生成一个随机数。再进行一次这样的判断,直到选出相应的物品为止。这一部分的代码即:
do while(item="")
……
然后再由系统调用其它模块,在玩家的道具里面加上一样东西,如果运气比较好的话,再在系统上露个名。
到此为止, 一个藏宝图的数学模型已经解释清楚了。可能有的朋友还有点疑问:一是我只列了奖励的类型,没有列出是哪种具体奖励。就像我只说了是神兵,而没有说是步定乾坤履还是枯骨刀还是垃圾的搜魂钩。二是既然奖励是随机产生的,为什么每天零点左右的时候,挖宝得到好东西的可能性就比较大。
对于第一个疑问,我们不妨这样理解:你打开了一个宝图,得到了一个神兵宝图,然后再打开神兵宝图,你就得到了混元盘金锁或是金箍棒或是别的什么神兵,但总归是神兵。
也就是说系统又调用了一次奖励发放模块,不同的是奖励的物品有变,但是在这里面,不同的物品也设定了不一样的获取范围。(系统也可能把所有的奖项放在一个数据库里面,通过一次随机数来实现。数据比较混乱。)
而你得到的神兵属性,可能是强人法的,也可能是强仙法的,或者是强物理的,也可能是单强的,也可能是双强的,这个属性的得到,它也是通过一系列随机数控制的。(当然,只限于有多种属性的神兵。)