как сделать правильно ловлю репорта

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Версия MoonLoader
.026-beta
кароче есть окно репорта, его ID - 988, вот как оно выглядит в игре
1673368032884.png

мне надо что бы при нажатии на кнопку открывалось это окно(команда /ar) и выбирался тот вариант в котором есть ник, а если нет ника то писало в чат что жалоб нет
так же если баг, что уже кто то просматривает жалобу(в чате уже кто-то просматривает) то просто надо что бы скрипт попробовал в жалобу ниже это сделать
попробовал сделать, не получилось.
вот как я реализовал в хуке получение репорта
Код:
if text:find('Всего жалоб: {f9b820}(%d+)') then--пиздим сколько всего жалоб. поможет в /ot и автоловле которая запрещена
        if not ot then all_r = text:match('Всего жалоб: {f9b820}(%d+)') end
        if not isGamePaused() and not isPauseMenuActive() then
            printStyledString('REPORT++', 150, 2)
        end
        blockreport = false
    end
вот как я сделал хуйню что бы отнималась переменная при открытии репорта администратором, которая ответственна за все жалобы (all_r)
Код:
if text:find('%[A%] %a+_%a+ начал обрабатывать жалобу (%a+)_(%a+)%[%d+%]') then
        if tonumber(all_r) > 0 then
            all_r = all_r - 1
        end
    end
вот что я сделал если нарушитель не найден
Код:
if text:find('Нарушитель не найден') then
        if tonumber(all_r) > 0 then
            all_r = all_r - 1
        end
        ot = false
        otf = false
        sampAddChatMessage('[Admin Tools]: {FFFFFF}Нарушитель не найден.',0x00BFFF)
        return false
    end
вот как я реализовал закрытие окна если появился баг и репорт открылся хотя жалоб нет
Код:
if text:find('Жалоба отсутствует') then
        if ot then
            all_r = all_r - 1
            if all_r == 0 then sampAddChatMessage('[Admin Tools]: {FFFFFF}Сейчас нет репорта1!',0x00BFFF) ot = false otf = false sampSendDialogResponse(988, 0, _, _) pingwt:run() sampCloseCurrentDialogWithButton(0)
            else sampSendDialogResponse(988, all_r, _, _) ot = false otf = false end
            -- return false
        else
            sampAddChatMessage('[Admin Tools]: {FFFFFF}Сейчас нет репорта2!',0x00BFFF)
            -- return false
        end
    end
тот же самый код и если кто то просматривает только в текст финд уже кто-то просматривает
так же я сделал скрытие репорта визуально, что бы тот не появлялся на пару милисек при нажатии на кнопку
Код:
if id == 988 and ot then
        return false
    elseif id == 988 then
        if mainIni.settings.auto_report then--это автоловля, не обращайте вниманиее
            return false
        end
    end
вот как реализован бинд репорта(в мейне)
Код:
bindOt = rkeys.registerHotKey(BOt.v, true, function ()
        if not sampIsChatInputActive() and not sampIsDialogActive() then
            if not blockreport then
                if not report_window_state.v then
                    if all_r ~= nil and all_r ~= 0 then
                        ot = true
                        otf = true
                        sampSendChat('/ar')
                        wait(10)
                        sampSendDialogResponse(988, 1, all_r - 1, _)
                    else
                        sampAddChatMessage('[Admin Tools]: {FFFFFF}Сейчас нет репорта!',0x00BFFF)
                        ot = false
                        otf = false
                    end
                else
                    sampAddChatMessage('[Admin Tools]: {FFFFFF}Вы уже просматриваете репорт!',0x00BFFF)
                end
            else
                sampAddChatMessage('[Admin Tools]: {FFFFFF}Скрипт только включился, дождитесь первого репорта в чате!',0x00BFFF)
            end
        end
    end)

кароче скрипт не работает, крашит иногда и вообще когда пишет что нет реепорта в чат от сервера то диалог не скрывается, а если скрывается то пишет закройте диалог
 

AugustTN

Известный
1,368
470
так же я сделал скрытие репорта визуально, что бы тот не появлялся на пару милисек при нажатии на кнопку
Код:
if id == 988 and ot then
return false
elseif id == 988 then
if mainIni.settings.auto_report then--это автоловля, не обращайте вниманиее
return false
end
end
Lua:
if id == 988 and ot or id == 988 and mainIni.settings.auto_report then
    return false
end

я тебе че ванга, чтобы понять в каком моменте у тебя крашит скрипт либо не работает вовсе. Делай дебаг - после каждого действия скрипта добавляй print('1'), print('2') и т.д, дабы ты понимал в какой части кода ошибка

И тогда если не сможешь решить ошибку - обращаешься в раздел помощи луа
 
Последнее редактирование:

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1673369683386.png


Lua:
if id == 988 and ot or id == 988 and mainIni.settings.auto_report then
    return false
end


я тебе че ванга, чтобы понять в каком моменте у тебя крашит скрипт либо не работает вовсе. Делай дебаг - после каждого действия скрипта добавляй print('1'), print('2') и т.д, дабы ты понимал в какой части кода ошибка

И тогда если не сможешь решить ошибку - обращаешься в раздел помощи луа
конкретно в тот момент я делал дебаги, как видишь там сейчас нет репорта1,2,3 и тд, кароче крашит на всех где дебаги кроме 2 и 4)