[RakSamp] Диолог окна

TopCarl

Участник
Автор темы
108
14
Помогите пожалуйста, пишу бота на раксампе, и мне надо сделать так чтобы при отправке запроса с вк, в игре вводилась команда /stats, оно некоторую информацию (лвл, деньги в банке) отправляло мне в вк и окно закрывалось
1687033122138.png
 

kyrtion

Известный
659
242
Lua:
local sampev = require('lib.samp.events')

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    local ntext = text:gsub('{......}', '')
 
    -- команда /stats
    if dialogId == ?? and style == ?? and title == ?? then
        local str = ''
        local stats = {}
        for line in ntext:gmatch("[^\r\n]+") do -- цикл при наличие \n
            if line:find('^Имя: %[.+%]$') then
                stats[#stats+1] = line:match('^Имя: %[(.+)%]$')
            elseif line:find('^Семья') then
                stats[#stats+1] = line:match('^Семья: (.+)$')
            end
        end
        for i=1, #stats do
            str = str..stats[i]..'\n'
        end
        -- тут код для отправки в ВК
        return false
    end
end
Ну потом ты сможешь сам добавить некоторые информации на 10 строке
 
Последнее редактирование:

TopCarl

Участник
Автор темы
108
14
Lua:
local sampev = require('lib.samp.events')

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    local ntext = text:gsub('{......}', '')
 
    -- команда /stats
    if dialogId == ?? and style == ?? and title == ?? then
        local str = ''
        local stats = {}
        for line in ntext:gmatch("[^\r\n]+") do -- цикл при наличие \n
            if line:find('^Имя: %[.+%]$') then
                stats[#stats+1] = line:match('^Имя: %[(.+)%]$')
            elseif line:find('^Семья') then
                stats[#stats+1] = line:match('^Семья: (.+)$')
            end
        end
        for i=1, #stats do
            str = str..stats[i]..'\n'
        end
        -- тут код для отправки в ВК
        return false
    end
end
Ну потом ты сможешь сам добавить некоторые информации на 10 строке
А в какую переменную сохраняется имя и семья?
 

kyrtion

Известный
659
242
А в какую переменную сохраняется имя и семья?
в таблице stats
в каждой ключ содержится текстовые. или можно так:
при найдено слово семья, то stats.family = line:match...

вывод:
print(stats.family)
 

TopCarl

Участник
Автор темы
108
14
в таблице stats
в каждой ключ содержится текстовые. или можно так:
при найдено слово семья, то stats.family = line:match...

вывод:
print(stats.family)
Не работает, делаю запрос с вк на runcommand('/stats'), меню открывается но в ответ нечего не получаю, ошибок в логах нема
1:
function ev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogText:find('Через личное сообщение') then
        VkMessage('🐩 При входе запрошено подтверждение через VK-Guard.')
    end
    if dialogId == 2 then
        sendDialogResponse(2, 1, -1, account_password)
        return false
    end
    if dialogId == 235 and style == 0 then
        for line in ntext:gmatch("[^\r\n]+") do
            if line:find('^Имя: %[.+%]$') then
                statnick = line:match('^Имя: %[(.+)%]$')
            elseif line:find('^Уровень: %[d+%] ') then
                statlvl = line:match('^Уровень: %[d+%]$')
            elseif line:find('^Наличные деньги (SA$): %[$d+%]$') then
                statnal = line:match('^Наличные деньги (SA$): %[$d+%]$')
            elseif line:find('^Евро: %[d+%]$') then
                statevr = line:match('^Евро: %[d+%]$')
            end
        end
        for i=1, #stats do
            str = str..stats[i]..'\n'
        end
        VkMessage('🕵 Ник: '..statnick..'\n⏳ Уровень: '..statlvl..'\n💰 Деньги: '..statnal..'\n💶 Евро: '..statevr)
        return false
    end
end
 

kyrtion

Известный
659
242
Не работает, делаю запрос с вк на runcommand('/stats'), меню открывается но в ответ нечего не получаю, ошибок в логах нема
1:
function ev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogText:find('Через личное сообщение') then
        VkMessage('🐩 При входе запрошено подтверждение через VK-Guard.')
    end
    if dialogId == 2 then
        sendDialogResponse(2, 1, -1, account_password)
        return false
    end
    if dialogId == 235 and style == 0 then
        for line in ntext:gmatch("[^\r\n]+") do
            if line:find('^Имя: %[.+%]$') then
                statnick = line:match('^Имя: %[(.+)%]$')
            elseif line:find('^Уровень: %[d+%] ') then
                statlvl = line:match('^Уровень: %[d+%]$')
            elseif line:find('^Наличные деньги (SA$): %[$d+%]$') then
                statnal = line:match('^Наличные деньги (SA$): %[$d+%]$')
            elseif line:find('^Евро: %[d+%]$') then
                statevr = line:match('^Евро: %[d+%]$')
            end
        end
        for i=1, #stats do
            str = str..stats[i]..'\n'
        end
        VkMessage('🕵 Ник: '..statnick..'\n⏳ Уровень: '..statlvl..'\n💰 Деньги: '..statnal..'\n💶 Евро: '..statevr)
        return false
    end
end
local ntext = dialogText:gsub('{......}', '')
 

TopCarl

Участник
Автор темы
108
14
local ntext = dialogText:gsub('{......}', '')
Не, даже так не работает
1:
function ev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if dialogText:find('Через личное сообщение') then
        VkMessage('🐩 При входе запрошено подтверждение через VK-Guard.')
    end
    if dialogId == 2 then
        sendDialogResponse(2, 1, -1, account_password)
        return false
    end
    local ntext = dialogText:gsub('{......}', '')
    if dialogId == 235 and style == 0 then
        for line in ntext:gmatch("[^\r\n]+") do
            if line:find('^Имя: %[.+%]$') then
                statnick = line:match('^Имя: %[(.+)%]$')
            elseif line:find('^Уровень: %[d+%] ') then
                statlvl = line:match('^Уровень: %[d+%]$')
            elseif line:find('^Наличные деньги (SA$): %[$d+%]$') then
                statnal = line:match('^Наличные деньги (SA$): %[$d+%]$')
            elseif line:find('^Евро: %[d+%]$') then
                statevr = line:match('^Евро: %[d+%]$')
            end
        end
        for i=1, #stats do
            str = str..stats[i]..'\n'
        end
        VkMessage('🕵 Ник: '..statnick..'\n⏳ Уровень: '..statlvl..'\n💰 Деньги: '..statnal..'\n💶 Евро: '..statevr)
        return false
    end
end
 

TopCarl

Участник
Автор темы
108
14
у тебя хотя бы какие нибудь уведомления в вк работают?
да, все уведы работают, но прикол в том что как отправлю запрос с вк, оно вроде /stats откроет, но в ответ нечего