@zero9k 只有两处,其他地方正常,我试了下好像也不是类型不对, 也不是每次都出错。贴代码和log吧。
// 气吞山河
#include <ansi.h>
inherit SSERVER;
void free(object target);
int cast(object me, object target)
{
string msg;
int success, ap, dp, ap2, ap3, ap4, dp2, dp3, dp4,howlong;
int r1, r2;
if( !target ) target = offensive_target(me);
if (me->query("gender") != "男性")
return notify_fail("女人家用不了[气吞山河].\n");
if((int)me->query_skill("dengxian-dafa", 1) < 100 || (int)me->query_skill("spells",1) < 60)
return notify_fail("你还没用不了[气吞山河]。。。\n");
if(!("/d/guard/guard")->check_family(me, "大雪山"))
return notify_fail("[气吞山河]是大雪山不传之密!\n");
if( !target
|| !target->is_character()
|| target->is_corpse()
|| target==me)
return notify_fail("你想对谁用[气吞山河]?\n");
if(target->query_temp("no_move"))
return notify_fail(target->query("name")+"已经魂飞魄散了!\n");
if((int)me->query("mana") < 200 )
return notify_fail("你的法力不够!\n");
if((int)me->query("sen") < 10 )
return notify_fail("你的精神不够!\n");
me->add("mana", -200);
me->receive_damage("sen", 10);
msg = HIC
"$N身形扯回,猛吸一口气,朝着$n一声地裂山崩般的狂吼!\n"
NOR;
success = 1;
ap = me->query_skill("spells");
ap = to_int(ap * ap * ap /1200) ;
ap += (int)me->query("combat_exp")/100;
dp = target->query("combat_exp")/100;
ap2 = (int)me->query("str");
dp2 = (int)target->query("str");
ap3 = (int)me->query("mana");
dp3 = (int)target->query("mana");
r1 = ap + dp + 25*(ap2+dp2)+2*(ap3+dp3);
r2 = dp+25*dp2+2*dp3;
if( random(r1) < r2 ) success = 0; // 65行,此处报错!!!!!!!!!
if(success == 1 ){
msg += HIR "$n肝胆剧裂,看着$N,浑身发抖,忘了自己在战斗之中。\n" NOR;
target->set_temp("no_move", 1);
howlong = random((me->query_skill("dengxian-dafa", 1) -100))+1;
if(howlong>20) howlong=20+random(10);
call_out("free", howlong, target);
}
else {
msg += HIR "$n鄙夷地看了$N一眼: 瞎叫什么!\n" NOR;
me->start_busy(1+random(2));
if( living(target) ) target->kill_ob(me);
}
message_vision(msg, me, target);
return 3+random(3);
}
void free(object target)
{
if (target)
target->delete_temp("no_move");
return;
}
// -------------debug.log ---------------
执行时段错误:*Bad argument 1 to random()
Expected: int Got: 316280.
程序:daemon/class/yaomo/xueshan/dengxian-dafa/shanhe.c 第 65 行
物件:/daemon/class/yaomo/xueshan/dengxian-dafa/shanhe
呼叫来自:feature/command.c 的 command_hook() 第 84 行,物件: obj/user#142797 ("道逍遥")
调用参数:command_hook("shanhe")
局部变量:
呼叫来自:cmds/std/cast.c 的 main() 第 64 行,物件: cmds/std/cast
调用参数:main("shanhe")
局部变量:
呼叫来自:std/skill.c 的 cast_spell() 第 119 行,物件: daemon/skill/dengxian-dafa
调用参数:cast_spell("shanhe", 0)
局部变量:
呼叫来自:daemon/class/yaomo/xueshan/dengxian-dafa/shanhe.c 的 cast() 第 65 行,物件: daemon/class/yaomo/xueshan/dengxian-dafa/shanhe
调用参数:cast()
局部变量:
this_player: obj/user#142797 ("道逍遥")
<- d/qujing/nuerguo/shanpo
previous_object(0): daemon/class/yaomo/xueshan/dengxian-dafa/shanhe
previous_object(1): daemon/skill/dengxian-dafa
previous_object(2): cmds/std/cast
previous_object(3): obj/user#142797 ("道逍遥")
+----------------------------------------------------------------------+