看到許多人詢問如何不用插件的情況下,製作一個巨集,這個巨集說出一些話,其中包括物品的鏈結(就是你自己點開可以看屬性的那種)。
其實若想實現這一點,你必須在宏裏使用魔獸世界中的Lua語言,一般的/s或者/y以及用Shift+點擊之類的方法是不行的。
下面這句就是一句標準的Lua語言來說話,而且其中帶有物品[迅捷祖利安猛虎]的鏈結:(你可以放到宏中,當然也可以採取直接說話的方式粘貼這句話)
/script SendChatMessage("高階祭司塞卡爾,欠我的"..(select(2,GetItemInfo(19902))).."啥時還?","yell");
(2009.04.09)注:由於[迅捷祖利安猛虎]在新版中已改為一種可學習的物品,所以若本周伺服器維護以來,你所在的伺服器還沒有人打出這個東西,那麼上述宏將無法正確運行,並會回報一個錯誤。這時,上面這句就應該改為下面這個樣子:
/script SendChatMessage("高階祭司塞卡爾,欠我的"..GetAchievementLink(880).."啥時還?","yell");
是的,我們用成就的鏈結來代替物品的鏈結。GetAchievementLink(i)就是根據成就的ID號碼來返回成就的鏈結,當然它的原理同GetItemInfo(i)是類似的。
我們來分別分析一下這句話:/script是開啟Lua語言的Keyword,當然為了省字數,許多人都喜歡改為/run,實際上這兩個是等效的。這句中共使用了三個函數:SendChatMessage()、select()和GetItemInfo()GetItemInfo()函數只有一個參數,本句中為19902,實際上這個數字是[迅捷祖利安猛虎]在遊戲中的ID號碼。我們隨便找一個魔獸資料庫的網站,比如:多玩魔獸資料庫,我們會發現[迅捷祖利安猛虎]的鏈結為http://db.duowan.com/wow/item-19902.html,這就是網站遵循遊戲ID規則的原因。(當然通過這種辦法你可以尋找你想要的物品的ID)
GetItemInfo()的作用是:根據物品的ID號碼返回物品的詳細情況,但是這個詳細情況是不能顯示出來的,它需要被其他函數進一步調用。這裏我們可以採用下面的命令來看看GetItemInfo()究竟返回了什麼?/script Print(GetItemInfo(19902));通過運行上述語句,你會發現返回了一行東西,其中第一項是白字的 迅捷祖利安猛虎,而第二項是紫色字的 迅捷祖利安猛虎,第二項可以通過點擊來查看[迅捷祖利安猛虎]的詳細屬性。於是,select(2,GetItemInfo(19902))的意義就很明白了,就是要選擇GetItemInfo(19902)返回內容中的第二項。也就是說select(2,GetItemInfo(19902))就相當於紫色字的迅捷祖利安猛虎並且可以點擊查看屬性。上面那個SendChatMessage()函數共有兩個參數,但實際上它可以有四個參數,只是兩個省略了。函數的參數之間用逗號隔開(注意:是半形的逗號!)。第一個參數是:"高階祭司塞卡爾,欠我的"..(select(2,GetItemInfo(19902))).."啥時還?",第二個參數是"yell"。實際上SendChatMessage()函數的完整格式如下:SendChatMessage("msg" [,"chatType" [,"language" [,"channel"]]]);上面[]裏的參數是可以省略的。第一參數"msg"就是你要說的話,需要用引號括起來(注意:半形的引號)。這裏支持select(2,GetItemInfo(19902))所得到的物品ID嵌入其中,當然用兩個點隔開。第二個參數"chatType"是你發佈資訊的說話方式,也要用引號括起來,可以使用的chatType列表如下:"SAY" 相當於/s "EMOTE" 相當於/me"YELL" 相當於/y"PARTY" 相當於/p "GUILD" 相當於/g"OFFICER" 相當於/o"RAID" 相當於/ra"RAID_WARNING" 相當於/rw"BATTLEGROUND" 相當於/bg"WHISPER" 相當於/w
給一個玩家發密語,玩家的名字在"channel"這個參數的地方寫出,當然想要這個參數首先你要“語言”這個參數也不能空著"CHANNEL" 相當於/1 /2,給頻道發資訊,頻道名字(而不是頻道序號)也在"channel"的地方寫出,要求同上。注意這裏頻道名字要用GetChannelName(id)這個函數獲得,裏面的id就是1,2,3等等。
你想要在交易頻道(默認序號是2)裏說出售絲綢的話,就應該使用下面這樣的語句:
/script SendChatMessage("出售"..select(2,GetItemInfo(4306)),"channel","通用語",GetChannelName(2));
如果是部落玩家就把上面的通用語改成獸人語就OK
沒有留言:
張貼留言