浆糊论坛-RO小站's Archiver

Almost_There 发表于 2005-6-27 04:08

求2个小贼的宏

1. 伏击+背刺 就是伏击后马上自己跟上背刺 手动太慢

2. 按 SHIFT 潜行

T.T' 发表于 2005-6-27 11:12

1,宏的基本常识
宏是一个脚本,发送到服务器端执行。这个脚本由一组命令序列构成,长度不超过255个字符。
序列中的每一个命令,由一个/ 开头,例如/say /script 等等。
/script 后面跟随脚本特有的语句和函数。

你可以罗列多个/script命令在一个脚本里,也可以在一个/script命令中写多个函数,这都可以。
因为宏就是依次执行所有的命令,所以不需要在宏的最后添加end 标记,或在命令之间加;
事实上,end标记 是if语句的组成部分,你在写if语句时才用到end关键字。命令和命令之间用
换行或; 隔开都可以,我喜欢用换行..呵呵,省掉不必要的; 代码也清楚些

常用的if语句语法如下:

/script if [条件表达式] then [命令序列] end
or
/script if [条件表达式] then [命令序列1] else [命令序列2] end

这里条件表达式不需要在外面套括号,和C,java的习惯不同,应该是为了减少不必要的字符数,
毕竟WOW宏有长度限制。

条件表达式 中 相等用 == , 否定用not, 不等于可以写 not (A == B),
暴雪没有提供!= 作为不等于,很奇怪。 例子:
if sword == GetInventoryItemLink("player", 16) then ....
if not (sword == GetInventoryItemLink("player", 16)) then ....

注1,这里的sword是全局变量。每一个全局变量的生命周期是一次登陆中从声明变量到退出魔兽,
通常在每次登陆后额外运行一个设定宏来设定我们所需要的全局变量。

注2,GetInventoryItemLink()是一个取装备link的函数,
GetInventoryItemLink("player", number)是从人物身上取装备的link,number代表人物装备画面的不同槽,
头部,颈部,依次递增,于是16代表主手武器,17代表副手武器
GetInventoryItemLink("player", 16) 就代表了主手武器的link

2,盗贼专用宏的编制思路,
其实用宏就是为了切换武器,既不放弃匕首的背刺和伏击,也能用高攻的单手剑,达成两全其美的效果。

一般有两种风格的切换宏,
1,主手剑副手匕首,用背刺,伏击时把匕首换到主手。用其他技能时把剑换到主手。
2,主手剑副手剑,背包里放一把匕首,用背刺,伏击时,把背包里的匕首换到主手。用其他技能时把剑换回来。

前一种方案的切换武器的宏如下:

PickupInventoryItem(16) PickupInventoryItem(17)

还记得吧,16代表主手武器,17代表副手武器。
PickupInventoryItem就是相当于打开人物装备面板(Inventory, 按C)
做点击数字对应位置的动作。这个宏很简单,
就是先点击主手武器,然后鼠标上应该有主手武器,然后点击副手武器,
这时候两把武器就会交换。瞬间执行的效果当然就是瞬间交换,但这个宏有能够感觉得到的明显延时,
因为PickupInventoryItem这个函数执行比较慢。推荐用下一个方案。

后一种方案的切换武器的宏如下:
PickupContainerItem(0, 1) PickupInventoryItem(16) PickupContainerItem(0, 1)

PickupContainerItem是从背包里取装备,第一个参数指背包,第2个参数指背包里的槽位,
这里的约定是0代表主背囊,然后从右向左,依次是1,2,3,4
背包里槽位从上到下,从左往右排序,注意!从1开始。这和一般从0开始的习惯有点不同。

因此PickupContainerItem(0, 1) 就是点取我主背包上数第一排左数第一格的物品。
然后PickupInventoryItem(16) 放到主手位置,
然后把原先主手位置的物品PickupContainerItem(0, 1)放到背包里。完成一次武器交换。

这个切换动作明显比前一个更快。推荐使用,而且副手因此可以保持用高DPS的剑,有助于提高攻击效率么,
当然,你爱在副手保持什么武器都可以,呵呵。

现在我们有了一个基本的切换宏,但每次用技能都手工切换很难忍,我们继续实践很多人想到过的,
为特定技能写不同的宏,保证不同技能使用合适的武器。

基本思路是用全局变量记录主手使用的剑,在用不同技能时判断主手位武器是剑或否,看情况切换。

全局变量的设置宏:
/script setglobal("sword", GetInventoryItemLink("player", 16))
/script SendChatMessage("主手剑"..sword, "say", this.language,"")

第二句命令把你的主手武器说出来,让自己能够看见。如果碰巧是匕首在主手(例如上次断线不巧等等),
就切换一次,重新运行设置宏。保证sword变量对应自己的主手剑。

先用邪恶攻击举例:我们要保证每次邪恶攻击都使用高攻击的剑,所以先判断主手武器,如果需要切换就切换,然后执行邪恶攻击。

/script if not (sword == GetInventoryItemLink("player", 16)) then PickupContainerItem(0, 1) PickupInventoryItem(16) PickupContainerItem(0, 1) end
/script CastSpellByName("邪恶攻击(等级 5)")

但类似写背刺的宏会有问题,背刺的有效性判断在宏执行之前,
这就使得流传的一些背刺宏需要连按两下,第一下只能完成切换,第二下才能背刺,这很是不方便。

因此,我的思路是在凿击之后直接切换武器,因为凿击通常接着就要背刺。这样背刺就可以直接进行了。
而且背刺后应该换回剑继续,因为背刺的60能量开销使得它在绝大多数情况不能连续进行,除了某些升主动天赋的贼...

凿击宏如下:
/script CastSpellByName("凿击(等级 3)")
/script if ( sword == GetInventoryItemLink("player", 16) ) then PickupContainerItem(0, 1) PickupInventoryItem(16) PickupContainerItem(0, 1) end

背刺宏如下:
/script CastSpellByName("背刺(等级 5)");
/script PickupContainerItem(0, 1) PickupInventoryItem(16) PickupContainerItem(0, 1)

如果敌人已经晕了,而我在他背后,例如偷袭之后,
那么这个宏连按两下,也可以起到第一下切换,第二下背刺的效果。
通常偷袭后是连续邪恶攻击攒点还是背刺伤害 要视情况而定,所以偷袭的宏后面我没有加固定切换的
代码。

补充:
实际发现,技能失败的可能性造成很多时候切换武器不当,当然这引起的麻烦并不大。不过使用时还是觉得不算太舒服,
有时还要再次使用以把武器切换回来。考虑到从背包中取东西的时间很小(比左右切换的确快很多,感触很深)所以可以在宏中判断主手武器,
然后决定切换还是使用技能,更方便一些。下面是个例子:

/script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot"));
if(GameTooltipTextRight3:GetText()=="匕首") then CastSpellByName("背刺(等级 5)") else PickupContainerItem(0,1) PickupInventoryItem(16); end

解释下
GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot"))
这句是取得主手武器的描述信息,并用GameTooltip保存(细节就不管了,反正是这个意思)

if(GameTooltipTextRight3:GetText()=="匕首")
这句话判断描述信息里面的第三条信息,一般情况下,这条信息保存武器类型,值得注意的是,其他情况,比如匕首付魔之后,
可能武器类型变成了第4位,那么要把3改成4才能使用。

then CastSpellByName("背刺(等级 5)")
当主手武器为匕首时使用技能

else PickupContainerItem(0,1) PickupInventoryItem(16); end
这个就是不是时取背包武器作切换了。

PS:不等于不能用"!=",的确,但是BLZ另外提供了写法是"~="表示不等于。

popoz 发表于 2005-6-27 11:13

阿姨啊..

T.T' 发表于 2005-6-27 11:14

潜行可以不舍宏
我一般E设成潜行 ~是骑马
碰到敌对阵营 ~E
上面发的是比较全面的贼宏命令应用

T.T' 发表于 2005-6-27 11:16

贼个婆婆嘴
原来内在啊 来捏捏~~~

popoz 发表于 2005-6-27 11:17

-0-

你到现在去过学校吗?

T.T' 发表于 2005-6-27 11:18

?学校?

popoz 发表于 2005-6-27 11:19

通灵学院..

T.T' 发表于 2005-6-27 11:23


被朋友逼着练小号....哪也去不了
不过朋友倒是下了N次 5人副本都通了...
内要找院长要帽子吗??

popoz 发表于 2005-6-27 11:26

FULL RUN吗?

我们工会 腻胆小了..说5人下那里太难...

听你这么说好象还没那么恐怖啊!

我去主要是我60级的马要去躺那里啊...

没人带我去 哎~

T.T' 发表于 2005-6-27 11:30

是不是全通我还没问他
不过他是和我们服BL差不多操作最好,在MF OF混过来的
一群大哥大姐们下的 主TANK是一个行会养着....=.=

T.T' 发表于 2005-6-27 11:31

据说那个死马牌掉落几率小的可怜...

popoz 发表于 2005-6-27 11:52

不需要掉什么东西
我只要去到实验室做个很简单的任务就可以了

主要是实验室就在通灵里...

哎..

我就是那条龙 发表于 2005-6-27 12:46

第一个打人或许还可以~打怪就别想了
不过打人还是要等1秒的CD啊~你不会1秒都按不了一下键盘吧?
第二个去设置快截键不就行了~哪用宏

Almost_There 发表于 2005-6-27 12:55

这个快节没找到啊 那里设置 指教下最好有图的说 呵呵

渴望星空 发表于 2005-6-27 16:26

ESC不是有按键设定吗?里面找咯~不过找起也忒麻烦~记得上次找XXX就找了半个小时~

跪下对我唱征服 发表于 2005-6-28 00:26

我设成Q,顺手~

雅木 发表于 2005-6-28 11:34

默认ctrl+f1是潜行快捷键,你把它设成喜欢的就可以了,我是alt+1

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.