我的操作水平不好,我看别人都是点1个键,就能连续释放好几个技能,而且都是针对某个职业的,比如一个连续的技能对付战士:命令圣印→制裁→审判→公正圣印。 之类的能够把技能连续起来,使用很方便,谁能帮助我编辑最适合QS用的宏,谢谢,被选种后追加分数
參考答案:给你引个帖:
[骑士刚强之道]关于骑士的'宏'汇总.献给NGA寻找骑士宏的朋友[已完成,望加精]
在老罗的秩序之源里面,我发现关于宏的部分太少.也许是NGA和猫扑的区别吧.刚玩骑士不久,这里尽我所能贴一些出来,希望斑竹能高亮,也希望老罗可以加入秩序之源里面.
7区祖鲁稀德<铁血>骑士keos
[请问如果TBC带判断的宏会被取消,那插件呢?如果TBC依然保持插件的判断功能,判断宏就依然可以工作,宏的本质是LUA脚本.姑且认为不能工作了,那更可以通过我的目录里面的第3扩展来实现一切功能]
目录:
1,入门级宏介绍,很轻易的以这个格式举一反三.
2,进阶级宏介绍,希望大家可以从里面学到这里没有的东西.
3,LUA脚本级宏扩展(准备放在2楼),感兴趣,以及渴望以宏致胜的骑士继续..
一点小要求
请关闭WOW自带的以及任何整合查件带的自我释法.
一点要提前说明的
动作分为软动作(soft)和硬动作(hard),软动作我是指没有动作行为的,如选择目标,说话等.软动作可以由任何事件(event)触发,包括:密语,进入/脱离战斗,受到伤害,受到治疗,进出副本等等.硬动作就是必须要由一个硬件事件(hardware event)触发的动作,释法,移动等都是.硬件事件仅仅包括操作计算机的人的动作.例如可以通过注册一个密语事件,让别人米你,成为你的目标,但不能给予其祝福.无公共CD的硬动作是可以和其他硬动作同时被一个硬件事件触发的;反之,一个硬件事件只能触发一个有CD的硬动作.
{入门级宏}
1,法术的自我释放,有2种方法:
/script CastSpellByName("清洁术",1) [加1参数的释法命令]
/script TargetUnit("player");CastSpellByName("清洁术");TargetLastUnit() [先选择自己为目标再释法,再切换到上一个目标]
(第一种略过了目标的切换是很好的方法)
2,SpellStopCasting()打断释法函数的骑士用法.
/script CastSpellByName("神恩术");SpellStopCasting();CastSpellByName("神圣震击") [防止被取散的必暴震击]
/script SpellStopCasting();CastSpellByName("圣盾术") [保证按无敌时没有其他任何动作]
3,RAID中治疗保护队友的语言通知:
/script CastSpellByName("圣光术");SendChatMessage("你正处于危险之中,正在为你吟唱顶级圣光术!", "WHISPER",GetDefaultLanguage("player"),UnitName("target")) [治疗并密语队友]
/script CastSpellByName("保护祝福")
/RA %t <<<<已给保护祝福! [团队通知给某人保护祝福]
{进阶级宏}
BLZ所提供的UI,API非常强大,可以判断很多种情况.判断由机器完成,是简化操作的一种手段.
1,要水宏:
/script if(UnitIsFriend("target","player") and UnitClass("target")=="法师") then local tf_un=UnitName("target");SendChatMessage(tf_un.."朋友你好,给点水嘛.谢谢!", "WHISPER",GetDefaultLanguage("player"),tf_un);end
[这个宏含有目标友好与职业判断,点的不是法师是发不出去的,可以避免闹笑话]
2,RAID一些宏:
骑士版5秒回蓝刷血:
/script if(flt==nil) then flt=0;else local nowTime=GetTime();if(flt<=0) then CastSpellByName("圣光闪现");fst=nowTime;end;flt=1.5+5+0.1-(nowTime-fst);end
[里面1.5+5+0.1为 吟唱时间+5秒回蓝+网络延迟]
BWL3号致死刷血:(仅仅是蓝不够的情况才会用到吧?)
/script for i=1,16 do if(UnitDebuff("targettarget",i)) then if(string.find(UnitDebuff("targettarget",i),"SavageBlow")) then TargetUnit("targettarget");CastSpellByName("圣光闪现");TargetLastTarget();end;end;end
[选定BOSS,只有在BOSS目标身上有致死DEBUFF的时候,才开始吟唱.里面SavageBlow为致死的图表名]
防止误干涩:
/script if(UnitClass("target")=="牧师" or UnitClass("target")=="圣骑士" or UnitClass("target")=="德鲁依") then CastSpellByName("神圣干涉");end
[只有当目标为3治疗职业时,才予以干涉]
只有在危机时刻使用圣疗:
/script if(UnitHealth("target")<2000) then CastSpellByName("圣疗术");SendChatMessage("对[%t]使用圣聊!");end
[只有当目标生命在2000以下才使用圣疗,当然2000的具体数字可以修改]
治疗OT自动给予保护:
/script if(UnitClass("targettarget")=="牧师" or UnitClass("targettarget")=="德鲁依") then TargetUnit("targettarget");SpellStopCasting();CastSpellByName("保护祝福");else CastSpellByName("圣光闪现");SpellTargetUnit("targettarget");end
[选定目标,治疗目标的目标,如果治疗OT则切换到治疗,释放保护]
根据目标职业给予力量/智慧祝福:
/script if(UnitClass("target")=="战士" or UnitClass("target")=="盗贼") then CastSpellByName("力量祝福");else CastSpellByName("智慧祝福");end
3,PVP相关(这里我将给予比较详细的介绍)
饰品和自我自由祝福:
/script if(HasFullControl()==nil) then UseInventoryItem(13);elseif(not IsShiftKeyDown()) then CastSpellByName("自由祝福",1);else CastSpellByName("自由祝福");end
[当无法自我控制的时候,使用上面一个饰品;可以自我控制的时候给自己自由祝福,按下SHIFT则仅仅给目标释放自由祝福]
HasFullControl()函数判断玩家是否可以自我控制,我的经验,只有恐惧和变形是标志为nil.这是一个可以把使用饰品和自我自由祝福结合起来的宏.
圣印和审判:
/script for i=1,16 do if(UnitBuff("player",i)) then if(string.find(UnitBuff("player",i),"ThunderBolt")) then CastSpellByName("审判");break;end;else CastSpellByName("正义圣印");break;end;end
[如果有正义圣印,则释放审判;如果没有则释放正义圣印]
搜索玩家人物的16个BUFF位,发现则审判,没有则添加圣印,跳出循环.其中ThunderBolt是正义圣印的图标名.其他几中图标名我列在下面.这是一个可以把圣印和审判结合到一个按键上的宏.
命令InnerRage
光明HealingAura
智慧RighteousnessAura
公正SealOfWrath
十字军HolySmite
自我清洁,可解才解:
/script for i=1,16 do if(UnitDebuff("player",i,1)) then CastSpellByName("清洁术",1);elseif(UnitDebuff("player",i)==nil) then CastSpellByName("清洁术");break;end;end
[当自己有可以驱散的DEBUFF,则自我清洁,如果没有,则仅仅释放清洁术]
也就是这个宏是自我优先清洁,当然可以把后面的清洁术改为其他动作.自我清洁设一个hotkey是很有必要的.
惩戒骑对抗MS/SM使用一级命令:
/script if(UnitClass("target")=="牧师" or UnitClass("target")=="萨满祭祀") then CastSpellByName(命令圣印(等级 1));else CastSpellByName(命令圣印);end
这样被驱散了,不会心痛.当然这个也可以做到上面的圣印审判宏里面.
对应圣印更换武器:
/script CastSpellByName("命令圣印");SpellStopCasting();UseAction(twohand_slot,0,1)
[这里使用了UseAction()这个函数,twohand_slot那里填入动作条代码,也需要把双手武器的图标移到对应的动作条上]
/script CastSpellByName("公正圣印");SpellStopCasting();UseAction(onehand_slot,0,1);UseAction(shield_slot,0,1)
[同上]
单双手互换:
/script if(IsEquippedAction(twohand_slot)) then UseAction(onehand_slot,0,1);UseAction(shield_slot,0,1);else UseAction(twohand_slot,0,1);end
[先使用IsEquippedAction()判断双手,也就是处于动作条位置的那把双手武器优先,同样需要你自己填入动作条编号]
动作条编号如下:
25-36 bar on right-side of screen, far right (top to bottom)右边
37-48 bar on right-side of screen, in one column (top to bottom)右2
49-60 lower right bar (left to right)右下
61-72 lower left bar (left to right)左下
------------------------------------------------------------------未完待续
暂时就写以上这么多,有不对的地方或者想得不周到的地方请大家指正.2楼我将于近期贴出关于通过UI来写LUA脚本,达到扩展自己宏的方法例子等.尽请关注...
关于详细的API和EVENT可以关注:
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[ ]
{LUA脚本级宏扩展}
WOW的UI(用户接口user interface)也就是interface/Addons/目录下的插件.这些插件基本由3类文件构成:
.toc 这个是说明注释
.xml 这个是WOW所用的网页框架格式的文件,窗口,按钮,界面等都是在这个文件里面完成的
.lua 这个是脚本文件,脚本代码就在这里面,也是我下面将要说的,我们所利用的文件
扩展思路:
WOW里面的MACRO最多只能有255个字符,所以我们编辑比较大型的功能比较丰富的宏是不太现实的,但我们可以做到插件的.lua脚本里面去.写成一个函数.并在WOW里面直接调用这个函数,完成对宏的扩展.
例如:上述单双手武器互换的宏,我们可以做成这样一函数:
function change_weapon(twohand_slot,onehand_slot,shield_slot)
if(IsEquippedAction(twohand_slot)) then
UseAction(onehand_slot,0,1);
UseAction(shield_slot,0,1);
else
UseAction(twohand_slot,0,1);
end
end
把这个函数贴进,插件目录下面,某个插件的某个lua文件里面.我们就可以在WOW里面建一宏:
/script change_weapon(twohand_slot,onehand_slot,shield_slot)
来直接调用这个函数,在宏中填入相应的动作条代码,就可以实现同样的功能.
当然我们还是更愿意,自己做.toc和.xml文件来做一个我们自己的LUA函数库:
例如:我们分别建立这些文件(可以复制其他插件的文件,再予以更名,用记事本打开)
mymacro.toc
## Interface: 11200 --------------------------版本号
## Title:mymacro --------------------------名字
## Notes:我的功能函数库 ------------------注释,随便添加
mymacro.xml ----------------包含的XML文件的名字
mymacro.xml
<Ui xmlns=""
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[
..\FrameXML\UI.xsd">
<Script file="mymacro.lua"/> -------------包含的LUA脚本文件的名字
<Frame name="mymacro"> -----------这个不可见窗体的名字
<Scripts>
<OnLoad>
</OnLoad>
<OnEvent>
</OnEvent> ------------以上4句和事件EVENT有关,是进入游戏加载或注册的内容,这里为空
</Scripts>
</Frame>
</Ui>
(由于系统自动把地址改为可点,如果要复制这里的请去掉地址2边的[]号)
还有一个文件,里面就放入函数了(LUA语法请参看:
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[ ])
mymacro.lua
这里可以放入任何你编好的函数,并在进入游戏时加载,便可以在宏中进行调用.
这里限于篇幅只举一个例子:
十字军+审判+命令:
function seal_combo_cross_comm()
local pb_cr=seal_is_some_buff("player","HolySmite");
local pb_co=seal_is_some_buff("player","InnerRage");
local tdb=seal_is_some_debuff("target","HolySmite");
if(not tdb) then
if(not pb_cr) then
CastSpellByName("十字军圣印");
else
if(target_ok()) then
CastSpellByName("审判");
else
SendChatMessage("No Target!");
end
end
else
if(not pb_co) then
CastSpellByName("命令圣印");
else
if(target_ok()) then
CastSpellByName("审判");
else
SendChatMessage("No Target!");
end
end
end
end
这个函数里面包含几个子函数:
--判断目标身上是否有某一BUFF!111
function seal_is_some_buff(TargetOrPlayer,BuffTexture)
local buff_f=nil;
for buff_slot=1,16 do --通过BUFF标志,判断是否有对应BUFF!
if(UnitBuff(TargetOrPlayer,buff_slot)~=nil) then
if(string.find(UnitBuff(TargetOrPlayer,buff_slot),BuffTexture)) then
buff_f=1;break;
end
else
break;--无BUFF!
end
end
return buff_f;
end
--判断目标身上是否有某一DeBUFF!111
function seal_is_some_debuff(TargetOrPlayer,BuffTexture)
local buff_f=nil;
for buff_slot=1,16 do --通过BUFF标志,判断是否有对应BUFF!
if(UnitDebuff(TargetOrPlayer,buff_slot)~=nil) then
if(string.find(UnitDebuff(TargetOrPlayer,buff_slot),BuffTexture)) then
buff_f=1;break;
end
else
break;--无BUFF!
end
end
return buff_f;
end
--判断是否有可以被攻击的目标!104
function target_ok()
if(UnitExists("target") and (not UnitIsFriend("player","target"))) then
local un=UnitName("target")
return un;
else
return nil;
end
end
在WOW中只要调用主函数seal_combo_cross_comm()就可以实现.
------------------------------------------------------------
这部分内容就写到这里.如果大家需要帮助可以联系我.
游戏有不同的种玩法,思考是共同点.
感谢阅读这片帖子的朋友,感谢予以我支持的朋友.
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[ ]
关于一键divine favor+holy light的宏
响应版主号召
我已经用了很久,还以为大家都有呢
/施放 神恩术
/script SpellStopCasting();
/施放 圣光术(等级 8)
/script if SpellIsTargeting() then
SpellTargetUnit("player") end;