魔兽世界

2024-12-02 16:32:24
推荐回答(2个)
回答1:

建议:基本的宏知识还是要稍微了解一下 要不然是搞不出最适合自己的宏的

这是常用的:

饰品 + 强力buff + 技能 双开宏的写法
到处都是这种如何写双开宏的问题,无非就是一个强力buff如奥术强化,能量灌注;和一个护符一起开
后面再接一个秒人的技能或大治疗,其实写法很简单,通用写法:

/施放 强力buff 比如奥术强化,能量灌注,血性狂暴等
/script SpellStopCasting();
/script UseInventoryItem(13); 13是指饰品1,14是饰品2
/script SpellStopCasting();
/施放 秒人技能

法师

冰箱能用就冰箱,没冷却就急速冷却+冰箱:
把 寒冰屏障 放到一个你不用的按钮上,记下编号,编号看上边基础知识,
把红色字用你查到的编号代替
/script local c,i,b,f,d,_=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strsub(b,5)=="Frost" then f=1;break;end;end;if not f then _,d=GetActionCooldown(你冰箱编号);if d>2 then c("急速冷却");SpellStopCasting();end;c("寒冰屏障");end;

也可以使用法术书编号来节省动作条,编号看上边基础知识
/script local c,i,b,f,d,_=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strsub(b,5)=="Frost" then f=1;break;end;end;if not f then _,d=GetSpellCooldown(你冰箱编号,"spell");if d>2 then c("急速冷却");SpellStopCasting();end;c("寒冰屏障");end;

奥术强化+护符+炎爆术
护符放哪里无所谓,会自动开已经冷却的护符
/script local c,x,u,s,p,d,e,_=CastSpellByName,GetInventoryItemCooldown,UseInventoryItem,SpellStopCasting,"player";c("奥术强化);s();_,d,e=x(p,13);if d<2 and e then u(13);else _,d,e=x(p,14);if d<2 and e then u(14);end;end;s();c("炎爆术");

气定神闲+炎爆术
/施放 气定神闲
/script SpellStopCasting();
/施放 炎爆术

平时冰箭,出灵风8件效果就火球
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Telep") then f=1;break;end;end;if f then c("火球术");else c("寒冰箭");end;

这类宏有个特点,平时用小技能,在特定buff出现后换大技能,比如这里冰箭就是小技能,火球就是大技能
既然分出了大小,那就知道可以怎么改了,火球术可以改成其他“大技能”,比如 炎爆术
冰箭可以换成其他“小技能”,比如 灼烧,都是中国字,别跟我说你不会

平时冰箭,出奥术专注效果就火球
/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;

同上,火球术可以改成其他的,比如 炎爆术,奥术飞弹,冰箭可以改成 灼烧

平时冰箭,出奥术专注 或 出灵风8件效果就火球
奥术专注是下个法术免费,所以一旦出了特效,要马上取消当前法术,换大的,否则免费特效就被当前法术浪费了
而灵风8件是下个法术瞬发,当前正在引导的不受影响,所以不用取消当前的
由于256字节限制,要取消两个都取消,否则都不取消,那就是说必须都取消,这样灵风会损失当前引导的法术
这种损失就是半个冰箭或者半个灼烧,如果大家认为这种损失可以接受的话,就用这个合并版:
/script local c,i,j,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and (strfind(b,"ManaB") or strfind(b,"Telep")) then f=1;break;end;end;if f then SpellStopCasting();c("火球术");else c("灼烧");end;

1级奥暴骗节能,出节能就用顶级奥暴
/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("魔暴术(等级 1)");end;

灼烧叠5层就火球,否则继续灼烧
/script local c,i,d,n,f=CastSpellByName;for i=1,16 do d,n=UnitDebuff("target",i);if d and strfind(d,"SoulB") then f=1;break;end;end;if f and n==5 then c("火球术");else c("灼烧");end;

打贼奥爆宏
有目标就放最高级奥暴,没有目标就放1级奥暴
/script if UnitCanAttack("target","player") then CastSpellByName("魔暴术");else CastSpellByName("魔暴术(等级 1)");end;

自动补 冰甲术,奥术智慧,魔法抑制
缺啥补啥,闲着没事按按能强身健体,定国安邦……
/script local n,s,k,j,b,f={"tArm","lSen","hMag"},{"冰甲术","奥术智慧","魔法抑制"};for k=1,3 do f=nil;for j=1,16 do b=UnitBuff("player",j);if b and strfind(b,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;

自动把被控制的队友变羊,小队,团队通用版
对于会控制玩家的BOSS很有用,比如哈卡,AQ神庙1
/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 local s,m,r={"",":龟",":猪"},{"%t变羊了","%t是乌龟","%t是猪"},random(3); CastSpellByName("变形术"..s[r]);SendChatMessage(m[r],"yell");
可以根据变的种类喊话,想喊什么自己改

火冲打图腾
/script local t,n,i,_={"根基","战栗","地缚","灼热","清毒"};for _,i in t do n=i.."图腾";TargetByName(n,1);end;CastSpellByName("火焰冲击(等级 1)");

猎人

自动反击,猫鼬,猛禽宏
可以代替猛禽一击,能放的话会自动放反击,猫鼬

出了反击天赋的
在下边依次填上反击,猫鼬撕咬,猛禽一击 在动作条上的编号,查编号看上边基础知识
/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 b,s,j={猫鼬编号,猛禽编号},{"猫鼬撕咬","猛禽一击"};for j=1,2 do if IsUsableAction(b[j]) and GetActionCooldown(b[j])==0 then CastSpellByName(s[j]);break;end;end;

智能钉刺宏
牧师不会解毒,应该用蝰蛇,反倒是对德鲁伊要用蝰蛇1骗驱毒,到头来毒蛇无用?其实应该对所有怪都用毒蛇

功能介绍:按照下列规则放钉刺

战、贼:毒蝎
猎、法、术,萨,牧:蝰蛇
骑,德:蝰蛇1
NPC:毒蛇

/script local c,s,t=UnitClass("target"),"毒蛇钉刺",UnitPowerType("target");if UnitIsPlayer("target") then if t==0 then s="蝰蛇钉刺";if c=="圣骑士" or c=="德鲁伊" then s=s.."(等级 1)";end;else s="毒蝎钉刺";end;end;CastSpellByName(s);

打贼专用:标记 / 照明弹
有目标就标记,没有就放闪光弹
/script if UnitExists("target") then CastSpellByName("猎人印记");else CastSpellByName("照明弹");end;

雄鹰守护 + 猎人印记 + 宠物攻击
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"RavenF") then f=1;break;end;end;if f then c("猎人印记");PetAttack();else c("雄鹰守护");end;

灵猴 猎豹切换
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Monk") then f=1;break;end;end;if f then c("猎豹守护");else c("灵猴守护");end;

灵猴 雄鹰切换
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Monk") then f=1;break;end;end;if f then c("雄鹰守护");else c("灵猴守护");end;

猎豹 雄鹰切换
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"eTiger") then f=1;break;end;end;if f then c("雄鹰守护");else c("猎豹守护");end;

灵猴守护 + 威慑
威慑的编号看上边基础知识自己填
/script local c,i,b,f,s,d=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Monk") then f=1;break;end;end;if not f then c("灵猴守护");SpellStopCasting();end;s,d=GetActionCooldown(你威慑编号);if d<2 then c("威慑");end;

法术书版
/script local c,i,b,f,s,d=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Monk") then f=1;break;end;end;if not f then c("灵猴守护");SpellStopCasting();end;s,d=GetSpellCooldown(你威慑编号,"spell");if d<2 then c("威慑");end;

多重 + 瞄准
多重和瞄准哪个CD好了用哪个,raid的时候非常安逸,目标是NPC就使用1级多重,省蓝,是玩家就用顶级的。
按住Alt则强制使用瞄准射击,因为raid中10秒循环一般都是瞄准起手,紧跟多重,为了充分利用5秒回蓝
每个怪最开始按一下Alt就行了,因为这个宏会优先放多重,所以PK的时候用来放风筝也可以
多重编号看上边基础知识自己填
/script local c,x,s,d=CastSpellByName,"瞄准射击",GetActionCooldown(你多重编号);if d<2 and not IsAltKeyDown() then x="多重射击";if not UnitIsPlayer("target") then x=x.."(等级 1)";end;end;c(x);

法术书版
/script local c,x,s,d=CastSpellByName,"瞄准射击",GetSpellCooldown(你多重编号,"spell");if d<2 and not IsAltKeyDown() then x="多重射击";if not UnitIsPlayer("target") then x=x.."(等级 1)";end;end;c(x);

宁神射击 只有成功施放后才喊话
注意,不是命中之后自动喊话,那需要插件,而是宁神打出去之后按这个宏才会喊话,之前会一直尝试宁神,没有废话
动作条版:
/script local s,d=GetActionCooldown(你宁神编号);if d>2 then SendChatMessage("我已施放宁神","yell");else CastSpellByName("宁神射击");end;

法术书版:
/script local s,d=GetSpellCooldown(你宁神在法术书中的编号,"spell");if d>2 then SendChatMessage("我已施放宁神","yell");else CastSpellByName("宁神射击");end;

一键脱光
注意,你身上的包至少要都是16格的,另外,假死不能加进去,假死瞬间衣服脱不下来的
/script local e,b,s=0;for b=0,4 do for s=1,16 do if not GetContainerItemLink(b,s) then while e<18 do e=e+1;if e==11 then e=16;end;if GetInventoryItemLink("player",e) then PickupInventoryItem(e);PickupContainerItem(b,s);break;end;end;end;end;end

收宠 假死 陷阱
非战斗状态就放陷阱,否则假死,再按陷阱,注意,战斗中假死瞬间陷阱放不出来的,会提示你正在战斗中
所以战斗中需要狂按这个宏
这个宏WOW 2.0就用不着了
/script PetFollow();if UnitAffectingCombat("player") then CastSpellByName("假死"); else CastSpellByName("冰冻陷阱");end;

野兽护符 - 双多重宏
护符放饰品1上,把你多重射击换个地方,并查出编号,替换红色字,查编号看上边基础知识
/script local s,d;s,d=GetActionCooldown(你多重射击的编号);if d>2 then UseInventoryItem(13);SpellStopCasting();end;CastSpellByName("多重射击");

法术书版
/script local s,d;s,d=GetSpellCooldown(你多重射击的编号,"spell");if d>2 then UseInventoryItem(13);SpellStopCasting();end;CastSpellByName("多重射击");

这个宏可以目前替代多重了,但是马上WOW 2.0要来了,这个宏届时将失效,目前没有解决方案

宝宝打图腾
/script local t,n,i,_={"根基","战栗","地缚","灼热","清毒"};for _,i in t do n=i.."图腾";TargetByName(n,1);end;PetAttack();

宠物宏 - 智能召唤/复活/治疗
如果宠物存在,死的就复活,没死就++,宠物消失了的话就召唤,如果是尸体消失,请同时按住Alt键,
会强制使用复活,因为WOW消失了仍然认为是活的……
/script local p,s="pet","召唤";if UnitIsDead(p) then s="复活";elseif UnitExists(p) then s="治疗" elseif IsAltKeyDown() then s="复活";end;CastSpellByName(s.."宠物");

寻找稀有精英宠物
公共部分已经有了,不过鉴于猎人特殊性在专门写一个
/script local s="断牙";TargetByName(s,1);if UnitName("target")==s then ChatFrame1:AddMessage("找到");end;
上边名字自己修改

针对不同目标调整宠物技能自动施放情况
这个宏可以针对不同类型的目标调整宠物技能的自动施放,比如带蝙蝠面对近战应该打开尖啸,而面对法系就应该关掉
带会爪击的宠物打怪时应该关掉爪击开低吼,而遇到玩家需要关低吼开爪击,这个宏可以自动为你做到

/施放 猎人印记
/script local x,p,j,e,_={1,1,1},UnitPowerType("target");if UnitIsPlayer("target") then if p==0 then x={1,nil,nil,1};else x={1,nil,1};end;end;for j=4,7 do _,_,_,_,_,_,e=GetPetActionInfo(j);if x[j-3]~=e then TogglePetAction(j);end;end;

说明一下,红色的{1,1,1}对应NPC,蓝色的{1,nil,nil,1}对应有蓝职业,绿色的{1,nil,1}对应战,贼
四个1/nil对应宠物技能条4 5 6 7按钮,1代表开,nil代表关,最后一个是nil的话可以不写,
大家可以自己调整技能和对应职业的开关顺序,毕竟不同bb技能不用

比如我带的断牙,
-------4 突进-----5 撕咬-----6 爪击-----7 低吼
怪-----1----------1----------nil--------1
贼战---1----------1----------1----------nil
其他---1----------1----------1----------nil

猫头鹰/蝙蝠
-------4 俯冲-----5 尖啸-----6 爪击-----7 低吼
怪-----1----------1----------nil----------1
贼战--1-----------1----------1----------nil
其他--1-----------nil---------1----------nil

回答2:

直接代码网上多了去了,不学就用宏还不如不用。