Софт RakSAMP Lite

IntelCoreI7

Участник
54
8
кто шарит как делать проверку на содержимое диалога? Например чтобы он использовал sendDialogeResponse если видит в диалоге определенную кнопку (в виде строки)
 

chromiusj

Известный
Модератор
5,614
3,914
кто шарит как делать проверку на содержимое диалога? Например чтобы он использовал sendDialogeResponse если видит в диалоге определенную кнопку (в виде строки)
 

kultizdat.

Известный
145
10
подробнее плиз
Lua:
function require("samp.events").onShowDialog(id, style, title, button1, button2, text) --
    if title:find( " ЗАГОЛОВОК ДИАЛОГА ") then  -- дучше всего искать по заголовку, нежели по ID.
        if text:find("Какой-то текст (в диалоге), который тебе нужно найти ") then
            sampSendDialogResponse(id, 1, 0, 0, "") -- Нажимаем кнопку под номером №1 ( например, "ОК")
        end
    end
end
 

IntelCoreI7

Участник
54
8
if text:find("Какой-то текст (в диалоге), который тебе нужно найти ") then
так это же вроде если текст В САМОМ диалоге, а мне нужно текст с кнопки.
2024-10-04_18-28-58.png
 

kultizdat.

Известный
145
10
так это же вроде если текст В САМОМ диалоге, а мне нужно текст с кнопки. Посмотреть вложение 253420
Это пример, адаптируй под свои нужды
Lua:
function sampGetListboxItemByText(text, searchText, plain) -- куда-то вставить, например куда ни будь
    plain = plain ~= false
    local i = 0
    for line in text:gmatch("[^\r\n]+") do
        if (plain and line == searchText) or (not plain and line:find(searchText)) then
            return i
        end
        i = i + 1
    end
    return -1
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if dialogId == 25526 or title:find("{BFBBBA}Выбор места спавна") then -- двойная проверка по ид / названию
        newTask(function() -- запуск "таймера"
            wait(500) -- ждем 500 мс
            local text_spawn = sampGetListboxItemByText(text, "Дом №786", false) -- выбираем пункт диалога с названием Дом №786
            sendDialogResponse(dialogId, 1, text_spawn, "") -- нажимаем на него
            sendDialogResponse(dialogId, 0, 0, "") -- "закрываем" диалог
            return false -- что бы не показывался диалог, но по-моему, он один хер показывается
        end)
     end
end
 

IntelCoreI7

Участник
54
8
Это пример, адаптируй под свои нужды
Lua:
function sampGetListboxItemByText(text, searchText, plain) -- куда-то вставить, например куда ни будь
    plain = plain ~= false
    local i = 0
    for line in text:gmatch("[^\r\n]+") do
        if (plain and line == searchText) or (not plain and line:find(searchText)) then
            return i
        end
        i = i + 1
    end
    return -1
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if dialogId == 25526 or title:find("{BFBBBA}Выбор места спавна") then -- двойная проверка по ид / названию
        newTask(function() -- запуск "таймера"
            wait(500) -- ждем 500 мс
            local text_spawn = sampGetListboxItemByText(text, "Дом №786", false) -- выбираем пункт диалога с названием Дом №786
            sendDialogResponse(dialogId, 1, text_spawn, "") -- нажимаем на него
            sendDialogResponse(dialogId, 0, 0, "") -- "закрываем" диалог
            return false -- что бы не показывался диалог, но по-моему, он один хер показывается
        end)
     end
end
[18:41:48] [LUA] C:\Share\bot_v2\scripts\libs\addon.lua:176: C:\Share\bot_v2\scripts\libs\addon.lua:15: bad argument #1 to 'writeUInt16' (number expected, got nil)
stack traceback:
[C]: in function 'error'
C:\Share\bot_v2\scripts\libs\addon.lua:160: in function 'tick'
C:\Share\bot_v2\scripts\libs\addon.lua:176: in function <C:\Share\bot_v2\scripts\libs\addon.lua:174>

123:
function sampGetListboxItemByText(text, searchText, plain) -- куда-то вставить, например где не сток функции
    plain = plain ~= false
    local i = 0
    for line in text:gmatch("[^\r\n]+") do
        if (plain and line == searchText) or (not plain and line:find(searchText)) then
            return i
        end
        i = i + 1
    end
    return -1
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
        newTask(function() -- запуск "таймера"
            wait(500) -- ждем 500 мс
            local text_spawn = sampGetListboxItemByText(text, "Создать игровой мир", false) -- выбираем пункт диалога с названием Дом №786
            sendDialogResponse(id, 2, text_spawn, "") -- нажимаем на него
            sendDialogResponse(id, 0, 0, "") -- "закрываем" диалог
            return false -- что бы не показывался диалог, но по-моему, он один хер показывается
        end)
     end

[18:41:48] [LUA] C:\Share\bot_v2\scripts\libs\addon.lua:176: C:\Share\bot_v2\scripts\libs\addon.lua:15: bad argument #1 to 'writeUInt16' (number expected, got nil)
stack traceback:
[C]: in function 'error'
C:\Share\bot_v2\scripts\libs\addon.lua:160: in function 'tick'
C:\Share\bot_v2\scripts\libs\addon.lua:176: in function <C:\Share\bot_v2\scripts\libs\addon.lua:174>

123:
function sampGetListboxItemByText(text, searchText, plain) -- куда-то вставить, например где не сток функции
    plain = plain ~= false
    local i = 0
    for line in text:gmatch("[^\r\n]+") do
        if (plain and line == searchText) or (not plain and line:find(searchText)) then
            return i
        end
        i = i + 1
    end
    return -1
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
        newTask(function() -- запуск "таймера"
            wait(500) -- ждем 500 мс
            local text_spawn = sampGetListboxItemByText(text, "Создать игровой мир", false) -- выбираем пункт диалога с названием Дом №786
            sendDialogResponse(id, 2, text_spawn, "") -- нажимаем на него
            sendDialogResponse(id, 0, 0, "") -- "закрываем" диалог
            return false -- что бы не показывался диалог, но по-моему, он один хер показывается
        end)
     end


[18:41:48] [LUA] C:\Share\bot_v2\scripts\libs\addon.lua:176: C:\Share\bot_v2\scripts\libs\addon.lua:15: bad argument #1 to 'writeUInt16' (number expected, got nil)
stack traceback:
[C]: in function 'error'
C:\Share\bot_v2\scripts\libs\addon.lua:160: in function 'tick'
C:\Share\bot_v2\scripts\libs\addon.lua:176: in function <C:\Share\bot_v2\scripts\libs\addon.lua:174>

123:
function sampGetListboxItemByText(text, searchText, plain) -- куда-то вставить, например где не сток функции
    plain = plain ~= false
    local i = 0
    for line in text:gmatch("[^\r\n]+") do
        if (plain and line == searchText) or (not plain and line:find(searchText)) then
            return i
        end
        i = i + 1
    end
    return -1
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
        newTask(function() -- запуск "таймера"
            wait(500) -- ждем 500 мс
            local text_spawn = sampGetListboxItemByText(text, "Создать игровой мир", false) -- выбираем пункт диалога с названием Дом №786
            sendDialogResponse(id, 2, text_spawn, "") -- нажимаем на него
            sendDialogResponse(id, 0, 0, "") -- "закрываем" диалог
            return false -- что бы не показывался диалог, но по-моему, он один хер показывается
        end)
     end


кое что изменил но блять теперь он че то стал иногда с нихуя флудить нажатием диалогов
кое что изменил но блять теперь он че то стал иногда с нихуя флудить нажатием диалогов
 
Последнее редактирование:

kultizdat.

Известный
145
10
[18:41:48] [LUA] C:\Share\bot_v2\scripts\libs\addon.lua:176: C:\Share\bot_v2\scripts\libs\addon.lua:15: bad argument #1 to 'writeUInt16' (number expected, got nil)
stack traceback:
[C]: in function 'error'
C:\Share\bot_v2\scripts\libs\addon.lua:160: in function 'tick'
C:\Share\bot_v2\scripts\libs\addon.lua:176: in function <C:\Share\bot_v2\scripts\libs\addon.lua:174>

123:
function sampGetListboxItemByText(text, searchText, plain) -- куда-то вставить, например где не сток функции
    plain = plain ~= false
    local i = 0
    for line in text:gmatch("[^\r\n]+") do
        if (plain and line == searchText) or (not plain and line:find(searchText)) then
            return i
        end
        i = i + 1
    end
    return -1
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
        newTask(function() -- запуск "таймера"
            wait(500) -- ждем 500 мс
            local text_spawn = sampGetListboxItemByText(text, "Создать игровой мир", false) -- выбираем пункт диалога с названием Дом №786
            sendDialogResponse(id, 2, text_spawn, "") -- нажимаем на него
            sendDialogResponse(id, 0, 0, "") -- "закрываем" диалог
            return false -- что бы не показывался диалог, но по-моему, он один хер показывается
        end)
     end





кое что изменил но блять теперь он че то стал иногда с нихуя флудить нажатием диалогов
В коде который я скинул ошибок нет, это что-то твой скрипт косячит
 

kyrtion

Известный
921
329
Прикол в том что скрипт должен нажать 4 кнопки а не 1. Он дальше 1 кнопки не идёт
кнопка ответа диалога от 0 до 1.
0 - ложь, то левая сторона
1 - истинна
а по спискам начиная с 0, если там будет вроде, с описанием диалога, в таком случае первая строка убрать (или добавить -1 в списке)
 

IntelCoreI7

Участник
54
8
кнопка ответа диалога от 0 до 1.
0 - ложь, то левая сторона
1 - истинна
а по спискам начиная с 0, если там будет вроде, с описанием диалога, в таком случае первая строка убрать (или добавить -1 в списке)
Подробнее плиз