【教程】【GC六段】 我知道你们想要这个---AOE最优位置选取(测试测试)
本帖最后由 托托 于 2016-2-5 20:47 编辑新鲜出炉 欢迎测试反馈问题 后续会维护
才做出1分钟,早上有事 先放出来大家试用下!!!
面对怪群,如何让AOE技能得到最大收益(A到最多的怪),就是这个函数的作用
算法:枚举两个点,确定过这两个点的两个圆的的圆心,循环N个点看有多少个点在这个圆里
时间复杂度:O(n^3)
使用方法:
1.用记事本打开Interface\AddOns\GC\wowamfunctions.lua
2.翻到最后另起一行
3.粘贴
4.MY_AUTOCastAOE(SpellName,RANGE,r)SpellName=技能名RANGE=技能施放距离 r=技能半径
如MY_AUTOCastAOE("圣光之锤",30,10)
function dis(x1,y1,x2,y2)
return math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
end
function center(x1,y1,x2,y2,r,tar)
local px,py;
px=x1-x2;
py=y1-y2;
local midx,midy;
midx=(x1+x2)/2.0;
midy=(y1+y2)/2.0;
local d=dis(midx,midy,x1,y1);
local gao=math.sqrt(r*r-d*d);
if (math.abs(py)<1e-8) then
if (tar) then
return midx,midy+gao
else
return midx,midy-gao
end
else
local jiao=math.atan(-px/py);
if (tar) then
return midx+gao*math.cos(jiao),midy+gao*math.sin(jiao)
else
return midx-gao*math.cos(jiao),midy-gao*math.sin(jiao)
end
end
end
function check(rx,ry,r,Table)
local ans=0;
for i=1,#Table do
if (dis(rx,ry,Table.x,Table.y)<r+.001) then ans=ans+1 end
end
return ans
end
function MY_GetAOEPosition(r,Table)
local ans=1;
local rex,rey;
for i=1,#Table do
for j=i+1,#Table do
if (dis(Table.x,Table.y,Table.x,Table.y)>r*2) then break end
local rx,ry=center(Table.x,Table.y,Table.x,Table.y,r,true);
local tt=check(rx,ry,r,Table);
if (tt>ans) then ans=tt rex=rx rey=ry end
if (ans>=#Table) then break end
end
end
return rex,rey
end
function MY_AUTOCastAOE(SpellName,RANGE,r)
local PointTable={}
for i = 1, #FHenemiesTable do
local thisUnit = FHenemiesTable.unit
if FHObjectDistance("player",thisUnit)<RANGE then
local x,y,_=ObjectPosition(thisUnit)
table.insert(PointTable,{x=x,y=y})
end
end
local _,_,_,_,_,_,spellID = GetSpellInfo(SpellName)
local X,Y,_=MY_GetAOEPosition(r,PointTable)
local _,_,Z=ObjectPosition("player")
if X~=nil and Y~=nil and Z~=nil and amSpellCooldown(spellID) == 0then
CastSpellByName(SpellName,"player");
if IsAoEPending() then
ClickPosition(X,Y,Z,true);
return true;
end
end
return false;
end
你这个问题已经被发现了,目前最新版本115.3 ,在判断自身或者目标周围有多少怪的时候(FH功能),是不带模型的,所以当有很大模型的怪的时候(例如:AK),会出现无法正确判断的情况,一般性测试的时候,都是以木柱为测试目标,木柱的模型很小,这也就是这个函数目前错误的情况,这个已经被我提交给蛙大,已经测试成功。 赞 羡慕搞得懂LUA的 我看了就睡着…我也想学的…
小提问
可不可以限定判断目标的移动速度是≤30的,你懂的…圈一放就尼玛跑走了。
还有目标存活时间函数msGTTD? (get target time to die) 有的AOE是慢慢A的
可以过滤掉被玩家法术控制的吗?过滤掉身上有无敌免疫伤害的怪呢?破羊或者AOE都A到副本里无敌的adds上。。 丁丁 发表于 2015-7-23 13:31
赞 羡慕搞得懂LUA的 我看了就睡着…我也想学的…
小提问
可不可以限定判断目标的移动速度是≤30的,你懂 ...
额,目前这个部分不包含是否Aoe的判断,而是Aoe的一个动作,不过关于排除非战斗目标和防破控倒是可以加入,感谢的你建议 楼主的钻研精神赞一个 屌屌屌屌!!!!
强烈好评。推荐加精 貌似蛮强力的。 厉害~大清早的就写帖子,也是蛮拼的!五星好评~ 好棒:hug:!! {:5_187:}牛逼啊,赞
页:
[1]
2