Вопрос здесь в том, что вы пытаетесь напечатать? Вы хотите, чтобы это просто свалило со стола? Если вы хотите, чтобы функция рекурсивно искала таблицу и распечатывала ее, это более сложно, чем то, что вы получили, просто из-за природы рекурсии.
Кроме того, причина, по которой dialogueMode == Dialoguemode.uniqueDialog
возвращает ложь, заключается в том, что dialogueMode
было присвоено значение k
, которое является строкой "uniqueDialog"
.
Dialoguemode.uniqueDialog
- это полная таблица uniqueDialog
, тогда как dialogueMode
- это просто ключ, имя таблицы, преобразованное в строку.
Код может выглядеть так:
--Not my code, credit here: https://gist.github.com/hashmal/874792
function tprint(tbl, indent)
if not indent then indent = 0 end
for k, v in pairs(tbl) do
formatting = string.rep(" ", indent) .. k .. ": "
if type(v) == "table" then
print(formatting)
tprint(v, indent+1)
else
print(formatting .. v)
end
end
end
tprint(DialogueMode)
Обратите внимание, что это может работать не во всех случаях, но для вашей таблицы он удаляет всю таблицу успешно. Если вы столкнетесь с ошибками, проверьте исправление на github (или исправьте это самостоятельно: D)
Вот вывод, который я получаю при использовании таблицы DialogueMode:
pissed:
1: 6
2: 0
rumors:
1: 4
2: 3
general:
1: 1
2: 2
ignore:
1: 7
2: 0
annoyed:
1: 5
2: 0
job:
1: 3
2: 5
uniqueDialogue:
1: 0
2: 3
РЕДАКТИРОВАТЬ: Не уверен, что именно вы ищете, это может быть не так, но, надеюсь, это поможет вам в некотором роде.