2016-02-06 1 views
1
bestSword = { 
    {name = 'www' , lvl = 35, atk = 38, npcPrice = 15000 , buyPrice = 0}, 
    {name = 'bbb' , lvl = 40, atk = 40, npcPrice = 20000 , buyPrice = 0}, 
    {name = 'eee' , lvl = 50, atk = 42, npcPrice = 25000 , buyPrice = 0}, 
    {name = 'sss' , lvl = 55, atk = 43, npcPrice = 30000 , buyPrice = 0}, 
    {name = 'aaa' , lvl = 60, atk = 44, npcPrice = 30000 , buyPrice = 0}, 
    {name = 'qwe' , lvl = 70, atk = 46, npcPrice = 35000 , buyPrice = 0}, 
    {name = 'asd' , lvl = 82, atk = 48, npcPrice = 60000 , buyPrice = 0} 
} 

У меня есть эта таблица, как я могу перебирать из последнего индекса в первую очередь? Он должен разорваться, зависит от lvl. Я просто хочу показать эту таблицу из лучшего оружия. Например, если у игрока есть уровень 53, я хочу показать только оружие для его lvl или ниже. Мне нужно показать, что из лучшего (вверху) его, почему я хочу итерации из последнего индекса. Может ли кто-нибудь помочь?Как итерация от последнего индекса к первому в таблице

EDIT: Спасибо за помощь. Проблема в том, что мне понадобилась эта измененная таблица позже. Он показывает все отлично, но мне нужно купить все литемы из этого (измененного) списка позже. Поэтому я должен каким-то образом заменить эти 2 таблицы. Есть ли простой способ сделать это? Я попытался удалить элементы из этой таблицы, но он все еще не работает.

Возможно ли сделать свою карту в Lua? Он должен быть динамическим, поэтому я не могу использовать таблицу, которую я предполагаю. Что-то с ключом - значение

+0

Таблица - карта с ключом. Как вы его построили, подразумеваются ключи для начальных значений. См. Документацию Lua для таблицы и таблицы с последовательностью. (Может быть, после этого будет задан отдельный вопрос.) –

+0

Хороший вопрос ... и добро пожаловать на «уровень поддержки» ;-) – GhostCat

ответ

4

Числовой цикл, обратный отсчет, это лучший вариант:

local t = {2,4,6,8} 

for i = #t, 1, -1 do 
    print(t[i]) 
end 
1

Предполагая, что таблица не обязательно сортируются в порядок уровня (в отличие от примера), мы должны сделать две вещи:

  • Найти которые мечи находятся в диапазоне уровня
  • Сортировать их в порядок
убыванию

Теперь первый во временной таблице - «лучший» меч.

Как это:

bestSword = { 
    {name = 'www' , lvl = 35, atk = 38, npcPrice = 15000 , buyPrice = 0}, 
    {name = 'bbb' , lvl = 40, atk = 40, npcPrice = 20000 , buyPrice = 0}, 
    {name = 'eee' , lvl = 50, atk = 42, npcPrice = 25000 , buyPrice = 0}, 
    {name = 'sss' , lvl = 55, atk = 43, npcPrice = 30000 , buyPrice = 0}, 
    {name = 'aaa' , lvl = 60, atk = 44, npcPrice = 30000 , buyPrice = 0}, 
    {name = 'qwe' , lvl = 70, atk = 46, npcPrice = 35000 , buyPrice = 0}, 
    {name = 'asd' , lvl = 82, atk = 48, npcPrice = 60000 , buyPrice = 0} 
} 

myLevel = 53 -- wanted level 

-- temporary table 
possible = { } 

-- extract ones which are in range 
for k, v in ipairs (bestSword) do 
    if v.lvl <= myLevel then 
    table.insert (possible, v) 
    end -- if 
end -- for 

if #possible == 0 then 
    print "No matching swords" 
else 
    table.sort (possible, function (a, b) return a.atk > b.atk end) 
    bestSword = possible [1] 
    print ("Best sword is", bestSword.name, "lvl =", bestSword.lvl, 
     "atk = ", bestSword.atk) 
end -- if 

Или его можно сделать некоторые карты в Lua? Он должен быть динамическим, поэтому я не могу использовать таблицу, которую я предполагаю. Что-то с ключом -

Столы в Lua карты. Каждая таблица имеет пары ключ/значение. Тот, который вы используете, это просто таблицы с цифровым ключом.

Все таблицы имеют динамический размер.

+0

Im почти уверен, почему мне нужно, позвольте мне проверить: D кстати. какой размер возможно = {} при запуске? в Lua есть какие-то динамические таблицы или он просто создает новый, когда я нажимаю/удаляет значения? – minizibi

+0

Он отлично работает! Вы решаете мою проблему, спасибо! :) – minizibi

+0

В этом случае, пожалуйста, примите мой ответ, чтобы Stack Overflow распознал его как принятый ответ (вы можете изменить принятый ответ). –