Ошибка при автообновлении скрипта

w99zzl1

Участник
Автор темы
109
10
Версия MoonLoader
.026-beta
Автообновление работает, ибо аналогичное автообновление присутствует в другом скрипте. Но в этом, почему то, скрипт вызывает множество "пустых" ошибок, и после долгих попыток обновиться, самп вылетает
Log:
[07:19:31.343763] (script)    ML-AutoReboot: Reloading "Battle-Pass-Info.lua"...
[07:19:31.359721] (system)    Battle-Pass-Info.lua: Script terminated. (11E2B9EC)
[07:19:31.360718] (system)    Loading script 'D:\SAMSA MEDIUM PC\moonloader\Battle-Pass-Info.lua'...
[07:19:31.360718] (debug)    New script: 1D03FA0C
[07:19:31.373685] (system)    Battle-Pass-Info.lua: Loaded successfully.
[07:19:32.041282] (system)    Battle-Pass-Info.lua: Script terminated. (1D03FA0C)
[07:19:32.042282] (system)    Loading script 'D:\SAMSA MEDIUM PC\moonloader\Battle-Pass-Info.lua'...
[07:19:32.042282] (debug)    New script: 1D03FB94
[07:19:32.055246] (system)    Battle-Pass-Info.lua: Loaded successfully.
[07:19:32.550877] (script)    ML-AutoReboot: Reloading "Battle-Pass-Info.lua"...
[07:19:32.554896] (system)    Battle-Pass-Info.lua: Script terminated. (1D03FB94)
[07:19:32.554896] (system)    Loading script 'D:\SAMSA MEDIUM PC\moonloader\Battle-Pass-Info.lua'...
[07:19:32.555862] (debug)    New script: 1D03FA0C
[07:19:32.568861] (system)    Battle-Pass-Info.lua: Loaded successfully.
[07:19:33.067916] (error)    Battle-Pass-Info.lua: error in error handling
[07:19:33.067916] (error)    Battle-Pass-Info.lua: Script died due to an error. (1D03FA0C)
При условии, что оба скрипта (старая и новая версия) работают нормально (если убрать из кода автообновление)

Вот код автообновления:

Lua:
require "lib.sampfuncs"
local moonloader = require('moonloader')
local sampev = require 'lib.samp.events'
local requests = require('requests')
local encoding = require 'encoding'

-- Ссылка на файл обновлений
local raw = 'тут рабочая ссылка, просто не знаю, можно ли сюда отправлять))))'

function update()
    local dlstatus = moonloader.download_status
    local f = {}

    function f:getLastVersion()
        local response = requests.get(raw)
        if response.status_code == 200 then
            return decodeJson(response.text)['last']
        else
            return 'UNKNOWN'
        end
    end

    function f:download()
        local response = requests.get(raw)
        if response.status_code == 200 then
            downloadUrlToFile(decodeJson(response.text)['url'], thisScript().path, function(id, status)
                if status == dlstatus.STATUSEX_ENDDOWNLOAD then
                    sampAddChatMessage('Скрипт обновлен, перезагрузка...', -1)
                    thisScript():reload()
                end
            end)
        else
            sampAddChatMessage('Ошибка: невозможно обновить скрипт. Код: '..response.status_code, -1)
        end
    end

    return f
end

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("[Battle Pass Info]: {FFFFFF}Battle Pass Info 2 запущен успешно. Активация: {87CEFA}/mn - 8. {FFFFFF}Разработчик - {87CEFA}Arseniy Samsonov", 0x40E0D0)
    -- Проверка версии
    local updater = update()
    local lastver = updater:getLastVersion()
    sampAddChatMessage('Скрипт загружен, версия: '..lastver, -1)

    if thisScript().version ~= lastver then
        sampAddChatMessage('[Battle Pass Info] {FFFFFF}Доступно обновление {87CEFA}('..thisScript().version..' -> '..lastver..'). Скачиваю обновление...', 0x40E0D0)
        updater:download()
    end

    while true do
        wait(0)
    end
end