У меня есть таблица, такая как:
mafiadb:{"Etzli":{"alive":50,"mafia":60,"vigilante":3,"doctor":4,"citizen":78,"police":40},"Charneus":{"alive":29,"mafia":42,"vigilante":6,"doctor":14,"citizen":53,"police":33}}
Есть еще несколько вложенных таблиц, но сейчас я пытаюсь сделать их проще.
Я запускаю следующий код для извлечения определенных значений (я делаю упорядоченный список на основе этих значений):
sortmaf={}
for k,v in pairs(mafiadb) do
sortmaf[k]=v["mafia"]
end
Это один из кодов, которые я запускаю. Проблема, с которой я сталкиваюсь, заключается в том, что не кажется, что вы можете выполнять арифметику в цикле таблицы. Я попробовал:
sortpct={}
for k,v in pairs(mafiadb) do
sortpct[k]=(v["alive"]*100)/(v["mafia"]+v["vigilante"]+v["doctor"]+v["citizen"]+v["police"])
end
Возвращается, что я пытаюсь сделать арифметику на поле "вживую". Что мне здесь не хватает? Как обычно, я благодарен за ответ на этот вопрос!
Редактирование:
Вместо того, чтобы комментировать комментарий, я собираюсь добавить сюда дополнительную информацию.
База данных mafiadb, которую я разместил, является реальной базой данных. Это просто разделили до двух игроков вместо нынешних 150+ игроков, которых я перечислил в нем. Это просто структурировано так:
mafiadb = {
Playername = {
alive = 0
mafia = 0
vigilante = 0
doctor = 0
police = 0
citizen = 0
}
}
Добавьте еще несколько сотен имен игроков, и вот оно у вас.
Что касается сообщения об ошибке, точное сообщение:
попытка выполнить арифметику с полем «в живую» (нулевое значение)
Итак ... Я не уверен, в чем проблема. В моем первом коде, который с sortmaf, он работает отлично, но вдруг он не может найти v ["alive"] как значение, когда я пытаюсь сделать арифметику? Если я просто добавлю v ["alive"], он внезапно найдется и больше не будет нулевым. Надеюсь, это прояснит немного больше.