авто ответь диалога

kyrtion

Известный
1,129
408
Lua:
local sampev = require('samp.events')

local function printf(pattern, ...)
    local text = string.format(pattern, ...)
    return print(text)
end

function main()
    repeat wait(0) until isSampAvailable()
    wait(-1)
end

function sampev.onShowDialog(dialogId, style, title, b1, b2, text)
    if true then -- debug dialog
        printf(
            '[ShowDialog] dialogId[%d] style[%d] title[%s] b1[%s] b2[%s]\n%s\n'
            dialogId, style, title, b1, b2, text
        )
    end

    if title:find('заголовка диалога') then
        sampSendDialogResponse(dialogId, 1, 65535, 'первая строка, но закончить перед \t')
        -- '1. Статистика\t\t/stats' - нужно указать так: '1. Статистика'
        -- желательно указать список 65535, если в диалог нет пунктов
        -- https://wiki.blast.hk/ru/moonloader/lua/sampSendDialogResponse
        -- на кнопки: 0 - то это как ESC. 1 - Enter, то есть выбрать пункт
        -- вроде как истинную значение кнопку, 0 - ложь, 1 - истина
        -- return false -- скипаем диалог, если сразу ответить после диалога
    end
end

-- если хочешь узнать как ты отправляешь диалог
function sampev.onSendDialogResponse(dialogId, button, listboxId, input)
    -- для релиза нельзя показывать инпут диалога, ни в коем случае!
    printf(
        '[SendDialogResponse] dialogId[%d], button[%d], listboxId[%d], input[%s]',
        dialogId, button, listboxId, input
    )
end
Вот тебе готовый дебаг диалог
если нужно будет пробить например статистику, то желательно пробить в цикл по строку (не с \n, а типа каждые строка по \n)
Lua:
-- там где text имеет перенос строка, то есть текст диалога
local dText = text:gsub('{%x%x%x%x%x%x}', '') -- убирает hex-код в формате {FFFFFF} на пустое
for line in dText:gmatch('[^\n]+') do
    print(line)
end