подгрузка библиотек

Dewize

Известный
Автор темы
447
92
Версия MoonLoader
.027.0-preview
Есть крч вот такой код у меня.



123:
--===== [ Подключаем библиотеки ] =====--
local loadimgui, imgui = pcall(require, 'mimgui') -- Графический модуль mimgui.
local loadfa, fa = pcall(require, 'fAwesome6') -- Дополнение к графическому модулю с его помощью можно добавлять разного рода иконок.
local loadblur, blur = pcall(require, 'mimgui_blur') -- Добавляет возможность размывать определённую область.
local loadsampev, sampev = pcall(require, 'lib.samp.events') -- Этот модуль добавляет событийную обработку входящих и исходящих RakNet пакетов.
local dlstatus = require('moonloader').download_status -- Модуль предостовляет функционал для отслеживания статуса загруски файлов.
------------------------------

--===== [ Главная функция ] =====--
function main()
    --===== [ Проверки, перед окончательным запуском скрипта ] =====--

    --
    if not isSampLoaded() or not isSampfuncsLoaded() then return end -- Проверяем загрузку SAMP и SampFuncs
    while not isSampAvailable() do wait(100) end -- -- Ждём пока функция isSampAvailable() вернет true, после ставим задержку, что-бы игра не зависла.
    

    checkLibs()

    ------------------------------
        
    --===== [ Беск. Цикл. ] =====--
            --[[В нём обязательно должна присутствовать хотя-бы нулевая задержка, иначе игра попросту зависнет...
             ...объясняется это тем, что весь процесс игры выполняется последовательно, в том числе и скрипты MoonLoader-а.
             И поэтому периодически игре нужно давать возможность обработаться, делая паузу в каждом бесконечном цикле любого скрипта...
             ...нулевая задержка приостановит выполнение скрипта ровно на один кадр (задержка в main не оказывает влияния на выполнение остальных событий)]]
    while true do
        wait(0)


    end
    ---   
end
------------------------------       

-==[Проверка наличие библиотек]-==
function checkLibs()
       if not loadimgui then
        print("Mimgui не обнаружен! Выполняю процесс загрузки данной библиотеки.")
        -- тут downloadFile
    end
    if not loadfa then
        print(tag..'Fawesome6 не обнаружен! Выполняю процесс загрузки данной библиотеки.')
        -- тут downloadFile
    end   
end
------------------------------

-==[Упрощённая версия]-==
function downloadFile(name, path, link) -- Обязательно использовать в потоке!
    if not doesFileExist(path) then
        local At = os.time()
        downloadUrlToFile(link, path, function(id, status, p1, p2)
            if status == dlstatus.STATUS_ENDDOWNLOADDATA then
                print(tag..'Файл «'..name..'»'..green..' загружен!')
            end
            if status == dlstatus.STATUS_ENDDOWNLOAD and not doesFileExist(path) then
                sampfuncsLog('\n——————————————————————————————————————————————————————————————————————')
                sampfuncsLog(tag..'>> {FFFFFF} Не удалось скачать файл: «'..red..name..white..'»!')
                sampfuncsLog(tag..'>> {FFFFFF} Сообщить о проблеме: '..white..'vk.com/riko_costa')
                sampfuncsLog('——————————————————————————————————————————————————————————————————————\n')
            end
        end)
        while not doesFileExist(path) do wait(0)
            if os.time() - At >= 10 then
                print(tag..'>> {FFFFFF} Тайм-аут ожидания скачивания файла: «'..red..name..white..'»')
                break
            end
        end
    end
end
------------------------------


как сделать так, чтоб после закачки всех функция он перезапускал скрипт?
(если его ваще надо перезапускать, а если не надо то нет)
 

cord

Хватит спать на мне
Проверенный
571
470
Не ты не понял, я хочу чтоб скрипт перезапускался после того как всё скачал. То есть если если он ничего не скачевал то и перезагружать не надо
просто поставь эту функу на 56 строку, как тут
Lua:
--===== [ Подключаем библиотеки ] =====--
local loadimgui, imgui = pcall(require, 'mimgui') -- Графический модуль mimgui.
local loadfa, fa = pcall(require, 'fAwesome6') -- Дополнение к графическому модулю с его помощью можно добавлять разного рода иконок.
local loadblur, blur = pcall(require, 'mimgui_blur') -- Добавляет возможность размывать определённую область.
local loadsampev, sampev = pcall(require, 'lib.samp.events') -- Этот модуль добавляет событийную обработку входящих и исходящих RakNet пакетов.
local dlstatus = require('moonloader').download_status -- Модуль предостовляет функционал для отслеживания статуса загруски файлов.
------------------------------

--===== [ Главная функция ] =====--
function main()
    --===== [ Проверки, перед окончательным запуском скрипта ] =====--

    --
    if not isSampLoaded() or not isSampfuncsLoaded() then return end -- Проверяем загрузку SAMP и SampFuncs
    while not isSampAvailable() do wait(100) end -- -- Ждём пока функция isSampAvailable() вернет true, после ставим задержку, что-бы игра не зависла.
   

    checkLibs()

    ------------------------------
       
    --===== [ Беск. Цикл. ] =====--
            --[[В нём обязательно должна присутствовать хотя-бы нулевая задержка, иначе игра попросту зависнет...
             ...объясняется это тем, что весь процесс игры выполняется последовательно, в том числе и скрипты MoonLoader-а.
             И поэтому периодически игре нужно давать возможность обработаться, делая паузу в каждом бесконечном цикле любого скрипта...
             ...нулевая задержка приостановит выполнение скрипта ровно на один кадр (задержка в main не оказывает влияния на выполнение остальных событий)]]
    while true do
        wait(0)


    end
    ---  
end
------------------------------      

-==[Проверка наличие библиотек]-==
function checkLibs()
       if not loadimgui then
        print("Mimgui не обнаружен! Выполняю процесс загрузки данной библиотеки.")
        -- тут downloadFile
    end
    if not loadfa then
        print(tag..'Fawesome6 не обнаружен! Выполняю процесс загрузки данной библиотеки.')
        -- тут downloadFile
    end  
end
------------------------------

-==[Упрощённая версия]-==
function downloadFile(name, path, link) -- Обязательно использовать в потоке!
    if not doesFileExist(path) then
        local At = os.time()
        downloadUrlToFile(link, path, function(id, status, p1, p2)
            if status == dlstatus.STATUS_ENDDOWNLOADDATA then
                print(tag..'Файл «'..name..'»'..green..' загружен!')
                thisScript():reload()
            end
            if status == dlstatus.STATUS_ENDDOWNLOAD and not doesFileExist(path) then
                sampfuncsLog('\n——————————————————————————————————————————————————————————————————————')
                sampfuncsLog(tag..'>> {FFFFFF} Не удалось скачать файл: «'..red..name..white..'»!')
                sampfuncsLog(tag..'>> {FFFFFF} Сообщить о проблеме: '..white..'vk.com/riko_costa')
                sampfuncsLog('——————————————————————————————————————————————————————————————————————\n')
            end
        end)
        while not doesFileExist(path) do wait(0)
            if os.time() - At >= 10 then
                print(tag..'>> {FFFFFF} Тайм-аут ожидания скачивания файла: «'..red..name..white..'»')
                break
            end
        end
    end
end
------------------------------
 

Dewize

Известный
Автор темы
447
92
просто поставь эту функу на 56 строку, как тут
Lua:
--===== [ Подключаем библиотеки ] =====--
local loadimgui, imgui = pcall(require, 'mimgui') -- Графический модуль mimgui.
local loadfa, fa = pcall(require, 'fAwesome6') -- Дополнение к графическому модулю с его помощью можно добавлять разного рода иконок.
local loadblur, blur = pcall(require, 'mimgui_blur') -- Добавляет возможность размывать определённую область.
local loadsampev, sampev = pcall(require, 'lib.samp.events') -- Этот модуль добавляет событийную обработку входящих и исходящих RakNet пакетов.
local dlstatus = require('moonloader').download_status -- Модуль предостовляет функционал для отслеживания статуса загруски файлов.
------------------------------

--===== [ Главная функция ] =====--
function main()
    --===== [ Проверки, перед окончательным запуском скрипта ] =====--

    --
    if not isSampLoaded() or not isSampfuncsLoaded() then return end -- Проверяем загрузку SAMP и SampFuncs
    while not isSampAvailable() do wait(100) end -- -- Ждём пока функция isSampAvailable() вернет true, после ставим задержку, что-бы игра не зависла.
  

    checkLibs()

    ------------------------------
      
    --===== [ Беск. Цикл. ] =====--
            --[[В нём обязательно должна присутствовать хотя-бы нулевая задержка, иначе игра попросту зависнет...
             ...объясняется это тем, что весь процесс игры выполняется последовательно, в том числе и скрипты MoonLoader-а.
             И поэтому периодически игре нужно давать возможность обработаться, делая паузу в каждом бесконечном цикле любого скрипта...
             ...нулевая задержка приостановит выполнение скрипта ровно на один кадр (задержка в main не оказывает влияния на выполнение остальных событий)]]
    while true do
        wait(0)


    end
    --- 
end
------------------------------     

-==[Проверка наличие библиотек]-==
function checkLibs()
       if not loadimgui then
        print("Mimgui не обнаружен! Выполняю процесс загрузки данной библиотеки.")
        -- тут downloadFile
    end
    if not loadfa then
        print(tag..'Fawesome6 не обнаружен! Выполняю процесс загрузки данной библиотеки.')
        -- тут downloadFile
    end 
end
------------------------------

-==[Упрощённая версия]-==
function downloadFile(name, path, link) -- Обязательно использовать в потоке!
    if not doesFileExist(path) then
        local At = os.time()
        downloadUrlToFile(link, path, function(id, status, p1, p2)
            if status == dlstatus.STATUS_ENDDOWNLOADDATA then
                print(tag..'Файл «'..name..'»'..green..' загружен!')
                thisScript():reload()
            end
            if status == dlstatus.STATUS_ENDDOWNLOAD and not doesFileExist(path) then
                sampfuncsLog('\n——————————————————————————————————————————————————————————————————————')
                sampfuncsLog(tag..'>> {FFFFFF} Не удалось скачать файл: «'..red..name..white..'»!')
                sampfuncsLog(tag..'>> {FFFFFF} Сообщить о проблеме: '..white..'vk.com/riko_costa')
                sampfuncsLog('——————————————————————————————————————————————————————————————————————\n')
            end
        end)
        while not doesFileExist(path) do wait(0)
            if os.time() - At >= 10 then
                print(tag..'>> {FFFFFF} Тайм-аут ожидания скачивания файла: «'..red..name..white..'»')
                break
            end
        end
    end
end
------------------------------
Он тогда после каждого загруженого файла будет перезагружаться, а было бы круто если бы он сразу пачку скачал того чего надо и всё реалоад
 

Hinаta

Известный
778
362
Он тогда после каждого загруженого файла будет перезагружаться, а было бы круто если бы он сразу пачку скачал того чего надо и всё реалоад
Ну создай переменные для каждого файла, если все true - перезагрузка
 

Dewize

Известный
Автор темы
447
92
123:
function checkLibs()
    local reload_script = false
       if not loadimgui then
        print("Модуль Mimgui не обнаружен! Выполняю процесс загрузки данной библиотеки.")
        -- тута downloadUrlToFile
        local reload_script = true
    end
    if not loadfa then
        sampAddChatMessage(tag..'Модуль'..pink..' Fawesome6'..red..' не обнаружен'..white..'! Выполняю процесс загрузки данной библиотеки.', -1)
        downloadFile('fAwesome6', getWorkingDirectory()..'\\lib\\fAwesome6.lua', 'https://cdn.discordapp.com/attachments/1038436016954036254/1038436037279617024/fAwesome6.lua')
        local reload_script = true
    end   

    if reload_script then
        print('Все модули были успешно загружены, запускаю процесс перезагрузки скрипта!')
        thisScript():reload()
    end   
end

я написал что то такого, но он что то неработет