Исходник Гайд Автообновление с помощью requests

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Автор темы
Друг
8,778
11,223
Ку, не смотря на существование этой темы я часто встречал вопросы связанные с добавлением автоматического обновления в свой скрипт.
1. зарегаетесь на https://github.com/
2. переходите с список ваших репозиториев
1640526473028.png

3. нажимаете на "New"
1640526500001.png

4. придумываем название для репозитория, например test_autoupd, затем нажимаем на кнопку "Create"
1640526561362.png

5. теперь необходимо добавить .json файл в созданный ранее репозиторий, для этого кликаем на этот текст:
1640526607153.png

6. теперь на открывшейся странице вводим любое название для файла и после него пишем .json, я напишу "update.json", затем в нижнее поле вписываем следующий текст:
JSON:
{
  "last":"ПОСЛЕДНЯЯ ВЕРСИЯ",
  "url":"ПРЯМАЯ ССЫЛКА НА СКАЧИВАНИЕ"
}
7. проматываем страницу вниз и нажимаем "Commit new file"
1640526742999.png

8. нажимаем на созданный ранее файл
1640526779900.png

9. кликаем на "Raw"
1640526806234.png

10. копируем ссылку из адресной строки
1640526849576.png
Код:
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
 

shinoa

Известный
298
207
Ждём вопросов: "Почему у меня версия 'альфа1', а в игре пишет каракули?"
 
  • Bug
Реакции: Azenizzka

b0ga9

Новичок
14
0
Ку, не смотря на существование этой темы я часто встречал вопросы связанные с добавлением автоматического обновления в свой скрипт.
1. зарегаетесь на https://github.com/
2. переходите с список ваших репозиториев
Посмотреть вложение 128431
3. нажимаете на "New"
Посмотреть вложение 128432
4. придумываем название для репозитория, например test_autoupd, затем нажимаем на кнопку "Create"
Посмотреть вложение 128433
5. теперь необходимо добавить .json файл в созданный ранее репозиторий, для этого кликаем на этот текст:
Посмотреть вложение 128440
6. теперь на открывшейся странице вводим любое название для файла и после него пишем .json, я напишу "update.json", затем в нижнее поле вписываем следующий текст:
JSON:
{
  "last":"ПОСЛЕДНЯЯ ВЕРСИЯ",
  "url":"ПРЯМАЯ ССЫЛКА НА СКАЧИВАНИЕ"
}
7. проматываем страницу вниз и нажимаем "Commit new file"
Посмотреть вложение 128441
8. нажимаем на созданный ранее файл
Посмотреть вложение 128442
9. кликаем на "Raw"
Посмотреть вложение 128443
10. копируем ссылку из адресной строки
Посмотреть вложение 128445
Код:
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
Привет, как можно получить прямую ссылку на свой файл?

Скорей, через что ты получил?
 
Последнее редактирование: