當前位置:編程學習大全網 - 編程語言 - 魔獸世界宏編寫,請求高手解決。

魔獸世界宏編寫,請求高手解決。

定義函數麽?

/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)

韓度別人的解釋,我自己解釋有點麻煩,不做任何其他講解

  • 上一篇:在大公司和小公司工作有什麽區別?
  • 下一篇:別克君越清洗後節氣門匹配方法
  • copyright 2024編程學習大全網