Гайд Автообновление скрипта

Sanurial

Участник
Автор темы
80
12
Вам нужен свой сайт.

Шаг 1: Создать файл json на сайте Создайте файл json на своем сайте, который будет содержать информацию о текущей версии вашего скрипта и ссылку на файл с новой версией:
JSON:
{
  "current_version": "1.0",
  "update_url": "https://example.com/script_v2.lua"
}

Шаг 2: Добавить в свой скрипт следующий код:
Проверка и обновление:
require "moonloader"
local requests = require("requests")
local json = require("json")

local json_url = "https://example.com/version.json"
local my_script_version = "1.0.0"
local download_url = ""

function check_for_updates()
    local response = requests.get(json_url)
    if response.status_code == 200 then
        local version_info = json.decode(response.text)
        if version_info.latest_version ~= nil and version_info.download_url ~= nil then
            if version_info.latest_version ~= my_script_version then
                sampAddChatMessage("[MyScript] Доступно обновление! Последняя версия: " .. version_info.latest_version, 0xFFFFFF)
                sampAddChatMessage("[MyScript] Для загрузки новой версии используйте команду /downloadupdate", 0xFFFFFF)
                download_url = version_info.download_url
            else
                sampAddChatMessage("[MyScript] У вас установлена последняя версия.", 0xFFFFFF)
            end
        else
            sampAddChatMessage("[MyScript] Неверный формат файла версии", 0xFF0000)
        end
    else
        sampAddChatMessage("[MyScript] Невозможно получить информацию о последней версии.", 0xFF0000)
    end
end

function download_update()
    if download_url ~= "" then
        local response = requests.get(download_url)
        if response.status_code == 200 then
            local file = io.open("moonloader\\MyScript.lua", "w")
            file:write(response.text)
            file:close()
            sampAddChatMessage("[MyScript] Новая версия успешно загружена. Перезапустите скрипт для обновления.", 0xFFFFFF)
        else
            sampAddChatMessage("[MyScript] Невозможно загрузить новую версию.", 0xFF0000)
        end
    else
        sampAddChatMessage("[MyScript] Новая версия не обнаружена. Проверьте доступность обновления командой /checkupdate", 0xFFFFFF)
    end
end

function main()
    sampRegisterChatCommand("checkupdate", check_for_updates)
    sampRegisterChatCommand("downloadupdate", download_update)
end

Работоспособность проверял на локальном сайте, через OpenServer, работало корректно.
 
Последнее редактирование:

Vespan

Чешский луашер
Проверенный
2,119
1,717
Вам нужен свой сайт.

Шаг 1: Создать файл json на сайте Создайте файл json на своем сайте, который будет содержать информацию о текущей версии вашего скрипта и ссылку на файл с новой версией:
JSON:
{
  "current_version": "1.0",
  "update_url": "https://example.com/script_v2.lua"
}

Шаг 2: Добавить в свой скрипт следующий код:
Проверка новой версии скрипта:
local requests = require('requests')
local json = require('json')

-- URL файла json на сайте
local json_url = "https://example.com/version.json"

-- Функция для проверки наличия обновлений
local function check_for_updates()
    local response = requests.get(json_url)
    if response.status_code == 200 then
        local data = json.decode(response.text)
        local current_version = data.current_version
        local update_url = data.update_url
        if current_version ~= nil and update_url ~= nil and current_version ~= my_script_version then
            print("Доступна новая версия скрипта: " .. current_version)
        end
    end
end

-- Проверять наличие обновлений каждые 5 минут
while true do
    check_for_updates()
    os.sleep(300)
end

Работоспособность проверял на локальном сайте, через OpenServer, работало корректно.
Большая ошибка ставить проверять обновление в беск.цыкл ибо через requests игра подвисает
 
  • Нравится
Реакции: whyega52

Vespan

Чешский луашер
Проверенный
2,119
1,717
Вам нужен свой сайт
Github
Ради скрипта я бы создавал сайт ну да
Да и подобная тема есть об авто обновлении

 
  • Нравится
Реакции: Sanurial

Sanurial

Участник
Автор темы
80
12
Github
Ради скрипта я бы создавал сайт ну да
Да и подобная тема есть об авто обновлении

Подойдёт для тех у кого имеется/планируется свой сайт. Как в моем случае, я только планирую сайт и мне пригодится этот код
 

Vespan

Чешский луашер
Проверенный
2,119
1,717
Подойдёт для тех у кого имеется/планируется свой сайт. Как в моем случае, я только планирую сайт и мне пригодится этот код
получение с github raw и с твоего сайта текст - один и тот же
В твоем коде нет ничего особенного, только не обновляется а просто пишет что обновление
И где тут "автообновление"?
 

Sanurial

Участник
Автор темы
80
12
получение с github raw и с твоего сайта текст - один и тот же
В твоем коде нет ничего особенного, только не обновляется а просто пишет что обновление
И где тут "автообновление"?
Обновил код, добавил автообновление
 

uvie

Известный
267
54
У меня есть discord-скрипт, где он показывает, подключается ли игрок / отключается от сервера, но вы должны быть на сервере ВСЕГДА. можно ли сделать host-simple для этого? и не находиться на сервере и не видеть, как любой подключающийся / отключающийся игрок погибает?