LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 4270|回复: 16

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

[复制链接]
发表于 2015-8-7 06:11:36 | 显示全部楼层 |阅读模式
背景:之前想更新一下鸟德方案,因为读条职业判断效率不高,就用脚本写咯,
附件里单目标写好了,符合simc值。(不用脚本的话打不到模拟值,会差一点……)



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


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


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









留个小福利



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
回复

使用道具 举报

发表于 2015-8-10 08:30:18 | 显示全部楼层
本帖最后由 二氧六环 于 2015-8-10 11:28 编辑

试试FHenemiesTable

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

代码如下:
  1. local  count = ObjectCount()
  2. for i = 1, count do
  3.     local obj = ObjectWithIndex(i)
  4.     if ObjectIsType(obj, ObjectTypes.Unit)
  5.     and ObjectExists(obj)
  6.     and UnitHealth(obj) > 1
  7.     and (UnitCanAttack(obj,"player") or UnitCanAttack("player", obj))
  8.     then
  9.         local dis = 30;
  10.         local x1,y1,z1 = ObjectPosition(obj)
  11.         local x2,y2,z2 = ObjectPosition("player")
  12.         local mathDIS =  math.sqrt(((x2-x1)^2)+((y2-y1)^2)+((z2-z1)^2))
  13.         if mathDIS<dis
  14.         and amaura("月火术", obj,0,2)<60
  15.         and UnitHealth(obj) / UnitHealthMax(obj)>0.2
  16.         then
  17.             amrun("月火术", obj)  
  18.         end     
  19.     end
  20. end
复制代码
经测试,在影月谷[60.36] A大象,最多18只,不卡顿。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入我们

x

评分

参与人数 1伸手费 +100 收起 理由
老血 + 100 党和人民需要你!

查看全部评分

回复 支持 反对

使用道具 举报

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

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

点评

谢谢~ 那这个咧?用这个怎么写?因为还想获得友方目标的 ——"fh自带api的objectmanager,用objectcount(i)实现"  详情 回复 发表于 2015-8-7 10:34 AM
回复 支持 反对

使用道具 举报

发表于 2015-8-7 10:55:47 来自手机 | 显示全部楼层
丁丁 发表于 2015-8-7 10:34
谢谢~ 那这个咧?用这个怎么写?因为还想获得友方目标的
——"fh自带api的objectmanager,用objectcount ...

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

使用道具 举报

发表于 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预告后… 完全没动力了
回复 支持 反对

使用道具 举报

发表于 2015-8-7 18:46:28 | 显示全部楼层
丁丁 发表于 2015-8-7 18:44
看了7.0预告后… 完全没动力了

7.0是明年上半年的事了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2024-5-6 02:51 PM , Processed in 0.281308 second(s), 35 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表