求教学,战斗精灵闪避溢出的问题
mud吧
全部回复
仅看楼主
level 2
眉烟如黛 楼主
执行时段错误:*Bad argument 1 to random()
Expected: int Got: 1.10651e+009.
程式:adm/daemons/combatd.c 第 472 行
物件:/adm/daemons/combatd
呼叫来自:inherit/char/char.c 的 heart_beat() 第 261 行,物件: clone/user/user#10 ("飘渺")
呼叫来自:feature/attack.c 的 attack() 第 411 行,物件: clone/user/user#10 ("飘渺")
呼叫来自:adm/daemons/combatd.c 的 fight() 第 944 行,物件: adm/daemons/combatd
呼叫来自:adm/daemons/combatd.c 的 do_attack() 第 472 行,物件: adm/daemons/combatd
Heart beat in clone/user/user#10 turned off.
执行时段错误:*Bad argument 1 to random()
Expected: int Got: 1.10651e+009.
程式:adm/daemons/combatd.c 第 472 行
物件:/adm/daemons/combatd
呼叫来自:inherit/char/char.c 的 heart_beat() 第 261 行,物件: clone/user/user#10 ("飘渺")
呼叫来自:feature/attack.c 的 attack() 第 411 行,物件: clone/user/user#10 ("飘渺")
呼叫来自:adm/daemons/combatd.c 的 fight() 第 830 行,物件: adm/daemons/combatd
呼叫来自:adm/daemons/combatd.c 的 do_attack() 第 472 行,物件: adm/daemons/combatd
Heart beat in clone/user/user#10 turned off.
Initializing internal tables....
这个战斗精灵,我自己也学着做了防溢出,现在命中没问题了,但是 自己闪避大于10E左右吧,还是会溢出。
但是 如果自己闪避大到一定程度的话,就不报错,但是 无法命中怪!~
http://yun.baidu.com/s/1gdDzKMR 这个是战斗精灵的地址 求大神帮忙指导下
2015年02月09日 16点02分 1
level 13
你搜random其中一个溢出了
2015年02月10日 00点02分 3
level 2
眉烟如黛 楼主
知道是 哪个溢出了,是闪避溢出了
cost = skill_power(me, "dodge", SKILL_USAGE_DODGE)/10;
if ( cost > 1000000000 ) cost = 1000000000;
改成
cost = skill_power(me, "dodge", SKILL_USAGE_DODGE);
if ( cost > 1000000000 ) cost = 1000000000;
貌似就不溢出了
2015年02月10日 01点02分 4
level 2
眉烟如黛 楼主
ap = skill_power(me, attack_skill, SKILL_USAGE_ATTACK);
if ( ap > 1000000000 ) ap = 1000000000;
if ( sizeof(me->query_enemy()) > 1 ) me->delete_temp("fighting");
dp = skill_power(victim, "dodge", SKILL_USAGE_DODGE);
if ( dp > 2000000000 ) dp = 2000000000;
if ( victim->is_busy() && (!playerp(me) || !playerp(victim)) )
{
if ( victim->query("no_zhineng") ) dp = dp / 3;
else dp = dp / 2;
}
// 被围攻闪避下降
if ( (cost_a = sizeof(victim->query_enemy())) > 1
&& (!playerp(me) || !playerp(victim)) )
{
victim->delete_temp("fighting");
dp = dp / cost_a;
}
// 如对方特殊属性(隐身等)比对手低,闪避能力下降
if ( !victim->visible(me) && (!playerp(me) || !playerp(victim)) )
dp = dp / 2;
cost = skill_power(me, "dodge", SKILL_USAGE_DODGE);
if ( cost > 1000000000 ) cost = 1000000000;
// 如对方特殊属性(隐身等)比对手低,闪避能力下降
if ( !me->visible(victim) )
{
ap = ap / 2;
cost = cost / 2;
}
错误 也就是 因为
if ( living(victim) && random(ap + cost)<random(dp) )
{
// 闪避开理论上反击比较容易,予 30% 反击率
if ( random(100) < 30 ) att_back = 1;
// 战斗描述显示等级 < 2 才显示
if ( combat_msg < 2 ) result += dodge_msg;
//闪避开厉害的对手增加经验和轻功熟练度
if( ap + cost > dp ) victim->improve_skill("dodge", random(victim->query_int())/20);
damage = RESULT_DODGE;
}
这段代码错误 random数据溢出了
2015年02月10日 01点02分 5
1