Ввод текста в диалоговое окно

w99zzl1

Участник
Автор темы
80
7
Версия MoonLoader
.026-beta
Привет! Помогите пожалуйста сделать следущее:
1. Отправка команды /new
2. Выбор 1 пункта в открывшимся меню(listitem 0)
3. В открывшимся меню вписать текст
Все работаает, кроме текста :(

Вот код:

Lua:
local firstDialogId = 494 -- ID первого диалога (/new)
local inputDialogId = 495 -- ID диалога для ввода текста (/new - 1)
local isWaitingForInput = false -- Флаг для отслеживания, ждем ли ввода текста
local sampev = require 'samp.events' -- Подключаем библиотеку событий сампа

function main()
    repeat wait(5000) until isSampAvailable()
    sampSendChat('/new')
end

function sampev.onShowDialog(id)
    if id == firstDialogId then
        sampSendDialogResponse(firstDialogId, 1, 0, 0)
        isWaitingForInput = true
    elseif isWaitingForInput and id == inputDialogId then
        wait(500)
        local message = "18:30 Весь День! GPS 1-3" -- Сообщение, которое нужно ввести
        sampSendDialogResponse(inputDialogId, 1, 0, message) -- Вводим текст в диалог
        isWaitingForInput = false -- Сбрасываем флаг ожидания ввода
        return false -- Отменяем показ этого диалога
    end
end
 

kyrtion

Известный
902
321
Lua:
local firstDialogId = 494 -- ID первого диалога (/new)
local inputDialogId = 495 -- ID диалога для ввода текста (/new - 1)
local isWaitingForInput = false -- Флаг для отслеживания, ждем ли ввода текста
local sampev = require 'samp.events' -- Подключаем библиотеку событий сампа

function main()
    while not isSampAvailable() do wait(7000) end
    sampSendChat('/new')
end

function sampev.onShowDialog(id)
    if id == firstDialogId then
        sampSendDialogResponse(firstDialogId, 1, 0, 0)
        isWaitingForInput = true
    elseif isWaitingForInput and id == inputDialogId then
        -- wait(500) -- wait применяется строго в потоке (lua_thread)
        -- поэтому сделаем так:
        lua_thread.create(function()
            wait(500)
            sampSendDialogResponse(inputDialogId, 1, 0, message) -- Вводим текст в диалог
            isWaitingForInput = false -- Сбрасываем флаг ожидания ввода
            -- return в потоке не сработает, переносим после потока
        end)
        return false -- Отменяем показ этого диалога
    end
end
 

w99zzl1

Участник
Автор темы
80
7
Lua:
local firstDialogId = 494 -- ID первого диалога (/new)
local inputDialogId = 495 -- ID диалога для ввода текста (/new - 1)
local isWaitingForInput = false -- Флаг для отслеживания, ждем ли ввода текста
local sampev = require 'samp.events' -- Подключаем библиотеку событий сампа

function main()
    while not isSampAvailable() do wait(7000) end
    sampSendChat('/new')
end

function sampev.onShowDialog(id)
    if id == firstDialogId then
        sampSendDialogResponse(firstDialogId, 1, 0, 0)
        isWaitingForInput = true
    elseif isWaitingForInput and id == inputDialogId then
        -- wait(500) -- wait применяется строго в потоке (lua_thread)
        -- поэтому сделаем так:
        lua_thread.create(function()
            wait(500)
            sampSendDialogResponse(inputDialogId, 1, 0, message) -- Вводим текст в диалог
            isWaitingForInput = false -- Сбрасываем флаг ожидания ввода
            -- return в потоке не сработает, переносим после потока
        end)
        return false -- Отменяем показ этого диалога
    end
end
Спасибо большое! А как скрыть показ диалога, который на /new?