[ARZ] Помощь в написании скрипта

LiLn

Участник
Автор темы
46
5
Версия MoonLoader
.027.0-preview
В луа полный 0, с помощью аишки намудрил какой-то говнокод, запускать даже не буду знаю что не сработает
Код:
-- Подключаем библиотеку sampfuncs для работы с диалогами
require 'sampfuncs'

-- Основная функция, которая запускается при старте скрипта
function main()
    -- Ждем, пока игрок загрузится в игру
    while not isSampAvailable() do wait(0) end

    -- Бесконечный цикл, чтобы постоянно проверять состояние игры
    while true do
        -- Ждем следующего тика (для оптимизации работы)
        wait(0)

        -- Проверяем, открыто ли диалоговое окно
        if sampIsDialogActive() then
            -- Получаем ID и текст диалога
            local dialogId, dialogStyle, dialogTitle, dialogButton1, dialogButton2, dialogText = sampGetCurrentDialogInfo()

            -- Проверяем, есть ли в тексте нужная строка
            if string.find(dialogText, "Искомая строка") then
                -- Наводимся и выбираем опцию (например, первую)
                sampSendDialogResponse(dialogId, 1, 0, "")
            end
        end
    end
end

Мне кажется сампфункс не нужен. Суть такова что вот условно я подошёл к коробке или к ящику нажал на альт и открылось диалоговое окно, после есть условно 4
строки.
1 строка - ананас
2 строка - персик
3 строка - капуста
4 строка - батарейка
И вот я хочу сделать так что бы скрипт, если видит слово "Батарейка", он системно перемещается на батарейку и выбирает её путем нажатия Enter или просто ввода.
Помогите пожалуйста воплотить это, и по возможности коротко объяснить. К примеру как мне получить ID нужного мне диалога, и сделать проверку на диалог, а так
же сделать проверку на текст?
 

Макаров

Новичок
21
4
lua:
local sampev = require('samp.events')

function main()
    repeat wait(100) until isSampAvailable()
    while true do wait(0)
      
    end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
    if title:find('Коробка') then --Напиши в скобках то что написано в заголовке диалога
        sendDialogResponse(id,1,4,'') -- где 4 нужная тебе строка "Батарейка", а 1 кнопка
        return false -- true если нужно чтобы диалог отображался
    end
end
 
  • Bug
Реакции: painw

LiLn

Участник
Автор темы
46
5
А есть условно это рандом то есть может быть так
1 строка - ананас
2 строка - персик
3 строка - капуста
4 строка - батарейка
так
1 строка - батарейка
2 строка - ананас
3 строка - капуста
4 строка - персик
или вообще так
1 строка - ананас
2 строка - персик
3 строка - капуста (БЕЗ БАТАРЕЙКИ) Я знаю что как-то можно сделать проверку на текст именно, но не знаю как.
 

LiLn

Участник
Автор темы
46
5
Можешь пройтись по каждой строчке в диалоге, вычислить эту скрывучую батарейку, записав ее listId (начинается от нуля) и отправить серверу закрытие диалога
это всё конечно хорошо, но я шарю за луа :(
 

LiLn

Участник
Автор темы
46
5
не шарю* внизу грустный смайл

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

Masayuki

Участник
76
31
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end
 

LiLn

Участник
Автор темы
46
5
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end
Не работает(

local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end
1725792219357.png

Вот есть скрин и мне нужно допустим что бы он брал только Обрывок
 
Последнее редактирование:

MrRazrab

Известный
472
237
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sampSendDialogResponse(id, 1, listid, nil)
end
end
end
end
 
  • Эм
Реакции: Masayuki

LiLn

Участник
Автор темы
46
5
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end
Код:
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('Сундук с ресурсами') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('Осколок собейта') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end


local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('название твоего диалога') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('нужное тебе слово') then
sampSendDialogResponse(id, 1, listid, nil)
end
end
end
end
либо я пень, либо не работает
 

Вложения

  • moonloader.log
    22.4 KB · Просмотры: 1

VanoKLR

Известный
833
455
Код:
local sampev = require('samp.events')

function main()
repeat wait(100) until isSampAvailable()
while true do wait(0)

end
end

function sampev.onShowDialog(id,style,title,btn1,btn2,text)
if title:find('Сундук с ресурсами') then
local listid = -1
for line in text:gmatch("[^\n]+") do
local listid = listid + 1
if line:find('Осколок собейта') then
sendDialogResponse(id, 1, listid, nil)
end
end
end
end
это пиздец...
Люди слышали про табуляцию?
 
  • Нравится
Реакции: Lance_Sterling

LiLn

Участник
Автор темы
46
5
это пиздец...
Люди слышали про табуляцию?
та все равно, я могу её и сам натыкать, но скрипты не воркают епт

Ну что, кода увы не будет? Вроде ж легкий скрипт
 
Последнее редактирование:

VanoKLR

Известный
833
455