作者laechan (小太保)
看板mud_sanc
标题[wizs] 5-fingerfire.c
时间Fri Jun 27 15:26:48 2008
tars=ppl->query_attackers();
a=0;
for(u=0;u<k;u++)
{
a+=1;
if(a>=sizeof(tars))a=a-sizeof(tars);
if(a>=10) break;
if(tars[a] && environment(tars[a]) &&
environment(tars[a])==environment(ppl))
ppl->shut(HIR"五 指 爆 炎 弹"NOR,damage,hit,"fire",tars[a]);
}
wiz 是不是有改过这个法术?
最近系统纪录到玩家在使用这个技能时出问题,我猜是这一行..
if(tars[a] && environment(tars[a]) &&
environment(tars[a])==environment(ppl))
a 出现 <0 或 a >= sizeof(tars) 的情况。
印象中我不会去加这一行。
正确的写法是...
if(a>=sizeof(tars)-1)a=a-(sizeof(tars)-1);
这是因为 tars 的范围是 [0..sizeof-1], 例如 sizeof(tars) = 10
那 tars 的范围就是 [0..9](正确), 而不是 [0..10](超过范围).
程式已修正。以後有改到程式的地方请尽量加 // 备注,才知道
是谁改的,以及改到哪些地方。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 61.225.163.6 (06/27 15:28)
1F:推 horry7 :这个有开放权限给 wiz.4 以下的吗? 06/27 15:37
2F:→ horry7 :至少我是没权限动就对了。 06/27 15:37
3F:推 koct :我用五指轰会一直出现 MudOS driver tells you 06/28 05:15