加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Unitbuff()函数与萨满补盾提示宏

(2010-03-21 17:47:14)
标签:

游戏

[宏]Unitbuff()函数与萨满补盾提示宏[20100202][/url]
 
没装插件,打副本时常常忘记补水盾、电盾、地盾么?
其实用几个简单的宏就能解决,在此分享一下,希望对大家有所帮助——

[::艾泽拉斯国家地理 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 治疗链
刷治疗链的时候会自动检查水盾的状态,如果水盾丢失则会密自己一句:“水之护盾丢失!”。
  • 宏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 风暴打击,大地震击,熔岩猛击,大地震击,风暴打击,熔岩猛击,大地震击,熔岩猛击,熔岩图腾
类似于水盾宏,在一键输出的同时自动检查电盾的状态,如果电盾丢失则会在聊天窗打出一行白字:“闪电之盾丢失!”。
  • 宏3A:焦点地盾宏
#showtooltip 大地之盾
/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 次级治疗波
配合宏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开始。
  • 返回值
    • name
      字符串 - 指定Buff或者效果的名称,这个值便是你鼠标放到法术上,弹出的提示信息中的黄色字体部分。
    • rank
      字符串 - 指定Buff的等级,如果没有等级信息则返回""。
      iconTexture
      字符串 - 指定Buff的法术图标,包含路径与文件名,用于标识该法术。
    • count
      整数值 - 指定Buff目前累加的层数。
    • duration
      整数值 - 如果该Buff是你施放的,那么值为该Buff总共的持续时间(以秒为单位),否则值为nil。
    • timeLeft
      整数值 - 如果该Buff是你施放的,那么值为该Buff剩余的持续时间(以秒为单位),否则值为nil。
注意Lua语言的赋值语句很好很强大,不用的返回值可以直接忽略。理论上用这个函数还可以检测对手身上有没有特定的buff,比如鸡蛋身上是否有恢复,有恢复的话自动提示等等。只要你能想得到的,基本都可以做到。
嘛~ 以上宏均经过测试,希望对大家有点帮助。

不刷屏版本

  • 很多人在回帖中指出这个没有插件提示好用,呵呵。这个我承认,我开篇的第一句话便是“没装插件……”的情况下。
    所以这是宏是写给网吧党、或者不会设置插件等懒人直接伸手拿来用的。当然用插件的图标提示是最好。此宏只不过是个补充。

  • 另外很多人指出这个宏的缺点,是如果某个盾丢失,那么此宏会不断的刷屏提示。但在我看来,这并不算是缺点,只能算是特点。因为我最早使用的提示宏是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消失全部提示的宏,供大家无聊娱乐。 什么,怎么两个宏好像没区别?(大雾
/脚本 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)

0

阅读 收藏 喜欢 打印举报/Report
后一篇:宏 各职业
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有