簡單版
最樸素的技能說話巨集
/施放 技能名
/y 我對 %t 使用了技能名
優點:簡單
缺點:缺點太多說不過來
樸素改良版
/施放 技能名
/stopmacro [btn:2]
/y 我對 %t 使用了技能名
優點:左鍵點使用技能+喊話,右鍵點使用技能不喊話
缺點:缺點太多說不過來
中級版
X秒內只說一次
/腳本 local t=GetTime()macroT=macroT or 0;if t-macroT>3 then SendChatMessage("施放技能","SAY")macroT=t;end
/施放 技能名
注:巨集中的3是間隔時間
優點:不管怎麼按每X秒內只會說一次,不會重覆喊話
缺點:無法判斷法術是否成功施放,同時有兩個公共變量有可能導致插件出錯(基本不會)
人物在施法或在GCD中不會刷屏 by Xstubborn
/腳本 if not UnitCastingInfo("player")and 0==GetSpellCooldown("尋找礦物")then SendChatMessage("施放技能","SAY")end
/施放 技能名
注:尋找礦物改成任意有公共CD的技能;無GCD的技能不能使用此巨集
優點:基本不會重覆喊話
缺點:法術施放不出來的時候(比如被暈時)還是會重覆喊話
上一個巨集的無GCD技能版
/腳本 if not UnitCastingInfo("player")and 0==GetSpellCooldown("聖盾術")then SendChatMessage("請注意!!聖盾術已施放!!","yell")end
/施放 聖盾術
優點:基本不會重覆喊話
缺點:法術施放不出來的時候(例如沒有魔力時)還是會重覆喊話
使用飾品版
/script if not UnitCastingInfo("player")and 0==GetInventoryItemCooldown("player",13)then SendChatMessage("使用飾品","SAY")end
/使用 13
優點:基本上不會重覆喊話
缺點:飾品無法使用時候還是會重覆喊話
前幾個巨集的改良版
/腳本 macroT,macrot=macroT or 0,GetTime()if not UnitCastingInfo("player")and 0==GetSpellCooldown("聖盾術")and macrot-macroT>3 then SendChatMessage("施放技能","SAY")macroT=macrot;end
/cast 聖盾術
優點:施法失敗在X秒內只會說一次,不會重覆喊話
缺點:施放失敗還是會重覆喊話
高級版
技能施放成功後喊話(需有當前目標)
/腳本 U="UNIT_SPELLCAST_S"F=F or CreateFrame("frame")R=F.RegisterEvent;R(F,U.."ENT")R(F,U.."UCCEEDED")F:SetScript("OnEvent",function(_,_,a,b,_,c)if a=="player"and b=="變形術"then n=type(c)=="string"and c or SendChatMessage(n.."已被我變羊")end end)
/施放 變形術
優點:施法成功後才會說話,失敗不喊話,不會重覆喊話
缺點:對不同目標技能用的太快有可能出現目標錯誤;可能和不知名插件衝突造成不知名錯誤
技能施放前喊話(需有當前目標)/腳本 F=F or CreateFrame("frame");F:RegisterEvent("UNIT_SPELLCAST_SENT")F:SetScript("OnEvent",function()if arg1=="player" and arg2=="變形術" then SendChatMessage("對"..arg4.."使用變羊術")F:SetScript("OnEvent",nil)end end)
/施放 變形術
注:想要減少字元的話可以把F:SetScript("OnEvent",nil)去掉
優點:開始施法時喊話,基本上不會重覆喊話
缺點:有字數限制(字元255限制);當目標不在視野中等情況施法失敗時還是會重覆喊話;可能和不知名插件衝突造成不知名錯誤
施放成功後喊話(無需當前目標)by 恆砂
/腳本 F=F or CreateFrame("frame")F:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")F:SetScript("OnEvent",function()if arg1=="player"and arg2=="聖盾術"then SendChatMessage("使用聖盾術")F:SetScript("OnEvent",nil)end;end)
/施放 聖盾術
注:用巨集之後直接用技能不會重複喊話了
優點:施法成功後才會說話,不會重覆喊話
缺點:可能和不知名插件衝突造成不知名錯誤
復活技能比較特殊,使用高級版的幾個巨集在點屍體復活的時候會喊“未知目標”,單獨列出來
復活後說話
/腳本 U="UNIT_SPELLCAST_S"F=F or CreateFrame("frame")R=F.RegisterEvent;R(F,U.."ENT")R(F,U.."UCCEEDED")F:SetScript("OnEvent",function(_,_,a,b,_,c)if a=="player"and b=="先祖之魂"and c~="未知目標" then n=type(c)=="string"and c or SendChatMessage(n.."復活吧!勇士")end end)
優點:復活成功後提示復活目標
缺點:字元數255滿額了,除了技能名改動的空間幾乎為0
復活前說話
/腳本 F=F or CreateFrame("frame");F:RegisterEvent("UNIT_SPELLCAST_SENT")F:SetScript("OnEvent",function()if arg1=="player" and arg2=="先祖之魂" and arg4~="未知目標" then SendChatMessage(arg4.."復活吧!勇士") end end)
/施放 先祖之魂
優點:復活前提示復活目標
缺點:目標不在視野中時也會提示
復活前後都說話
/腳本 U="UNIT_SPELLCAST_S"F=F or CreateFrame("frame")R=F.RegisterEvent;R(F,U.."ENT")R(F,U.."UCCEEDED")F:SetScript("OnEvent",function(_,_,a,b,_,c)if a=="player"and b=="復活術"then n=type(c)=="string"and c or "成功"end;SendChatMessage("復活"..n)end end)
/施放 復活術
優點:比較好的巨集,可以提示復活目標,復活成功
缺點:目標不在視野中時也會提示
自行修定格式
當前目標是敵對/友善時不會說話
在巨集的開頭加上(敵對)
/stopmacro [harm]
或(友善)
/stopmacro [friend]
修改喊話類型
SendChatMessage的格式為
SendChatMessage("內容","方式"(,"語言","附加"))
方式可選項為emote(表情),guild(公會),party(小隊),raid(團隊),yell(大喊),say(說話,默認),whisper(密語)
例如
在小隊裡喊話是
SendChatMessage("內容","party")
隨機說話內容
1.在/腳本後面添加 local n={"要說的話1","要說的話2","要說的話3"}
2.SendChatMessage() 中說話的內容改為 n[random(#n)] (原來的引號要去掉)
例如
中級加強施法版(上一個宏的改進版,施法失敗在X秒內只會說一次,不會重複喊話)這個加上隨機說話就是:
/腳本 local n={"要說的話1","要說的話2","要說的話3"}macroT,macrot=macroT or 0,GetTime()if not UnitCastingInfo("player")and 0==GetSpellCooldown("聖盾術")and macrot-macroT>3 then SendChatMessage(n[random(#n)],"SAY")macroT=macrot;end
/施放 技能名
隨機是否說話
1.在 SendChatMessage 前面加上 if 2>random(3)then
2.在 end 後面再補一個 end
3. 2>random(3) 代表有1/3的幾率說話,3>random(5) 代表2/5幾率說話,類推。
例如
中級版(適合有CD切無GCD的技能,不過在施法失敗的情況下還是會重覆喊話)
改成有幾率喊話就是:(注意空格!)
/script if not UnitCastingInfo("player")and 0==GetSpellCooldown("聖盾術")then if 2>random(3)then SendChatMessage("請注意!聖盾術已施放!!","yell")end end
/施放 聖盾術
友情提示:
高級版的幾個巨集除了喊話內容和技能名稱之外其他不建議新手修改,否則可能出現各種不知名錯誤。
標式顏色:
黑色-說話內容
藍色-喊話頻道
棕色-技能名稱
紅色-修改函式
以上內容均由 NGA 討論網 axb 提供,本人僅修飾部分內容