Алеха, есть несколько направлений, в которые можно двигаться:
Писать скрипты в редакторах с проверкой синтаксиса, к примеру HoMM5 MapScriptsEditor. Он как минимум будет сразу же выдавать предупреждение на всякие мелкие опечатки, плюс автодополнение названий функций и подсказка по параметрам (это правда работает немного глючно).
Закомментируйте весь код скрипта, далее раскомментируйте по маленькому кусочку по несколько строк и проверяйте что он работает, или исправляйте его, пока не заработает и только потом переходите к следующему. То, что уже точно работает, можно помечать как-нибудь, чтобы в следующий раз не проверять снова.
Ставьте в коде тестовые отладочные сообщения, вида print('такая-то функция выполнилась'). По ним легко видно какой участок кода был выполнен, какой нет.
Особо удобная штука - отлаживать код не выходя из игры. Создаём в папке "путь_к_героям/data" txt файл в кодировке юникод и с расширением .lua, пишем в нем код, в котором не уверены, в конце файла можно добавить например print('script OK'), загружаем карту, открываем консоль, набираем doFile('название_файла.lua'). Если видим в консоли зеленое сообщение 'script OK', значит код рабочий, если нет - сворачиваем героев, колдуем над файлом, не забываем сохранить, возвращаемся к героям, в консоли вбиваем ту же команду (можно просто нажать кнопку вверх). Повторяем пока код не заработает.