魔兽世界怀旧服 SS拉人宏

从第一次接触魔兽世界到现在已经陆陆续续有大半年了, 吸引我的不仅是和朋友们一起任务、下副本,听老道柠团他们唠嗑, 作为一个程序猿, 更吸引我的是基于lua脚本语言的宏和插件!

最近玩了个SS, 然后如果团本同时有多个SS, 拉人的时候, 就出现了一个蛋疼的问题了…不知道别人拉的谁! 很有可能就拉到了同一个人, 而且作为被拉的人, 也不知道SS到底有没有拉自己, 那么这时候, 一个用于通告的自动提示宏就非常有必要了!

好了, 废话不多说, 这个宏由3个宏组成, 分别是基础喊话宏, 灵魂碎片统计宏和拉人主宏。

介绍下这些宏里面使用到的API

  • InActiveBattlefield: 这个API在官方文档里面也没翻出来是啥…百度也百度不到..
  • IsInRaid: 在团队中
  • IsInGroup: 在小队中
  • SendChatMessage: 发送消息, 接受2个参数, 分别是消息内容和发送的频道
  • GetItemCount: 获取背包指定名称的物品数量
  • UnitClass: 获取当前选定目标的职业, 这里单纯用来做有没有选定目标的判定, 防止没有选定目标的时候出现”我正在召唤<没有目标>”的尴尬局面

这么一看是不是感觉清晰明了了! 知道这个宏干了些什么。

解决方案

喊话宏, 命名为CB, 这是百度随便找的一个基础宏, 保存后用于其他宏调用, 这个宏主要功能就是, 当你在团队时就会在团队发消息, 在小队时就会小队发消息, 不在组队就会使用表情的方式发消息

CreateFrame("frame",'F')F:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")return function(t)c=InActiveBattlefield()and"SAY"or IsInRaid()and"RAID"or IsInGroup()and"PARTY"or"EMOTE"SendChatMessage(t,c)end,i and"{rt"..i.."}"or '',CombatLogGetCurrentEventInfo

灵魂碎片统计宏, 命名为ghost_count, 其实一般的宏直接”我正在拉xxxx, 请点一下门!”之内的就起到通告的作用了, 但是这样太low了! 我还得告诉他们我有几个片! 我还得换着花样来!(滑稽)

return function()local c=GetItemCount("灵魂碎片") return c>15 and '片片灰常充足, 还'..c..'个!' or c>10 and '包里还有'..c..'个片~' or c>5 and '包里只剩下'..c..'个片啦...' or '灵魂碎片严重告急! 只有最后'..c..'个片了!做好自己跑路准备!' end

最后是基础拉人宏, 名字随便起, 拉人的时候经常会遇到忘记选中目标, 然后拉人就会出现”我正在拉<没有目标>, 请点一下门!”这种尴尬的时候, 但是现在完美解决了这个问题!

/run local c,d,e,f=GetItemCount("灵魂碎片"),loadstring(GetMacroBody("CB"))(),loadstring(GetMacroBody("ghost_count"))(),UnitClass('target') d(f and (c>0 and '正在尝试召唤%t! 来俩小红手点下门, '..e() or '准备召唤%t时发现自己没片了...'))
/cast 召唤仪式

最后把拉人的宏拖到快捷栏上, 完成!

发表评论

电子邮件地址不会被公开。