魔兽中为什么我切换战士的3 个姿态很慢

魔兽中为什么我切换战士的3 个姿态很慢请问各位高明的战士是怎么切换姿态的呢?

把切换姿态设者在按键的第一个格子 怕你不适应 另外可以用些宏来搞。
给你我收藏的宏命令吧
先解释几个函数:
CastShapeshiftForm 改变姿势(1为战斗,2防御,3狂暴)
CastSpellByName( ) 按技能名称施法,括号内跟技能名称
IsActionInRange( ) 技能是否处于可用范围,括号内为技能编号。技能可用时返回1
UnitHealth("target") 判断目标的血量
GetActionCooldown( ) 检测技能冷却时间,括号内为技能编号,技能已冷却返回0
函数就这么多了,下面逐行解释:
第一个:
/script CastShapeshiftForm(3) {转换成狂暴姿势}
/script C=CastSpellByName; {将C设为CastSpellByName ,主要是为了方便}
/script if(IsActionInRange(62)==1) then C("拦截");elseif(UnitHealth("target")<20) then C("斩杀");end {如果目标在拦截范围内,使用拦截。再判断目标血量小于20%时用斩杀}
/施放 致死打击 {释放致死打击}
/script if(IsActionInRange(63)==1)then C("旋风斩");end {如果目标在旋风斩范围内使用旋风斩}
整体:因为宏的语句执行顺序是从上往下,所以各技能使用顺序为:拦截、斩杀、致死打击和旋风斩。怒气值的判断是隐含的,即不够怒气无法释放技能,下面的宏也一样。

第二个:
/script CastShapeshiftForm(1) {转换成战斗姿势}
/script C=CastSpellByName; {跟前一个宏一样}
/script if(IsActionInRange(61)==1) then C("冲锋");elseif(UnitHealth("target")<20) then C("斩杀");end {目标在冲锋范围内使用冲锋。目标血量小于20%就再使用斩杀}
/script if(GetActionCooldown(63)==0) then C("压制");end {压制已冷却就使用压制}
/施放 致死打击 {使用致死打击}
整体:技能使用顺序:冲锋、斩杀、压制、致死打击。

第三个就不用解释了。

这三个宏要注意的一点就是技能的编号,如果技能没放对位置将无法使用。技能和动作条的位置可参考下表(从上往下、从左往右):
13-24 第二动作条
25-36 右边动作条
37-48 右2动作条
49-60 右下动作条
61-72 左下动作条
73-84 战斗姿态下的动作条
85-96 防御姿态下的动作条
97-108 狂暴姿态下的动作条
-----------------------------------------------------------------
我没玩过战士,拳击是什么东东?你先解释一下我再帮你吧!至于换武器,我不知道能否在战斗中完成,不过如果可以,就一定能用宏来实现。你先试下战斗中能不能换武器,行吗?

-----------------------------------------------------------
补充:
关于拳击:我并不想知道拳击是什么,只想知道拳击的怒气值消耗和是否共用别的技能的CD时间
关于技能编号:
先问你个问题:你知道魔兽中最多有几个动作条吗?有哪几个?如果你连这个也不知道就很难解释了(有不少人不知道),知道我再如果你实在不知到,按这个笨方法吧:将‘冲锋’放在左下动作条第一格,拦截第二格,旋风斩第三格,第四格放压制,然后把第二个宏的第四行改成/script if(GetActionCooldown(64)==0) then C("压制");end 就行了。这个办法很笨,也很麻烦,但绝对可以。
回答者:guojiaxuan - 秀才 三级 11-27 19:00
宏命令完全手册

二:进阶教程
一些有用的 Macro
1。允许你在窗口和全屏状态之间切换
/script SetCVar("gxWindow", 1 - GetCVar("gxWindow"));
/console gxRestart
2。对于法师,必须要有的:将“X”换为你目前的变形术等级(下同);用它替换掉变形术技能。当你在队伍之外时使用它会得到“你不在队伍中。”的信息,但在队伍中的时候其它同伴会了解到你将释放的变形术目标。
/p Sheeping >>> %t <<<
/cast Polymorph (Rank X)
3。作为一个术士,这是在队伍中使用的宏:首先将目标转为拖怪手或者坦克正在攻击的目标,然后命令宠物向前攻击,跟着一个虚弱诅咒。
/assist 队伍中的拖怪手或者坦克的名字
/script PetAttack();
/cast Curse of Weakness (Rank X)
4。从背包和袋子里切换身上的武器
/script if ( not CursorHasItem() ) then PickupContainerItem(, );
PickupInventoryItem( ); end
bag# - 使用哪一个袋子的物品(0、1、2、3、4。0是背包)
slot# - 袋子里的位置(从0至左上)
equip# - 16 是主要武器,17 是副武器
5。这个宏治疗队伍里你指定的人,如果你不在队伍中它会治疗你自己。然后会自动将目标切换回你最后一个敌人。它同时还会使用队聊提醒队友你会治疗哪一个人。
/script if (UnitName("target") ~=nil and UnitIsFriend("player","target")) then
CastSpellByName("Heal(Rank X)") SendChatMessage("Incoming Heal to %T", "Party") else
TargetUnit("player") CastSpellByName("Heal(Rank X)") TargetLastEnemy(); end
6。加速任务显示速度
/script QUEST_DEscriptION_GRADIENT_CPS = 600000
/script RegisterForSave("QUEST_DEscriptION_GRADIENT_CPS")
/script DEFAULT_CHAT_FRAME:AddMessage("quest text will scroll faster now");
7。消除等待接受任务的时间
/script AcceptQuest()
8。这个宏可以在路上自动护送玩家做任务。
/assist [player name]
/cast 法术(Rank X)
/target [player name]
/follow [player name]
9。切换主副武器,详情看第四条
/script PickupInventoryItem(16); PickupInventoryItem(17);
10。在没有目标或者目标是敌人的时候给自己加增益魔法或治疗。
CastSpellByName("Spell Name(Rank X)");
if ((SpellIsTargeting()) and (not UnitIsFriend("player","target")))
then
SpellTargetUnit("player");
end;
TargetLastEnemy();
11。切换双手武器与单手+盾或者双手挥舞武器
/script PickupInventoryItem(17);if(CursorHasItem()) then PickupContainerItem
(4,2);PickupContainerItem(4,1);PickupInventoryItem(16);else PickupContainerItem
(4,1);PickupInventoryItem(16);PickupContainerItem(4,2);PickupInventoryItem(17);end
12。设定“真实鼠标视野”
/script CameraOrSelectOrMoveStart(arg1);
想取消就再次输入。
13。切换近程技能栏和远程技能栏
/script CURRENT_ACTIONBAR_PAGE = 2;
/script ChangeActionBarPage();
/cast aspectofmon key (just use the left click)
/script CURRENT_ACTIONBAR_PAGE = 1;
/script ChangeActionBarPage();
/cast aspectofhawk (just use the left click)
14。牧师对队友的一键加血,比如一号键给第一队友加血,二号键给第二队友加血,免除了还要鼠标确
定目标的操作。依次类推,从第一个人到最后一个
给队友1加血:
/script TargetUnit(GetPartyMember(1))
CastSpellByName(Heal(Rank X)) TargetLastEnemy()
给队友2加血:
/script TargetUnit(GetPartyMember(2)) CastSpellByName(Heal(Rank X)) TargetLastEnemy()
给队友3加血:
/script TargetUnit(GetPartyMember(3)) CastSpellByName(Heal(Rank X)) TargetLastEnemy()
15。一键解决喂养宠物:这个宏会从最左边的袋子里的第一个位置拿出食物喂养宠物,如果所在的位置
没有食物,它会自动打开袋子。
/script if (not PlayerFrame.inCombat) then if (not GetContainerItemLink(4, 1)) then
OpenBag(4); else CastSpellByName("Feed Pet"); PickupContainerItem(4, 1); end end
16。术士宏
1)如果目标生命大于20,释放抽取生命法术,否则使用灵魂抽取。
/script if (UnitHealth("target")>20) then CastSpellByName("Drain Life(Rank X)") else
CastSpellByName("Drain Soul(Rank 2)") end;
2)虚弱诅咒版本
/script if (UnitMana("target")>0) then CastSpellByName("Curse of Tongues(Rank X)") else
CastSpellByName("Curse of Weakness(Rank X)") end;
17.先治疗自己,然后自动选中上次的敌人
/target Pugar //选择自己,假设自己的名字是Pugar
/cast Lesser Heal (Rank 1) //施展次级治疗rank1
/script TargetLastEnemy(); //重新选择刚刚选择的敌人
/script AttackTarget(); //攻击,等同于右键点击敌人
18.对于一个术士很有用的宏:首先将目标转为拖怪手或者坦克正在攻击的目标,然后命令宠物向前攻击
,跟着一个虚弱诅咒。
/assist 队伍中的拖怪手或者坦克的名字
/script PetAttack();
/cast Curse of Weakness (Rank X)
19.等治疗完之后提醒别人注意下自己有可能被怪打,不加延时的话,就没这个效果了。
/p healing %T, need 3s, don"t run away
/cast heal (rank 1)
/in 4 p cured %T 300HP,please notice the enemies turn on me^_^
20.在路上自动护送朋友做任务。
/assist [player name]
/cast 法术(Rank X)
/target [player name]
/follow [player name]
三:高级教程
WOW的宏函数库可以去这两个地方查:
http://www.cosmosui.org/texts/BlizzardCommands.xml
http://www.wowwiki.com/index.php/World_of_Warcraft_API
函数的使用比较简单,学习过编程的都比较容易上手,基本的用法是在函数前加/script 来使用。比如
/script CURRENT_ACTIONBAR_PAGE = X;
/script ChangeActionBarPage();
就是将你的快捷栏翻到第X页。
函数库中有许多函数都是非常有用和方便的,比如一次打开所有包包:
/script OpenAllBags();
配合关闭包包的函数,一次关闭所有包的宏也可以实现:
/script CloseBag(0);
/script CloseBag(1);
/script CloseBag(2);
/script CloseBag(3);
/script CloseBag(4);
怎么样,下次你卖东西的时候不会一个个开包关包了吧?
使用函数还不是最恐怖的,恐怖的是WOW的宏是可以用条件判断的,看下面这两个:
/script if ( GetComboPoints() >= 3 ) then CastSpellByName("Rip(Rank 2)"); else if (
UnitMana("player") >= 40 ) then CastSpellByName("Rake(Rank 1)"); end end
据说这个包含if,then的宏可以让盗贼实现自动根据combo点数来使用技能(未测试),其中还使用了角色MANA值的调用,恐怖吧?还有这个查找spell的宏:
function GetSpellIdByItsName(myWantedSpell, myWantedRank)
local spellId = 1;
local spellBook = "spell";
local spellName, rankName;
spellName, rankName = GetSpellName(spellId, spellBook);
while (spellName ) do
if ( ( spellName == myWantedSpell ) and ( ( not myWantedRank ) or ( rankName = myWantedRank
) ) ) then return spellId; end
spellName, rankName = GetSpellName(spellId, spellBook);
end
return -1;
end
里面可以自己定义function,还使用了while,do这样的循环,是不是让你想到了N种应用的可能呢?
遗憾的是,目前官方似乎没有提供延时的宏,所以在战斗中使用多种有延时的技能是无法实现的(无延时的技能可以实现同时使用),类似换其他武器-使用技能或法术-换回武器这样的功能也无法实现,(所谓用宏实现剑盾战士换双手武器MS再换回来是行不通的),不过使用COSMOS的朋友可以用/in 来实现非战斗指令的延时,比如 /in 3 say hi 就会在3秒后说句hi。 /in 6 /script MoveForwardStart(arg1);
就会在6秒后向前跑。
虽然法术和技能无法用/in指令来延时,但这样已经很强大了,比如,你可以编出各种运动的宏,如兜后,转身等。PVP时估计是必不可少的。
下面是一个玩家写的双手武器战士自动逃跑的宏:
/script UseContainerItem(0, 2);ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown
(12);ActionButtonUp(12);
/cast Thunder Clap(Rank 1);
/script TurnLeftStart(arg1);
/in 1 /script TurnLeftStop(arg1);ToggleAutoRun();
使用这个宏的条件:在大包包第二格放了回复药,快捷栏第11,12分别是一单手一盾的快捷方式。
使用这个宏后,角色自动喝回复药,装备上盾,使用Thunder Clap(这三个动作同时进行),向后转180度后开自动跑步键逃走。其中技能等可以根据需要自己改。怎么样,是不是很夸张啊,哈哈。
还有一些有用的宏:
切换装备,双手切换单手并换第二个快捷栏,快捷栏第11,12分别是一单手一盾的快捷方式
/script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);
/script CURRENT_ACTIONBAR_PAGE = 2;
/script ChangeActionBarPage();
单手切换双手并换回第一快捷栏,快捷栏12是一双手武器快捷方式
/script ActionButtonDown(12);ActionButtonUp(12);
/script CURRENT_ACTIONBAR_PAGE = 1;
/script ChangeActionBarPage();
几个简单的宏
1. 对自己使用绷带
/script TargetUnit("Player");
/use Mageweave Bandage
/script TargetLastEnemy();
* 这里用的时 Mageweave Bandage ,你可以改成适合你自己的绷带名
* use 是 Cosmos 支持的命令,你必须安装 Cosmos 才能使用这个宏,如果你没有 Cosmos,使用下面的宏(绷带必须放在主背包第一格)
/script TargetUnit("Player");
/script UseContainerItem(0,1);
/script TargetLastEnemy();
2. 对敌人的 Pet 使用技能
/script TargetUnitsPet("target");
/cast Blind
/script TargetLastEnemy();
* Blind 是技能名,你可以用自己的技能,这里用了盗贼的 Blind (我是盗贼啦,呵呵)
** /script 是使用 脚本 的命令,可供使用的命令参考附件
** 可以用 Shift + 点击 技能书里图标的方式在宏中添加释放技能的命令
** 可以用 Shift + 点击 物品的方式在宏中添加物品名
3. 打开所有背包
/script OpenBag(0);
/script OpenBag(1);
/script OpenBag(2);
/script OpenBag(3);
/script OpenBag(4);
打开所有背包,可能
/script OpenAllBags()
一样搞定:P
热键Shift + B 也是可以的
4.战士用,双手武器切换单手武器+盾:
首先在快捷栏10、11、12(也就是0、 -、 =的位置)拖上双手武器、单手武器、盾的快捷方式;
双手武器:
/script ActionButtonDown(10);ActionButtonUp(10);
单手武器+盾:
/script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);
以下命令全部中空格用下划线_来表示
%后面的都是变量
=各种命令分类收集=
参数设置
%t
切换当前目标命令
/target_%name
/assist_%name
/script_TargetLastEnemy();
游戏动作
/cast_%skillname(rank_%d)
/f
/script_UseAction(n%d, %d);
设置延迟命令
/pause_%d
聊天常用命令
/s_
/p_ %
回答者:worrrrrr1 - 举人 四级 11-25
战斗姿态下3号键:
/施放 冲锋(等级 3)
/施放 压制(等级 4)
/script if (UnitHealth("target")<20) then CastSpellByName("斩杀(等级 5)"); end
/施放 嗜血(等级 4)

狂暴姿态下3号键:
/script if (UnitHealth("target")<20) then CastSpellByName("斩杀(等级 5)"); end
/施放 嗜血(等级 4)

图中双手宏:
/script UseAction(46,0,1)

图中单手+盾宏:
/script UseAction(34,0,1)
/script UseAction(35,0,1)

图中免疫缴械宏(其实就是换上武器链的武器):
/script UseAction(48,0,1)

一键手雷,就是丢手雷点该键,取消手雷也点该键,不需要点ESC:

/script if(IsCurrentAction(44)==nil)then UseAction(44);else SpellStopCasting();end

一键自我绷带(名字需改为自己):

/script UseAction(25,0,1)
/target 就当肉盾
/targetLastEnemy();

以上宏全部不需要物品放在包包的固定位置,只需要物品放在技能栏的固定位置即可,各数字位置如图:
绷带的位置为25,往下则是依次类推,26,27,28。。

另一行手雷的位置为44,手雷这行的第1格位置为37,如果大家需要以上宏在哪个格子中使用,请自行选好自己设计的技能栏即可。
-----------------------------------------------------------------------------------------------------

一、1键实现3姿态间的切换
首先,菜单里选择按键设置,把8号快捷键的键位设置2,设为Q
然后,打开技能书,在战斗姿态下,把“狂暴姿态”图标拖到8那格去
切换狂暴姿态,在狂暴姿态下,把“战斗姿态”图标拖到8那格去
最后鼠标点一下切换防御姿态,把“狂暴姿态”图标拖到8那格去

这样,在战斗姿态或者防御姿态按一下Q,都能切成狂暴姿态。而在狂暴姿态按一下Q,就能切回战斗姿态。如果要在切姿态的同时换武器,把姿态的图标换成以下宏:

1、从任意姿态任意武器切换到战斗姿态+双手武器

/script P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,15));if(oi) then P(17);PC(4,7);else P(17);PC(4,15);end;P(16);PC(4,11);end
/施放 战斗姿态

2、从任意姿态任意武器切换到防御姿态+主手武器+盾牌

/script P=PickupInventoryItem;C=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,15));if(oi) then P(17);C(4,7);C(4,15);AutoEquipCursorItem();end;else C(4,11);P(16);C(4,15);P(17);end
/施放 防御姿态

3、从任意姿态任意武器切换到狂暴姿态+双持武器

/script P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,7));if(oi) then P(17);PC(4,15);PC(4,7);AutoEquipCursorItem();end;else PC(4,11);P(16);PC(4,7);P(17);end
/施放 狂暴姿态

副手武器放在4号背包(最左边的背包,因为这个包是最后被拾取的物品填满的背包,不容易因为盾或副手武器的那一格被填满导致宏实效)的7(副手武器)、11(主手武器或双手武器)、15(盾)三格。
背包的数法是:
1 2
3 4 5 6
7 8 9 10
11 12 13 14
15 16 17 18
由于某些同志提出他们只有14包,那么可以把宏中所有的“15”都改为比如“12”,然后把盾放到12那格就可以了。
切姿态同时换武器的宏倒非我原创,只是把自己用的这个给贴出来。武器战士倒不一定用,狂暴战士必备。

具体打法:起手拿慢速双手武器,选中目标后3.8秒再冲锋,这样近身瞬间0秒即可砍出一刀,然后按Q切狂暴姿态+双持。看到闪避了再次按Q切回战斗姿态+双手武器压制。(如果怪长得太高,我们需要比如dex这样的插件来提示狂暴姿态中打出的闪避)

二、三种姿态下的攻击常用技能整合

首先再次打开按键设置,把回复对话R键那里改为I。因为,第一,战斗到一半不小心把对话框按出来是很容易导致失败的。第二,R键是一个很就手的键,按久了不会累。

然后,把9号快捷键的键位设置2,改为R

1、在战斗姿态下,把以下这个宏的图标放到9
/施放 冲锋(等级 3)
/施放 压制(等级 4)
/script if ( UnitHealth("target")<20 ) then CastSpellByName("斩杀(等级 5)"); else if ( UnitHealth("target")>=20 ) then CastSpellByName("致死打击(等级 4)"); end end
/script if (UnitMana("Player")>80) then CastSpellByName("英勇打击");end

2、在防御姿态下,把以下图标放到9(这个我直接给出的是防战的版本了,其他天赋战士记得把第四行的“盾牌猛击”改为致死打击或者嗜血)

/施放 盾牌格挡
/script SpellStopCasting();
/script if (UnitMana("Player")>5) then CastSpellByName("复仇");end
/script if (UnitMana("Player")>40) then CastSpellByName("盾牌猛击");end
/script if (UnitMana("Player")>59) then CastSpellByName("英勇打击");end

3、在狂暴姿态下,把以下宏的图标放到9

/施放 拦截(等级 3)
/script if ( UnitHealth("target")<20 ) then CastSpellByName("斩杀(等级 5)"); else if ( UnitHealth("target")>=20 ) then CastSpellByName("致死打击(等级 4)"); end end
/script if(UnitAffectingCombat("player")==1) then CastSpellByName("旋风斩") else end

或者

/施放 拦截(等级 3)
/script if ( UnitHealth("target")<20 ) then CastSpellByName("斩杀(等级 5)"); else if ( UnitHealth("target")>=20 ) then CastSpellByName("致死打击(等级 4)"); end end
/script if (UnitMana("Player")>80) then CastSpellByName("英勇打击");end

这样一个R键就实现了冲锋、压制、拦截、致死(嗜血、盾牌猛击)、斩杀、旋风、英勇、盾牌挡格、复仇共9个技能的使用。大大节约了键位。也弥补了某些操作上的缺陷。比如斩杀前出了闪避,R按下去就自动是压制了(一般压制秒人最后20%血还是可以的,还有打盗贼他很可能是开了闪避了,一味斩杀都是闪避)。还有能很方便的保持盾牌挡格和复仇。破甲的话另外设一个键吧。怒大于一定量的时候自动用英勇打击宣泄。狂暴战士的话可以把宏里面的数字改小一点。

三、破胆怒吼+立刻绷带,以及一键绷带宏

/施放 破胆怒吼
/script SpellStopCasting()
/script UseContainerItem(2,1)
/script TargetUnit("player")

其中

/script UseContainerItem(2,1)
/script TargetUnit("player")

就是一键绷带宏。可以单独建一个。绷带放在中间那个包左上开始第一格。

这是战士的一个实用技巧。虽然时机有时候难以把握,但是只要敌我双方身上都没有流血效果,我们就可以25怒+2000血,也就是说这个宏用好了能顶一件+200耐的装备。成功用出后要是都没打赢,那基本上就是RP问题.....

一键绷带也非常有用。平时我们绷带都是点了绷带还要点人。或者要先F1再点绷带。总之就是要按两个键。将其简化到一个键,只要多节省1秒,那就是多获得了250血,也就等于比不会这招的对手多25耐。25耐的优势还不够多么?

3-2 铿锵玫瑰烈 朋友要的,一键血性狂暴+切换狂暴姿态

/施放 血性狂暴
/script SpellStopCasting()
/施放 狂暴姿态
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-02-13
其实也不用那么复杂。你在游戏里按P,把技能菜单打开,在狂暴中能找到狂暴姿态这个技能,把他拖动到快捷栏就行了,比如拖到快捷键“5”,同样的方法可以把转换防御和战斗姿态也拖动到快捷键,这样通过快捷键就能转换姿态,不用鼠标点来点去了
第2个回答  2007-02-13
z-战斗姿态
x-防御姿态
c-狂暴姿态

切换慢除了没有及时或者准确按姿态键到位的话 唯一的原因就是你的服务器延迟严重了.本回答被提问者采纳
相似回答