Помогите Пожалуйста в ЛУА

niki4

Участник
Автор темы
92
10
Версия MoonLoader
.026-beta
Мне нужно, чтобы при отправке нажатия на кнопку в диалоге он закрывался и потом заново открывался и снова нажималась эта кнопка, но этот скрипт делает это один раз, визуально окно диалога открыто после нажатия на кнопку. Мне нужно его закрыть и снова открыть(автоматически), я стою на пикапе и он открывает диалоговое окно на нажатие кнопки АЛЬТ(VK_MENU).
Как должно работать: Открыть на альт - нажать кнопку - закрыть диалог (и так, чтобы можно было несколько раз сделать)
Помогите пожалуйста.
Lua:
require "lib.sampfuncs"
require "lib.moonloader"
local sampev = require "lib.samp.events"
local imgui = require "imgui"
encoding = require "encoding"
encoding.default = "CP1251"
u8 = encoding.UTF8
activate = 0
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("ad", autodon)
    while true do
        wait(0)
        if activate == 1 then -- Если activate = 1, то продолжаем
               if sampIsDialogActive() then -- если активен какой-то диалог, то продолжаем
                did = sampGetCurrentDialogId()
                lua_thread.create(function()
                    if did == 189 then
                        sampSendDialogResponse(189,1,0,-1)
                    end 
                end)
             end       
        end
    end
end

function autodon() -- Активация из 1 урока
    if activate == 0 then
        sampAddChatMessage("Активирован",-1)
        activate = 1
    else
        activate = 0
        sampAddChatMessage("Деактивирован",-1)
    end     
end
 

BlackGoblin

Известный
519
215
/ad 5 = сделает 5 раз это действие. Ну ты понял крч
Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('ad', function(param) summ = param dsds = true end)
    while true do
        wait(0)
        if dsds then
            dsds = not dsds
            for i=1,summ do
                setVirtualKeyDown (0xA4 , true)
                wait(100)
                setVirtualKeyDown (0xA4 , false)
                while not sampIsDialogActive (189) do
                    wait(0)
                end
                sampSendDialogResponse(189, 1, 0, '')
                sampCloseCurrentDialogWithButton(1)
            end
        end
    end
end
 

niki4

Участник
Автор темы
92
10
/ad 5 = сделает 5 раз это действие. Ну ты понял крч
Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('ad', function(param) summ = param dsds = true end)
    while true do
        wait(0)
        if dsds then
            dsds = not dsds
            for i=1,summ do
                setVirtualKeyDown (0xA4 , true)
                wait(100)
                setVirtualKeyDown (0xA4 , false)
                while not sampIsDialogActive (189) do
                    wait(0)
                end
                sampSendDialogResponse(189, 1, 0, '')
                sampCloseCurrentDialogWithButton(1)
            end
        end
    end
end
Сейчас проверю. Неужели я мучался 2 дня из-за того, что я не знал, что есть функция
Код:
sampCloseCurrentDialogWithButton(1)
/ad 5 = сделает 5 раз это действие. Ну ты понял крч
Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('ad', function(param) summ = param dsds = true end)
    while true do
        wait(0)
        if dsds then
            dsds = not dsds
            for i=1,summ do
                setVirtualKeyDown (0xA4 , true)
                wait(100)
                setVirtualKeyDown (0xA4 , false)
                while not sampIsDialogActive (189) do
                    wait(0)
                end
                sampSendDialogResponse(189, 1, 0, '')
                sampCloseCurrentDialogWithButton(1)
            end
        end
    end
end
К сожалению не работает, написал 3 раза - чет зависает и не открывает диалоги, но 1 раз работает спокойно.
Добавил задержку 2 секунды, вроде работает)
 
Последнее редактирование:

BlackGoblin

Известный
519
215
Сейчас проверю. Неужели я мучался 2 дня из-за того, что я не знал, что есть функция
Код:
sampCloseCurrentDialogWithButton(1)

К сожалению не работает, написал 3 раза - чет зависает и не открывает диалоги, но 1 раз работает спокойно.
Добавил задержку 2 секунды, вроде работает)
Ну да, оно из-за задержки, я хз что за сервер, но он явно не успевает с нулевой задержкой работать)