记一个石器伤害计算的问题
早在之前写了一个人物伤害大比拼的LUA,最近过年投放使用才发现不少问题,主要问题在于有些人物会把伤害记录到数据库里,有些人物并不会记录到数据库里。用自己的账号测试未发现问题,但用普通账号测试有时候记录有时候却又不记录。百思不得其解,进行了各种测试,还是有问题。无奈看了下源码多加了几处print才发现问题所在,这里主要看下battle_event.c中的BATTLE_AttackSeq函数。
往下拉看到if( RAND( 1, 10000 ) < perCri ){这句话。如图所示:
看到BATTLE_CriDamageCalc和BATTLE_DamageCalc两个函数
BATTLE_CriDamageCalc这个函数是在BATTLE_DamageCalc几处上加入了对方和自己的等级差伤害计算,而BATTLE_DamageCalc是忽略了等级差伤害,在图中可以从上面的判断发现当出现暴击的时候,如果佩戴的武器非弓类则加入等级差的伤害来计算。而我在写LUA的时候因为自己的账号是次次暴击,所以认为等级差伤害才是最终伤害。导致在写LUA的时候只在等级差伤害处写入,这样的方法是不对的,因为从代码看到是出现随机暴击的,当有暴击和没暴击伤害不一样,又不能同时在两处伤害都加入计算,否则会重叠。目前我个人的解决办法在不修改LUA和增加已有接口上,调用暴击的LUA,让在比赛的时候人物暴击达到100%,这样就完美解决。学习无止境,还得继续努力。