如何在lua中正确定义局部变量并将其引用到XML?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在lua中正确定义局部变量并将其引用到XML?相关的知识,希望对你有一定的参考价值。
我正在尝试将公共公会注释识别为lua中的局部变量,并在XML文件中引用该变量的值。现在我不确定这是否是正确的代码,如何做到这一点。
local gngn()
_, _, _, _, _, _, gngn, _ = GetGuildRosterInfo("player");
end
如果是这样,我想将此变量嵌入XML文件中
<FontString name="$parent_Text" inherits="GameFontNormal"
text="<22575> ">
用虚拟文本<22575>替换
答案
您可以通过以下方式在Lua中定义局部变量:
local var1, _, var3 = 1, 2, 3
下划线_是一个特殊的占位符来解除一个值。因此,2将丢失,但1和3存储在变量中。
获取玩家的公共公会记录:
local _, _, _, _, _, _, playerNote = GetGuildRosterInfo("player");
至于XML文件,您有两个选择:
- 创建一个新的XML条目并自己将其写入XML文件
```
local newXmlEntry = '<FontString name="$parent_Text" inherits="GameFontNormal" text="'.. playerNote ..' ">'
- 替换XML文件的当前条目,然后更新整个文件
```
-- open file
local xmlFile = assert(io.open(xmlFilePath, "r"))
-- read and store all text
local xmlText = xmlFile:read("*a")
xmlFile:close()
-- replace all placeholders with playerNote text
string.gsub(xmlText, "<22575>", tostring(playerNote))
-- write updated xml file
xmlFile = assert(io.open(xmlFilePath, "w+"))
xmlFile:write(xmlText)
xmlFile:close()
另一答案
看来你正在为魔兽世界做一个插件。假设这个,你的问题目前是不可能的。
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 provides the name of a player in the
-- format "charName-serverName", we can use Ambiguate to
-- get just the charName.
if Ambiguate(name) == playerName then
-- we found the player, so set the note
-- "$parent" should be replaced with whatever the parent frames' name is
$parent_Text:SetText(note)
-- we've done what we wanted, so exit the loop
break
end
end
以上是关于如何在lua中正确定义局部变量并将其引用到XML?的主要内容,如果未能解决你的问题,请参考以下文章
如何在struct中正确定义一个函数指针,它以struct为指针?
如何在 models.py 文件中正确定义 ManyToMany 字段