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

z1qqurat

Участник
Автор темы
60
13
Версия MoonLoader
.026-beta
В общем пытаюсь сделать норм автообновление. Пробовал https://www.blast.hk/threads/77735/. Но я хочу юзать json вместо ini и у меня часто(почти всегда) крашит скрипт при входе в игру). Юзаю гитхаб для хранения файлов скрипта

main:
  if cfg.settings.autoUpdate then
    downloadUrlToFile(UPDATE_URL, UPDATE_PATH, function(id, status)
      if status == dlstatus.STATUS_ENDDOWNLOADDATA then
        local updateJson = readJSON(UPDATE_PATH)
            if updateJson.version > tonumber(thisScript().version) then
                notf("Update detected. Your version: "..thisScript().version.." | New version: "..updateJson.version)
              isUpdateAvailable = true
            end
      end
    end)
  end

  while true do
    wait(0)
    if cfg.settings.autoUpdate then
      if isUpdateAvailable then
        downloadUrlToFile(SCRIPT_URL, SCRIPT_PATH, function(id, status)
          if status == dlstatus.STATUS_ENDDOWNLOADDATA then
            notf("Script was successfully updated")
            thisScript():reload()
          end
        end)
        break;
      end
    end
  end
readJSON:
function readJSON(path)
  local updateFile
  local waiter = os.time() + 10
  repeat
    updateFile = io.open(path, "r")
  until updateFile == nil or waiter >= os.time()
  local rawJson = updateFile:read("*a")
  local json = decodeJson(rawJson)
  updateFile:close()
  os.remove(path)
  return json
end
1690042120601.png

1690042137953.png


Краш происходит на 304 строке с таким логом:
attempt to index a nil value
AdBlock: Script died due to an error. (09D50EB4)

Уже много времени пытаюсь это пофиксить но никак не получается. local waiter и repeat в readJSON добавил потому что скрипт падал, думал это исправит ситуацию. Сам прикол в том что когда скрипт падает на этом моменте, то потом в папке муна таки есть файл с версией скрипта для проверки обновления
 
Последнее редактирование: