Выбор строки в диалоге

Ookla

Новичок
Автор темы
11
1
Версия MoonLoader
.026-beta
Приветствую, хотел бы узнать а как заставить персонажа при
Условие:
function se.onServerMessage(color, text)
    if text:find('клюет на другую наживку') then
Выбирать пункт в диалоге 25286 чтобы выполнялся этот код:


Выбор наживки:
function se.onSendDialogResponse(id, but, list, input)
    if FISHROD_DIALOG_ID == id and but == 1 then
        FISHROD_DIALOG_ID = nil
        if list == 7 then
            if INVENTORY_ID ~= nil then
                sampAddChatMessage("[Ошибка] {EEEEEE}Сначала закройте инвентарь! Открыть меню удочки можно командой /fishrod", 0xAA3333)
                return { id, but, 0, input }
            end

            sampSendDialogResponse(id, 0, nil, nil)
            sampSendChat("/invent")
            AWAIT_ECHO = { 1, os.clock() }

            lua_thread.create(function()
                while AWAIT_ECHO[1] > 0 do
                    if (os.clock() - AWAIT_ECHO[2]) > cfg.main.echowait then
                        if AWAIT_ECHO[1] == 1 then
                            sampAddChatMessage("[Ошибка] {EEEEEE}Не удалось найти эхолот на {AA3333}1 странице{EEEEEE} в вашем инвентаре!", 0xAA3333)
                        else
                            sampAddChatMessage("[Ошибка] {EEEEEE}Не удалось выбрать наживку, попробуйте ещё раз!", 0xAA3333)
                        end
                        if AWAIT_ECHO[1] <= 2 then
                            sampSendClickTextdraw(0xFFFF)
                        end
                        AWAIT_ECHO = { 0, os.clock() }
                        break
                    end
                    wait(0)
                end
            end)
            return false
    end
end
 

Ookla

Новичок
Автор темы
11
1
Там же написано list == 7, значит 7 пункт, НО этот пункт добавляется туда самим скриптом. Без него там другой пункт(в диалоге)

Тебе какую кнопку выбрать нужно?
Кнопку выбора, не отмены
 

siwage

Активный
192
66
Там же написано list == 7, значит 7 пункт, НО этот пункт добавляется туда самим скриптом. Без него там другой пункт(в диалоге)


Кнопку выбора, не отмены
Можешь показать диалог этот?
 

Ookla

Новичок
Автор темы
11
1
С скриптом:
1677969213744.png



Без:
1677969171080.png

Нужно чтоб при
Условие:
function se.onServerMessage(color, text)
    if text:find('клюет на другую наживку') then
Открывался данный диалог(/fishrod) и/или сразу выбирался пункт "Авто выбор наживки"
 

siwage

Активный
192
66
Может быть так?
cringe:
function se.onServerMessage(color, text)
    if text:find('клюет на другую наживку') then
        sampSendChat("/fishrod")
    end
end

function samp.onShowDialog(id, style, title, but_1, but_2, text)
    if id == 25286 then
        --sampSendDialogResponse(int id, int button, int listitem, zstring input)
        sampSendDialogResponse(id,1,6,nil)
    end
end
 
Последнее редактирование:
D

deleted-user-139653

Гость
Код:
function sampev.onShowDialog(ID, style, title, button, button2, text)
    if title:find ("Главный текст диалового окна") then
           sampSendDialogResponse(ID, 1, 1, "Текст строки из диалога")
    end
end
 
Последнее редактирование модератором:
  • Эм
Реакции: YarikVL

Ookla

Новичок
Автор темы
11
1
Вроде все норм но он не выбирается все равно
При:
1:
sampSendDialogResponse(id,1,7,nil)
Выбирается этот пункт(Забросить удочку):
1678003299109.png

При:
1:
sampSendDialogResponse(id,1,6,nil)
Выбирается этот пункт(Наживка):
1678003197316.png

Теперь нужен новый способ выбора добавленного пункта.

up

up

UP

up
 
Последнее редактирование:

Deeps

Участник
21
25
Lua:
local message;
function se.onServerMessage(color, text)
    if text:find("клюет на другую наживку") then
        message = true
        sampSendChat("/fishrod")
    end
end

function se.onShowDialog(id, style, title, button1, button2, text)
    if id == 25286 and active then
        sampSendDialogResponse(id, 1, 6, "- Авто-выбор наживки (Эхолот)")
        message = false
    end
end

Вообще, я бы посоветовал привязывать поиск диалога по title, а не по id
 
  • Эм
Реакции: qdIbp и YarikVL

qdIbp

Автор темы
Проверенный
1,394
1,150
Lua:
local message;
function se.onServerMessage(color, text)
    if text:find("клюет на другую наживку") then
        message = true
        sampSendChat("/fishrod")
    end
end

function se.onShowDialog(id, style, title, button1, button2, text)
    if id == 25286 and active then
        sampSendDialogResponse(id, 1, 6, "- Авто-выбор наживки (Эхолот)")
        message = false
    end
end

Вообще, я бы посоветовал привязывать поиск диалога по title, а не по id
4 аргумент sampSendDialogResponse нужен для input диалогов
Вроде все норм но он не выбирается все равно
При:
1:
sampSendDialogResponse(id,1,7,nil)
Выбирается этот пункт(Забросить удочку):
Посмотреть вложение 192203
При:
1:
sampSendDialogResponse(id,1,6,nil)
Выбирается этот пункт(Наживка):
Посмотреть вложение 192202
Теперь нужен новый способ выбора добавленного пункта.

up

up

UP

up
попробуй через поиск
 
  • Нравится
Реакции: YarikVL

sdfy

Известный
349
230
Пробовал не вписывать туда пункт, не срабатывало. И судя по rpc onSendDialogResponse, серверу отправляется название пункта в поле input
Функция сама отправит пустую строку если не указать 4 аргумент
 

Dmitriy Makarov

25.05.2021
Проверенный
2,490
1,120
Не эксперт, но я не думаю, что sampSendDialogResponse будет нажимать на пункт, который у тебя добавляется с помощью другого скрипта.
Вроде все норм но он не выбирается все равно
При:
Lua:
sampSendDialogResponse(id,1,7,nil)
Выбирается этот пункт(Забросить удочку):
Без того скрипта, у тебя после пункта "Наживка" идёт "Забросить удочку", а это 7-й пункт (включая заголовки столбцов). Поэтому и выбирается. И то выбирается не тот, что красным "» Забросить удочку", который добавляет сам скрипт, а который "Авто-выбор наживки", так как он изначально был "Забросить удочку", поэтому у тебя удочка забрасывается.
Это мои догадки, мб кто-то подправит.

В общем, если мои догадки верны и функция sampSendDialogResponse действительно не реагирует на пункты, добавленные сторонним скриптом (если это новые пункты, а не замененные), то единственным решением может быть удаление того скрипта, который добавляет тебе пункты.
 
  • Нравится
Реакции: YarikVL