表mvp的当前输出,如果player1处于活动状态:
“player1,player2,player3,player1,player2,player1,player2,player3,player1”
表mvp的所需输出,如果player1处于活动状态:
“player1 - 4,player2 - 3,player3 - 2”
我在询问如何缩短输出。 @Yu Hao,干得好!这只是我在解释我的问题时表现不好):抱歉,我编辑了我的问题
答案 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)
试试这个:您可以直接使用mvp
和mvpp
表来计算出现次数;然后根据需要使用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
名称的第一个参数),但是你明白了。