Активация/деактивация функции LUA

SamuelGoldie

Участник
Автор темы
73
7
Версия MoonLoader
.026-beta
Подскажите пожалуйста как сделать активацию/деактивацию именно на эту функцию, чтобы когда скрипт был деактивирован при вводе команды писало что его нужно активировать.

lua:
function mpfinish(args)
    local event, id, prize = args:match('(.+) (%d+) (.+)')
    if id and event and prize then
        lua_thread.create(function()
            notf.addNotification(u8('Вы успешно объявили победителя мероприятия '..event..'.'), 4, 1)
            wait(1000)
            sampSendChat(string.format('/esay Победителем мероприятия "%s" стал — %s [%s ID], поздравляем!', event, sampGetPlayerNickname(id), id))
            sampSendChat(string.format('/pay %s %s', sampGetPlayerNickname(id), prize))
            wait(1000)
            makeScreenshot()
        end)
    else
        sampAddChatMessage('{800080}EventHelper{FFFFFF}: Введите {800080}/mpfinish {FFFFFF}[НАЗВАНИЕ МП] [ID] [ПРИЗ]', -1)
    end
end
 

BEEZZYY

Новичок
9
0
lua:
local isScriptActive = true  -- начальное состояние активации скрипта

function toggleScriptActivation()
    isScriptActive = not isScriptActive
    sampAddChatMessage(isScriptActive and "Скрипт активирован" or "Скрипт деактивирован", -1)
end

function mpfinish(args)
    if not isScriptActive then
        sampAddChatMessage("Для использования этой команды нужно активировать скрипт. Напишите '/toggle' для этого.", -1)
        return
    end

    -- ваш код функции mpfinish
end

function sampOnChatCommand(command)
    if command == "/toggle" then
        toggleScriptActivation()
    end
end
 

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
Lua:
-- В начале
local activate = false

-- В main()
sampRegisterChatCommand("act", function()
    activate = not activate
    sampAddChatMessage(activate and "ON" or "OFF", -1)
end)

--
function mpfinish(args)
    if activate then
        local event, id, prize = args:match('(.+) (%d+) (.+)')
        if id and event and prize then
            lua_thread.create(function()
                notf.addNotification(u8('Вы успешно объявили победителя мероприятия '..event..'.'), 4, 1)
                wait(1000)
                sampSendChat(string.format('/esay Победителем мероприятия "%s" стал — %s [%s ID], поздравляем!', event, sampGetPlayerNickname(id), id))
                sampSendChat(string.format('/pay %s %s', sampGetPlayerNickname(id), prize))
                wait(1000)
                makeScreenshot()
            end)
        else
            sampAddChatMessage('{800080}EventHelper{FFFFFF}: Введите {800080}/mpfinish {FFFFFF}[НАЗВАНИЕ МП] [ID] [ПРИЗ]', -1)
        end
    else
        sampAddChatMessage("Вам нужно активировать скрипт с помощью /act", -1)
    end
end

Можешь ещё такой вариант попробовать, если сработает. Меньше путаницы и if/else будет.
Lua:
-- В начале
local activate = false

-- В main()
sampRegisterChatCommand("act", function()
    activate = not activate
    sampAddChatMessage(activate and "ON" or "OFF", -1)
end)

--
function mpfinish(args)
    if not activate then
        return sampAddChatMessage("Вам нужно активировать скрипт с помощью /act", -1)
    end
    local event, id, prize = args:match('(.+) (%d+) (.+)')
    if id and event and prize then
        lua_thread.create(function()
            notf.addNotification(u8('Вы успешно объявили победителя мероприятия '..event..'.'), 4, 1)
            wait(1000)
            sampSendChat(string.format('/esay Победителем мероприятия "%s" стал — %s [%s ID], поздравляем!', event, sampGetPlayerNickname(id), id))
            sampSendChat(string.format('/pay %s %s', sampGetPlayerNickname(id), prize))
            wait(1000)
            makeScreenshot()
        end)
    else
        sampAddChatMessage('{800080}EventHelper{FFFFFF}: Введите {800080}/mpfinish {FFFFFF}[НАЗВАНИЕ МП] [ID] [ПРИЗ]', -1)
    end
end