分页: 3 / 3

Re: 法师宏

发表于 : 2017-12-19 00:23:59
小宝宋
facqou 写了: 2017-12-13 17:08:03 好贴顶下,不过授人以渔或许更好,现在继续对语法更深入了解,不太明白for循环的作用。
相关的api已经通过别的贴上去翻了。

举例提问,每行我都后面加注释:
1、冰箭奥蛋宏(平常打寒冰箭,触发节能丢奥蛋,适合装备差的法师)
/script
local c,i,b,f=CastSpellByName; #申明变量,但这里声明了4个c、i、b、f难道都定义为CastSpellByName?
for i=1,16 do b=UnitBuff("player",i); #for循环,“i=1,16”是初始为1,循环16次。 “do b=UnitBuff("player",i)”是:unitbuff返回的是字符串,16代表自己buff上限?
if b and strfind(b,"ManaB") then f=1; #条件判断,上面的16次循环中如果b且字段中包含“ManaB”,那么f=1是什么?重新申明变量?
break; #跳出判断
end; #结束循环
end; #结束该段宏
if f then SpellStopCasting(); #如果f=1停止施法?f是上一个判断中的重申变量?
c("奥术飞弹"); #接上面停止施法,使用奥术
else c("寒冰箭"); #否则使用寒冰箭
end; #结束语句

思考,其实不应该直接判断是否有节能,有就奥弹,没有就寒冰箭么?
伪代码:if b=UnitBuff("player",节能) then 奥弹 else 寒冰箭 end;
这样不是更简单么?为什么要走for循环?
其实就是因为,,所以,, UnitBuff命令中的参数 1是对象 2是BUFF对应的数字,这样你就明白了;再就是开始定义的本地变量,只有C指代了施法命令。

Re: 法师宏

发表于 : 2018-01-10 17:20:56
dz匕守
Bluememo 写了: 2017-12-10 16:36:47 按ALT 你想实现什么功能?
可能是想节省一个技能栏
不按ALT 对目标 羊,
按alt对鼠标指向目标羊