Автор: dimajak 27.1.2010, 23:47
Запутался с таблицами. Не пойму как сделать соритровку таблицы, у которой индекс строковый и данные сидят во вложенной таблице, но индекс числовой.
В скрипте "Snowball War" данные по игрокам хранятся в таблице вида:
Код
SnowTable = {
["start"] = {
[1] = "January 19 2010",
[2] = "11:52:03",
},
["dimka570"] = {
[6] = 0,
[2] = 5,
[3] = 0,
[1] = 570,
[4] = "Лейтенант-коммандор",
[5] = 0,
[7] = 0,
},
["dimka578"] = {
[6] = 0,
[2] = 5,
[3] = 0,
[1] = 578,
[4] = "Лейтенант-коммандор",
[5] = 0,
[7] = 0,
},
["dimka294"] = {
[6] = 0,
[2] = 5,
[3] = 0,
[1] = 294,
[4] = "Рыцарь лейтенант",
[5] = 0,
[7] = 0,
},
["dimka318"] = {
[6] = 0,
[2] = 5,
[3] = 0,
[1] = 318,
[4] = "Рыцарь капитан",
[5] = 0,
[7] = 0,
},
["dimka124"] = {
[6] = 0,
[2] = 5,
[3] = 0,
[1] = 124,
[4] = "Майор-сержант",
[5] = 0,
[7] = 0,
},
}
вот её-то и не могу отсортировать по индексу [1] вложенной таблицы :(
Автор: Nickolya 28.1.2010, 10:32
Код
local tTemp = {} -- временная таблица
for i, v in pairs(SnowTable) do -- тут мы проходим по таблице рекордов
if type(v[1]) == "number" then -- проверка на то что поле [1] - число
table.insert(tTemp, {i, v[1]}) -- вставка в временную таблицу таблицы со значениями [1] - индекс нашей основной таблицы и [2] - параметр [1] этой таблицы
end
end
table.sort(tTemp, function(arg1, arg2) -- сортировка
return arg1[2] > arg2[2] -- проверяем что 2 значение таблицы больше другого
end)
--[=[ на выходе получаем отсортированную временную таблицу от большего к меньшему, в виде
tTemp = {
[1] = {
[1] = "dimka578",
[2] = 578,
},
[2] = {
[1] = "dimka570",
[2] = 570,
},
-- и так далее, прверь, а то я это набросал в блокноте, не проверял
}]=]
Автор: dimajak 1.2.2010, 21:33
Nickolya, спасибо. Я так и делал. Думал может как попроще можно.