丁丁 发表于 2015-8-7 06:11:36

求教多目标脚本怎么写才不卡

背景:之前想更新一下鸟德方案,因为读条职业判断效率不高,就用脚本写咯,
附件里单目标写好了,符合simc值。(不用脚本的话打不到模拟值,会差一点……)



问题是:
现在多目标或AOE 脚本判断不知道怎么写,执行print就不卡,一加入amrun运行起来就整个游戏卡爆了(如下图),


听说FHenemiesTable能解决敌对目标就不卡了,但是不会写,不懂这些感觉完全无力,丢出来看谁能帮帮忙咯~?


而且友方目标怎么办呢,很多技能判断起来要比绿字的复杂好多还是脚本可以自定义好使,GC内置的绿字执行函数我找了几个都运行无效好奇怪(例如对没DOT的放技能)。









留个小福利



二氧六环 发表于 2015-8-10 08:30:18

本帖最后由 二氧六环 于 2015-8-10 11:28 编辑

试试FHenemiesTable

代码如下:
for i=1,#FHenemiesTable do
    local para = FHenemiesTable.unit;
    local spell = "月火术";
    if   UnitCanAttack("player",para)
    and UnitTarget("player")~= para
    and FHObjectDistance("player",thisUnit) <= 30
    and UnitHealth(para) / UnitHealthMax(para)>0.2
    and amaura(spell, para,0,2)<60   
    then
      --print(UnitName(units,i));
      amrun(spell, para)
    end
end注意,需要设置下施法范围,超过30码不做处理。但是FHenemiesTable 只判定在战斗中的目标,但是依然有卡顿想象,测试后发现数据量惊人。
有原材料,那么我们就自己定义一个表,直接使用。
如:

代码如下:
localcount = ObjectCount()
for i = 1, count do
    local obj = ObjectWithIndex(i)
    if ObjectIsType(obj, ObjectTypes.Unit)
    and ObjectExists(obj)
    and UnitHealth(obj) > 1
    and (UnitCanAttack(obj,"player") or UnitCanAttack("player", obj))
    then
      local dis = 30;
      local x1,y1,z1 = ObjectPosition(obj)
      local x2,y2,z2 = ObjectPosition("player")
      local mathDIS =math.sqrt(((x2-x1)^2)+((y2-y1)^2)+((z2-z1)^2))
      if mathDIS<dis
      and amaura("月火术", obj,0,2)<60
      and UnitHealth(obj) / UnitHealthMax(obj)>0.2
      then
            amrun("月火术", obj)
      end   
    end
end经测试,在影月谷 A大象,最多18只,不卡顿。


龙套哥 发表于 2015-8-7 09:48:57

可以参考打tt的教程。代码实现如下:
for i=1,#enemiesTable do --bb和gh版本 gc你可以换成gc的目标引擎表名
local tg1 = enemiesTable.unit
if tg1没有xxbuff and tg1 在施法距离内 and tg1是敌对目标 and tg1 不是死亡的 ... then
amrun(xxx技能,tg1)
end
end

或者直接用fh自带api的objectmanager,用objectcount(i)实现,但是这个要加type判定

龙套哥 发表于 2015-8-7 10:55:47

丁丁 发表于 2015-8-7 10:34
谢谢~ 那这个咧?用这个怎么写?因为还想获得友方目标的
——"fh自带api的objectmanager,用objectcount ...

那个table最早是包括友方和中立生物的,gc的可能去掉了。团队里的人可以循环raid1到raid40,用法类似,raid..i就行。
objectmanager你可以参考fh lua区的东西,不过用多了会严重掉贞

tibok 发表于 2015-8-7 10:33:24

好图,钻研了半天也没发现**

丁丁 发表于 2015-8-7 10:34:43

龙套哥 发表于 2015-8-7 09:48
可以参考打tt的教程。代码实现如下:
for i=1,#enemiesTable do --bb和gh版本 gc你可以换成gc的目标引擎表 ...

谢谢~ 那这个咧?用这个怎么写?因为还想获得友方目标的
——"fh自带api的objectmanager,用objectcount(i)实现"

陈·风暴烈酒 发表于 2015-8-7 13:36:57

挂DOT和斩杀的函数好像要切换目标,多目标的话会不停切目标,我昨天试了一下,我就直接卡掉线了....

龙套哥 发表于 2015-8-7 15:25:57

陈·风暴烈酒 发表于 2015-8-7 13:36
挂DOT和斩杀的函数好像要切换目标,多目标的话会不停切目标,我昨天试了一下,我就直接卡掉线了....

dot不用,斩杀要切目标

陈·风暴烈酒 发表于 2015-8-7 18:12:50

龙套哥 发表于 2015-8-7 15:25
dot不用,斩杀要切目标

函数会自动切到符合条件的目标身上放技能再切回来,目标多的时候就会卡,还会掉线

丁丁 发表于 2015-8-7 18:44:51

追悼者 发表于 2015-8-7 10:59
用MS就很好获取,敌对及友方目标。

看了7.0预告后… 完全没动力了

admin 发表于 2015-8-7 18:46:28

丁丁 发表于 2015-8-7 18:44
看了7.0预告后… 完全没动力了

7.0是明年上半年的事了
页: [1] 2
查看完整版本: 求教多目标脚本怎么写才不卡