Снова диалоговые окна

Ba4a

Новичок
Автор темы
15
2
Пытаюсь написать бота для себя на одном мертвом сервера от Аризона Геймс, перечитал много тем по диалоговым окнам и понял что ничего не понял.

Мне необходимо следующее: если диалоговое окно (/fishrod) (СКРИН 1) открыто, причем в первый раз, перейти в пятый пункт диалога(СКРИН 2) и установить первую наживку.
Если оно открывается второй раз, то аналогично вторую наживку.

На данном этапе написания бота всё упирается в работу с этими диалогами. Пытался что-то подглядеть вот тут, но не понял что происходит в коде и как его к себе интегрировать в свой код: https://www.blast.hk/threads/33469/#post-329772
Свою работу прикрепляю файлом и кодом

id первого диалога - 1707
id второго диалога - 1708
1626756296138.png
1626756305744.png

Lua:
script_name('Fish')
script_version('1.4')
script_author('VanCleef')

local samp = require 'lib.samp.events'
require "lib.sampfuncs"

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

function samp.onServerMessage(color, text)
        
        if string.find(text,'Поклёвка! Тяните и старайтесь держать уровень натяжения лески по середине шкалы!',1,true) then
            lua_thread.create(function()
            wait(500)
            sampAddChatMessage('Мини-игра началась!',0xe01010)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            sampAddChatMessage('Вытянул рыбку!',0x521c9e)
            wait(500)
            sampAddChatMessage('Закидываю удочку!',0x00c8ff)
            wait(500)
            sampSendChat('/fish')
            end)
        end
        
        if string.find(text,'Туда куда вы',1,true) then
            lua_thread.create(function()
            wait(5000)
            sampAddChatMessage('Неподходящее место, закидываю удочку снова',0x00c8ff)
            sampSendChat('/fish')
            end)
        end
end

function samp.onShowDialog(dialogId, style, title, button1, button2, text)
    if text:find("Когда от поплавка") and title:find("Подсказка") then
        lua_thread.create(function()
        sampSendDialogResponse(dialogId, 1, nil, nil)
        wait(1000)
        setVirtualKeyDown(VK_RETURN, true)
        wait(500)
        setVirtualKeyDown(VK_RETURN, false)
        wait(500)   
        sampAddChatMessage('Вы убрали уведомление.',0x00c8ff)
        sampAddChatMessage('Закидываю удочку!',0x00c8ff)
        wait(500)
        sampSendChat('/fish')
        end)
    end
    
    if text:find("на которую ловится рыба") and title:find("Подсказка") then
        lua_thread.create(function()
        sampSendDialogResponse(dialogId, 1, nil, nil)
        wait(1000)
        setVirtualKeyDown(VK_RETURN, true)
        wait(500)
        setVirtualKeyDown(VK_RETURN, false)
        wait(500)   
        sampAddChatMessage('Меняем наживку.',0xf7ff00)
        wait(500)
        setVirtualKeyDown(VK_RETURN, true)
        wait(500)
        setVirtualKeyDown(VK_RETURN, false)
        wait(500)   
        sampSendChat('/fishrod')
        end)
    end
end
 

Вложения

  • Улов.lua
    2.8 KB · Просмотры: 3

Я кавказец

Известный
440
108
Lua:
local sampev = require 'lib.samp.events'

local shetchik = false -- Как по мне будет проще с переменной

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if title:find("Оснащение удилища") and if text:find("Наживка") and shetchik == false then -- три критерия при котором скрипт будет выполнять действие, так как shetchik стоит false, то выполнять он будет только этот сценарий
        sampSendDialogResponse(dialogId, 1, 5, nil) -- Отправляет ответ в диалоге на сервер, 3 пункт отвечает за то, что он выберит в диалоге, счёт начинается от 0
        if title:find("Выберите наживку") and text:find("Хлеб") then
            sampSendDialogResponse(dialogId, 1, 0, nil) -- Выбирает наживку хлеб, так как listitem считается от 0
            shetchik = true -- Превращаем переменную в true, чтобы данный пункт (выбор хлеба), не работал
        end
    elseif title:find("Оснащение удилища") and if text:find("Наживка") and shetchik == true then -- Тут shetchik стоит true значит 1 if работать не будет(По идеи)
        sampSendDialogResponse(dialogId, 1, 5, nil) -- Также отправляет ответ в диалоге
        if title:find("Выберите наживку") and text:find("Червь") then
            sampSendDialogResponse(dialogId, 1, 1, nil) -- Выбирает 2 пункт в диалоге
            shetchik = false -- Возвращаем переменную в режим false, если не надо, то удали
        end
    end
end
Попробуй
sampSendDialogResponse(dialogId, 1, nil, nil) wait(1000) setVirtualKeyDown(VK_RETURN, true) wait(500) setVirtualKeyDown(VK_RETURN, false) wait(500)
А что это за диалог?
 
Последнее редактирование:

Ba4a

Новичок
Автор темы
15
2
Прямо сейчас сломалось что-то в коде, и он перестал сам проходить мини-игру. Походу нужно всё перепроверять, днем попробую твою версию с переменной
А что это за диалог?
это я так всплывающие окна закрываю из этого поста https://www.blast.hk/threads/94940/#post-797597
как умею)
 

Я кавказец

Известный
440
108
Прямо сейчас сломалось что-то в коде, и он перестал сам проходить мини-игру. Походу нужно всё перепроверять, днем попробую твою версию с переменной

это я так всплывающие окна закрываю из этого поста https://www.blast.hk/threads/94940/#post-797597
как умею)
Можно вот это
Lua:
        sampSendDialogResponse(dialogId, 1, nil, nil)
        wait(1000)
        setVirtualKeyDown(VK_RETURN, true)
        wait(500)
        setVirtualKeyDown(VK_RETURN, false)
Заменить на
Lua:
        sampSendDialogResponse(dialogId, 1, nil, nil)
      wait(1000)
      sampSendDialogResponse(dialogId, 1, 0, nil)
 
Последнее редактирование:

Ba4a

Новичок
Автор темы
15
2
Можно вот это
Lua:
        sampSendDialogResponse(dialogId, 1, nil, nil)
        wait(1000)
        setVirtualKeyDown(VK_RETURN, true)
        wait(500)
        setVirtualKeyDown(VK_RETURN, false)
Заменить на
Lua:
        sampSendDialogResponse(dialogId, 1, nil, nil)
      wait(1000)
      sampSendDialogResponse(dialogId, 1, 0, nil)
Вообще сломался весь бот которого я сюда кинул, пытаюсь всё сделать сначала, не реагируют кнопки.

Что допустим не так в это коде?
Код:
local sampev = require 'lib.samp.events'
require "lib.sampfuncs"

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

function sampev.onServerMessage(color, text)
    if string.find(text,'Предмет',1,true) then
        lua_thread.create(function()
        wait(500)
        sampAddChatMessage('Иду 1 секунду',0xe01010)
        wait(1000)
        setVirtualKeyDown(VK_W, true)
        wait(1000)
        setVirtualKeyDown(VK_W, false)
        end)
    end
    
end

Раньше мог мини игру проходить где на пробел тыкать, сейчас вообще ничего не работает
Код:
function samp.onServerMessage(color, text)
        
        if string.find(text,'Поклёвка! Тяните и старайтесь держать уровень натяжения лески по середине шкалы!',1,true) then
            lua_thread.create(function()
            wait(500)
            sampAddChatMessage('Мини-игра началась!',0xe01010)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            sampAddChatMessage('Вытянул рыбку!',0x521c9e)
            wait(500)
            sampAddChatMessage('Закидываю удочку!',0x00c8ff)
            wait(500)
            sampSendChat('/fish')
            end)
        end
end
 

Я кавказец

Известный
440
108
Вообще сломался весь бот которого я сюда кинул, пытаюсь всё сделать сначала, не реагируют кнопки.

Что допустим не так в это коде?
Код:
local sampev = require 'lib.samp.events'
require "lib.sampfuncs"

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

function sampev.onServerMessage(color, text)
    if string.find(text,'Предмет',1,true) then
        lua_thread.create(function()
        wait(500)
        sampAddChatMessage('Иду 1 секунду',0xe01010)
        wait(1000)
        setVirtualKeyDown(VK_W, true)
        wait(1000)
        setVirtualKeyDown(VK_W, false)
        end)
    end
   
end

Раньше мог мини игру проходить где на пробел тыкать, сейчас вообще ничего не работает
Код:
function samp.onServerMessage(color, text)
       
        if string.find(text,'Поклёвка! Тяните и старайтесь держать уровень натяжения лески по середине шкалы!',1,true) then
            lua_thread.create(function()
            wait(500)
            sampAddChatMessage('Мини-игра началась!',0xe01010)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, true)
            wait(1000)
            setVirtualKeyDown(VK_SPACE, false)
            wait(1000)
            sampAddChatMessage('Вытянул рыбку!',0x521c9e)
            wait(500)
            sampAddChatMessage('Закидываю удочку!',0x00c8ff)
            wait(500)
            sampSendChat('/fish')
            end)
        end
end
Скинь скрин, какое сообщение высвечивается в чат, при мини игре
 

Ba4a

Новичок
Автор темы
15
2
Скинь скрин, какое сообщение высвечивается в чат, при мини игре
мини игру починил, поменял setVirtualKeyDown(VK_SPACE, true), на setVirtualKeyDown(32, true)
теперь я меньше на дизморали, к вечеру всё починю и попробую твой код выше для смены наживки
 

Я кавказец

Известный
440
108
Lua:
local sampev = require 'lib.samp.events'
require "lib.sampfuncs"

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

function sampev.onServerMessage(color, text)
    if string.find(text,'Предмет',1,true) then
        lua_thread.create(function()
        sampAddChatMessage('Иду 1 секунду',0xe01010)
        setVirtualKeyDown(87, true)
        wait(1000)
        setVirtualKeyDown(87, false)
        end)
    end
end
Lua:
script_name('Fish')
script_version('1.4')
script_author('VanCleef')

local samp = require 'lib.samp.events'
require "lib.sampfuncs"

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

function samp.onServerMessage(color, text)
        lua_thread.create(function()
        if string.find(text,'Поклёвка! Тяните и старайтесь держать уровень натяжения лески по середине шкалы!',1,true) then
            sampAddChatMessage('Мини-игра началась!',0xe01010)
            setVirtualKeyDown(32, true)
            wait(1000)
            setVirtualKeyDown(32, false)
            wait(1000)
            setVirtualKeyDown(32, true)
            wait(1000)
            setVirtualKeyDown(32, false)
            wait(1000)
            setVirtualKeyDown(32, true)
            wait(1000)
            setVirtualKeyDown(32, false)
            wait(1000)
            setVirtualKeyDown(32, true)
            wait(1000)
            setVirtualKeyDown(32, false)
            wait(1000)
            sampAddChatMessage('Вытянул рыбку!',0x521c9e)
            wait(500)
            sampAddChatMessage('Закидываю удочку!',0x00c8ff)
            wait(500)
            sampSendChat('/fish')
        end
        
        if string.find(text,'Туда куда вы',1,true) then
            wait(5000)
            sampAddChatMessage('Неподходящее место, закидываю удочку снова',0x00c8ff)
            sampSendChat('/fish')
        end
    end)
end

function samp.onShowDialog(dialogId, style, title, button1, button2, text)
lua_thread.create(function()
    if text:find("Когда от поплавка") and title:find("Подсказка") then
        sampSendDialogResponse(dialogId, 1, nil, nil)
        wait(1000)
        setVirtualKeyDown(13, true)
        wait(500)
        setVirtualKeyDown(13, false)
        wait(500)   
        sampAddChatMessage('Вы убрали уведомление.',0x00c8ff)
        sampAddChatMessage('Закидываю удочку!',0x00c8ff)
        wait(500)
        sampSendChat('/fish')
    end
    
    if text:find("на которую ловится рыба") and title:find("Подсказка") then
        sampSendDialogResponse(dialogId, 1, nil, nil)
        wait(1000)
        setVirtualKeyDown(13, true)
        wait(500)
        setVirtualKeyDown(13, false)
        wait(500)   
        sampAddChatMessage('Меняем наживку.',0xf7ff00)
        wait(500)
        setVirtualKeyDown(13, true)
        wait(500)
        setVirtualKeyDown(13, false)
        wait(500)   
        sampSendChat('/fishrod')
    end
end)
end
Скажу так, что кд не везде нужно, нужна проверка диалогов, скинь какие диалоги там открываются, чтобы оптимизировать код или чё там открывается.
 
Последнее редактирование: