Это из-за вызова коллбека с параметром. По-умолчанию скриптовая машина просто добавляет две скобки (и параметры, в некоторых случаях) к имени и исполняет получившийся код. Если же вызывать коллбек с пользовательскими параметрами, то исполняемый код выходит каким-то таким:то есть после вызова функции Dragon будет еще вызван результат, возвращенный из нее, а так как функция ничего не возвращает, то и получается ошибка попытки вызова nil.'Dragon("'..hero..'")()'
Лечится добавлением двух минусовтогда исполняемый код будет иметь вид:QuestionBox(path.."tom2.txt",'Dragon("'..hero..'")--')то есть, лишние скобки будут закомментированы.'Dragon("'..hero..'")--()'
Помогло, спасибо