2013-10-10 4 views
6

Итак, у меня возникла проблема при попытке разделить строки на таблицы (игроки в команды). Когда есть только два игрока, он работает как шарм, но когда есть игроки 3+, это всплывает: «Ошибка инициализации: transformice.lua: 7: плохой аргумент: таблица ожидаемая, полученная nil». Кажется, все в порядке, я действительно не знаю, что случилось. Можете ли вы, ребята, помочь мне? Благодаря! Вот мой код:Lua: Ожидаемая таблица, полученная nil

ps = {"Player1","Player2","Player3","Player4"} 
local teams={{},{},{}} 

--[[for name,player in pairs(tfm.get.room.playerList) do 
table.insert(ps,name) 
end]] 

table.sort(ps,function() return math.random()>0.5 end) 
for i,player in ipairs(ps) do 
    table.insert(teams[i%#teams],player) 
    end 

ответ

9

Lua массивы начинаются с индекса 1, не 0. В случае, когда у вас есть 3-х игроков этой линии:

table.insert(teams[i%#teams],player) 

оценить бы:

table.insert(teams[3%3],player) 

Что тогда будет в конечном итоге:

table.insert(teams[0],player) 

И teams[0] будет nil. Вы должны уметь написать его как:

table.insert(teams[i%#teams+1],player) 

вместо этого.

Смежные вопросы