从第一次接触魔兽世界到现在已经陆陆续续有大半年了, 吸引我的不仅是和朋友们一起任务、下副本,听老道柠团他们唠嗑, 作为一个程序猿, 更吸引我的是基于lua脚本语言的宏和插件!
最近玩了个SS, 然后如果团本同时有多个SS, 拉人的时候, 就出现了一个蛋疼的问题了...不知道别人拉的谁! 很有可能就拉到了同一个人, 而且作为被拉的人, 也不知道SS到底有没有拉自己, 那么这时候, 一个用于通告的自动提示宏就非常有必要了!
好了, 废话不多说, 这个宏由3个宏组成, 分别是基础喊话宏, 灵魂碎片统计宏和拉人主宏。
介绍下这些宏里面使用到的API
- InActiveBattlefield: 这个API在官方文档里面也没翻出来是啥...百度也百度不到..
- IsInRaid: 在团队中
- IsInGroup: 在小队中
- SendChatMessage: 发送消息, 接受2个参数, 分别是消息内容和发送的频道
- GetItemCount: 获取背包指定名称的物品数量
- UnitClass: 获取当前选定目标的职业, 这里单纯用来做有没有选定目标的判定, 防止没有选定目标的时候出现"我正在召唤<没有目标>"的尴尬局面
这么一看是不是感觉清晰明了了! 知道这个宏干了些什么。
解决方案
喊话宏, 命名为CB, 这是百度随便找的一个基础宏, 保存后用于其他宏调用, 这个宏主要功能就是, 当你在团队时就会在团队发消息, 在小队时就会小队发消息, 不在组队就会使用表情的方式发消息
1 2 |
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了! 我还得告诉他们我有几个片! 我还得换着花样来!(滑稽)
1 2 |
return function()local c=GetItemCount("灵魂碎片") return c>15 and '片片灰常充足, 还'..c..'个!' or c>10 and '包里还有'..c..'个片~' or c>5 and '包里只剩下'..c..'个片啦...' or '灵魂碎片严重告急! 只有最后'..c..'个片了!做好自己跑路准备!' end |
最后是基础拉人宏, 名字随便起, 拉人的时候经常会遇到忘记选中目标, 然后拉人就会出现"我正在拉<没有目标>, 请点一下门!"这种尴尬的时候, 但是现在完美解决了这个问题!
1 2 3 |
/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 召唤仪式 |
最后把拉人的宏拖到快捷栏上, 完成!
From 比格沃斯 - 脸滚键盘侠
使用宏提示错误 需要另装插件吗
不需要的,这个宏一共3个部分,你是不是名字没有搞对之内的。。