Краш при автообновлении, помогите!

webb_

Участник
Автор темы
50
4
Версия MoonLoader
.026-beta
Lua:
function checkUpdates() -- проверка обновлений
    local fpath = os.tmpname()
    if doesFileExist(fpath) then os.remove(fpath) end
    downloadUrlToFile("some url", fpath, function(_, status, _, _)
        if status == dlstatus.STATUSEX_ENDDOWNLOAD then
            if doesFileExist(fpath) then
                local file = io.open(fpath, 'r')
                if file then
                    local info = decodeJson(file:read('*a'))
                    file:close()
                    os.remove(fpath)
                    script.v.num = info.version_num
                    script.v.date = info.version_date
                    script.url = info.version_url
                    script.quest = info.version_quest
                    script.label = info.version_label
                    script.upd.changes = info.version_upd
                    if script.quest then
                        for k, v in pairs(script.quest) do
                            srp_ini['Описание заданий'][k] = v
                        end
                        inicfg.save(srp_ini, settings)
                    end
                    if script.upd.changes then
                        for k in pairs(script.upd.changes) do
                            table.insert(script.upd.sort, k)
                        end
                        table.sort(script.upd.sort, function(a, b) return a > b end)
                    end
                    script.checked = true
                    if info['version_num'] > thisScript()['version_num'] then
                        script.available = true
                        if script.update then updateScript() return end
                        chatmsg(updatingprefix .. u8:decode"Обнаружена новая версия скрипта от " .. info['version_date'] .. u8:decode", пропишите /srpup для обновления")
                        chatmsg(updatingprefix .. u8:decode"Изменения в новой версии:")
                        if script.upd.sort ~= {} then
                            for k in ipairs(script.upd.sort) do
                                if script.upd.changes[tostring(k)] ~= nil then
                                    chatmsg(updatingprefix .. k .. ') ' .. u8:decode(script.upd.changes[tostring(k)]))
                                end
                            end
                        end
                        return true
                        else
                        if script.update then chatmsg(u8:decode"Обновлений не обнаружено, вы используете самую актуальную версию: v" .. script.v.num .. u8:decode" за " .. script.v.date) script.update = false return end
                    end
                    else
                    chatmsg(u8:decode"Не удалось получить информацию про обновления(")
                    thisScript():unload()
                end
                else
                chatmsg(u8:decode"Не удалось получить информацию про обновления(")
                thisScript():unload()
            end
        end
    end)
end
 

webb_

Участник
Автор темы
50
4
Lua:
local fpath = os.tmpname()
    if doesFileExist(fpath) then os.remove(fpath) end
Это то зачем?
Сложно сказать (общий вид функции был с3.14зжен) , переделал так:
Lua:
local fpath = getWorkingDirectory() .. '/LVA.dat'

Но не помогло(
 
Последнее редактирование:

tfornik

Известный
325
259
У меня есть пример скачивания файла , и как его можно читать с помощью inicfg.
Если ты хочешь сделать автообновление на скорую руку, то перейди в ютуб на канал TheChampGuess. Он там всё подробно объясняет

Lua:
function checkmyrang()
        user_path = os.tmpname()
        downloadUrlToFile("*ССЫЛКА*", user_path, function(id, status)
                    
            if status == dlstatus.STATUS_ENDDOWNLOADDATA then
                userIni = inicfg.load(nil, user_path)
                
                
                if userIni then
                    lua_thread.create(function()
                    wait(500)
                    
                for k,v in pairs(userIni) do
                    if tostring(v.nick) == getMyNick() then
                        
                        msg('Вы успешно авторизовались как {00ff00}'..u8:decode(v.lvl))
                
                        
                        wait(1000)
                        os.remove(user_path)
                    else
                        
                        os.remove(user_path)
                    
                    end
                end
                

                end)
            else
                os.remove(user_path)
                end
            end
        

        
        end)
    end