htt0528 发表于 2015-7-22 02:31:35

【教程】【GC七段】 (8.20修复错误)通用方案开关与目标选取(近战)

本帖最后由 托托 于 2016-2-5 20:49 编辑

UpdateLog 8月20号   里面用的MY_Start(30,33535)是错误的!!!需改该成MY_Start(30,"十字军打击")!!!抱歉抱歉
这个错误会导致即使当前目标在近战范围也会选择最近的目标

       说点题外话 之前发了一个获取GCD数值的帖子,有人说一句话就行了 职业基础GCD/(1+急速百分比)这个也没错 基本是正确的,(也有些特例吧 比如急速到底能低到多少不同职业应该不一样,或战士的GCD,好像要防战才会减,**的应该还有 但是我不知道~)
       我玩的是骑士,骑士我用1.5/(1+急速百分比)设置个下限1.0 是完全没问题的。
       那为什么搞这么复杂呢,函数发出来给别人用 肯定是要尽量保证准确性的,通过GetSpellCooldown(61304)这个方法取出来的值要么是0要么就是准确值(貌似Ovale插件也是这么取值的),有兴趣的可以在游戏里/run print(GetSpellLink(61304))看一下,这个应该就是官方提供的取值方式
       也就是说 你点什么天赋 版本怎么更新 或者什么特殊情况 这个方式取值准确度应该是最高的。当然你也可以做一个表(记录不同职业不同天赋或是特殊情况下取值方式的变化)并一直维护这个表,但我相信代码也不会精简到哪里去。
---------------------------------------题外话分割线-----------------------------------------


相信每位同学做方案前都会做个方案的开关。。比如判断在战斗拉 在坐骑啦 重复做起来很麻烦 我索性就整合了

需要手动控制开关的方案都不是好方案,这东西就该一直开着!!!


本函数说明:
1.近战用!
2.需要FH解锁(建议开启AlwaysFacing)!
3.自己和目标都在战斗才出手,坚决拒绝ADD(要注意的 打沙包木桩不可用 沙包木桩本身永远不会进战斗~~~ )!
4.智能切换目标 AOE超爽超流畅
5.有些特殊情况 比如骑士给保护手动加血、战士给戒备 只要切换到友方目标 方案自动停止 持续到当前目标切回敌方
(防止因卡GCD问题造成的团队辅助技能未能施放,或施放不及时)


参数说明:
1.RANGE 你方案里输出距离最远的技能范围(比如近战砍不到骑士审判啊 死骑死缠啊 都可以找目标放 加点DPS)
2.SPELLID 用于判断是否近战范围的技能名字 (比如骑士十字军 战士致死 死骑冰打)

使用方法:
1.用记事本打开Interface\AddOns\GC\wowamfunctions.lua

2.翻到最后另起一行

3.粘贴

4.添加一个脚本





5.根据上面参数说明修改好 保存




6.在方案里添加刚刚那个脚本,放在第一位(多个施法方案务必放在第一个施法方案的第一位)



7.选择脚本属性 标准格式




函数本体:

function MY_Start(RANGE,SPELLID)
local range=RANGE
local nowTarget=nil

--FH未解锁返回
if FireHack == nil then print("FH未解锁") return true end

--坐骑上返回
if IsMounted() then return true end

--不在战斗返回
if not UnitAffectingCombat("player") then return true end

--有目标且不可攻击返回
if UnitGUID("target")~=nil and not UnitCanAttack("player", "target") then return true end

--当前目标不在技能范围进入判断(RANGE范围内找最近的 在视野、在战斗、可攻击目标)
if IsSpellInRange(SPELLID, "target")~=1 then
    for i = 1, #FHenemiesTable do
      local thisUnit = FHenemiesTable.unit
      if FHObjectDistance("player",thisUnit) < range and FHINSight(thisUnit) == true and UnitAffectingCombat(thisUnit) and UnitCanAttack("player", thisUnit) then
            range=FHObjectDistance("player",thisUnit)
            nowTarget=thisUnit
      end
    end
    if nowTarget and UnitGUID(nowTarget)~=UnitGUID("target") then
      TargetUnit(nowTarget) --选中目标
      return true;
    end
end

--自己在战斗但RANGE内找不到符合条件的目标返回
if not UnitAffectingCombat("target") then return true end
return false;
end







老血 发表于 2015-7-22 08:47:24

凌晨两三点还在战斗也真是拼啊,帖子很唯物,摆事实讲道理,重在理性探讨,不像某些人从不发帖交流,还装清高。技术上装高冷,在am群也好,luacn也罢,都是不受群众欢迎的,脱离了群众的事,我们也是不能接受了。等你qq刷新,欢迎你来到am群,给队伍带来一股求真务实的新风

萨隆尼 发表于 2015-8-20 16:02:01

htt0528 发表于 2015-8-20 01:52
/alwaysfacing
就行了

现在打一些boss,比如熊猫人影踪禅院的古·穿云
在第二阶段出龙的时候,为啥不能选择龙,会自动选boss呢。。

浪贼妖 发表于 2015-8-19 23:32:16

本函数说明:
1.近战用!
2.需要FH解锁(建议开启AlwaysFacing)!

请教一下 怎么开启FH的 AlwaysFacing 功能,谢谢

你看的见我么 发表于 2015-7-22 08:50:46

函数啥的虽然看不懂,但是还是要支持的~

无节操好少年* 发表于 2015-7-22 14:45:31

膜拜技术帝,楼主真是厉害的很啊

anyoer* 发表于 2015-7-22 15:19:27

原来在这里 。。快 交 份 子 钱

找不到用户名* 发表于 2015-7-22 16:48:59

支持一波!问下楼主,治疗职业有什么好的开关吗

托托 发表于 2015-7-22 17:15:24

技术帝就是屌!越看越想膜拜。。。:$

特仑苏 发表于 2015-7-22 23:02:17

老血应该发勋章

本丶拉丶登 发表于 2015-7-25 13:39:36

这个真是够拼的,羡慕你们这些会函数的

ggdove 发表于 2015-8-14 15:33:56

懊悔啊,怎么才看到这个牛逼的函数,可以避免写方案的很多麻烦啊,真心感谢!
页: [1] 2
查看完整版本: 【教程】【GC七段】 (8.20修复错误)通用方案开关与目标选取(近战)