запуск скрипта

Tema05

Известный
Автор темы
1,442
401
Версия MoonLoader
.026-beta
Как можно 1 скриптом запустить другой? (если он крашнулся)
 
Решение
Lua:
function onScriptTerminate(script, quit)
    if not quit then
        if script.filename == 'скрипт.lua' then -- если имя файла скрипта == скрипт.lua
            script:reload()
        elseif script.name == 'тест' then -- если имя скрипта == тест (имя задается  функцией 'script_name'. Если имя не задано используется название файла)
            script:reload()
        end
    end
end

Tema05

Известный
Автор темы
1,442
401
Перезагрузит любой крашнувшийся скрипт (даже сам себя!)
Lua:
function onScriptTerminate(script, quit)
    if not quit then script:reload() end
end
И как мне с помощью этого перезагрузить другой нужный мне скрипт?
 

CaJlaT

Овощ
Модератор
2,806
2,607
И как мне с помощью этого перезагрузить другой нужный мне скрипт?
оно перезагрузит ЛЮБОЙ крашнувшийся скрипт, вот тебе готовый вариант, просто создай новый файл и вставь туда код

Lua:
function main()
    wait(-1)
end
function onScriptTerminate(script, quit)
    if not quit then script:reload() end
end
 

Tema05

Известный
Автор темы
1,442
401
оно перезагрузит ЛЮБОЙ крашнувшийся скрипт, вот тебе готовый вариант, просто создай новый файл и вставь туда код

Lua:
function main()
    wait(-1)
end
function onScriptTerminate(script, quit)
    if not quit then script:reload() end
end
Так мне как раз и не нужно любой, мне нужен конкретный.
 

neverlane

t.me/neverlane00
Друг
997
1,132
Lua:
function onScriptTerminate(script, quit)
    if not quit then
        if script.filename == 'скрипт.lua' then -- если имя файла скрипта == скрипт.lua
            script:reload()
        elseif script.name == 'тест' then -- если имя скрипта == тест (имя задается  функцией 'script_name'. Если имя не задано используется название файла)
            script:reload()
        end
    end
end
 

Tema05

Известный
Автор темы
1,442
401
Lua:
function onScriptTerminate(script, quit)
    if not quit then
        if script.filename == 'скрипт.lua' then -- если имя файла скрипта == скрипт.lua
            script:reload()
        elseif script.name == 'тест' then -- если имя скрипта == тест (имя задается  функцией 'script_name'. Если имя не задано используется название файла)
            script:reload()
        end
    end
end
А если скрипт лёг минут 5 назад и только сейчас его нужно воскресить?
 

CaJlaT

Овощ
Модератор
2,806
2,607
А если скрипт лёг минут 5 назад и только сейчас его нужно воскресить?
оно срабатывает как только скрипт отключается, т.е если он лёг 5 минутназад и функция не сработала, то так уже не получится, только если перезапустить ВСЕ скрипты
 

Tema05

Известный
Автор темы
1,442
401
оно срабатывает как только скрипт отключается, т.е если он лёг 5 минутназад и функция не сработала, то так уже не получится, только если перезапустить ВСЕ скрипты
Мне не нужно чтобы оно сработало сразу, только тогда когда это будет нужно.
 

asdzxcjqwe

¯\_(ツ)_/¯
Друг
621
705
Lua:
script.load("moonloader/filename.lua") -- запустить отдельно и всё
-- или
dofile("moonloader/filename.lua") -- загрузить и выполнить (таким образом можно перехватывать глобалки другого скрипта)
 
Последнее редактирование:

Tema05

Известный
Автор темы
1,442
401
Lua:
script.load("moonloader/filename.lua") -- запустить отдельно и всё
-- или
dofile("moonloader/filename.lua") -- загрузить и выполнить (таким образом можно перехватывать глобальные функции и переменные другого скрипта)
К сожалению этот вариант мне не очень подходит, так как он по имяни файла.
 

neverlane

t.me/neverlane00
Друг
997
1,132
К сожалению этот вариант мне не очень подходит, так как он по имяни файла.
Тогда записывай в таблицу значение script и когда надо перебирай таблицу и если значание в таблице.name == 'название скрипта' тогда перезагружай
 

Tema05

Известный
Автор темы
1,442
401
Тогда записывай в таблицу значение script и когда надо перебирай таблицу и если значание в таблице.name == 'название скрипта' тогда перезагружай
Ну я уже понял, просто я думал что это тип хендл скрипта и по нему нельзя получить имя.