我是Lua的新手,一直在学习教程https://wowwiki.fandom.com/wiki/AddOn_tutorial但我就是不能让它工作;我已经复制了代码,但我收到了错误消息">尝试调用全局"functionname"(零值(";在SetMapToCurrentZone((和 GetPlayerMapPosition("播放器"(这是整个Lua文件; 我该怎么修?local zone = nil
local TimeSinceLastUpdate = 0
local function UpdateCoordinates(self, elapsed)
if zone ~= GetRealZoneText() then
zone = GetRealZoneText()
SetMapToCurrentZone()
end
TimeSinceLastUpdate = TimeSinceLastUpdate + elapsed
if TimeSinceLastUpdate > .5 then
TimeSinceLastUpdate = 0
local posX, posY = GetPlayerMapPosition("player");
local x = math.floor(posX * 10000)/100
local y = math.floor(posY*10000)/100
eCoordinatesFontString:SetText("|c98FB98ff("..x..", "..y..")")
end
end
function eCoordinates_OnLoad(self, event,...)
self:RegisterEvent("ADDON_LOADED")
end
function eCoordinates_OnEvent(self, event, ...)
if event == "ADDON_LOADED" and ... == "eCoordinates" then
self:UnregisterEvent("ADDON_LOADED")
eCoordinates:SetSize(100, 50)
eCoordinates:SetPoint("TOP", "Minimap", "BOTTOM", 5, -5)
eCoordinates:SetScript("OnUpdate", UpdateCoordinates)
local coordsFont = eCoordinates:CreateFontString("eCoordinatesFontString", "ARTWORK", "GameFontNormal")
coordsFont:SetPoint("CENTER", "eCoordinates", "CENTER", 0, 0)
coordsFont:Show()
eCoordinates:Show()
end
end
这些函数已在8.0中重命名并移动到包装器对象、C_Map.GetBestMapForUnit(需要"播放器"作为参数才能产生相同的结果(和C_Map.Get-PlayerMapPosition。
您可能会期望稍后调用的更多函数会抛出相同的错误,因为它们的行以前是无法访问的。当我再次在桌面上时,我可以查看整个代码示例,但你可以简单地在Wowpedia上查找这些函数,尤其是其他与地图相关的函数
我建议使用Wowpedia而不是Wowwiki,这是个人的偏好/印象,前者似乎会不断更新。(在10年前分裂之后,两家现在似乎又在合并了(