Помогите со скриптом для RakSamp

matthewme

Новичок
Автор темы
6
0
У меня есть код, который при определенном тексте нажимает альт в цикле, мне нужно сделать чтобы после спавна или перезахода в игру он больше не нажимал альт, как это сделать?
Screenshot_2023-01-23-19-35-34-538_ru.yandex.mail.png
 
Решение
Lua:
function sampev.onServerMessage(color, text)
    if text:find('флуд альт') then
        floodAltOn()
    end
       if text:find('выкл альт') then
              floodAltOff()
        end
    end
end

function floodAltOn()
    flood_alt = true
end

function floodAltOff()
    flood_alt = false
end

local last_alt = os.time()

function onUpdate()
    Tasking.tick()
    if flood_alt and os.time() - last_alt > 1 then
        sendKey(1024)
        last_alt = os.time()
    end
end
Это что за полудохлые костыли?


Если тебе надо, чтобы удалялась конкретная таска и ты не знаешь её состояние (активна, не существует или неактивна), то можешь делать по примеру ниже
Не проверял, но должно нормально работать
Lua:
local your_task = nil...

Ulong

Диванный критик
Проверенный
59
321
Lua:
function sampev.onServerMessage(color, text)
    if text:find('флуд альт') then
        floodAltOn()
    end
       if text:find('выкл альт') then
              floodAltOff()
        end
    end
end

function floodAltOn()
    flood_alt = true
end

function floodAltOff()
    flood_alt = false
end

local last_alt = os.time()

function onUpdate()
    Tasking.tick()
    if flood_alt and os.time() - last_alt > 1 then
        sendKey(1024)
        last_alt = os.time()
    end
end
Это что за полудохлые костыли?


Если тебе надо, чтобы удалялась конкретная таска и ты не знаешь её состояние (активна, не существует или неактивна), то можешь делать по примеру ниже
Не проверял, но должно нормально работать
Lua:
local your_task = nil

function GetTaskStatus(task)
    --[[
      true - таска активна
      false - не существует или неактивна
    --]]
    return task ~= nil and task:isAlive() or false
end

function sampev.onServerMessage(color, text)
    if text:find('Вы начали работу') then
        if not GetTaskStatus(your_task) then -- проверяем нет ли ещё одного живого таска your_task
            your_task = newTask(function()
                while true do
                    wait(5000)
                    sendTable(sendAlt)
                    sendKey(1024)
                end
            end)
        end
    end
end

function sampev.onSendSpawn() -- событие спавна
    if GetTaskStatus(your_task) then your_task:kill() end -- проверяем активна ли таска your_task. если да - удаляем
end

А если тебе всё равно, и ты можешь себе позволить удалять сразу все созданные ранее таски, то просто используй в событии спавна функцию clearTasks(). Например:
Lua:
function sampev.onSendSpawn()
    clearTasks()
end