魔獸世界插件實(shí)戰(zhàn)筆記從入門到放棄的心理歷程 第九節(jié) 坐標(biāo)地址的靜態(tài)獲取

首先了解一下暴雪的幾個全局API函數(shù):
-- 地區(qū)函數(shù) (Location Functions)返回當(dāng)前玩家所在區(qū)域信息
-- GetBindLocation() - 獲取爐石綁定區(qū)域名稱.
-- GetMinimapZoneText() - 返回顯示于小地圖上的區(qū)域文本.
-- GetRealZoneText() - 返回副本或區(qū)域名稱.
-- GetSubZoneText() - 返回子區(qū)域文本 (例如: "運(yùn)河").
-- GetZonePVPInfo() - 返回當(dāng)前區(qū)域的 PVP 信息.
-- GetZoneText() - 返回區(qū)域文本 (例如: "暴風(fēng)城").

在WoWLua內(nèi)部驗(yàn)證一下看看他們輸出什么結(jié)果:
用WowLua內(nèi)部腳本環(huán)境測試一下輸出看看是什么:
我們主要用到這兩個:GetZoneText() ? ? GetSubZoneText()
看看顯示能不能在窗體上顯示結(jié)果:

獲取坐標(biāo)主要是用到暴雪的兩個API函數(shù):
mapID = C_Map.GetBestMapForUnit("player")
local tempTable = C_Map.GetPlayerMapPosition(mapID, "player")
返回的變量中就包含了人物坐標(biāo)的x和y坐標(biāo)信息tempTable.x, tempTable.y
用tempTable.x和tempTable.y 來接收。
把數(shù)據(jù)顯示到子窗體2上面:
-- Math.floor()可以獲得一個數(shù)的整數(shù)部分,而不是四舍五入
-- __x = math.floor(__x*100+0.5);
-- __y = math.floor(__y*100+0.5);
-- 1、Math.round(double a)
-- round 方法,就是我們通常說的"四舍五入"
-- floor 是地板的意思,所以 Math.floor(double a) 就是對 a 向下取整。
-- ceil 是天花板的意思,所以 Math.ceil(double a) 就是對 a 向上取整。
-- 取絕對值 ?這里還是先取絕對值,然后截取兩位小數(shù)保留輸出是和大腳一樣了
__x = math.abs(__x*100);
__y = math.abs(__y*100);
注意顯示的時候,lua格式化輸出小數(shù)點(diǎn)后面幾位,我就去絕對值,顯示2位小數(shù)來看看結(jié)果。
子窗體2的文字設(shè)置過大,改到0.8倍吧,原來我只提取了小數(shù)點(diǎn)后面1位顯示的,為了演示一下格式化輸出,先用2位吧,最后如果我們要是用坐標(biāo)來實(shí)現(xiàn)自動跑路,可能還需要整數(shù)比較好,你懂得哦,不多說了。
frame_2.label:SetFont(font, size*0.8, flags)

這樣就能正確顯示地圖信息和坐標(biāo)信息了,這只是靜態(tài)的獲取,我們點(diǎn)擊一次按鈕,就獲取一次,顯然不符合要求,因?yàn)樽鴺?biāo)肯定是實(shí)時變化的,要知后事如何,請聽下回分解......