
魔兽世界宏编写,请求高手解决。
首先我说一下该问题,希望朋友们别把我的贴给水了!高分求教。另:复制的,没看清楚的,乱回答的,请不要打扰了。我是一个FS,用的是大脚插件。以下是我朋友给的反制宏。请达人过目...
首先我说一下该问题,希望朋友们别把我的贴给水了!高分求教。
另:复制的,没看清楚的,乱回答的,请不要打扰了。
我是一个FS,用的是大脚插件。以下是我朋友给的反制宏。请达人过目。
---分-割-线---
/run function SIS_M(a,b,c,d,e,f,g,type) SendChatMessage(" 我打断了 ["..c.."] 的 \124cff71d5ff\124Hspell:"..f.."\124h["..g.."]\124h\124r。",type);end
先把这做个宏,名字随便
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"partty");end end
第2个宏
----"partty"代表小队 可以改为"say" "yell" "raid"等。
/run if (not MSG_F) then CreateFrame("Frame","MSG_F",UIParent);end MSG_F:RegisterEvent("COMBAT_LOG_EVENT");MSG_F:SetScript("OnEvent",function(_,_,...) if (EV_M) then EV_M(...);end end);
3个宏,每个宏上线了就按顺序各点一次,然后就好了。
---分-割-线---
好了,这3个宏全都做好了之后,保存了。各点了一次了。生效,如下比例;
我A,(FS)目标B,(FS)目标正在释放唤醒。
在B唤醒读条的时候,我对他反制,就会用到这个宏,出现以下效果。
A大喊:我对B施放了法术反制,打断了他的[唤醒]。
这个唤醒2个字是蓝色,鼠标点击可以直接查询该法术的详细情况。
比如:唤醒,在X秒内恢复法力总值的60%。
---分-割-线---
现在问题是:
1,可否把这3段宏简化?3个,个人觉得有点麻烦。
2,可否有别的宏让我实现那个蓝色字体[唤醒]
3,可否有别的办法,起码不要让我每次上线点一次,麻烦又占格。
4,可否在使用的时候,说的语句,大喊,动作(/E)支持我自己编写?怎么添加进去?
好了,就这几个问题。希望高手们解决。要求逐一回答,清晰,有效。回答全面,追加分!
Ps:别的FS们也玩下这个宏,的确,很拉轰。
2宏可能有点错误。是这个
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"yell");end end 展开
另:复制的,没看清楚的,乱回答的,请不要打扰了。
我是一个FS,用的是大脚插件。以下是我朋友给的反制宏。请达人过目。
---分-割-线---
/run function SIS_M(a,b,c,d,e,f,g,type) SendChatMessage(" 我打断了 ["..c.."] 的 \124cff71d5ff\124Hspell:"..f.."\124h["..g.."]\124h\124r。",type);end
先把这做个宏,名字随便
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"partty");end end
第2个宏
----"partty"代表小队 可以改为"say" "yell" "raid"等。
/run if (not MSG_F) then CreateFrame("Frame","MSG_F",UIParent);end MSG_F:RegisterEvent("COMBAT_LOG_EVENT");MSG_F:SetScript("OnEvent",function(_,_,...) if (EV_M) then EV_M(...);end end);
3个宏,每个宏上线了就按顺序各点一次,然后就好了。
---分-割-线---
好了,这3个宏全都做好了之后,保存了。各点了一次了。生效,如下比例;
我A,(FS)目标B,(FS)目标正在释放唤醒。
在B唤醒读条的时候,我对他反制,就会用到这个宏,出现以下效果。
A大喊:我对B施放了法术反制,打断了他的[唤醒]。
这个唤醒2个字是蓝色,鼠标点击可以直接查询该法术的详细情况。
比如:唤醒,在X秒内恢复法力总值的60%。
---分-割-线---
现在问题是:
1,可否把这3段宏简化?3个,个人觉得有点麻烦。
2,可否有别的宏让我实现那个蓝色字体[唤醒]
3,可否有别的办法,起码不要让我每次上线点一次,麻烦又占格。
4,可否在使用的时候,说的语句,大喊,动作(/E)支持我自己编写?怎么添加进去?
好了,就这几个问题。希望高手们解决。要求逐一回答,清晰,有效。回答全面,追加分!
Ps:别的FS们也玩下这个宏,的确,很拉轰。
2宏可能有点错误。是这个
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"yell");end end 展开
7个回答
展开全部
定义函数么?
/run function SIS_M(a,b,c,d,e,f,g,type) --定义函数SIS_M,用来发送聊天信息
SendChatMessage( --调用的这个方法用来发送这样的字符串“[HH:mm:ss] [AA] 的 [BB] 打断了 [CC] 的 [DD]。”
"[" --为时间戳加上中括号
..date("%H:%M:%S",a) --格式化时间戳,参数a存放着当前所取得消息的十六进制时间
.."] [" -- 时间戳和消息之间留一个空格
..b --参数b存放着玩家1的名字
.."] 的 \124cff71d5ff\124Hspell:" --给玩家1施放的技能加上链接码
..d --参数d存放着玩家1施放的技能的ID值
.."\124h[" --给玩家1施放的技能的名称加上中括号
..e --参数e存放着玩家1施放的技能的名称
.."]\124h\124r 打断了 [" --中间加上“打断了”
..c --参数c存放着玩家2的名字
.."] 的 \124cff71d5ff\124Hspell:" --给玩家2施放的技能加上链接码
..f --参数f存放着玩家2施放的技能的ID值
.."\124h[" --给玩家2施放的技能的名称加上中括号
..g --参数g存放着玩家2施放的技能的名称
.."]\124h\124r。", --最后加上一个句号,
type --SendChatMessage的第二个参数,指定了发送聊天信息的方式
); --组合字符串,然后发送聊天信息;
end --函数定义结束。
第二条宏
/run function EV_M(...) --定义函数EV_M,用来过滤战斗记录,只留下打断施法的战斗记录。EV_M函数的参数为“...”,这是LUA语言的特殊定义方式,表示参数的个数不确定
local a,v,_,b,_,_,c,_,d,e,_,f,g=...; --定义一些临时变量来按顺序从战斗记录中取得数据“_”变量为LUA保留变量,一般用作临时变量来多次赋值
if (v=="SPELL_INTERRUPT" and SIS_M) then --判断当临时变量v取得的消息类型为"SPELL_INTERRUPT"且SIS_M函数已经定义的情况下执行if内的语句
SIS_M(a,b,c,d,e,f,g,"YELL"); --调用SIS_M组合打断施法提示的信息字符串,以“YELL”(大喊)的方式发送。
end --if语句结束
end --函数定义结束。
第三条宏
/run if (not MSG_F) then --判断一下MSG_F框架是否已经创建过了
CreateFrame("Frame","MSG_F",UIParent); --创建MSG_F框架用来接收消息;
end --if语句结束
MSG_F:RegisterEvent("COMBAT_LOG_EVENT"); --为MSG_F框架注册接收的消息类型为“COMBAT_LOG_EVENT”;
MSG_F:SetScript( --为MSG_F设置事件执行的脚本
"OnEvent", --指定为哪个MSG_F事件设置脚本,这里设置为“OnEvent”,
function(_,_,...) --函数定义开始,参数1和2用不到,被LUA保留变量接收
if (EV_M) then --这里用if是为了防止弹出Lua错误消息,判断一下第二条宏是否用过了
EV_M(...); --调用EV_M函数匹配接收到的消息,以“YELL”(大喊)的方式发送聊天信息;
end --if语句结束
end --函数定义结束
); --SetScript结束。
上面这几段内容分别解释了这三个宏的功能,当然我还是要建议大家尝试一下下面的内容,因为一些人可能对这个宏实现的效果不够满意。
● 有些人觉得喊出声来不如只显示在自己的聊天记录中,那么可以把第一个宏改成这样:
/run function SIS_M(a,b,c,d,e,f,g,_) DEFAULT_CHAT_MESSAGE:AddMessage("["..date("%H:%M:%S",a).."] ["..b.."] 的 \124cff71d5ff\124Hspell:"..d.."\124h["..e.."]\124h\124r 打断了 ["..c.."] 的 \124cff71d5ff\124Hspell:"..f.."\124h["..g.."]\124h\124r。");end
● 有些人觉得这套宏不错,在竞技场中可以提醒大家谁打断了谁的施法,但是他却不希望竞技场中的敌人也看到这样的信息,怎么办呢?没关系,把第二个宏改一下(注意,旧版的打断施法提示宏是改第三个宏):
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"RAID");end end
和之前的第二个宏比较一下
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"YELL");end end
可以看出改动也只是把最后的“YELL”换成了“RAID”,为什么这样换呢,我们都知道WOW有多种聊天方式,有“说”、“大喊”、“小队”、“团队”、“公会”、“战场”等,在这里就可以规定用什么聊天方式发送。下面列举出这套宏所有可以用的聊天方式:
SAY说(/s)
EMOTE表情(/e)
PARTY小队(/p)
BATTLEGROUND战场(/bg)
GUILD公会(/g)
OFFICER官员(/o)
YELL大喊(/y)
RAID团队(/ra)
RAID_WARNING团队警报(/rw)
韩度别人的解释,我自己解释有点麻烦,不做任何其他讲解
/run function SIS_M(a,b,c,d,e,f,g,type) --定义函数SIS_M,用来发送聊天信息
SendChatMessage( --调用的这个方法用来发送这样的字符串“[HH:mm:ss] [AA] 的 [BB] 打断了 [CC] 的 [DD]。”
"[" --为时间戳加上中括号
..date("%H:%M:%S",a) --格式化时间戳,参数a存放着当前所取得消息的十六进制时间
.."] [" -- 时间戳和消息之间留一个空格
..b --参数b存放着玩家1的名字
.."] 的 \124cff71d5ff\124Hspell:" --给玩家1施放的技能加上链接码
..d --参数d存放着玩家1施放的技能的ID值
.."\124h[" --给玩家1施放的技能的名称加上中括号
..e --参数e存放着玩家1施放的技能的名称
.."]\124h\124r 打断了 [" --中间加上“打断了”
..c --参数c存放着玩家2的名字
.."] 的 \124cff71d5ff\124Hspell:" --给玩家2施放的技能加上链接码
..f --参数f存放着玩家2施放的技能的ID值
.."\124h[" --给玩家2施放的技能的名称加上中括号
..g --参数g存放着玩家2施放的技能的名称
.."]\124h\124r。", --最后加上一个句号,
type --SendChatMessage的第二个参数,指定了发送聊天信息的方式
); --组合字符串,然后发送聊天信息;
end --函数定义结束。
第二条宏
/run function EV_M(...) --定义函数EV_M,用来过滤战斗记录,只留下打断施法的战斗记录。EV_M函数的参数为“...”,这是LUA语言的特殊定义方式,表示参数的个数不确定
local a,v,_,b,_,_,c,_,d,e,_,f,g=...; --定义一些临时变量来按顺序从战斗记录中取得数据“_”变量为LUA保留变量,一般用作临时变量来多次赋值
if (v=="SPELL_INTERRUPT" and SIS_M) then --判断当临时变量v取得的消息类型为"SPELL_INTERRUPT"且SIS_M函数已经定义的情况下执行if内的语句
SIS_M(a,b,c,d,e,f,g,"YELL"); --调用SIS_M组合打断施法提示的信息字符串,以“YELL”(大喊)的方式发送。
end --if语句结束
end --函数定义结束。
第三条宏
/run if (not MSG_F) then --判断一下MSG_F框架是否已经创建过了
CreateFrame("Frame","MSG_F",UIParent); --创建MSG_F框架用来接收消息;
end --if语句结束
MSG_F:RegisterEvent("COMBAT_LOG_EVENT"); --为MSG_F框架注册接收的消息类型为“COMBAT_LOG_EVENT”;
MSG_F:SetScript( --为MSG_F设置事件执行的脚本
"OnEvent", --指定为哪个MSG_F事件设置脚本,这里设置为“OnEvent”,
function(_,_,...) --函数定义开始,参数1和2用不到,被LUA保留变量接收
if (EV_M) then --这里用if是为了防止弹出Lua错误消息,判断一下第二条宏是否用过了
EV_M(...); --调用EV_M函数匹配接收到的消息,以“YELL”(大喊)的方式发送聊天信息;
end --if语句结束
end --函数定义结束
); --SetScript结束。
上面这几段内容分别解释了这三个宏的功能,当然我还是要建议大家尝试一下下面的内容,因为一些人可能对这个宏实现的效果不够满意。
● 有些人觉得喊出声来不如只显示在自己的聊天记录中,那么可以把第一个宏改成这样:
/run function SIS_M(a,b,c,d,e,f,g,_) DEFAULT_CHAT_MESSAGE:AddMessage("["..date("%H:%M:%S",a).."] ["..b.."] 的 \124cff71d5ff\124Hspell:"..d.."\124h["..e.."]\124h\124r 打断了 ["..c.."] 的 \124cff71d5ff\124Hspell:"..f.."\124h["..g.."]\124h\124r。");end
● 有些人觉得这套宏不错,在竞技场中可以提醒大家谁打断了谁的施法,但是他却不希望竞技场中的敌人也看到这样的信息,怎么办呢?没关系,把第二个宏改一下(注意,旧版的打断施法提示宏是改第三个宏):
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"RAID");end end
和之前的第二个宏比较一下
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"YELL");end end
可以看出改动也只是把最后的“YELL”换成了“RAID”,为什么这样换呢,我们都知道WOW有多种聊天方式,有“说”、“大喊”、“小队”、“团队”、“公会”、“战场”等,在这里就可以规定用什么聊天方式发送。下面列举出这套宏所有可以用的聊天方式:
SAY说(/s)
EMOTE表情(/e)
PARTY小队(/p)
BATTLEGROUND战场(/bg)
GUILD公会(/g)
OFFICER官员(/o)
YELL大喊(/y)
RAID团队(/ra)
RAID_WARNING团队警报(/rw)
韩度别人的解释,我自己解释有点麻烦,不做任何其他讲解
展开全部
我能帮助你解决3个问题
你的这段宏简单点表示就是,打断施法宏。
打断宏
/CAST 法术反制
喊话宏
/Y 我对B施放了法术反制,打断了他的法术
表情宏
/E XXXXXXX
(如果这些表情本来有有WOW里面的短语,可以直接输入单词或者中文)
如果你要把技能说明添加进去貌似就必须运用编程语句,貌似这点无法简化
把上述宏合并起来得到:
#showtooltip 法术反制——建宏的时候选择“?”,图标自动变成法术反制的图标
/cast 法术反制
/Y 我对%T施放了法术反制——%T是你的当前目标
/E (跟你需要表达的表情)
你的这段宏简单点表示就是,打断施法宏。
打断宏
/CAST 法术反制
喊话宏
/Y 我对B施放了法术反制,打断了他的法术
表情宏
/E XXXXXXX
(如果这些表情本来有有WOW里面的短语,可以直接输入单词或者中文)
如果你要把技能说明添加进去貌似就必须运用编程语句,貌似这点无法简化
把上述宏合并起来得到:
#showtooltip 法术反制——建宏的时候选择“?”,图标自动变成法术反制的图标
/cast 法术反制
/Y 我对%T施放了法术反制——%T是你的当前目标
/E (跟你需要表达的表情)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为宏最多255个字符,所以要分开写。
可以在宏里加点击动作条,这样可以点第一个宏,然后他会自动点第二个宏
比如点右右下第12个
/click MultiBarBottomRightButton12
左下:ActionButton
左上:MultiBarBottomLeftButton
右下:MultiBarBottomRightButton
右1:MultiBarRightButton
右2:MultiBarLeftButton
有些法术报警插件、或JJC插件带类似通告功能
可以在宏里加点击动作条,这样可以点第一个宏,然后他会自动点第二个宏
比如点右右下第12个
/click MultiBarBottomRightButton12
左下:ActionButton
左上:MultiBarBottomLeftButton
右下:MultiBarBottomRightButton
右1:MultiBarRightButton
右2:MultiBarLeftButton
有些法术报警插件、或JJC插件带类似通告功能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂 哪有这么麻烦的宏 搞得像写程序似的~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询