Активация скрипта по диалогу

Andes

Участник
Автор темы
35
9
Версия MoonLoader
.027.0-preview
Как сделать чтоб скрипт активировался по нужно диалогу по айди? Для авто логина
 

kyrtion

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

local accounts = {
    ['Your_Name'] = {
        pass = 'write_pass_and_dont_see',
        sended = false,
    }
}

local GameState = {
    None = 0,
    WaitConnect = 1,
    AwaitJoin = 2,
    Connected = 3,
    Restarting = 4,
    Disconnected = 5,
}

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

local function debugDialog(id, style, title, b1, b2, text)
    return printf(
        '[DEBUG ShowDialog] ID[%d] STYLE[%d] TITLE[%s] B1[%s] B2[%s]\n%s\n',
        id, style, title, b1, b2, text
    )
end

local function sampGetMyPlayerNickname()
    local myId = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
    local nickname = sampGetPlayerNickname(myId)
    return nickname
end

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        -- сброс параметры для повторной авто-логин
        if sampGetGamestate() == GameState.Restarting then
            for _, account in pairs(accounts) do
                account.sended = false
                account.sendedAlogin = false
            end
        end
    end
end

function sampev.onShowDialog(id, style, title, b1, b2, text)
    debugDialog(id, style, title, b1, b2, text)

    if id == 123123 and style == 3 and title:find('Авторизация') and text:find('пароль') then
        local myNickname = sampGetMyPlayerNickname()
        local account = accounts[myNickname]

        -- пропускает авто-логин если нет аккаунта или нет пасса аккаунта
        -- а также отсутствует своего ника в диалог
        if not account or not account.pass or not text:find(myNickname) or account.sended then return end

        -- если есть, блокируем повторной отправки
        account.sended = true
        sampSendDialogResponse(id, 1, 65535, account.pass)

        return false
    end
end
проверь, работает ли
не забудь отредачить в accounts