查看单个帖子
旧 2005-01-15   #1
xlwang
高级会员
级别:10 | 在线时长:275小时 | 升级还需:55小时级别:10 | 在线时长:275小时 | 升级还需:55小时级别:10 | 在线时长:275小时 | 升级还需:55小时级别:10 | 在线时长:275小时 | 升级还需:55小时
 
xlwang 的头像
 
注册: 04年08月25日
来自: 聚星阁
帖子: 1,232
声望力: 34
声望: 17 xlwang 初领妙道
精华:2
现金:1154两梁山币
资产:28545两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
【北京站】【原创】xyj2000中的溢出问题

计算机有个溢出问题,就是计算机的计算上限值是2的31次方,
即2147483648,如果超过这个值,就出现溢出,成为一个负的值。
因此溢出问题是所有编程问题中必须考虑的。
xyj2000也不可避免的存在溢出问题。


1。朝凤的溢出
if (!target->is_fighting(me)) opfa=30;
else opfa=15;
分析:如果是在战斗中opfa=30,否则的话就是15

if (target->query("combat_exp") !=0 )
op= me->query("combat_exp")*opfa/target->query("combat_exp");
else op=10;
hitt=0;

分析:问题就出在这里 me->query("combat_exp")*opfa
如果未在战斗中直接chaofeng,opfa=30,可以计算一下
2147483648/30=71582788.266666666666666666666667
如果你的武学超过71.6m,那么计算op值就是负的,
你所获的hitt值将为0

if (hitt==0)
{
msg += HIW "$n连忙身行一转,连退数步,闪过了这满天花雨般的一击。\n"NOR;
message_vision(msg, me, target);
me->start_busy(random(3));
这就出现了为什么你的wx那么高,对方也能 “连忙身行一转,连退数步,闪过了这满天花雨般的一击。“

不过庆幸的是如果你不是直接perform chaofeng on xxx,而是先kill xxx,然后再perform chaofeng
这时如果你的武学没超过2147483648/15=143165576.53333333333333333333333即143m,那么就不会溢出。

以前我贴过这么一个贴子:
只见你手中凤凰琴急颤,幻出满天剑芒,无数银针加着剑气有如百鸟投林般向观音菩萨扑来!
观音菩萨连忙身行一转,连退数步,闪过了这满天花雨般的一击。
观音菩萨对着你高声骂道:好啊,敢放暗器,看我怎么收拾你!
看起来观音菩萨想杀死你!
只见你手中凤凰琴急颤,幻出满天剑芒,无数银针加着剑气有如百鸟投林般向观音菩萨扑来!
观音菩萨躲闪不及,身上七处中了银针加着剑气!
( 观音菩萨受伤过重,已经有如风中残烛,随时都可能断气。 )
观音菩萨对着你高声骂道:好啊,敢放暗器,看我怎么收拾你!
看起来观音菩萨想杀死你!

这就能解释为什么刚开始chaofeng pusa打不中,第二次chaofeng就能中了。

2。判师的溢出
比起chaofeng,判师的溢出就更为严重,普遍。
众所周知,除了hell,所有门派判师惩罚都是20%
this_player()->set("combat_exp", this_player()->query("combat_exp")*80/100);
分析:她是先计算"combat_exp")*80,然后再去除以80
如果你的武学是大于2147483648/80=26843545.6,即大于26.9m,判师后你的武学值将是负的
有意思的是,你以负的武学状态去杀怪,你得的奖励将是负的,而且没下限,挂几天机,你的武学
就能达到负的21亿,这是你只要quit一下,你的武学就将是正的21亿,wuhahahaha,21亿,天下
无敌了!!!!不要高兴太早,因为所得qn也是负的,总共是-21亿/4。或者你的负武学值达到一
定程度,再判师,哈哈,又成正的了,而且还比以前高了哦。
奉劝不要随便去试,除非你的id很多,或者看的很开,毕竟练到能溢出已经花了不少投入。
还好,北京站这个判师溢出bug已经被saint改好了,所以大家放心大胆的去判师吧!!!!

3.技能溢出
很多人也许以为skills越高越好,其实不然。
skills的上限是1000,当你skill >=1000时,也就相当于skill 0
playgirl skills 820,最后几个怪skills >1000,我直接干砍几下就搞定
怪一点防御能力也没有,连攻击力也是零,普通攻击根本打不到我(法术攻击可以打到,perform打不到)。
计算damage要用到skill_power函数
在skill_power中有这么一段power = (level*level*level) / 3;
也就是当你skill>1290将发生溢出。
不过1290需要2.1亿武学支持,这好像是很遥远的事情。

总结一下:xyj2000理论上是可以无限制练功发展,但溢出问题使得所以实际中当你达到一定程度,
就相当于归零了。以前就有文章介绍过法术溢出,这里就不再多说了。
xyj的乐趣很多,当你厌倦杀怪时,你可以pk。看着自己做的机器人稳定高效运行也是种乐趣,当你觉
得这也无趣时,你不妨自己编点npc,设计房间什么玩玩。
hoho,跑题了。

此帖于 2005-01-15 16:49 被 xlwang 编辑.
帅哥 xlwang 当前离线  
+10 两梁山币
回复时引用此帖