关键字搜索 | 社区 | 首页

战网中国 -> 游戏技巧
[转贴][分享]关于exp算法的一点小问题
2005-04-29 11:59
老唐 / 人气:409
加为IE收藏  收藏文章
上一文章     下一文章


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




相关评论
0条评论
编辑文章     论坛模式     联系作者     推荐给好友

发表评论 顶端
标题
参与评论



Powered by PHPWind v4.3.2 Code © 2003-05 PHPWind
Time is now:,

You can contact us