欢迎光临散文网 会员登陆 & 注册

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

2022-04-21 21:43 作者:在艾泽拉斯路口等风吹  | 我要投稿


首先了解一下暴雪的几个全局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)

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


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

分享到微博请遵守国家法律