如何在lua中正确定义本地变量并将其指向XML?

我正在尝试将公会笔记标识为本地变量,然后在XML文件中引用该变量的值。现在,我不确定这是否是正确的代码。

local gngn()
_, _, _, _, _, _, gngn, _ = GetGuildRosterInfo("player");
end

如果是这样的话,我想将这个变量嵌入到XML文件中

<FontString name="$parent_Text" inherits="GameFontNormal"
text="&lt;22575&gt; ">

以便用虚拟文本<22575>替换。

点赞
用户1599009
用户1599009

你可以用以下方式在 Lua 中定义本地变量:

local var1, _, var3 = 1, 2, 3

下划线 "_" 是一个特殊的占位符,可以用来忽略一个值。所以,2 将会丢失,但 1 和 3 将会被存储在变量中。

获取玩家的公共公会注释:

local _, _, _, _, _, _, playerNote = GetGuildRosterInfo("player");

至于 XML 文件,你有两个选择:

  1. 创建一个新的 XML 条目,并将其写入 XML 文件中

```

local newXmlEntry = '<FontString name="$parent_Text" inherits="GameFontNormal" text="'.. playerNote ..' ">'
  1. 替换 XML 文件的当前条目,然后更新整个文件

```

-- 打开文件
local xmlFile = assert(io.open(xmlFilePath, "r"))
-- 读取并存储所有文本
local xmlText = xmlFile:read("*a")
xmlFile:close()

-- 用 playerNote 文本替换所有占位符
string.gsub(xmlText, "&lt;22575&gt;", tostring(playerNote))

-- 写入更新的 xml 文件
xmlFile = assert(io.open(xmlFilePath, "w+"))
xmlFile:write(xmlText)
xmlFile:close()
2017-12-23 04:03:34
用户5957533
用户5957533

似乎你正在为 WoW 制作插件。如果是这样,你目前的问题是无法解决的。

WoW 中的 Lua 环境不包括 io 库,因此无法创建或编辑 xml 文件。此外,XML 属性和嵌入在 XML 文件中的 Lua 代码只能访问全局变量(当然除了在嵌入上下文中创建的任何局部变量)。此外,GetGuildRosterInfo 需要一个索引,而不是一个单位。

话虽如此,你可以从 Lua 文件中访问 $parent_Text,并调用 $parent_Text:SetText() 来更新字符串。

例如,如果你想查找自己的备注,可以使用以下代码:

local playerName = UnitName("player")
for i = 1, GetNumGuildMembers() do
    local name, _, _, _, _, _, note = GetGuildRosterInfo(i)
    -- GetGuildRosterInfo 方法提供了格式为 "charName-serverName" 的玩家名称,我们可以使用 Ambiguate 方法来获取 charName。

    if Ambiguate(name) == playerName then
        -- 找到了该玩家,设置备注

        -- "$parent" 应该被替换为父框架的名称
        $parent_Text:SetText(note)

        -- 我们已经完成了想要的操作,退出循环
        break
    end
end
2017-12-25 01:40:29