给SHAMAN新手的一些[宏]

shaman常用宏 


抄下d区的前言……
"其实无论你怎么写这个宏,只要你进入游戏后使用第一次,游戏就会自动把这个宏里定义的所有变量,函数都放入内存中了,所以游戏里所有的宏的变量都是全局的。宏本身的执行并不占多少资源,但常驻内存的函数和变量就消耗内存了,这个和插件的原理是差不多的,所以计算机比较差。。。(象我把。。)还是以尽量减少函数和变量的定义为主把。。。"

所以,还是用[宏]吧
下面开始抛砖:

首先,针对不同天赋技能
一 自然迅捷
1 瞬发大加

/施放 自然迅捷
/s cript SpellStopCasting();
/施放 治疗波(等级 x)
/s cript if SpellIsTargeting() then SpellTargetUnit("player") end;

技能介绍:治疗波3s的施法时间使得很难在实战中使用出来,很多时候需要瞬发来保命或救人,这个相当于两个没有公共冷却的瞬发技能加起来的时间。
宏介绍:/s cript SpellStopCasting(); 这行解决了原本需要按2次键才能完成这一动作的问题,而/s cript if SpellIsTargeting() then SpellTargetUnit("player") end;解决了判断敌我的问题。当选中的目标为敌人,则对自己施放;如果选中为友军,立刻1键为目标大加。战场副本救人无数。但1键施法效果不可在移动中达成,必须站在原地。
使用频率:高
实用度:高

2 瞬发闪电

/施放 自然迅捷
/s cript SpellStopCasting();
/施放 闪电链(等级 x)
/施放 闪电箭(等级 x)

技能介绍:闪电类是元素sm的强力攻击手段,但是sm缺乏控制技能,1.5s的闪电链也并不容易,此宏有效形成连招,是秒人的必备技能。
宏介绍:基本同1,免去了敌我判断,后续还接有闪电箭,一旦闪电链在6s CD中,瞬发闪电箭。
使用频率:高
实用度:高

3 瞬发变狼

/施放 自然迅捷
/s cript SpellStopCasting();
/施放 幽魂之狼(等级 1)

技能介绍:……感谢blz
宏介绍:混蛋逃跑宏。在面对大群敌人正在逼近,而自己没出1s狼的情况下,跑吧。虽然不如圣骑士的无敌+炉石,但也够……
使用频率:低
实用度:低


暂停
二 风暴打击
/target 你的名字
/s cript TargetLastEnemy
/施放 风暴打击(等级 1)
技能介绍:SM区在此前对风暴打击这个前fc技能有了许多新的解读
宏介绍:第一行中你的名字就是你角色的名字,不要照抄……这个宏是借鉴他人,但是语法方面需要更多改进,请各位高手不吝指教。
使用频率:高
实用度:高


三 元素掌握

/施放 元素掌握
/s cript SpellStopCasting();
/施放 闪电链(等级 x)
or
/施放 闪电箭(等级 x)
or
/施放 各种震击

技能介绍:元素掌握相当于火法的燃烧,但法术类型更大。激活之后,你的下一个火焰、冰霜或自然法术有100%的几率造成致命一击。5MINS CD
宏介绍:类似自然迅捷,无需敌我判断,1键瞬发,但需要站立不动。
使用频率:中
实用度:中

四 复活
扫地是sm的无奈职业,既然不能逃避,就让我们带着笑来哭吧
仅列出我现在用的宏

/s cript if UnitSex("target")==3 then g="曼妙可爱的美女," else g="英俊潇洒的帅哥," end;SendChatMessage("复苏吧,"..g..UnitRace("target")..UnitClass("target").." >>>%T<<< 为了部落的荣耀,为了先祖的灵魂继续奋斗!","Yell");

/施放 先祖之魂(等级 x)
技能介绍:复活而已,不用多说吧。
宏介绍:加了职业,性别,种族判断。可以更好的起到kuso的效果……raid必备。
使用频率:高
实用度:高

五 治疗判断

/施放 次级治疗波(等级 x)
/s cript if SpellIsTargeting() then SpellTargetUnit("player") end;

/施放 治疗波(等级 x)
/s cript if SpellIsTargeting() then SpellTargetUnit("player") end;

技能介绍:2个常用治疗的宏。
宏介绍:可能觉得奇怪,为何简单的2个治疗也要宏呢?这更多的是考虑到pvp的原因,当需要自我治疗时,按下alt+治疗,寻找alt键时,速度肯定有个迟滞,不能第一时间成功加血。此宏自动判断目标的敌友状态,敌人则给自己治疗,反之为目标治疗。
使用频率:高
实用度:高

六 绑带

/s cript SpellStopCasting();
/p 绷带中~~
/s cript UseAction(25,0,1);
/s cript if SpellIsTargeting() then SpellTargetUnit("player") end;

技能介绍:作为治疗职业,魔法往往不是给自己享用的。绷带是raid,pvp的重要工具。
宏介绍:同样有自动判断目标的敌友状态,敌人则给自己绷带,反之为目标绷带。不同之处在于绷带的位置:/s cript UseAction(25,0,1);此行的意思即使用动作条上的某一空格。括号中最左边的数字即表示绷带所放置的格子,动作条第一行第一格为1,第二行第一格为13,以此类推。
使用频率:高
实用度:高

七 目标判断

/s cript if UnitClassification("target")=="elite" then SendChatMessage("" .. UnitName("target"), "say") else SendChatMessage("" .. UnitName("target") .. " " .. UnitRace("target") .. " " .. UnitClass("target"), "say"); end技能介绍:SM作为一个见招拆招的职业,需要先了解敌人的职业类型才方便自己制定策略。
宏介绍:调用职业,名字,种族的函数,同时用/say的方式显示出来,方便没有装classviewer插件的朋友使用。
使用频率:低
实用度:低

八 一键吃喝

/s cript if UnitHealth('player') / UnitHealthMax('player') < 0.8 then UseContainerItem(4, 2); end
/s cript if UnitMana('player') / UnitManaMax('player') < 0.8 then UseContainerItem(4, 1); end

技能介绍:纯粹为了方便,当魔法或者生命低于80%,按此键开始吃或者喝。
宏介绍:除了数值对比的函数,还用了调用包包中物品的函数:UseContainerItem(x, y)。其中x表示第几个包包,y表示物品在包包中的具体格子。具体位置如下:
5个背包按照排列位置编号如下:
[4][3][2][1][0]

16格包的格子编号如下:

[ 1][ 2][ 3][ 4]
[ 5][ 6][ 7][ 8]
[ 9][10][11][12]
[13][14][15][16]

使用频率:高
实用度:一般

补充:
单双手切换

/S cript PickupInventoryItem(17)
/S cript PickupContainerItem(4,16)
/S cript UseContainerItem(4,15)
/S cript UseContainerItem(4,16)

宏介绍:为方便切换单双手武器,虽然现在切换武器有了1.5S公共CD,但是还是颇有价值.原理同使用包包物品.

[取消]
饰品双开
/s cript UseInventoryItem(14)
/s cript UseInventoryItem(13)
/施放 闪电链(等级 4)
宏介绍:高端元素SM必备,为秒杀的专用一锤子宏.
转UI区结论:但需要注意的是,ZG护符不要优先于其他饰品,因为ZG护符先开启再用其他的会浪费初次的效果加成.
另:
Inventory表示人物框中的装备空位
而后面带的数字表示具体的空位格子
13 14就是放饰品的格子
自己摸索的装备格子的全列表如下

[1]===============[7]
[2]===============[8]
[3]===============[9]
[4]===============[10]
[5]===============[11]
[衬衣]=============[12]
[工会徽章]==========[13]
[6] [17][16][15]=====[14]



另附:
玩家自我头像框的精英或者银英边框显示:
/s cript PlayerFrameTexture:SetTexture("Interface\\TargetingFrame\\UI-TargetingFrame-Elite");
此为精英

/s cript PlayerFrameTexture:SetTexture("Interface\\TargetingFrame\\UI-TargetingFrame-Rare");
此为银英

最新更新:
战场常用宏
请求支援宏:/script if not ce or not le or GetTime()-le>10 then ce=0; end; le=GetTime(); ce=ce+1; SendChatMessage( GetMinimapZoneText().."发现"..ce.."名敌人!", "battlegroud")
按1下就报警发现1名敌人,有几个敌人就按几下

警报解除宏:

/script ce=0; SendChatMessage( GetMinimapZoneText().."警报解除。", "battlegroud")

此宏用于阿拉西盆地是很方便的,你不需要再分别做农场,兽栏,伐木场,铁匠铺,矿洞5个地方的宏了。它会自动获取你屏幕右上角小地图显示的区域名称。


欢迎各位讨论并提出建议,为SM区添砖加瓦。