魔兽世界插件实战笔记从入门到放弃的心理历程 第九节 坐标地址的静态获取

首先了解一下暴雪的几个全局API函数:
-- 地区函数 (Location Functions)返回当前玩家所在区域信息
-- GetBindLocation() - 获取炉石绑定区域名称.
-- GetMinimapZoneText() - 返回显示于小地图上的区域文本.
-- GetRealZoneText() - 返回副本或区域名称.
-- GetSubZoneText() - 返回子区域文本 (例如: "运河").
-- GetZonePVPInfo() - 返回当前区域的 PVP 信息.
-- GetZoneText() - 返回区域文本 (例如: "暴风城").

在WoWLua内部验证一下看看他们输出什么结果:
用WowLua内部脚本环境测试一下输出看看是什么:
我们主要用到这两个:GetZoneText() GetSubZoneText()
看看显示能不能在窗体上显示结果:

获取坐标主要是用到暴雪的两个API函数:
mapID = C_Map.GetBestMapForUnit("player")
local tempTable = C_Map.GetPlayerMapPosition(mapID, "player")
返回的变量中就包含了人物坐标的x和y坐标信息tempTable.x, tempTable.y
用tempTable.x和tempTable.y 来接收。
把数据显示到子窗体2上面:
-- Math.floor()可以获得一个数的整数部分,而不是四舍五入
-- __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 向上取整。
-- 取绝对值 这里还是先取绝对值,然后截取两位小数保留输出是和大脚一样了
__x = math.abs(__x*100);
__y = math.abs(__y*100);
注意显示的时候,lua格式化输出小数点后面几位,我就去绝对值,显示2位小数来看看结果。
子窗体2的文字设置过大,改到0.8倍吧,原来我只提取了小数点后面1位显示的,为了演示一下格式化输出,先用2位吧,最后如果我们要是用坐标来实现自动跑路,可能还需要整数比较好,你懂得哦,不多说了。
frame_2.label:SetFont(font, size*0.8, flags)

这样就能正确显示地图信息和坐标信息了,这只是静态的获取,我们点击一次按钮,就获取一次,显然不符合要求,因为坐标肯定是实时变化的,要知后事如何,请听下回分解......