toxictrace 1 Опубликовано 26 Мая 2013 Доброго времени суток. Есть таблица такого типа local tabl = { ["t1"] = {{"s1",40},{"s2",25},{"s3",5}}, ["t2"] = {{"x1",40},{"x2",30},{"x3",5}}, ["t3"] = {{"z1",40},{"z2",40},{"z3",5}} } и есть такая функция local sec = rnd(tabl[key]) -- key = t1 or t2 or t3 function rnd(t) local sum = 0 local rand = math.random(100) for i,v in ipairs(t) do sum = sum + v[2] if rand <= sum then return v[1] end end end Выдаёт ошибку bad argument #1 to 'ipairs' (table expected, got nil) Что я делаю не так? Пожалуйста, подскажите. Заранее спасибо. Когда умрёшь, увидишь кнопки "О'кей" и "Главное меню"Под ними "Новая" и "Выход" И неактивная "Назад" Поделиться этим сообщением Ссылка на сообщение
toxictrace 1 Опубликовано 26 Мая 2013 (изменено) И я бы использовал перебор for i=1,#t do В этом случае вылетаем с attempt to get length of local 't' (a nil value) то функция rnd возвратит nil. Так и задумано? Нет, конечно. Просто не так поставлено. Это для примера что в качестве key ты передаёшь то, что нужно? Проверил, действительно, не все данные были правильными. Но, к сожалению, после исправления вылет остался. Вопрос решил. Можно не париться. @ColR_iT, спасибо за наводку. Ты оказался прав. Изменено 26 Мая 2013 пользователем toxictrace Когда умрёшь, увидишь кнопки "О'кей" и "Главное меню"Под ними "Новая" и "Выход" И неактивная "Назад" Поделиться этим сообщением Ссылка на сообщение