Помощь с Lua

StalnojHrundel

Новичок
Автор темы
8
1
Версия MoonLoader
Другое
Помогите пожалуйста, как сделать так, что бы после ввода команды в чат в нем появлялось сообщение через 60 секунд

Хочу просто сделать что то на типе drugtimer, пытался сделать считывание команды (/usedrugs) после ожидание 60 секунд и вывод в чат что то типо (Используй), Но я ещё слишком мало понимаю в этом, не получилось. Если вам не сложно, подскажите пожалуйста
 
Последнее редактирование:
Решение
Lua:
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local lastUse = 0
local cooldown = 60000 -- 60 секунд

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage("{00FF00}[Usedrugs Helper] {FFFFFF}Скрипт загружен. Нажми Z+1 для использования.", -1)

    while true do
        wait(0)

        if isKeyDown(vkeys.VK_Z) and wasKeyPressed(vkeys.VK_1) then
            local timeNow = os.clock() * 1000
            if timeNow - lastUse >= cooldown then
                sampSendChat("/usedrugs 10")
                lastUse = timeNow
                lua_thread.create(function()
                    wait(cooldown)
                    sampAddChatMessage("{00FF00}[Usedrugs Helper] {FFFFFF}КД прошло...

CowBoy337

Известный
30
24
Ничего не понял, но очень интересно
Ты ведь можешь через биндер поставить задержку в минуту и все

Ничего не понял, но очень интересно
Ты ведь можешь через биндер поставить задержку в минуту и все
Создать бинд, приявзять его к команде /usedrugs и поставить задержку 60 секунд

Или напиши подробнее что тебе нужно
 

StalnojHrundel

Новичок
Автор темы
8
1
Ничего не понял, но очень интересно
Ты ведь можешь через биндер поставить задержку в минуту и все


Создать бинд, приявзять его к команде /usedrugs и поставить задержку 60 секунд

Или напиши подробнее что тебе нужно
Смотри, я хотел сделать свой драг таймер, по сути да, как ты и сказал, можно и так, я пробовал делать, что бы сччитывалась команда, но я наверное не то вводил, пробовал по нажатию кнопок, тех же, что и у меня бинд на юзатие нарко, но тоже не получилось. Я думаю, что я не правильно указал задержку, вот наверное нужна помощь все таки с указанием задержки между отправлением сообщения в чат, ну или как считать команду

Смотри, я хотел сделать свой драг таймер, по сути да, как ты и сказал, можно и так, я пробовал делать, что бы сччитывалась команда, но я наверное не то вводил, пробовал по нажатию кнопок, тех же, что и у меня бинд на юзатие нарко, но тоже не получилось. Я думаю, что я не правильно указал задержку, вот наверное нужна помощь все таки с указанием задержки между отправлением сообщения в чат, ну или как считать команду
Наверное все таки по вводу команды не получится, потому что у меня бинд, а так наверное скрипт не увидит ввод команды, короче фигню очередную придумал, ну ладно
 

CowBoy337

Известный
30
24
Смотри, я хотел сделать свой драг таймер, по сути да, как ты и сказал, можно и так, я пробовал делать, что бы сччитывалась команда, но я наверное не то вводил, пробовал по нажатию кнопок, тех же, что и у меня бинд на юзатие нарко, но тоже не получилось. Я думаю, что я не правильно указал задержку, вот наверное нужна помощь все таки с указанием задержки между отправлением сообщения в чат, ну или как считать команду


Наверное все таки по вводу команды не получится, потому что у меня бинд, а так наверное скрипт не увидит ввод команды, короче фигню очередную придумал, ну ладно
Напиши подробнее что тебе нужно и я попробую помочь
1) по нажатию клавиши будет юзаться нарко моментально или с задержкой 60 секунд после нажатия
2) то же самое, но через команду в чат
 

StalnojHrundel

Новичок
Автор темы
8
1
Напиши подробнее что тебе нужно и я попробую помочь
1) по нажатию клавиши будет юзаться нарко моментально или с задержкой 60 секунд после нажатия
2) то же самое, но через команду в чат
Если по нажатию клавиши, то мне надо, что бы использовалось нарко, после этого, через 60 секунд, в чате выводилось сообщение, что то на типе Юзай, именно в чате, как например - скрипт загружен
Нарко 10 штук, на кнопки Z+1
Если получится буду очень сильно благодарен.
 

dmitry.karle

Известный
410
108
Помогите пожалуйста, как сделать так, что бы после ввода команды в чат в нем появлялось сообщение через 60 секунд

Хочу просто сделать что то на типе drugtimer, пытался сделать считывание команды (/usedrugs) после ожидание 60 секунд и вывод в чат что то типо (Используй), Но я ещё слишком мало понимаю в этом, не получилось. Если вам не сложно, подскажите пожалуйста
после активации команды запускай таймер на 60 секунд, можешь выводить таймер на экран с помощью renderFontDrawText(), можешь за 5-10 секунд предупреждение в чате вывести через sampAddChatMessage() о том, что скоро нужно использовать вновь. Что-то типа такого


Lua:
local drugTimer = nil
local drugTimeLeft = 0

require('lib.samp.events').onSendCommand = function(cmd)
    if cmd:match('/usedrugs') then
        if drugTimer then
            sampAddChatMessage(drugTimeLeft .. " секунд", -1)
            return false
        end
        drugTimeLeft = 60
        sampAddChatMessage("Эффект в 60 секу", -1)
        drugTimer = lua_thread.create(function()
            while drugTimeLeft > 0 do
                wait(1000)
                drugTimeLeft = drugTimeLeft - 1
                if drugTimeLeft == 10 then
                    sampAddChatMessage("10 секунд", -1)
                elseif drugTimeLeft == 5 then
                    sampAddChatMessage("Юз /usedrugs в 5 сек", -1)
                end
            end
            sampAddChatMessage("Используй /usedrugs", -1)
            drugTimer = nil
        end)
        return false
    end
end
 

CowBoy337

Известный
30
24
Если по нажатию клавиши, то мне надо, что бы использовалось нарко, после этого, через 60 секунд, в чате выводилось сообщение, что то на типе Юзай, именно в чате, как например - скрипт загружен
Нарко 10 штук, на кнопки Z+1
Если получится буду очень сильно благодарен.
А на каком проекте ты играешь? На аризонке вроде максимум 3 нарко за раз можно юзать

после активации команды запускай таймер на 60 секунд, можешь выводить таймер на экран с помощью renderFontDrawText(), можешь за 5-10 секунд предупреждение в чате вывести через sampAddChatMessage() о том, что скоро нужно использовать вновь. Что-то типа такого


Lua:
local drugTimer = nil
local drugTimeLeft = 0

require('lib.samp.events').onSendCommand = function(cmd)
    if cmd:match('/usedrugs') then
        if drugTimer then
            sampAddChatMessage(drugTimeLeft .. " секунд", -1)
            return false
        end
        drugTimeLeft = 60
        sampAddChatMessage("Эффект в 60 секу", -1)
        drugTimer = lua_thread.create(function()
            while drugTimeLeft > 0 do
                wait(1000)
                drugTimeLeft = drugTimeLeft - 1
                if drugTimeLeft == 10 then
                    sampAddChatMessage("10 секунд", -1)
                elseif drugTimeLeft == 5 then
                    sampAddChatMessage("Юз /usedrugs в 5 сек", -1)
                end
            end
            sampAddChatMessage("Используй /usedrugs", -1)
            drugTimer = nil
        end)
        return false
    end
end
А во, уже помогли, красавчик
 

StalnojHrundel

Новичок
Автор темы
8
1
А на каком проекте ты играешь? На аризонке вроде максимум 3 нарко за раз можно юзать


А во, уже помогли, красавчик
На самп рп и эвольве, да, там много всяких драг таймеров, просто хотелось самому попробовать сделать

после активации команды запускай таймер на 60 секунд, можешь выводить таймер на экран с помощью renderFontDrawText(), можешь за 5-10 секунд предупреждение в чате вывести через sampAddChatMessage() о том, что скоро нужно использовать вновь. Что-то типа такого


Lua:
local drugTimer = nil
local drugTimeLeft = 0

require('lib.samp.events').onSendCommand = function(cmd)
    if cmd:match('/usedrugs') then
        if drugTimer then
            sampAddChatMessage(drugTimeLeft .. " секунд", -1)
            return false
        end
        drugTimeLeft = 60
        sampAddChatMessage("Эффект в 60 секу", -1)
        drugTimer = lua_thread.create(function()
            while drugTimeLeft > 0 do
                wait(1000)
                drugTimeLeft = drugTimeLeft - 1
                if drugTimeLeft == 10 then
                    sampAddChatMessage("10 секунд", -1)
                elseif drugTimeLeft == 5 then
                    sampAddChatMessage("Юз /usedrugs в 5 сек", -1)
                end
            end
            sampAddChatMessage("Используй /usedrugs", -1)
            drugTimer = nil
        end)
        return false
    end
end
Спасибо огромное, сейчас чуть позже попробую
 

CowBoy337

Известный
30
24
Lua:
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local lastUse = 0
local cooldown = 60000 -- 60 секунд

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage("{00FF00}[Usedrugs Helper] {FFFFFF}Скрипт загружен. Нажми Z+1 для использования.", -1)

    while true do
        wait(0)

        if isKeyDown(vkeys.VK_Z) and wasKeyPressed(vkeys.VK_1) then
            local timeNow = os.clock() * 1000
            if timeNow - lastUse >= cooldown then
                sampSendChat("/usedrugs 10")
                lastUse = timeNow
                lua_thread.create(function()
                    wait(cooldown)
                    sampAddChatMessage("{00FF00}[Usedrugs Helper] {FFFFFF}КД прошло, можно снова использовать!", -1)
                end)
            else
                local left = math.floor((cooldown - (timeNow - lastUse)) / 1000)
                sampAddChatMessage("{FF0000}[Usedrugs Helper] {FFFFFF}Подожди ещё " .. left .. " сек.", -1)
            end
        end
    end
end

Вот по нажатию клавиш как хотел, надпись можешь поменять на свою как удобнее, если нажмешь раньше то выведет сообщение в чат сколько секунд осталось
 
  • Эм
  • Нравится
Реакции: MLycoris и StalnojHrundel

StalnojHrundel

Новичок
Автор темы
8
1
Lua:
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local lastUse = 0
local cooldown = 60000 -- 60 секунд

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage("{00FF00}[Usedrugs Helper] {FFFFFF}Скрипт загружен. Нажми Z+1 для использования.", -1)

    while true do
        wait(0)

        if isKeyDown(vkeys.VK_Z) and wasKeyPressed(vkeys.VK_1) then
            local timeNow = os.clock() * 1000
            if timeNow - lastUse >= cooldown then
                sampSendChat("/usedrugs 10")
                lastUse = timeNow
                lua_thread.create(function()
                    wait(cooldown)
                    sampAddChatMessage("{00FF00}[Usedrugs Helper] {FFFFFF}КД прошло, можно снова использовать!", -1)
                end)
            else
                local left = math.floor((cooldown - (timeNow - lastUse)) / 1000)
                sampAddChatMessage("{FF0000}[Usedrugs Helper] {FFFFFF}Подожди ещё " .. left .. " сек.", -1)
            end
        end
    end
end

Вот по нажатию клавиш как хотел, надпись можешь поменять на свою как удобнее, если нажмешь раньше то выведет сообщение в чат сколько секунд осталось
Блин, спасибо огромное, жаль не могу поставить два решения, но это тоже очень хорошо сделано
 
  • Нравится
Реакции: CowBoy337

StalnojHrundel

Новичок
Автор темы
8
1
Привет, слушай, а можешь пожалуйста подсказать, можно ли как то в том твоём коде сделать так, чтобы после смерти таймер сбрасывался, и можно было бы заново по кнопке использовать?
 

kyrtion

Известный
1,322
486
А можешь пожалуйста подсказать, как таймер сбросить?
как у тебя переменная указано, и там ставишь значение os.clock()
например, после проверки и внутри блока if-then-end добавить: timer = os.clock()