宏解读(不定时更新)

一些相关攻略都可以发到这里
版面规则
本版只能发攻略相关的帖子,无关帖子一律删除
Rampage
帖子: 7
注册时间: 2017年12月 13日, 12:03

宏解读(不定时更新)

帖子 Rampage » 2017年12月 14日, 00:31

facqou这位哥们发了个关于宏解读的文,在下不才,来解读一下关于facqou发的那个由玩家绿色土豆提供的宏

原宏“/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"ManaB") then f=1;break;end;end;if f then SpellStopCasting();c("奥术飞弹");else c("寒冰箭");end;

/script local c,i,b,f=CastSpellByName #首先,定义4个变量,c是施放XX法术,其余为空;

for i=1,16 do b=UnitBuff("player",i) ;# 这里i的作用是循环变量,一共循环16次,b变量的作用是BUFF (玩家头上的BUFF 1到16),这一整句的意思是 判断玩家头上从第1个到第16个BUFF(当年最多BUFF栏位16个);

if b and strfind(b,"ManaB") then f=1 ;# strfind(b,"ManaB") 这一段的意思是 在b中寻找名为“ManaB”,而b的作用上面我已经说了是BUFF,所以这一段的意思是:如果玩家头上的BUFF出现一个名称为"ManaB"的BUFF(此处的"ManaB"就是节能BUFF的名字)时,(if then组合:如果,那么)那么定义f=1(即为f生效)因为只是单一判断,所以省略else;

break;end;end; #不必多说了吧;

if f then SpellStopCasting();c("奥术飞弹");else c("寒冰箭");end; #当f生效,停止施法;释放奥弹;否则释放冰箭;完;

PS:攻略区好冷清,天天互怼有意思么,不如滑稽 :geek:
欢迎学术交流,无论是宏或是游戏内容,本人联盟德 Rampage,练级超慢就是了 :geek:
联盟德Rampage,为您效……滑稽!

Rampage
帖子: 7
注册时间: 2017年12月 13日, 12:03

Re: 宏解读(不定时更新)

帖子 Rampage » 2017年12月 14日, 00:52

另一个由玩家绿色土豆提供的将变节的友方变羊的宏

原宏“/script SpellStopCasting()
/script local n,p,i,t=4,"party";if UnitInRaid("player") then n=40;p="raid";end;for i=1,n do t=p..i;if UnitCanAttack("player",t) then TargetUnit(t);CastSpellByName("变形术");SendChatMessage("%t 被控制,我把他变羊了~",p);break;end;end;


/script SpellStopCasting() #不多说,停止施法;

/script local n,p,i,t=4,"party";if UnitInRaid("player") then n=40;p="raid";end; #定义变量 n=4,p=队伍,i与t为空;如果单位(“玩家”)在团队中,那么n=40;p=团队;完;

for i=1,n do t=p..i; #开始循环了!i为循环变量,在队伍(或团队)中的第一个到最后一个里;

if UnitCanAttack("player",t) then TargetUnit(t);#如果上述单位中,有一个能攻击“玩家”并且处于队伍(或团队)的目标,那么,将(此目标)设为你的目标;

CastSpellByName("变形术");SendChatMessage("%t 被控制,我把他变羊了~",p);break;end;end;” #释放变形术,在小队(或团队)中打字“那谁谁被控制,我把他变猪了~(滑稽);完

欢迎学术交流,无论是宏或是游戏内容,本人联盟德 Rampage,练级超慢就是了 :geek:
联盟德Rampage,为您效……滑稽!

Rampage
帖子: 7
注册时间: 2017年12月 13日, 12:03

Re: 宏解读(不定时更新)

帖子 Rampage » 2017年12月 14日, 01:12

同上2宏,此宏依然是绿色土豆提供

铁皮手雷宏(按下出圈,再按下可以取消)
原宏“/script local b,s,l;if PlayerFrame.inCombat then AttackTarget();end;SpellStopCasting();for b=0,4 do for s=1,18 do l=GetContainerItemLink(b,s);if l and strfind(l,"铁皮手雷") then UseContainerItem(b,s);break;end;end;end;

/script local b,s,l;if PlayerFrame.inCombat then AttackTarget();end; #运行脚本定义函数b,s,l;如果玩家有选取圈那么攻击目标(选取圈就没了);小段完;

SpellStopCasting();for b=0,4 do for s=1,18 do l=GetContainerItemLink(b,s); #停止施法;b=0到4,s=1到18,l=(存在消耗品于背包0到4的1到18格里)(这里说一下,背包默认编号是0到4,背包内格子是1到18);

if l and strfind(l,"铁皮手雷") then UseContainerItem(b,s);break;end;end;end;” #如果在背包0到4的1到18格里有消耗品“铁皮手雷”,那么使用这个物品;断;完结三end

睡觉去了,bye
欢迎学术交流,无论是宏或是游戏内容,本人联盟德 Rampage,眼熟我了没啊 ;)
联盟德Rampage,为您效……滑稽!

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

Re: 宏解读(不定时更新)

帖子 Bluememo » 2017年12月 14日, 09:14

很好!传业受道解惑 :lol:
沙漠,扬起你的沙砾,遮蔽太阳的光芒吧!

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

Re: 宏解读(不定时更新)

帖子 绿色土豆 » 2017年12月 14日, 09:20

好顶赞,话说我的宏很多都是抄来的,抄抄改改,自己也不清楚到底什么意思,学习了!!!

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

Re: 宏解读(不定时更新)

帖子 facqou » 2017年12月 14日, 15:00

非常感谢! 这解释大致明白了,剩下的就是api的代入

根据大神的解释,自己做了一键打全职业的宏,请教大神有没有问题?
目的:
一键技能输出所有职业

作用:
先判断目标存不存在,存在再判断有没有标记,有就结束;没有就标记。然后判断职业是不是qs和xd,后面都就是技能;最后如果目标不存在就照明弹。

具体如下:
/script
local c="猎人印记",UnitClass("target"),"毒蛇钉刺",UnitPowerType("target"),a,b,d;
if UnitExists("target") then
for a=1,16 do b=UnitBuff("player",a);
if b and strfind(b,c) then d=1;
break;
end;
else CastSpellByName(c);
end;
if UnitIsPlayer("target") then
if t==0 then s="蝰蛇钉刺";
if e=="圣骑士" or e=="德鲁伊" then s=s.."(等级 1)";
end;
else s="毒蝎钉刺";
end;
end;
CastSpellByName(s);
else CastSpellByName("照明弹");
end;
YOU ARE NOT PERPARE!
伦鲁迪洛尔,上古守护者的长弓(1/1)
断牙(1/1)

Rampage
帖子: 7
注册时间: 2017年12月 13日, 12:03

Re: 宏解读(不定时更新)

帖子 Rampage » 2017年12月 14日, 16:57

/script
local c="猎人印记",UnitClass("target"),"毒蛇钉刺",UnitPowerType("target"),a,b,d;
#这里好像少定义一个变量t

顺序貌似有误,我习惯做成
/script
local y,c,s,t,a,b,d,t="猎人印记",UnitClass("target"),"毒蛇钉刺",UnitPowerType("target"); #修改了文本,同时用y来定义“猎人印记”

之后的文本中,都用y来定义“猎人印记”,其他不变,你再看看有没有问题
联盟德Rampage,为您效……滑稽!

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

Re: 宏解读(不定时更新)

帖子 facqou » 2017年12月 14日, 17:29

Rampage 写了:
2017年12月 14日, 16:57
/script
local c="猎人印记",UnitClass("target"),"毒蛇钉刺",UnitPowerType("target"),a,b,d;
#这里好像少定义一个变量t

顺序貌似有误,我习惯做成
/script
local y,c,s,t,a,b,d,t="猎人印记",UnitClass("target"),"毒蛇钉刺",UnitPowerType("target"); #修改了文本,同时用y来定义“猎人印记”

之后的文本中,都用y来定义“猎人印记”,其他不变,你再看看有没有问题

好的,回头调整下。

同时问下,下列宏中,双引号字符串中有个\,是什么意思,根据Lua语法,代表这是个引号字符串,所以是不是基本语法错了?
/script local b,s,j={反击编号,猫鼬编号,猛禽编号},{"反击\","猫鼬撕咬","猛禽一击\"};for j=1,3 do if IsUsableAction(b[j]) and GetActionCooldown(b[j])==0 then CastSpellByName(s[j]);break;end;end;
YOU ARE NOT PERPARE!
伦鲁迪洛尔,上古守护者的长弓(1/1)
断牙(1/1)

Rampage
帖子: 7
注册时间: 2017年12月 13日, 12:03

Re: 宏解读(不定时更新)

帖子 Rampage » 2017年12月 15日, 20:55

同时问下,下列宏中,双引号字符串中有个\,是什么意思,根据Lua语法,代表这是个引号字符串,所以是不是基本语法错了?
/script local b,s,j={反击编号,猫鼬编号,猛禽编号},{"反击\","猫鼬撕咬","猛禽一击\"};for j=1,3 do if IsUsableAction(b[j]) and GetActionCooldown(b[j])==0 then CastSpellByName(s[j]);break;end;end;
貌似我以前就看过这个宏,我自己没写过,
/施放 猛禽一击()
/施放 反击() /施放 猫鼬撕咬() /script local T; for i=0,15,1 do T=UnitDebuff("target", i); if (T and string.find (T,"Trip")) then break; end; end; if (T and string.find (T,"Trip")) then CastSpellByName("摔绊(等级 1)"); else CastSpellByName("摔绊(等级 3)"); end
你看看这个版本,里面是没有\的
联盟德Rampage,为您效……滑稽!

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

Re: 宏解读(不定时更新)

帖子 facqou » 2017年12月 17日, 22:20

Rampage 写了:
2017年12月 15日, 20:55
同时问下,下列宏中,双引号字符串中有个\,是什么意思,根据Lua语法,代表这是个引号字符串,所以是不是基本语法错了?
/script local b,s,j={反击编号,猫鼬编号,猛禽编号},{"反击\","猫鼬撕咬","猛禽一击\"};for j=1,3 do if IsUsableAction(b[j]) and GetActionCooldown(b[j])==0 then CastSpellByName(s[j]);break;end;end;
貌似我以前就看过这个宏,我自己没写过,
/施放 猛禽一击()
/施放 反击() /施放 猫鼬撕咬() /script local T; for i=0,15,1 do T=UnitDebuff("target", i); if (T and string.find (T,"Trip")) then break; end; end; if (T and string.find (T,"Trip")) then CastSpellByName("摔绊(等级 1)"); else CastSpellByName("摔绊(等级 3)"); end
你看看这个版本,里面是没有\的
今天试着写了下,发现 IsUsableAction,GetActionCooldown这2个技能栏的api怎么写都无法正常实现,怀疑是服务器关了api。求证实!
YOU ARE NOT PERPARE!
伦鲁迪洛尔,上古守护者的长弓(1/1)
断牙(1/1)

回复