proper70 74 Опубликовано 10 Марта 2012 Здравствуйте! В силу того, что изготовление ОП-2 повело меня в неисследованные ранее дебри скриптов, которые не используются совсем в Солянке, а некоторые - даже у ПЫСов - то постоянные вылеты при экспериментировании вынудили меня переделать кейлоггер через pcall, дабы уменьшить количество загрузок и запусков игры. Не буду вдаваться в подробности - кому надо, тот поймет. Вот мой код из keylogger.script, который по нажатию клавиш F3 и F4 выполняет скритпы из двух разных файлов: -- Begin Proper70 -- тестовые функции function vk114() run_file("..\\gamedata\\scripts\\test.script") end function vk115() run_file("..\\gamedata\\scripts\\test2.script") end function run_file(file) local res, err = pcall(run_chunk, file) local console = get_console() if err then console:show() console:execute("load ~~~ "..tostring(err)) end console:execute("flush") end function run_chunk(file) local chunk, err = dofile(file) end -- End Proper70 Если при выполнении возникает ошибка - то автоматически открывается консоль и сообщение об ошибке выводится в консоль. Если все прошло успешно - то консоль не выводится. При этом никакого вылета не происходит - просто читаем сообщение об ошибке в консоли, правим, и экспериментируем дальше. К сожалению, вопреки описанию в документации LUA, отлавливаются не все ошибки. В частности, попытка заспавнить несуществующую секцию все равно приводит к вылету на рабочий стол. Но все ошибки, вызванные лишней или недостающей запятой, скобкой, кавычкой, несуществующей функцией, переменной, вылеты по nil_value и подобные отлавливаются на ура. И в главное меню выходить не нужно - все работает в живой игре. Это всяко лучше, чем вылет по каждому косяку. Так что пользуйтесь на здоровье) Поделиться этим сообщением Ссылка на сообщение