|
NPC是否会停止攻击我不能确认。但是写AI选择武功攻击位置时的确有考虑到误伤。源码如下:- elseif flag==2 then --返回攻击数目
- local diwo=WAR.Person[WAR.CurID]["我方"]
- local atknum=0
- for i=1,num do
- if xy[i][1]>=0 and xy[i][1]<CC.WarWidth and xy[i][2]>=0 and xy[i][2]<CC.WarHeight then
- local id=GetWarMap(xy[i][1],xy[i][2],2);
- if id~=-1 and id~=WAR.CurID then
- --lib.Debug(xy[i][1]..','..xy[i][2]..'|'..id)
- local xa,xb,xc
- if diwo~=WAR.Person[id]["我方"] then
- xa=2
- elseif GetS(0,0,0,0)==1 then
- xa=-0.5
- else
- xa=0
- end
- local hp=JY.Person[WAR.Person[id]["人物编号"]]["生命"]
- if hp<atk/6 then
- xb=2
- elseif hp<atk/3 then
- xb=1
- else
- xb=0
- end
- local danger=JY.Person[WAR.Person[id]["人物编号"]]["内力最大值"]
- xc=danger/500
- atknum=atknum+xa*math.modf(xb*xc+5)
- -- if id<0 then--==WAR.Person[WAR.CurID]["自动选择对手"] then
- -- atknum=atknum+60 --这个地方暂时不使用
- -- else
- -- local hp=JY.Person[WAR.Person[id]["人物编号"]]["生命"]
- -- if hp<atk/6 then
- -- atknum=atknum+20
- -- elseif hp<atk/3 then
- -- atknum=atknum+15
- -- else
- -- atknum=atknum+10
- -- end
- -- end
- end;
- end
- end
- return atknum;
复制代码 作用是计算某武功的攻击范围内的某位置的权重估值(根据敌人的数量,内力生命和自己的攻击力等等),敌人的系数为2,自己人(误伤)的系数为-0.5。
这只是一部分,看起来已经很蛋疼了,要具体算出怎么会使NPC不攻击就更难了。 |
|