作者laechan (小太保)
看板mud_sanc
标题Re: [wizs]问题请教(十九)
时间Sat Sep 22 17:20:12 2007
※ 引述《amosdeus (幽素)》之铭言:
: 请问要怎样把自己本身跟设定不能打的mob排除在外呢?
: 如果删掉
: if(obs[i]=ppl) continue;
: if(obs[i]->query("no_attack")) continue;
: 就会攻击,但是加上这两行就不会攻击。
: 目录:/u/p/plain/pic_trans/wp/claymore.c
: int process_circle(string str)
: {
: 略
: ob=this_player()->query_current_attacker();
: 略
这个函数有点问题, 建议用..
mixed obs;
obs=this_player()->query_attackers();
把所有的 attackers 读进一个阵列里头.
: obs=all_inventory(environment(ob));
: 略
: for(i=0;i<sizeof(obs);i++)
: {
: if(obs[i]=ppl) continue;
: if(obs[i]->query("no_attack")) continue;
: obs[i]->add("hp",-dam);
: if(obs[i]->query("hp")<0) obs[i]->die();
: }
: remove();
: return 1;
: }
: 以上
: 谢谢
: Plain@Sanc
上面改成底下较好
object ppl=this_player(),ob;
mixed obs=all_inventory(environment(ppl));
obs-=({ppl}); // 这里就先把自己减掉了
foreach(ob in obs)
{
if(ob->query("no_attack")) continue;
ob->add("hp",-dam);
if(ob->query("hp")<0) ob->die();
}
是 == 不是 = ( 你上面那个 if(obs[i]=ppl) )
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.114.165.198