|
|
WOW???? (Advance Programming)
原文链接
作者: cherngje(宇桐)
日期: 2004/12/31 02:10:07
Chapter One
玩了WOW有一段?r?了,除了??虮旧硭?峁┑幕?竟δ苤??其他WOW的功能我都?量的?L?.在??我提供一下我??人的心得.
相信很多的玩家都知道,WOW有所?的合法外??COSMOS),但是WOW又非常的?栏竦淖ニ?^的非法外??那?合法的外?炫c非法的外?觳?e在哪?
其??所?的合法外??只是在於一些有心的玩家利用了WOW所提供的功能,以及指令,另外在WOW的??蚝诵纳?另外??了一些?助性?的SCRIPT??椭?[?蚪槊娴暮?易操作.至於非法外??就是利用任合??虮旧硭?]提供的功能?碓黾幼陨淼睦??包括了所?第三者程式third party program).
既然WOW本身有提供??拥墓δ?身?橥婕业奈???槭颤N不?量的利用?些好?呢?有?於台?惩婕以讷@得?些??上的困?(因?橛嘘P於?方面的??,大部分都是英文),我在??提出??,或?能?Ыo台?车耐婕伊硗庖环N的??蝮w?.
暴?雪在WOW的官方?站上有很明?的提到,UI的修改是玩家??哆[?蛘?w??中的一部分.但是什?是UI?UI修改又是什??
UI是USER INTERFACE(使用者介面),在WOW中,所有的UI都是模?化的,每一??按?,每一???窗都是?凫赌骋??模?的定?.玩家在玩??虻?r候,?K不是直接的??哆[?蚝诵南逻_??蛑噶?而是先在UI上面的?幼?然後在藉由UI的模?上下???蚝诵闹噶?例如我??按下??蛑泄?舻陌粹o,WOW???z查???按?的定?是什?,然後才?绦羞@??定?下的指令.
那?修改UI的好?又是什?呢???诱f好了.WOW本身所提供的UI,其背後的定?都是最基本的,最?化的.比如?快捷?按?的??,以及每??指令?幼?在按?以及?窗的??上,使以??稳菀咨鲜?橹饕?康?但是??哆M?玩家而言,又??X得WOW所提供的快捷?按?不?蛴?所以自己在UI上面加以修改,??泳筒坏?梢宰孕?Q定快捷?按?的?的?也可以把?些按??[在自己最喜?g的地方.
另外?於指令?幼魃????老鼠在UI上面的指令),WOW基本的UI?定都是一??指令一???幼?我??按一??按?,WOW做一???幼?但是我??可以自行?定UI,?到玩家的下?一??指令,WOW同?r做很多?幼?
比如?,WOW?玩家在攻?羯系倪x?袷?按TAB??屯婕艺页霎?面上距?最近的?橙?原始?定是20?的距?????,然後玩家必?按攻?舻陌粹o或是T,在??拥那?r下才????玩家下?了???指令,做了????幼?但是在UI的修改上,我??不但可以修改?面上距?最近的?橙说木嚯x????合?距?攻?舻耐婕?,我???可以?定按下TAB按?,不但???佣ㄎ痪嚯x最近的?橙?????娱_始攻??
在?????串?中,我主要是??χ噶?I上的?定提出??,因?殛P於?面上的?定已?有很多?成的???COSMOS).因此我?⑨???LASS上面?助型的UI?定.在藉由??上,?台?车耐婕??也有?C??孕性O?出最方便,最有效率的攻??法?施展,以及??物控制.
?然我???g迎玩家??θ魏蔚?I?定提出??,但是我不?得有能力回答.?竟我??人比?不喜?g去研究?面的排列,所以?方面花的功夫也比?少.
Chapter Two
上一篇文章介?了UI修改的最基本?念,在?篇文章中我?⑻峁?I修改上的最基本的?幼?工具以及?料?碓?
在我??要??I做任何的修改或是?作模?之前,我??必?先了?WOW的UI基本???.在WOW的?料?A?面,我??可以找的一??DATA的子目?.在???子目??面,包括了所有WOW??\用到的?n案,包括了模?,?D形,字型等等.?些都?嚎s在所?的MPQ?n案?面.拿我??人的?n案?碜隼??我的MPQ?n在C rogram FilesWorld of WarcraftData下面.而所有UI可以?用到的?n案都?嚎s在interface.mpq?n?.
要?z查MPQ?n案?面有些什?,我??人建?WinMPQ???程式.?榱吮苊獯蠹??奈曳挪《?在??我建?大家自行上GOOGLE查哪?可以下?WinMPQ.
因?檫[?虻?I的基本?定都在interface.mpq,所以我不建?大家直接???nterface.mpq?面的?n案直接修改.大家可以把所需要的?n案解?撼??只要做完修改後不存回interface.mpq?面,在??拥那?r下,都不??绊?到基本?定.
那?大家???修改完之後的?n案?存在哪呢?首先到WOW的目??面,然後?一??先的子目?叫做interface.以我??人的例子是C:Program FilesWorld of Warcraftinterface.然後大家可以把修改好或是?作好的?n案存在????料?A下面.?WOW?入??蛸Y料的?r候,WOW???拥竭@???料?A?面?z查哪些模?因??入.
?然UI修改可以?用到WOW?有的?n案,但是?榱朔奖憬?W,我在??提出的例子?⒉??玫?OW?有的?n案.事??上,除了要做??虍?面上的?定,大部分的情?r下,我??不?得要用到WOW?有的UI?n案,只要我???作模?用的都是WOW所提供的核心指令就可以了.
在?作模?之前,我先介?一下每一??模?所需要的最基本的?n案.每??模?都需要一??介??n,toc?n.定??n,xml,以及核心?n,lua?n.?三??n案都可以用??本或是任何的文???理程式?碜鲂薷?
?榱朔奖憬榻B,我?出一????蔚睦??斫忉??三???n案.?在?我?????? Hi 模?.???模??你?绦械?r候,他??谀愕倪[?虍?面上出?一?? Hi 的??.
因?槲?????模?叫做Hi,所以我??需要三???n案
hi.toc
hi.xml
hi.lua
(模?的名?最好??n案的名?相???
?在?我介?一下hi.toc的格式:
## Interface: 4150
## Title: Hi
## Notes: just want to say hi
## OptionalDeps:
## Dependencies:
hi.xml
在## Interface:後面的?底执?砹四壳?OW的版本.?作模?的作者有??站S持模?支援最新版的WOW,所以每?WOW做出更新的?r候,模?的?作人得?z查模?是否?能工作,??定?能工作的?r候,就可以更新射???底?更新????底钟???意?:第一,WOW??z查每??模?的????底?如果?WOW版本相?合,那?就??d入,不然就??n掉.第二,玩家可以?定???模?的版本是可以使用的版本.
我在??不建?除了模?的?作人修改????底?因?橛?r候模?的??可能很??,在不是?作人的情?r下,很可能不知道到底?]有更新的模?是否?跟最新版的WOW相容.如果玩家自行更改????底肿?它跟WOW的版本?底忠?拥脑?,WOW就???虞d入???模?.如果模?不相容的情?r下,很可能??斐蛇[?蛏系睦?_.
??到??,玩家可能???要去哪?找WOW最新的版本?底???绦?OW??虻?r候,在登入的?面上的最左下方,可以找到?????.以目前我?????教?W的?r?而言,WOW最新版所提供的??是Version 1.2.1 (4150).大家要用的是4150????底?而不是1.2.1????底?
在## Title:後面,模??作人打的字元就是???模?的名?.
在## Notes:後面,模??作人打的字元就是???模?的?介
## OptionalDeps:後面, 模??作人?耸境鲞@??模?是否有其他的?外的模?可以支援???模?.????地方有?耸酒渌?哪=M的?r候,?K不代表玩家??也必?要有????外模?,只是有了????外的模?,可以?????模?的功能更加完整.
## Dependencies:後面, 模??作人得?耸境鲞@??模?必?要使用的的?n案(包括了必?使用到其他模?的?n案,?注意,上面??裥阅=M的?n案?K不需要在???耸?.
因?檫@??教?W模??K不需要用到其他的模?,所以只需要?耸境瞿=M定??n hi.xml.
hi.xml的介?:
基本上XML可以?做?????n案(HTML)?砜?可是?栏竦?碚f,XML是拿?碜?槎?x上或是?料?鬏?上所使用的.如果玩家???ML的?法以及如何?用有?趣,可以到http://www.w3.org/XML/查?更??的?料
?在我只介?XML在WOW模???上?如何?用.
Code: [Copy to clipboard]
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<Script file="hi.lua"/>
<Frame name="hi_core">
<Scripts>
<OnLoad>
this:RegisterEvent("VARIABLES_LOADED");
</OnLoad>
<OnEvent>
if (event == "VARIABLES_LOADED") then
hi_initialize();
end
</OnEvent>
</Scripts>
</Frame>
</Ui>
大家可以忽略前面?仔?lt;Ui xmlns ......... />.基本上每一??WOW模?XML?n都必?要有??仔?
重要的是 <Script file="hi.lua"/> 在??大家得定?出模?的核心?n案是什?.以我??目前的例子,核心?n案是hi.lua.
在 <Frame name="hi_core"> ??定?出模?在??虍?面中要使用的的子?面的名?.???名?必?是?一?o二的,避免?其他的模??面?突到.
在上面的例子中我??可以看到<OnLoad>和<OnEvent>的?耸?基本上<OnLoad>的意思是?WOW在?入??蚪槊娴?r候,因?要做出什??幼?以我??的例子,我??要在WOW??蜓e??砸????到凶?quot;VARIABLES_LOADED".
<OnEvent>的意思是,如果?生了什?事件,那??做出什??幼?矸??以我??的例子,如果???quot;VARIABLES_LOADED"成功的?,我??就?绦?i_initialize(). ?然,如果?]有??猿晒?也就不??惺录?l生,?代表了我??的模??]有?入到??蜓e面,所以我??也就?]有後??幼?
hi.lua的介?:
lua 是一??script?言.WOW所有的UI模?都是建立在????言之上.???ua想要更深入的了解,?到官方?站:http://www.lua.org/manual/5.0/ 在??可以查到所有?於lua的?法以及使用方式.
?在?我介?我??目前的例子:
Code: [Copy to clipboard]
function hi_initialize()
SlashCmdList["HIHI"] = hi_command;
SLASH_HIHI1 = "/hihi";
SLASH_HIHI2 = "/您好";
end
function hi_command(msg)
message(msg);
end
大家可以看到我???????小function 一??叫hi_initialize 一??叫 hi_command. 在hi.xml?面,如果模??利在入的?hi_initialize是第一??被呼叫的.在??我??自行?定了一些"/"指令.我想大家因???哆[?蜓e面的一些"/"指令?K不陌生.
同?拥奈??也可以?臀??的模??定?些"/"指令.
SlashCmdList["HIHI"] = hi_command; 代表的意思是如果我????的"/"指令被呼叫的?,我??因??绦?i_command?一??function.
SLASH_HIHI1 = "/hihi";
SLASH_HIHI2 = "/您好";
??是?臀??的"/"指令定出名?,目前我?不?定我??是否可以自行自做出中文指令,但是我想只要可以在WOW?入中文,上面的??就因??]???.(所以??可以在WOW?入中文的玩家?y?一下.
??要稍微注意的一?是SlashCmdList["HIHI"]?面的HIHI必?要和SLASH_HIHI1和SLASH_HIHI2 的HIHI依??如果我??把HIHI改成NIHAO 那?就???成SlashCmdList["NIHAO"], SLASH_NIHAO1, 以及SLASH_NIHAO2. 至於HIHI 或是 NIHAO 後面的 1 和 2 只是???代表了同?拥闹噶?有哪些??的指令.
?我??打入了"/hihi"或是"/您好" 就??绦邢旅娴?unction
function hi_command(msg)
message(msg);
end
基本上只是在??虍?面上出?一???窗,然後?窗上面?示我??在指令後面打入的?息.
例如我???入"/hihi ?y?"
那?出?的?窗就??@示 "?y?" 在那上面.
好了,我????好?三???n案了.?在我??要告?WOW?入我??的HI模?.
首先,到"C:Program FilesWorld of Warcraftinterface"???子目??面.如果??]有???子目?的?,自行?一??新的.然後在???目??面?一??新的目?叫做"AddOns"所有玩家??的模?都因??[在???目??面.然後在"AddOns"???目??面在?一??目?叫做"HI".最後把我??做好的三???n案存到???目??面.
"C:Program FilesWorld of WarcraftinterfaceAddOnsHI"
?在我??可以?y????模?了喔.
稍微介?一下WOW?易管理模?的方式.如果?玩家有安?自行??的模?的?(比如?COSMOS),在?入角色??蔚?r候,我??可以看到?面的左下方有一??Addons的按?.大家可以在者?自行??袼?M?_?⒌哪=M.在模?名子前面打勾,表示??窠巧?????蚓??_始?入模?.?]打勾就代表不??d入. ?注意,WOW有模??入的上限.所果所有?入的模?用到的?源超?32MB,?????雨P?.??r候就需要去管理介面?掉一些模?喔.
下一篇文章,我?⒔檀蠹胰绾卧?ua?n案?面?用WOW的核心指令,以及如何只使用3???n案,就可以??出很有?椭??CRIPT.
Chapter Three
在?硪幌盗械奈恼?我要教?人的玩家如何利用模???,有效率的?绦羞h距?,近距?,以及??物攻?? ?便介?一些WOW的核心指令.
我想玩??路??虻耐婕?多多少少都因???外??什?是外??其??就是能自?拥?椭?婕?绦幸恍┲噶?基本上很?似MACRO(?]??MACRO的人,因?有??EZSCRIPT吧)
WOW本身就有提供MACRO??拥墓δ?只要我??在??蛑休?入"MACRO"之後,我??就可以?始??我??自己的?助指令.但是WOW的MACRO有很多限制.第一,WOW的MACRO是半自?拥?意思就是?,你一定要按下某一????按?,或是老鼠按?,才能?绦心闼?O定的MACRO.第二,??蛑械?ACRO有字?瞪系南拗?最多只能?入255??英文字元.第三,WOW的MACRO?o法?定?r?上面的?隔.在MACRO?面的所有的指令??灰淮?绦?第四,如果你所?绦械暮芏嘀噶钪杏泻芏喽加兄噶罾?s?r?(例如魔法的COOLDOWM),那?MACRO只??绦械谝??可以?绦械闹噶?
同?拥??我????模?的?r候,我??也同?邮芟揿哆@?拥南拗?但是?s?]有255??英文字元的限定,在??拥那?r下,我??可以自做更??的指令方式.
今天我要教大家的模?是?人?助模?.
WOW的?人是?凫哆h距?攻?舻?挝?最需要控制的是如何有要的利用各式的ASPECT以及??物攻???近距?攻?舻?r候,?人需要用到ASPECT OF MONKEY,??距?攻?舻?r候,需要用到ASPECT OF HAWK. 但是我想很多人因?都??龅?同?r指示??物攻??玩家攻??以及??QASPECT的?r候,??置δ_?y.?在我??的目?耸侨绾卧O?一??模?可以?我??在操作上更???
?人?助模???目??
1:玩家主?庸?舻?r候,??物也???庸??WOW的基本模式是,玩家按攻??然後?要按??物攻??.
2:玩家???物永?是攻?敉???目??以最快最有效率的方式??p少?痿Y?面上的危?C.避免??物?玩家通?r攻?舨煌??橙?造成最後的?果是玩家???物同?r?亡.
3:有效的辨?玩家的攻?舴绞?然後?绦凶钣行?实?SPECT.例如玩家近距?攻?舻?r候不是在ASPECT OF HAWK的??r下.
4:有效的?用?距?攻?艏寄?包括了?省MANA,快速???橙四?说鹊?
好了,有了以上的目???在?始?我???碓O?.首先,?硌u作模?所需要的最基本的三???n案.因?槲姨嫖业哪=M??的名?叫做HunterAssistant(?人?助),所以我的三??基本?n案叫做:
HunterAssistant.toc
HunterAssistant.xml
HunterAssistant.lua
Code: [Copy to clipboard]
HunterAssistant.toc:
## Interface: 4150
## Title: Hunter Assistant V0.1
## Notes: Macro scripts for assisting Hunter
## OptionalDeps:
## Dependencies:
HunterAssistant.xml
HunterAssistant.xml:
<?xml version="1.0" encoding="utf-8" ?>
<Ui xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<Script file="HunterAssistant.lua"/>
<Frame name="HunterAssistantFrame">
<Scripts>
<OnLoad>
this:RegisterEvent("VARIABLES_LOADED");
</OnLoad>
<OnEvent>
if (event == "VARIABLES_LOADED") then
HunterAssistant_init();
end
</OnEvent>
</Scripts>
</Frame>
</Ui>
我?⒉辉诘谶@????n案多做解?.有疑??的,??⒖忌弦黄?恼??竟我只使用的最??蔚脑O?.
?在的重?LUA核心?n.我先把?n案?热萘谐??然後在以另外的文章??的解?每??指令.
HunterAssistant.lua:
Code: [Copy to clipboard]
function HunterAssistant_init()
-- define slash command here
SlashCmdList["HA_HunterMarkI"] = HA_HunterMarkI;
SLASH_HA_HunterMarkI1 = "/HAHunterMarkI";
SLASH_HA_HunterMarkI2 = "/hahmi";
SlashCmdList["HA_HunterMarkII"] = HA_HunterMarkII;
SLASH_HA_HunterMarkII1 = "/HAHunterMarkII";
SLASH_HA_HunterMarkII2 = "/hahmii";
SlashCmdList["HA_AttackMelee"] = HA_AttackMelee;
SLASH_HA_AttackMelee1 = "/HAAttackMelee";
SLASH_HA_AttackMelee2 = "/haam";
SlashCmdList["HA_AttackRangeI"] = HA_AttackRangeI;
SLASH_HA_AttackRangeI1 = "/HAAttackRangeI";
SLASH_HA_AttackRangeI2 = "/haari";
SlashCmdList["HA_AttackRangeII"] = HA_AttackRangeII;
SLASH_HA_AttackRangeII1 = "/HAAttackRangeII";
SLASH_HA_AttackRangeII2 = "/haarii";
SlashCmdList["HA_StingSerpentI"] = HA_StingSerpentI;
SLASH_HA_StingSerpentI1 = "/HAStingSerpentI";
SLASH_HA_StingSerpentI2 = "/hasseri";
SlashCmdList["HA_StingSerpentII"] = HA_StingSerpentII;
SLASH_HA_StingSerpentII1 = "/HAStingSerpentII";
SLASH_HA_StingSerpentII2 = "/hasserii";
SlashCmdList["HA_StingSerpentIII"] = HA_StingSerpentIII;
SLASH_HA_StingSerpentII1 = "/HAStingSerpentIII";
SLASH_HA_StingSerpentII2 = "/hasseriii";
SlashCmdList["HunterTest"] = HunterTest_command;
SLASH_HunterTest1 = "/HunterTest";
SLASH_HunterTest2 = "/ht";
end
Code: [Copy to clipboard]
function HA_AttackMelee()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Attack");
x=1
found=false;
while (UnitBuff("player",x)) do
if(string.find(UnitBuff("player",x), "Monkey")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Aspect of the Monkey");
end;
end;
end
Code: [Copy to clipboard]
function HA_AttackRangeI()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Auto Shot");
x=1
found=false;
while (UnitBuff("player",x)) do
if(string.find(UnitBuff("player",x), "Raven")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Aspect of the Hawk(Rank 1)");
end;
end;
end
Code: [Copy to clipboard]
function HA_AttackRangeII()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Auto Shot");
x=1
found=false;
while (UnitBuff("player",x)) do
if(string.find(UnitBuff("player",x), "Raven")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Aspect of the Hawk(Rank 2)");
end;
end;
end
Code: [Copy to clipboard]
function HA_HunterMarkI()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Hunter's Mark(Rank 1)");
end;
end
Code: [Copy to clipboard]
function HA_HunterMarkII()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Hunter's Mark(Rank 2)");
end;
end
Code: [Copy to clipboard]
function HA_StingSerpentI()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
x=1
found=false;
while (UnitDebuff("target",x)) do
if(string.find(UnitDebuff("target",x), "Quickshot")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Serpent Sting(Rank 1)");
end;
end;
end
Code: [Copy to clipboard]
function HA_StingSerpentII()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
x=1
found=false;
while (UnitDebuff("target",x)) do
if(string.find(UnitDebuff("target",x), "Quickshot")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Serpent Sting(Rank 2)");
end;
end;
end
Code: [Copy to clipboard]
function HA_StingSerpentIII()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
x=1
found=false;
while (UnitDebuff("target",x)) do
if(string.find(UnitDebuff("target",x), "Quickshot")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Serpent Sting(Rank 3)");
end;
end;
end
Code: [Copy to clipboard]
function HunterTest_command()
x=1
found=false;
while(UnitBuff("player",x)) do
if(string.find(UnitBuff("player",x), "Raven")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Aspect of the Hawk(Rank 1)");
end;
if(found) then
CastSpellByName("Aspect of the Monkey");
end;
end
Chapter Four
首先我要??抱歉,因?槲?]注意到基地的文章?表?]有?法?示"TAB"的空格.??釉诓榭闯淌酱a,一定??斐衫?_.如果大家在看程式???劬ν吹?r候,????.
?在,?我??研究一下HunterAssistant.lua第一段:
function HunterAssistant_init()
-- define slash command here
SlashCmdList["HA_HunterMarkI"] = HA_HunterMarkI;
SLASH_HA_HunterMarkI1 = "/HAHunterMarkI";
SLASH_HA_HunterMarkI2 = "/hahmi";
SlashCmdList["HA_HunterMarkII"] = HA_HunterMarkII;
SLASH_HA_HunterMarkII1 = "/HAHunterMarkII";
SLASH_HA_HunterMarkII2 = "/hahmii";
SlashCmdList["HA_AttackMelee"] = HA_AttackMelee;
SLASH_HA_AttackMelee1 = "/HAAttackMelee";
SLASH_HA_AttackMelee2 = "/haam";
SlashCmdList["HA_AttackRangeI"] = HA_AttackRangeI;
SLASH_HA_AttackRangeI1 = "/HAAttackRangeI";
SLASH_HA_AttackRangeI2 = "/haari";
SlashCmdList["HA_AttackRangeII"] = HA_AttackRangeII;
SLASH_HA_AttackRangeII1 = "/HAAttackRangeII";
SLASH_HA_AttackRangeII2 = "/haarii";
SlashCmdList["HA_StingSerpentI"] = HA_StingSerpentI;
SLASH_HA_StingSerpentI1 = "/HAStingSerpentI";
SLASH_HA_StingSerpentI2 = "/hasseri";
SlashCmdList["HA_StingSerpentII"] = HA_StingSerpentII;
SLASH_HA_StingSerpentII1 = "/HAStingSerpentII";
SLASH_HA_StingSerpentII2 = "/hasserii";
SlashCmdList["HA_StingSerpentIII"] = HA_StingSerpentIII;
SLASH_HA_StingSerpentII1 = "/HAStingSerpentIII";
SLASH_HA_StingSerpentII2 = "/hasseriii";
SlashCmdList["HunterTest"] = HunterTest_command;
SLASH_HunterTest1 = "/HunterTest";
SLASH_HunterTest2 = "/ht";
end
附?:HA_代表的意思是HunterAssistant的???.
其?????]有什?特?e的.??只是?湍=M?定一些??蔚?quot;/"指令.??砦??可以直接把?些指令?用到??虻?ACRO中. ?注意的一?是,每一??指令都有一??FUNCTION相???另外,我每一??指令都一??全名指令,以及一?????指令(方便使用).在指令命名??上,我以看到指令名?就大概能猜到使用的?果是什?.?有就是每??指令前面加上HA_??幽苡行У谋苊飧?渌?=M的指令?突到.另外有???指令後面有???底??些是代表了所使用到的?人技能是有等?高低的.比如?HA_HunterMarkI使用的是等?1的Hunter's Mark,HA_HunterMarkII使用的是等?2的Hunter's Mark.
另外,我的指令排列是以英文?序?橹???臃奖阄??人?ふ?UG.
?在?我????往下看.
function HA_AttackMelee()
AssistUnit("pet");
if(not UnitExists("target")) then
TargetNearestEnemy();
end;
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Attack");
x=1
found=false;
while (UnitBuff("player",x)) do
if(string.find(UnitBuff("player",x), "Monkey")) then
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Aspect of the Monkey");
end;
end;
end
?一??function的主要目的是近距?攻??首先第一行是AssistUnit("pet");?代表了什??其???是WOW的核心指令之一.AssistUnit()的意思是?椭?骋???挝坏囊馑????指令可以接受不同的???包括玩家?挝?NPC友好?挝?以及??物?挝???绦辛诉@??指令之後,你的?橙?ο缶???成你所?椭?哪???挝坏?橙耸峭???.在??"pet"的意思就是主角?挝坏??物.
我在?????ssistUnit("pet")??的原因是,?你的??物在攻?舻?r候?橙说?r候,你跟你的??物所??竦?橙瞬灰?得是同一??,所以我??要?定主角跟??物攻?舻?ο笫峭???.
(注意:目前我??拥脑O?好像有???上的???.思考??到底是主角??椭??物?是??物?椭?鹘???蛑械幕?驹O定是主角受到攻????物就????椭?谝??攻?糁鹘堑?橙?可是如果好???人攻?糁鹘???物?是???P牡陌训谝???橙私?Q掉.所以我一?始??@?釉O?,?P牡南?椭??物解?Q掉第一???橙?可是?遇到我就是有特殊原因要先解?Q掉其他的?橙说?r候(例如某些特殊任??,我??拥脑O?反而造成困?_,因?橹灰?乙还??我的?ο缶途娃D?Q到??物的?橙肆?所以在未?淼陌姹局?我可能??O定另一?攻?羰???物永??椭?鹘枪?敉????橙?使用的指令是 PetAssistUnit(" layer"). "Player"就是代表主角的意思.)
下一行, if(not UnitExists("target")) then
TargetNearestEnemy();
end;
??的意思是?z查?绦?兔Φ闹噶钪??AssistUnit())到底有?]有?橙?如果主角的??物?]有在?痿Y??B,那?我???橙说??B就是?]有???UnitExists("target")) 就是?z查我??有?]有??袢魏蔚哪?????也是WOW的核心指令之一. ?然如果我??有??衲??可是目?耸怯泻?挝荒?不用???WOW的??本?砭褪?o法攻?粲押?挝坏?那?TargetNearestEnemy()又是什?意思呢?就是自?舆x?窬嚯x最近的非有好?挝划?作目?诉x?.所以?一段的意思就是,如果主角跟主角的??物都?]有目?说脑?,?椭鹘?犹粢??最近的非有好?挝划?作目??
在?
if(UnitExists("target")) then
PetAttack();
CastSpellByName("Attack");
??代表的是,如果有目?说脑?,??物攻??然後主角攻??PetAttack()是??物攻?舻闹噶?CastSpellByName("Attack")的意思是主角施展技能,???技能是攻??Attack). ?些全都是WOW的核心指令喔,酷吧.
??
x=1
found=false;
while (UnitBuff("player",x)) do
found=true;
end;
x=x+1;
end;
if(not found) then
CastSpellByName("Aspect of the Monkey");
end;
end;
end
??我定?了一?????,以及一?????OUND(中文是找到的意思),??????挡皇?OW的?S凶???而是LUA的?法喔.?槭颤N需要???????因?楫?我??在近距?攻?舻?r候,我必?要?定主角是在於ASPECT OF MONKEY 之下,有了?些??悼梢苑奖阄?碜?z查.
while (UnitBuff("player",x))的意思就是如果在主角的身上可以找到Buff的?. UnitBuff("player",1)???ふ抑鹘巧砩系谝??buff的?料,然後?骰赜?息.如果?]找到,就??骰匾??否定的?息.UnitBuff("player",2)就是?ふ业诙??buff的?料.
|
|