如果变量是表的一部分,如何在变量旁边指定数字? LUA

时间:2014-03-12 01:41:27

标签: lua lua-table

  • 表mvp的当前输出,如果player1处于活动状态:

    “player1,player2,player3,player1,player2,player1,player2,player3,player1”

  • 表mvp的所需输出,如果player1处于活动状态:

    “player1 - 4,player2 - 3,player3 - 2”

我在询问如何缩短输出。 @Yu Hao,干得好!这只是我在解释我的问题时表现不好):抱歉,我编辑了我的问题


2 个答案:

答案 0 :(得分:0)

对于编辑过的问题,您可以将表项存储在一个集合中,其计数如下:

mvp = {"player1", "player2", "player3", "player1", "player2", "player1", "player2", "player3", "player1"}

local t = {}
for k, v in ipairs(mvp) do
    t[v] = (t[v] or 0) + 1
end
local count = {}
local index = 1
for k, v in pairs(t) do
    count[index] = k .. " - " .. v
    index = index + 1
end

str = table.concat(count, ", ")
print(str)

输出:player1 - 4, player3 - 2, player2 - 3

请注意,由于pairs()的使用,名称未排序,如果需要对名称进行排序,还需要做一些额外的工作。

答案 1 :(得分:0)

试试这个:您可以直接使用mvpmvpp表来计算出现次数;然后根据需要使用string.format格式化输出,但由于可以有多个玩家,然后使用table.concat组合多个玩家的输出;最后你放入ui

function output(scores, x, y)
    local out  = {}
    for player, score in scores do 
        table.insert(out, string.format("%s - %s", player, score))
    end
    ui.addTextArea(1,"<a href='event:closee'> ".. table.concat(out, ";") .. " </a>", NIL, 6, x,y, 50,0x1C3C41,0x1C3C41,0.9,true)
end

function eventLoop(time)
    local mvp = {}
    local mvpp = {}

    if time < 120000 then
        for name, player in pairs(tfm.get.room.playerList) do
            if not player.isDead then
                if TeamOne[name] then
                    mvp[name] = (mvp[name] or 0) + 1
                end
                if TeamTwo[name] then
                    mvpp[name] = (mvpp[name] or 0) + 1
                end
            end
        end
    end
    -- now mvp = {player1 = 200, player3 = 50} for example
    output(mvp,    6, 308)
    output(mvpp, 406, 208)
end

实际上还有一些参数传递给output()(比如addTextArea()href名称的第一个参数),但是你明白了。