lxy_lxy http://www.battlecn.net/bbs/read.php?fid=2&tid=30471 一直想精确的算算高级别人物(70-98)升级时exp的问题,却总算的与实际exp有出入,直到今天得到一个老外的指导才弄明白 这是误导我的文章,不是他说错了,是他说的不明白 Characters Above Level 70
For any monster above your level, you get EXP*(Player Level / Monster Level). For monsters between 6-10 levels below you, you receive between 100% and 5% experience.
If the monster is more than 10 levels below your level, you receive 5% of the monster's experience points.
After experience is calculated, the following penalties will apply. For example a level 70 character only receives 95.31% of the experience.
Level Experience Level Experience Level Experience 70 95.31% 80 48.44% 90 5.96% 71 90.63% 81 43.75% 91 4.49% 72 85.94% 82 39.06% 92 3.42% 73 81.25% 83 34.38% 93 2.54% 74 76.56% 84 29.69% 94 1.95% 75 71.88% 85 25.00% 95 1.46% 76 67.19% 86 18.75% 96 1.07% 77 62.50% 87 14.06% 97 0.78% 78 57.81% 88 10.55% 98 0.59% 79 53.13% 89 7.91% 99 0.49%
按照它说的算法,94 和96 级char k死baal一次获得经验应为 4536276*(94/99)*0.0195=83989 4536276*(96/99)*0.107=46188
而实际在游戏中测的值分别为84120和47245,这是为什么呢?解答我放在后面,先看看正确的算法:
其实那么多话都是白废而且有误导,一句话,人物获得经验值等于: {[(怪物原经验/怪物等级)*人物等级]/1024}*经验数M 例子: 94级人物:4536276/99 = 45820*94 = 4307080/1024 = 4206*(20) = 84120 96级人物:4536276/99 = 45820*96 = 4398720/1024 = 4295*(11)= 47245
blizzard给每个级别固定的经验数,如94 lvl就是20 96就是11(观察上面例子可见) 上面两例子经过实际测试,exp一点不差
分析: 1:产生误差的原因很简单,是分数化为小数产生的 2:注意原公式中的运算次序(优先次序如我括号所标,实际运算要严格控制顺序,每步算下来都四舍五入为整数再继续运算
附:70-99级人物对应的"经验数": 99 5 98 6 97 8 96 11 95 15 94 20 93 26 92 35 91 46 90 61 89 81 88 108 87 144 86 192 85 256 84 304 83 352 82 400 81 448 80 496 79 544 78 592 77 640 76 688 75 736 74 784 73 832 72 880 71 928 70 976
|