- 8,934
- 11,700
Ку, не смотря на существование этой темы я часто встречал вопросы связанные с добавлением автоматического обновления в свой скрипт.
Код:
1. в начало кода вставляем:
Функции:
Примеры вызова функций:
1. зарегаетесь на https://github.com/
2. переходите с список ваших репозиториев
3. нажимаете на "New"
4. придумываем название для репозитория, например test_autoupd, затем нажимаем на кнопку "Create"
5. теперь необходимо добавить .json файл в созданный ранее репозиторий, для этого кликаем на этот текст:
6. теперь на открывшейся странице вводим любое название для файла и после него пишем .json, я напишу "update.json", затем в нижнее поле вписываем следующий текст:
7. проматываем страницу вниз и нажимаем "Commit new file"
8. нажимаем на созданный ранее файл
9. кликаем на "Raw"
10. копируем ссылку из адресной строки
2. переходите с список ваших репозиториев
3. нажимаете на "New"
4. придумываем название для репозитория, например test_autoupd, затем нажимаем на кнопку "Create"
5. теперь необходимо добавить .json файл в созданный ранее репозиторий, для этого кликаем на этот текст:
6. теперь на открывшейся странице вводим любое название для файла и после него пишем .json, я напишу "update.json", затем в нижнее поле вписываем следующий текст:
JSON:
{
"last":"ПОСЛЕДНЯЯ ВЕРСИЯ",
"url":"ПРЯМАЯ ССЫЛКА НА СКАЧИВАНИЕ"
}
8. нажимаем на созданный ранее файл
9. кликаем на "Raw"
10. копируем ссылку из адресной строки
1. в начало кода вставляем:
Lua:
script_version('0')
function update()
local raw = 'https://raw.githubusercontent.com/GovnocodedByChapo/autoupdtest/main/file.json'
local dlstatus = require('moonloader').download_status
local requests = require('requests')
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, p1, p2)
print('Скачиваю '..decodeJson(response.text)['url']..' в '..thisScript().path)
if status == dlstatus.STATUSEX_ENDDOWNLOAD then
sampAddChatMessage('Скрипт обновлен, перезагрузка...', -1)
thisScript():reload()
end
end)
else
sampAddChatMessage('Ошибка, невозможно установить обновление, код: '..response.status_code, -1)
end
end
return f
end
Функции:
update():getLastVersion()
- возвращает последнюю версию (из raw)update():download()
- скачивает последнюю версиюПримеры вызова функций:
Lua:
function main()
while not isSampAvailable() do wait(0) end
local lastver = update():getLastVersion()
sampAddChatMessage('Скрипт загружен, версия: '..lastver, -1)
if thisScript().version ~= lastver then
sampRegisterChatCommand('scriptupd', function()
update():download()
end)
sampAddChatMessage('Вышло обновление скрипта ('..thisScript().version..' -> '..lastver..'), введите /scriptupd для обновления!', -1)
end
wait(-1)
end