Unitbuff()函数与萨满补盾提示宏
(2010-03-21 17:47:14)
标签:
游戏 |
[宏]Unitbuff()函数与萨满补盾提示宏[20100202][/url]
没装插件,打副本时常常忘记补水盾、电盾、地盾么?
其实用几个简单的宏就能解决,在此分享一下,希望对大家有所帮助——
[::艾泽拉斯国家地理 BBS.NGACN.CC::]
以上几个宏的原理都是类似的,核心思想都是用到了一个WOW全局的API函数:Unitbuff() 函数。利用该函数可以做出类似更多的宏,现发该函数的参数说明在下面,希望大家可以举一反三:
嘛~ 以上宏均经过测试,希望对大家有点帮助。
没装插件,打副本时常常忘记补水盾、电盾、地盾么?
其实用几个简单的宏就能解决,在此分享一下,希望对大家有所帮助——
[::艾泽拉斯国家地理 BBS.NGACN.CC::]
- 宏1:水盾检测宏
#Showtooltip 治疗链
/run local n,i,j;j=0;for i=1,16 do n=UnitBuff("player", i);if n=="水之护盾" then j=1 end;end;if j==0 then SendChatMessage("水之护盾丢失!","whisper",nil,UnitName("player")); end;
/cast 治疗链
/run local n,i,j;j=0;for i=1,16 do n=UnitBuff("player", i);if n=="水之护盾" then j=1 end;end;if j==0 then SendChatMessage("水之护盾丢失!","whisper",nil,UnitName("player")); end;
/cast 治疗链
刷治疗链的时候会自动检查水盾的状态,如果水盾丢失则会密自己一句:“水之护盾丢失!”。
- 宏2:电盾检测宏
#Showtooltip
/startattack
/run local n,i,j;j=0;for i=1,16 do n=UnitBuff("player", i);if n=="闪电之盾" then j=1 end;end;if j<1 then print("闪电之盾丢失!");end;
/castsequence reset=combat 风暴打击,大地震击,熔岩猛击,大地震击,风暴打击,熔岩猛击,大地震击,熔岩猛击,熔岩图腾
/startattack
/run local n,i,j;j=0;for i=1,16 do n=UnitBuff("player", i);if n=="闪电之盾" then j=1 end;end;if j<1 then print("闪电之盾丢失!");end;
/castsequence reset=combat 风暴打击,大地震击,熔岩猛击,大地震击,风暴打击,熔岩猛击,大地震击,熔岩猛击,熔岩图腾
类似于水盾宏,在一键输出的同时自动检查电盾的状态,如果电盾丢失则会在聊天窗打出一行白字:“闪电之盾丢失!”。
- 宏3A:焦点地盾宏
#showtooltip 大地之盾
/cast [mod:alt,target=focus,exists] 大地之盾;[exists]大地之盾
/focus [nomod]
/cast [mod:alt,target=focus,exists] 大地之盾;[exists]大地之盾
/focus [nomod]
当前无目标时,按下alt点宏是为焦点补地盾,直接点宏是清除焦点。当前有目标时为当前目标补地盾并设该目标为焦点。
- 宏3B:地盾检测宏
#showtooltip
/target [harm] targettarget
/run local n,i,j;j=0;for i=1,16 do n=UnitBuff("focus", i);if n=="大地之盾" then j=1 end;end;if j==0 then SendChatMessage("大地之盾丢失!","whisper",nil,UnitName("player"));end;
/cast 次级治疗波
/target [harm] targettarget
/run local n,i,j;j=0;for i=1,16 do n=UnitBuff("focus", i);if n=="大地之盾" then j=1 end;end;if j==0 then SendChatMessage("大地之盾丢失!","whisper",nil,UnitName("player"));end;
/cast 次级治疗波
配合宏3A使用,在刷次级波的时候自动检测焦点的地盾是否还在。如果焦点目标身上没有地盾那么会密自己一句:“大地之盾丢失!”。
以上几个宏的原理都是类似的,核心思想都是用到了一个WOW全局的API函数:Unitbuff() 函数。利用该函数可以做出类似更多的宏,现发该函数的参数说明在下面,希望大家可以举一反三:
name,
rank, iconTexture, count, duration, timeLeft
=
UnitBuff ( unit, buffIndex[, castable] );
- 参数
- unit
字符串 - UnitId,指定要获取Buff信息的目标。可以为"target"、"player"、"focus"等。 - buffIndex
整数值 - 要获取信息的Buff的索引值,值从1开始,上限无穷大,直到目标身上没有更多的Buff。一般最多到32个。 - castable (可选)
布尔值 - 如果值为true,则只返回查询者可以施放的Buff,buffIndex值依然从1开始。
- unit
- 返回值
- name
字符串 - 指定Buff或者效果的名称,这个值便是你鼠标放到法术上,弹出的提示信息中的黄色字体部分。 - rank
字符串 - 指定Buff的等级,如果没有等级信息则返回""。
iconTexture
字符串 - 指定Buff的法术图标,包含路径与文件名,用于标识该法术。 - count
整数值 - 指定Buff目前累加的层数。 - duration
整数值 - 如果该Buff是你施放的,那么值为该Buff总共的持续时间(以秒为单位),否则值为nil。 - timeLeft
整数值 - 如果该Buff是你施放的,那么值为该Buff剩余的持续时间(以秒为单位),否则值为nil。
- name
嘛~ 以上宏均经过测试,希望对大家有点帮助。
不刷屏版本
- 很多人在回帖中指出这个没有插件提示好用,呵呵。这个我承认,我开篇的第一句话便是“没装插件……”的情况下。
所以这是宏是写给网吧党、或者不会设置插件等懒人直接伸手拿来用的。当然用插件的图标提示是最好。此宏只不过是个补充。
-
另外很多人指出这个宏的缺点,是如果某个盾丢失,那么此宏会不断的刷屏提示。但在我看来,这并不算是缺点,只能算是特点。因为我最早使用的提示宏是Buff丢失后只提示一次的。但实际上,只提示一次很容易被团队告警或者别的信息刷掉看不到,等于有时会因人为的“漏”掉这个提示,起不到应有的作用,所以才写了原帖中的宏。
其实这是个个人习惯的问题,现在我把我原来用的提示宏稍稍改动了一下,增加了声音提示(AH关闭时的声音),这样不容易忽略掉。借此机会也发在这里,大家喜欢用哪个就用哪个吧,原帖我随后更新一下,希望能给大家帮助。
/脚本 F=F or
CreateFrame("frame")F:RegisterEvent("COMBAT_LOG_EVENT")F:SetScript("OnEvent",function()if
arg2=="SPELL_AURA_REMOVED" and arg4==UnitName("player")and
string.sub(arg10,10)=="盾" then
print("["..arg10.."]丢失!")PlaySound("AuctionWindowClose")end;end)
用法是每次上线点一下宏,然后宏会自动检测你自已施放的各种“盾”类效果。三盾一体,一旦消失就会有文字和声音提示。但是注意这个只提示一次。此宏刚好是255个字节,copy的时候小心一点不要多拷了空格少拷了字符之类的,嗯。
另外买一送一,再给大家一个除了“盾”之外,你自身施放其它各种buff消失全部提示的宏,供大家无聊娱乐。什么,怎么两个宏好像没区别?(大雾
另外买一送一,再给大家一个除了“盾”之外,你自身施放其它各种buff消失全部提示的宏,供大家无聊娱乐。
/脚本 F=F or
CreateFrame("frame")F:RegisterEvent("COMBAT_LOG_EVENT")F:SetScript("OnEvent",function()if
arg2=="SPELL_AURA_REMOVED" and arg4==UnitName("player")then
print("["..arg10.."]丢失了!")PlaySound("AuctionWindowClose")end;end)
前一篇:魔兽世界 3.13 猎人
后一篇:宏 各职业