Lua 长老卷轴在线插件

Lua 长老卷轴在线插件,lua,add-on,Lua,Add On,这是我第一次使用Lua,但不是编程。我有Java、动作脚本和HTML方面的经验。我正在尝试创建一个长者在线滚动插件。我通过以下链接找到了ESO API: 我正在尝试创建一个函数,返回每个帮会成员在银行中存放的物品数量。到目前为止,我掌握的代码如下 function members() for i=0, GetNumGuildEvents(3, GUILD_EVENT_BANKITEM_ADDED) do GetGuildEventInfo(3, GUILD_EVE

这是我第一次使用Lua,但不是编程。我有Java、动作脚本和HTML方面的经验。我正在尝试创建一个长者在线滚动插件。我通过以下链接找到了ESO API:

我正在尝试创建一个函数,返回每个帮会成员在银行中存放的物品数量。到目前为止,我掌握的代码如下

function members()
    for i=0, GetNumGuildEvents(3, GUILD_EVENT_BANKITEM_ADDED)
    do
        GetGuildEventInfo(3, GUILD_EVENT_BANKITEM_ADDED, i)
    end

我在引用进行特定存款的角色时遇到问题。一旦我能够做到这一点,我就预见到要制作一个链表来存储字符名和一个整数/双精度计数器来存储存储的项目数。如果任何人有一个如何参考给定存款字符的想法,将不胜感激

我没有游戏要测试,而且API文档也很少,所以下面是我熟悉Lua并编程多年的有根据的猜测/提示/提示

Lua支持多个赋值,函数可以返回多个值:

    function foo() 
        return 1, "two", print 
    end
    local a, b, c = foo()
    c(a,b) -- output: 1, "two"
GetGuildEventInfo说它返回以下内容:

eventType, secsSinceEvent, param1, param2, param3, param4, param5
鉴于此函数适用于多种公会事件类型,我希望param1到param5特定于您正在查询的特定事件。把它们打印出来,看看能得到什么。如果您有一个可用的print函数,其工作原理类似于Lua的标准print函数,即接受多个参数并将它们全部打印出来,那么您可以简单地编写:

    print(GetGuildEventInfo(3,GUILD_EVENT_BANKITEM_ADDED,i))
打印其所有返回值

如果你没有指纹,你应该写一张。我看到的功能,看起来可疑的东西,将文字写入您的聊天窗口。如果是这样,您可以编写如下Lua-esque打印函数:

function print(...)
    LogChatText(table.concat({...}, ' '))
end
如果您在实验中发现,比如说,param1是存款玩家的名字,您可以写:

    local eventType, secsSinceEvent, playerName = GetGuildEventInfo(3,GUILD_EVENT_BANKITEM_ADDED, i)
我预计会制作一个链表来存储字符名和一个整数/双精度计数器来存储物品的数量

您不希望使用不在Lua、Java或ActionScript中的链表来实现这一点。Lua实际上是建立在hashtables(也称为“tables”)上的,在Lua中,hashtables非常强大和通用,能够使用任何类型作为键或值

local playerEvents = {} -- this creates a table
playerEvents["The Dude"] = 0 -- this associates the string "The Dude" with the value 0
print(playerEvents["The Dude"]) -- retrieve the value associated with the string "The Dude"
playerEvents["The Dude"] = playerEvents["The Dude"] + 1 -- this adds 1 to whatever was previous associated with The Dude
如果您用一个尚未写入的键索引一个表,您将得到nil。您可以使用它来确定是否已经为玩家创建了条目

我们将假装param1包含玩家名称。当您找到它的实际位置时,请修复此问题:

local itemsAdded = {}
function members() 
    for i=0, GetNumGuildEvents(3, GUILD_EVENT_BANKITEM_ADDED ) do
        local eventType, secsSinceEvent, playerName = GetGuildEventInfo(3, GUILD_EVENT_BANKITEM_ADDED, i)
        itemsAdded[playerName] = (itemsAdded[playerName] or 0) + 1
    end
end
itemsAdded现在包含每个玩家添加的物品数量。要打印出来:

for name, count in pairs(itemsAdded) do
    print(string.format("Player %s has added %d items to the bank.", name, count))
end

我没有游戏要测试,而且API文档也很少,所以下面是我熟悉Lua并编程多年的猜测/提示/提示

Lua支持多个赋值,函数可以返回多个值:

    function foo() 
        return 1, "two", print 
    end
    local a, b, c = foo()
    c(a,b) -- output: 1, "two"
GetGuildEventInfo说它返回以下内容:

eventType, secsSinceEvent, param1, param2, param3, param4, param5
鉴于此函数适用于多种公会事件类型,我希望param1到param5特定于您正在查询的特定事件。把它们打印出来,看看能得到什么。如果您有一个可用的print函数,其工作原理类似于Lua的标准print函数,即接受多个参数并将它们全部打印出来,那么您可以简单地编写:

    print(GetGuildEventInfo(3,GUILD_EVENT_BANKITEM_ADDED,i))
打印其所有返回值

如果你没有指纹,你应该写一张。我看到的功能,看起来可疑的东西,将文字写入您的聊天窗口。如果是这样,您可以编写如下Lua-esque打印函数:

function print(...)
    LogChatText(table.concat({...}, ' '))
end
如果您在实验中发现,比如说,param1是存款玩家的名字,您可以写:

    local eventType, secsSinceEvent, playerName = GetGuildEventInfo(3,GUILD_EVENT_BANKITEM_ADDED, i)
我预计会制作一个链表来存储字符名和一个整数/双精度计数器来存储物品的数量

您不希望使用不在Lua、Java或ActionScript中的链表来实现这一点。Lua实际上是建立在hashtables(也称为“tables”)上的,在Lua中,hashtables非常强大和通用,能够使用任何类型作为键或值

local playerEvents = {} -- this creates a table
playerEvents["The Dude"] = 0 -- this associates the string "The Dude" with the value 0
print(playerEvents["The Dude"]) -- retrieve the value associated with the string "The Dude"
playerEvents["The Dude"] = playerEvents["The Dude"] + 1 -- this adds 1 to whatever was previous associated with The Dude
如果您用一个尚未写入的键索引一个表,您将得到nil。您可以使用它来确定是否已经为玩家创建了条目

我们将假装param1包含玩家名称。当您找到它的实际位置时,请修复此问题:

local itemsAdded = {}
function members() 
    for i=0, GetNumGuildEvents(3, GUILD_EVENT_BANKITEM_ADDED ) do
        local eventType, secsSinceEvent, playerName = GetGuildEventInfo(3, GUILD_EVENT_BANKITEM_ADDED, i)
        itemsAdded[playerName] = (itemsAdded[playerName] or 0) + 1
    end
end
itemsAdded现在包含每个玩家添加的物品数量。要打印出来:

for name, count in pairs(itemsAdded) do
    print(string.format("Player %s has added %d items to the bank.", name, count))
end

非常感谢,我将致力于实现并测试它。为了测试它,我应该将它导出并安装到游戏中,看看会发生什么。非常感谢,我将致力于实现它并测试它。为了测试它,我应该将它导出并安装到游戏中,看看会发生什么?