Lua | Диалоговые окна

Looney Koldyin

Участник
Автор темы
33
6
Версия MoonLoader
.027.0-preview
Доброго времени суток. У меня такая проблема в голове, я не могу продумать структуру одно скрипта:
Нужно написать скрипт который будет автоматизировать действия (взаимодействовать с диалоговыми окнами), автоматизировать рутинные действия /me -> Связаться с администрацией, отправить туда сообщение допустим. Но для этого нужно обработать диалоговое окно, верно? И как бы как это сделать, как с ним взаимодействовать правильно, типа async await тут нету как я понимаю... типа ну мне нужно ждать пока откроется нужное мне окно допустим с айди 228, и после этого если флаг мой = true, запускать действие скрипта там допустим два раза стрелку вниз -> enter и в input сообщение отправить, как это начать делать, дайте подсказку
 
Решение
Доброго времени суток. У меня такая проблема в голове, я не могу продумать структуру одно скрипта:
Нужно написать скрипт который будет автоматизировать действия (взаимодействовать с диалоговыми окнами), автоматизировать рутинные действия /me -> Связаться с администрацией, отправить туда сообщение допустим. Но для этого нужно обработать диалоговое окно, верно? И как бы как это сделать, как с ним взаимодействовать правильно, типа async await тут нету как я понимаю... типа ну мне нужно ждать пока откроется нужное мне окно допустим с айди 228, и после этого если флаг мой = true, запускать действие скрипта там допустим два раза стрелку вниз -> enter и в input сообщение отправить, как это начать делать, дайте подсказку
Привет,для...

leekyrave

Известный
419
223
Доброго времени суток. У меня такая проблема в голове, я не могу продумать структуру одно скрипта:
Нужно написать скрипт который будет автоматизировать действия (взаимодействовать с диалоговыми окнами), автоматизировать рутинные действия /me -> Связаться с администрацией, отправить туда сообщение допустим. Но для этого нужно обработать диалоговое окно, верно? И как бы как это сделать, как с ним взаимодействовать правильно, типа async await тут нету как я понимаю... типа ну мне нужно ждать пока откроется нужное мне окно допустим с айди 228, и после этого если флаг мой = true, запускать действие скрипта там допустим два раза стрелку вниз -> enter и в input сообщение отправить, как это начать делать, дайте подсказку
Привет,для всего этого есть https://wiki.blast.hk/
По поводу того,как ловить сам диалог - используй samp.events,либа,которая предустановлена вроде,а именно юзай
Lua:
INCOMING_RPCS[RPC.SHOWDIALOG]                 = {'onShowDialog', {dialogId = 'int16'}, {style = 'int8'}, {title = 'string8'}, {button1 = 'string8'}, {button2 = 'string8'}, {text = 'encodedString4096'}}
Пример:
local sampev = require 'lib.samp.events' -- подгружаем саму либу


function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    while true do
    wait(0)
    end

end


function sampev.onShowDialog(dialogId, style, title, button1, button2, text)

    if dialogId == 228 then -- проверяем схожесть айди появившегося диалога и твоего,вообще тут лучше добавить переменную переключатель,которая будет изменять свое положение по команде,ну чтобы действие в блоке не происходило каждый раз при появлении этого диалога,тафтология
        sampSendDialogResponse(dialogId,0,3,-1) -- dialogId - айди диалога из функции. 0 - номер кнопочки. 3 - 4 элемент в списке,от 0 короче. поле там где -1 стоит юзают для отправления текста
    end

end



Если ты хочешь отправить ответ на диалог - используй https://wiki.blast.hk/ru/moonloader/lua/sampSendDialogResponse
 
  • Влюблен
Реакции: Looney Koldyin

Looney Koldyin

Участник
Автор темы
33
6
Привет,для всего этого есть https://wiki.blast.hk/
По поводу того,как ловить сам диалог - используй samp.events,либа,которая предустановлена вроде,а именно юзай
Lua:
INCOMING_RPCS[RPC.SHOWDIALOG]                 = {'onShowDialog', {dialogId = 'int16'}, {style = 'int8'}, {title = 'string8'}, {button1 = 'string8'}, {button2 = 'string8'}, {text = 'encodedString4096'}}
Пример:
local sampev = require 'lib.samp.events' -- подгружаем саму либу


function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
   
    while true do
    wait(0)
    end

end


function sampev.onShowDialog(dialogId, style, title, button1, button2, text)

    if dialogId == 228 then -- проверяем схожесть айди появившегося диалога и твоего,вообще тут лучше добавить переменную переключатель,которая будет изменять свое положение по команде,ну чтобы действие в блоке не происходило каждый раз при появлении этого диалога,тафтология
        sampSendDialogResponse(dialogId,0,3,-1) -- dialogId - айди диалога из функции. 0 - номер кнопочки. 3 - 4 элемент в списке,от 0 короче. поле там где -1 стоит юзают для отправления текста
    end

end



Если ты хочешь отправить ответ на диалог - используй https://wiki.blast.hk/ru/moonloader/lua/sampSendDialogResponse
написал в точности ту же функцию что ты скинул, только без sampSendDialogResponse(), спасибо
 
  • Нравится
Реакции: leekyrave