返回列表 发帖
假设物品掉落系数(或者叫掉落倍率)为X1(全部变量),掉落判定值X2(局部变量),状态调整系数X3,沉默系统调整系数X4,掉落物品数量N

X1可以很方便的由运营商调整。。X2则保存在怪物的设置文件上(数组里的一个值)。。每种物品独立设置一个
物品种类分为普通物品、卡片、MVP道具,各以不同的下标表示

在杀死怪物之后,服务端利用掉落系数(X1,X3,X4)作为形参(形式参数)调用计算掉落物品数量的函数function1并把返回值N作为掉落判定函数function2的形参,当function2根据N来决定该函数方法的循环次数(如果按怪物掉落物品数量来决定循环次数,那么该函数的时间复杂度会很大),function2只要任务是先生成随机数Random1,接着利用Random1计算出ranres,然后利用ranres不大于(不小于)X2进行判断,当X2比ranres大(小)时,掉落该物品,并在该物品的下标设置flag(旗标),然后进入下一次循环,知道对N进行判断返回false结束循环。最后把数组下标作为形参调用掉落物品的函数function3掉落相关物品。在实际的程序设计中,在设计function2时,会设计3种方法,每种方法对应一种类型道具(没有MVP标记的不执行MVP道具掉落的运算)。根据个人对程序设计的经验,没有必要不会使用0而是使用一个无限接近为0的数值代替。

对于盗属性的怪,可以每只怪对应一个队列(先进先出),队列的长度是一个定值,当怪盗取的物品时,把物品ID入队,当物品数量出超过队列长度时,最先入队的ID就被后面的物品ID覆盖,导致物品消失,当杀死该类型的怪时,执行出队操作,掉落物品,并清空该队列,释放内存。

所谓的RP嘛。。就是生产随机数的运气了。。。


以上是根据自己对编程的理解所得出的。。。

希望有高人指点~

TOP

返回列表