Гайд [LUA] Событие при краше скрипта.

CoderKolaNedo

Участник
27
3
Приветствую уважаемые.
Данная тема создана для облегчения работы с ошибками в скриптах.
К сожалению не нашел на BlastHack гайд как это сделать. Это будет удобно, если вашим скриптом пользуются обычные люди, которые не знают даже что такое moonloader.log
Это будет напрочь упрощать задачу вашим пользователям, просто взял, заскринил, отправил.
Приступим.
ШАГ 1 - Начальная подготовка




В начале скрипта мы вводим имя скрипту, дабы было легче работать.
Lua:
script_name("Имя скрипта")
Если вы хотите скрыть лишние файлы, вы можете создать папку в папке config.
Делается это следующим образом:
Lua:
--в main
if not doesDirectoryExist(getWorkingDirectory()..'\\config\\Имя папки') then
        sampAddChatMessage('Скрипт не увидел рабочей папки. Создаем папку..',0x00BFFF)
        createDirectory(getWorkingDirectory()..'\\config\\Имя папки') --создаем папку с вашим именем в папке config
        wait(500)
        downloadUrlToFile('Прямая ссылка на скачивание файла', getWorkingDirectory()..'\\config\\Имя папки\\errors.lua'--[[Путь сохранения]], function (id, status, p1, p2)
            if status == dlstatus.STATUSEX_ENDDOWNLOAD then
                sampAddChatMessage('Скачивание файла ошибок успешно завершено.',0x00BFFF)
            end
        end)--качаем файл по прямой ссылке, сохраняем в вашу созданную папку.
        errors = script.load(getWorkingDirectory()..'\\config\\Имя папки\\errors.lua')
    end
Созрел вопрос. Что за файл мы качаем?
К сожалению я не знаю как работать с этим прямо в одном файле.
Если бы я вставил код в один файл - он бы работал и на обычную перезагрузку скрипта.
ШАГ 2 - Подгрузка файла.




Теперь нам надо загрузить созданный нами файл, если директория существует.
Залазим выше, прямо к названию вашего скрипта
Lua:
if doesDirectoryExist(getWorkingDirectory()..'\\config\\Название папки') then errors = script.load(getWorkingDirectory()..'\\config\\Название папки\\errors.lua') end
Подгружаем ваш скрипт.
Это можно делать прямо после имени скрипта, но обязательно выше всего кода!! Это важно.
Если вы укажите загрузку файла ниже, скрипт может крашнуть выше, и тогда ошибка не выведется, т.к. файл с ошибками не был загружен!
ШАГ 3 - Основное




Что за скрипт? Все просто.
Данный скрипт имеет всего 6 строчек кода, он отвечает за появление диалога, когда срабатывает ошибка именно в вашем скрипте.

Lua:
require 'lib.sampfuncs'
function onSystemMessage(msg, type, script)
if msg:find('Имя скрипта%.luac?:%d+:.+') and type == 3 then
        sampShowDialog(252,'Что-то пошло не так','{FFFFFF}Произошла непредусмотренная ошибка в скрипте {00BFFF}Имя вашего скрипта{FFFFFF}.\nЕсли данная ошибка повторяется отправьте скриншот данного окна в ВК создателя {00BFFF}vk.com/Ссылка на вк{FFFFFF}\n\n'..msg,'Закрыть',_,0)
    end
end
Вместо диалогов вы можете указать любое другое действие.
Теперь перейдем в Git Hub'у.

Что за ссылки были выше? Все верно, на загрузку этого скрипта в 6 строк.
Диалог вы можете сами редактировать под себя.
Думаю смысла нет рассказывать как загружать и получать прямую ссылку с Git Hub, об этом есть полно гайдов в интернете.
В итоге мы получаем красивый диалог с ошибкой внутри когда скрипт крашится.
Посмотреть вложение 188291
Жду вашей критики, мне будет полезно.
Хорошая идея,но твоя ошибка то что для новичков ты сделал что то непонятное. Добавь инициализацию MoonLoader. И я бы сделал уведомление в телеграмм, так чтобы человекам не мучится.

Посмотреть вложение 188292
Посмотреть вложение 188293
очень радуют таланты на бластхак кидс, скажи пожалуйста, зачем require('lib.moonloader') в скрипте, если ты все равно пишешь type == 3 вместо использования константы из этого самого moonloader.lua?
Посмотреть вложение 188294
А зачем ты собственно юзаешь два if? Нужно сделать по принципу if - elseif - end
 
Последнее редактирование:

CoderKolaNedo

Участник
27
3
Автор, вопрос таков. Как ты взял STATUSEX_ENDDOWNLOAD, если тебе нужно импортировать библиотеку MoonLoader. Распиши подробнее, и какую библиотеку нужно брать для этой переменной.