作者k0286 (~COMIC1☆4 放送中~)
看板WOW
標題[無用] 巨集研究(二) -- 偵測Event型巨集教學
時間Sat May 29 17:08:56 2010
PS 這篇前篇是介紹基本的/script 和WOW API介紹,但是寫一寫自己都不滿意,
所以還沒PO,反到是這篇先PO出來了。
PS 這邊基礎會以WOW API為主,盡量避開LUA之語法特質,但是有些地方還是會含有
LUA之特殊用法,不過用法很固定所以多看幾次就會寫了。
----------------------------------------
一、 前言
WOW中的Event簡單說就是系統抓到的變化,這個範圍相當廣,像是你獲得buff
或是你操縱的人物使用了一個法術,因此系統產生了event去處理這些動作。
基本上,你可以從戰鬥記錄器看到的敘述,都是記錄到的event。
二、 這東西,跟巨集有什麼關係?
這裡的應用範圍相當廣,比較常見的例子是DBM boss警告和Castyeller
這些UI,很常用的就是偵測到特殊"事件"然後送出一段訊息。
以DBM的BOSS警告為例
王出現深呼吸的表情 <--這就是一個事件
接著DBM偵測到以後,開啟一個計時器,5秒後送出團隊警告"深呼吸即將來臨"
所以說,藉著WOW中可以使用到的event配合可使用的API就可以做出相當多的事情。
三、 如何編寫
這裡先舉一例,然後分段解析code結構
這邊舉的是很常見的 破羊提示(Big Brother , NGA)
/run F=F or CreateFrame("frame")
F:RegisterEvent("COMBAT_LOG_EVENT")
F:SetScript("OnEvent",function()
if arg2=="SPELL_AURA_REMOVED"and arg10=="變形術"
then print("羊破了,注意")
end
end)
F=F or CreateFrame("frame")
創造一個框架(FRAME),這行表示創造一個新的框架
這個可以想成我們找一個人專門負責來抓一個特殊的event
F:RegisterEvent("COMBAT_LOG_EVENT")
登錄這個框架的內容,我們指定他去監聽(listen)關於COMBAT_LOG_EVENT這個分類的事件
簡單說,我們要他去監聽戰鬥記錄的部分
F:SetScript("OnEvent",function()
當事件發生時<"OnEvent">,我們要他執行function()的內容
if arg2=="SPELL_AURA_REMOVED"and arg10=="變形術"
then print("羊破了,注意")end
這段就是function()的內容,arg表示COMBAT_LOG_EVENT這個事件的參數
參數二是"光環被移除",參數十是"法術名稱"
這對敘述則是,當<if>光環被移除,並且<and>法術名稱是變形術
則<then>在螢幕印出"羊破了"的字樣, 後面的end分別表示if敘述結束和
function()的敘述結束
想看更多範例可以找精華區某篇關於施法喊話的巨集,一時之間不知道被藏在哪了
找不到..
Z 32 21 4 18
後面關於施法成功喊話的部分,現在應該看的懂了?!
四、 相關說明(英)
API COMBAT LOG EVENT
http://www.wowwiki.com/API_COMBAT_LOG_EVENT
Events List
事件列表
http://www.wowwiki.com/Events_A-Z_(Full_List)
SetScript
http://www.wowwiki.com/API_Frame_SetScript
RegisterEvent
http://www.wowwiki.com/API_Frame_RegisterEvent
HANDLER
http://www.wowwiki.com/Widget_handlers
--
Player:
What do you think about new titles in Ulduar like Undying & Immortal in NAXX ?
Blizzard:
The Rock.
And the heroic version, the Big Rock.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.225.85
※ 編輯: k0286 來自: 140.120.225.85 (05/29 17:10)
推 Michael132:推 05/29 17:10
※ 編輯: k0286 來自: 140.120.225.85 (05/29 17:11)
推 ifom:幫推 05/29 17:11
※ 編輯: k0286 來自: 140.120.225.85 (05/29 17:13)
推 shenmi:看不懂趕流行推(淚奔 05/29 17:18
推 furbyyeh:熱心推 翻譯心得研究分享教學交流 05/29 17:29
推 jonahlin:呃 看不懂 05/29 17:35
推 Fron:推推推 05/29 17:39
推 Kavis:推 05/29 17:44
→ Xavy:一在哪? 05/29 17:52
→ k0286:就 還沒寫完 所以過幾天吧.. 05/29 17:53