法师宏

一些相关攻略都可以发到这里
版面规则
本版只能发攻略相关的帖子,无关帖子一律删除
头像
绿色土豆
帖子: 218
注册时间: 2017年9月 21日, 15:33

Re: 法师宏

帖子 绿色土豆 » 2017年12月 11日, 17:26

Bluememo 写了:
2017年12月 10日, 16:36
按ALT 你想实现什么功能?
不按ALT是羊当前目标,按ALT羊指向目标

Bluememo
帖子: 1054
注册时间: 2017年9月 26日, 10:10

Re: 法师宏

帖子 Bluememo » 2017年12月 11日, 17:32

这不多此一举啊,鼠标指向宏又不丢失当前目标......,何必。

不能加ALT也能实现鼠标指向,这个宏优先羊你鼠标指向的目标。你是怕目标一个怪,鼠标又指向另外一个怪?
沙漠,扬起你的沙砾,遮蔽太阳的光芒吧!

头像
绿色土豆
帖子: 218
注册时间: 2017年9月 21日, 15:33

Re: 法师宏

帖子 绿色土豆 » 2017年12月 12日, 10:51

Bluememo 写了:
2017年12月 11日, 17:32
这不多此一举啊,鼠标指向宏又不丢失当前目标......,何必。

不能加ALT也能实现鼠标指向,这个宏优先羊你鼠标指向的目标。你是怕目标一个怪,鼠标又指向另外一个怪?
其实这个宏主要是pvp用,我找不到60的shift.ctrl.alt按键的命令,求指点!

Bluememo
帖子: 1054
注册时间: 2017年9月 26日, 10:10

Re: 法师宏

帖子 Bluememo » 2017年12月 12日, 11:04

这样的变羊宏?按住Shift键+变羊快捷键时是正常变羊法术,直接按变羊快捷键则是瞬发变羊。

代码: 全选

/script SpellStopCasting();if(IsShiftKeyDown()) then CastSpellByName('变形术(等级 3)');elseif (UnitExists("target") and UnitIsEnemy("player","target")) CastSpellByName('气定神闲');SpellStopCasting();CastSpellByName('变形术(等级 3)');end;
功能键的宏一般都是这样写

代码: 全选

/script if IsShift(或者Alt)KeyDown() then CastSpellByName('技能名') else CastSpellByName('技能名') end;
沙漠,扬起你的沙砾,遮蔽太阳的光芒吧!

Raininsun
帖子: 74
注册时间: 2017年8月 23日, 15:05

Re: 法师宏

帖子 Raininsun » 2017年12月 12日, 18:11

顺便问下,castsequence在这个版本可用不

Bluememo
帖子: 1054
注册时间: 2017年9月 26日, 10:10

Re: 法师宏

帖子 Bluememo » 2017年12月 13日, 08:50

Raininsun 写了:
2017年12月 12日, 18:11
顺便问下,castsequence在这个版本可用不
不行
沙漠,扬起你的沙砾,遮蔽太阳的光芒吧!

头像
facqou
帖子: 236
注册时间: 2017年11月 27日, 10:19

Re: 法师宏

帖子 facqou » 2017年12月 13日, 17:08

好贴顶下,不过授人以渔或许更好,现在继续对语法更深入了解,不太明白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循环?
YOU ARE NOT PERPARE!
伦鲁迪洛尔,上古守护者的长弓(1/1)
断牙(1/1)

头像
绿色土豆
帖子: 218
注册时间: 2017年9月 21日, 15:33

Re: 法师宏

帖子 绿色土豆 » 2017年12月 18日, 16:20

Bluememo 写了:
2017年12月 12日, 11:04
这样的变羊宏?按住Shift键+变羊快捷键时是正常变羊法术,直接按变羊快捷键则是瞬发变羊。

代码: 全选

/script SpellStopCasting();if(IsShiftKeyDown()) then CastSpellByName('变形术(等级 3)');elseif (UnitExists("target") and UnitIsEnemy("player","target")) CastSpellByName('气定神闲');SpellStopCasting();CastSpellByName('变形术(等级 3)');end;
功能键的宏一般都是这样写

代码: 全选

/script if IsShift(或者Alt)KeyDown() then CastSpellByName('技能名') else CastSpellByName('技能名') end;
试了下,按ALT有效,Shift和ctrl无效,不知道什么情况。

Bluememo
帖子: 1054
注册时间: 2017年9月 26日, 10:10

Re: 法师宏

帖子 Bluememo » 2017年12月 18日, 16:32

绿色土豆 写了:
2017年12月 18日, 16:20
Bluememo 写了:
2017年12月 12日, 11:04
这样的变羊宏?按住Shift键+变羊快捷键时是正常变羊法术,直接按变羊快捷键则是瞬发变羊。

代码: 全选

/script SpellStopCasting();if(IsShiftKeyDown()) then CastSpellByName('变形术(等级 3)');elseif (UnitExists("target") and UnitIsEnemy("player","target")) CastSpellByName('气定神闲');SpellStopCasting();CastSpellByName('变形术(等级 3)');end;
功能键的宏一般都是这样写

代码: 全选

/script if IsShift(或者Alt)KeyDown() then CastSpellByName('技能名') else CastSpellByName('技能名') end;
试了下,按ALT有效,Shift和ctrl无效,不知道什么情况。
你看你的按键设置,SHift和CTRL肯定被其他功能占用了,解除下就行。比如SHIFT+数字键是翻动作栏。
沙漠,扬起你的沙砾,遮蔽太阳的光芒吧!

头像
绿色土豆
帖子: 218
注册时间: 2017年9月 21日, 15:33

Re: 法师宏

帖子 绿色土豆 » 2017年12月 18日, 16:50

应该是,SHIFT和CTRL默认的我没改过

回复