至于这个function 里面的一些IF, WHILE, NOT等等的?#092;用以及正确的语法,就请大家到LUA的官方网站去看.我就不多解释了.
在来是猎人的普通远距离攻击
CODE
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
这一段其实跟近距离的普通攻击是同样的逻辑,但是CastSpellByName("Auto Shot") 这个是猎人专有的远距离自动攻击的指令.同样的这个指令可以跟其它需要冷却时间的指令同时使用.另外CastSpellByName("Aspect of the Hawk(Rank 1)") 这是执行第一级的ASPECT OF THE HAWK. 在我们模块function HA_AttackRangeII()里面就会执行第二级的ASPECT OF THE HAWK, CastSpellByName("Aspect of the Hawk(Rank 2)")
CODE
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
这一段没有什么特别的,唯一的好处就是当主角开始使用MARK的技能的时候,就开始命令宠物攻击.我们不需要按两个动作.另外,Hunter's Mark 也是有等级之分的,所以我写了其它相对应的等级指令
注意:(这个FUNCTION我还没有完全的完成,因为我没有检查是否敌人已经被MARK过了,也就是说这个指令允许重复MARK敌人,浪费MANA)
CODE
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
这一个跟普通远距离攻击的指令很像,但是并不是使用普通的AUTO SHOT,而是使用了Serpent Sting.另外这一个指令不会检查主角本身是否施展了ASPECT OF HAWK.因为Serpent Sting跟aspect of the hawk都要冷却时间,两个写在一起,只会执行其中的一个,那么就一点意义都没有了.既然这样,为什么要写这一个指令?其实这个指令会检查敌人身上是否已经被施展了Serpent Sting,毕竟Serpent Sting没有加成效过,所以我们要避免重复施展Serpent Sting.而WOW的基本Serpent Sting指令是不会做这样的检查的,所以我们还得一直盯着敌人的信息看着,避免浪费MANA.可是设计了另外的这个指令,玩家根本不用担心浪费MANA,只要想到了就执行一下,反证会自动检查,也不会中断AOTU SHOT的动作,更不会浪费MANA.另外,这个指令也有设计其它不同等级的相对应指令.
最后
CODE
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
这个指令只是我设计好玩拿来测试用的,当执行这个指令的时候,主角会交互的使用ASPECT OF MonKEY 或者 ASPECT OF HAWK.
模块的核心指令介绍到这里,下一篇文章将教玩家如何在游戏里?#092;用这些指令.
目前我们的模块有了最基本的三个档案了.现在让我们把这三个档案放入C:Program FilesWorld of WarcraftInterfaceAddOnsHunterAssistant这个数据夹里面.然后执行游戏.
现在让我解释一下WOW上面所谓的斜线指令("/指令")该如何?#092;用.
大家因该都清楚如何的?#092;用感情指令,或是交谈指令.这些都是斜线指令.但是WOW还有一些斜线指令是无法直接的输入, 比如说"/attack". 基本上这是WOW官方设计的攻击指令,其背后只是很简单的呼叫了CastSpellByName("Attack"). 但是为什么我们无法直接使用这些指令呢?因为暴风雪为了避免玩家利用其它的程序来设计非法的MACRO.
怎么说呢?因为WOW的MACRO没有时间间隔设计,避免玩家设计机器人,那么玩家设计机器人就必须利用其它的程序.如果,设计机器人,机器人程序就可以直接的仿真键盘输入指令,而不会影响到玩家对于鼠标的操做.所以WOW把很多的斜线指令的操作设定成只有在WOW的MACRO下才能使用.你设计一个MACRO以及MACRO图像按钮,你要执行这个MACRO,你就必须对这个按钮按一下,WOW才会执行这个动作.
当然,还是有其它的办法摆脱暴风雪这样的设计,但是我不会对类似这样的问题做出任和解说.因为暴风雪尽力的维护游戏免于外挂的侵入,身为玩家的我也有义务要帮助暴风雪.
有这样的限制的斜线指令包括了所有的会使用到执行特殊技能的指令.所以当我们设计的模块有用到执行特殊技能的时候,我们的斜线指令也只能在WOW下面的MACRO才能执行.(当然,我们的猎人辅助模块还是?#092;用在MACRO下面比较好,毕竟在战斗的时候谁还有时间慢慢的的用键盘输入指令,我们又不是机器人)
要使用WOW的MACRO很简单,只要在游戏中输入"/macro"或是按下Esc 然后选择macro的选项
在macor的画面,我们必须帮macro选择一个图像按钮,替macro命名,然后输入我们想要给macro的指令.
现在让我列出猎人辅助模块的简易斜线指令:
Hunter's Mark 包括了不同的等级
/hahmi
/hahmii
Melee Attack(近距离攻击)
/haam"
Range Attack (远距离攻击)包括了不同的等级
/haari
/haarii
Serpent Sting(远距离特技)包括了不同的等级
/hasseri
/hasserii
/hasseriii
现在我们只要把macro的图像按钮选择好,然后给个名子,最后在底下输入指令的地方,挑一个你想要执行的辅助指令输入就好了. 注意喔,一个macro只能使用模块的一个指令喔,因为就算你输入了很多个,在执行macro的时候,游戏也只会执行情中的一个而已.(冷却时间的考虑)
当你设定好了macro之后,WALA~~~,你就可以把这个图形按钮抓到快捷工具栏上面使用了~~~就像是使用任何其它的基本图形按钮依样喔.好处是,你按一次按钮,却等于其它没有用辅助模块人按好几次按钮依样喔.还会自动帮你做一些额外的检查呢.有效率了多吧.
下一次,我将教大家如何设计辅助模块可以帮大家在半自动的施展BUFF,对象也会半自动的选择队友,宠物,或是自己.
附注1:因为我个人玩了10角色,包括了联盟的每一个CLASS,在未来的日子里,我将会不定期的替自己写模块.如此同时,我也会拿上来与大家分享.但是我将不会再花这么多的时间详细解释每一个指令.除非有网友提出问题,那时我会在尽力回答.
附注2:有关WOW的核心开放给玩家使用的指令,大家可以到这个网页找到.但是这里不是完整的列表,说明也不是很清楚,不过大家将就的用噜.
www.wowwiki.com/World_of_Warcraft_API
附注3:最有效率的研究模块的方式,就是到官网的UI Customization的论坛参与讨论喔.也许大家会找到一些意想不到,但是又很有帮助的模块喔.我个人就已经发现有人设计了一个挖矿采要的模块,这个模块会把你最到过的挖矿以及采药的地点纪录下来,然后显示在地图上.怎么样,很有用吧.
forums.worldofwarcraft.com/board.as...e-customization
在来是猎人的普通远距离攻击
CODE
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
这一段其实跟近距离的普通攻击是同样的逻辑,但是CastSpellByName("Auto Shot") 这个是猎人专有的远距离自动攻击的指令.同样的这个指令可以跟其它需要冷却时间的指令同时使用.另外CastSpellByName("Aspect of the Hawk(Rank 1)") 这是执行第一级的ASPECT OF THE HAWK. 在我们模块function HA_AttackRangeII()里面就会执行第二级的ASPECT OF THE HAWK, CastSpellByName("Aspect of the Hawk(Rank 2)")
CODE
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
这一段没有什么特别的,唯一的好处就是当主角开始使用MARK的技能的时候,就开始命令宠物攻击.我们不需要按两个动作.另外,Hunter's Mark 也是有等级之分的,所以我写了其它相对应的等级指令
注意:(这个FUNCTION我还没有完全的完成,因为我没有检查是否敌人已经被MARK过了,也就是说这个指令允许重复MARK敌人,浪费MANA)
CODE
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
这一个跟普通远距离攻击的指令很像,但是并不是使用普通的AUTO SHOT,而是使用了Serpent Sting.另外这一个指令不会检查主角本身是否施展了ASPECT OF HAWK.因为Serpent Sting跟aspect of the hawk都要冷却时间,两个写在一起,只会执行其中的一个,那么就一点意义都没有了.既然这样,为什么要写这一个指令?其实这个指令会检查敌人身上是否已经被施展了Serpent Sting,毕竟Serpent Sting没有加成效过,所以我们要避免重复施展Serpent Sting.而WOW的基本Serpent Sting指令是不会做这样的检查的,所以我们还得一直盯着敌人的信息看着,避免浪费MANA.可是设计了另外的这个指令,玩家根本不用担心浪费MANA,只要想到了就执行一下,反证会自动检查,也不会中断AOTU SHOT的动作,更不会浪费MANA.另外,这个指令也有设计其它不同等级的相对应指令.
最后
CODE
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
这个指令只是我设计好玩拿来测试用的,当执行这个指令的时候,主角会交互的使用ASPECT OF MonKEY 或者 ASPECT OF HAWK.
模块的核心指令介绍到这里,下一篇文章将教玩家如何在游戏里?#092;用这些指令.
目前我们的模块有了最基本的三个档案了.现在让我们把这三个档案放入C:Program FilesWorld of WarcraftInterfaceAddOnsHunterAssistant这个数据夹里面.然后执行游戏.
现在让我解释一下WOW上面所谓的斜线指令("/指令")该如何?#092;用.
大家因该都清楚如何的?#092;用感情指令,或是交谈指令.这些都是斜线指令.但是WOW还有一些斜线指令是无法直接的输入, 比如说"/attack". 基本上这是WOW官方设计的攻击指令,其背后只是很简单的呼叫了CastSpellByName("Attack"). 但是为什么我们无法直接使用这些指令呢?因为暴风雪为了避免玩家利用其它的程序来设计非法的MACRO.
怎么说呢?因为WOW的MACRO没有时间间隔设计,避免玩家设计机器人,那么玩家设计机器人就必须利用其它的程序.如果,设计机器人,机器人程序就可以直接的仿真键盘输入指令,而不会影响到玩家对于鼠标的操做.所以WOW把很多的斜线指令的操作设定成只有在WOW的MACRO下才能使用.你设计一个MACRO以及MACRO图像按钮,你要执行这个MACRO,你就必须对这个按钮按一下,WOW才会执行这个动作.
当然,还是有其它的办法摆脱暴风雪这样的设计,但是我不会对类似这样的问题做出任和解说.因为暴风雪尽力的维护游戏免于外挂的侵入,身为玩家的我也有义务要帮助暴风雪.
有这样的限制的斜线指令包括了所有的会使用到执行特殊技能的指令.所以当我们设计的模块有用到执行特殊技能的时候,我们的斜线指令也只能在WOW下面的MACRO才能执行.(当然,我们的猎人辅助模块还是?#092;用在MACRO下面比较好,毕竟在战斗的时候谁还有时间慢慢的的用键盘输入指令,我们又不是机器人)
要使用WOW的MACRO很简单,只要在游戏中输入"/macro"或是按下Esc 然后选择macro的选项
在macor的画面,我们必须帮macro选择一个图像按钮,替macro命名,然后输入我们想要给macro的指令.
现在让我列出猎人辅助模块的简易斜线指令:
Hunter's Mark 包括了不同的等级
/hahmi
/hahmii
Melee Attack(近距离攻击)
/haam"
Range Attack (远距离攻击)包括了不同的等级
/haari
/haarii
Serpent Sting(远距离特技)包括了不同的等级
/hasseri
/hasserii
/hasseriii
现在我们只要把macro的图像按钮选择好,然后给个名子,最后在底下输入指令的地方,挑一个你想要执行的辅助指令输入就好了. 注意喔,一个macro只能使用模块的一个指令喔,因为就算你输入了很多个,在执行macro的时候,游戏也只会执行情中的一个而已.(冷却时间的考虑)
当你设定好了macro之后,WALA~~~,你就可以把这个图形按钮抓到快捷工具栏上面使用了~~~就像是使用任何其它的基本图形按钮依样喔.好处是,你按一次按钮,却等于其它没有用辅助模块人按好几次按钮依样喔.还会自动帮你做一些额外的检查呢.有效率了多吧.
下一次,我将教大家如何设计辅助模块可以帮大家在半自动的施展BUFF,对象也会半自动的选择队友,宠物,或是自己.
附注1:因为我个人玩了10角色,包括了联盟的每一个CLASS,在未来的日子里,我将会不定期的替自己写模块.如此同时,我也会拿上来与大家分享.但是我将不会再花这么多的时间详细解释每一个指令.除非有网友提出问题,那时我会在尽力回答.
附注2:有关WOW的核心开放给玩家使用的指令,大家可以到这个网页找到.但是这里不是完整的列表,说明也不是很清楚,不过大家将就的用噜.
www.wowwiki.com/World_of_Warcraft_API
附注3:最有效率的研究模块的方式,就是到官网的UI Customization的论坛参与讨论喔.也许大家会找到一些意想不到,但是又很有帮助的模块喔.我个人就已经发现有人设计了一个挖矿采要的模块,这个模块会把你最到过的挖矿以及采药的地点纪录下来,然后显示在地图上.怎么样,很有用吧.
forums.worldofwarcraft.com/board.as...e-customization
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}