хукать чат вне афк

MrBidloKoder

Известный
Автор темы
425
248
Версия MoonLoader
.027.0-preview
Как убрать хук чата когда чел в афк т.е я выхожу афк и возвращаюсь через минут 5. После нажатия на ESC, все сообщения из чата резко приходят в одну секунду и затем получается пиздец (в случае автоответчика всё именно так). Если кто-то знает решение, то поделитесь пожалуйста.
 
  • Нравится
Реакции: leekyrave
Решение
Ну, на практике не работает это без антиафк. Вот сам файл:
От сворачивания или просто перемещения фокуса окна должна работать. У меня во-первых один скрипт работает с такой защитой на ура, во-вторых только что протестировал, всё нормально.
Касаемо активности меню ты не правильно сделал. У тебя идёт проверка активности меню в реальном времени, т.е. ты в меню - всё гуд, блокается принятие сообщений, вышел из меню и в этот же момент и снимается блок. На свитч меню нужно треггер сделать отдельный, можно конечно скрестить с винсобытием, но там надо продумать алгоритм, потом может сам придумаешь, мне лень сейчас думать , пара идёт )

Вот такой немного костыльный метод - триггер на меню

Lua:
switchPause = false -- Служебная переменная...

Hatiko

Известный
Проверенный
1,472
611
Ну, на практике не работает это без антиафк. Вот сам файл:
От сворачивания или просто перемещения фокуса окна должна работать. У меня во-первых один скрипт работает с такой защитой на ура, во-вторых только что протестировал, всё нормально.
Касаемо активности меню ты не правильно сделал. У тебя идёт проверка активности меню в реальном времени, т.е. ты в меню - всё гуд, блокается принятие сообщений, вышел из меню и в этот же момент и снимается блок. На свитч меню нужно треггер сделать отдельный, можно конечно скрестить с винсобытием, но там надо продумать алгоритм, потом может сам придумаешь, мне лень сейчас думать , пара идёт )

Вот такой немного костыльный метод - триггер на меню

Lua:
switchPause = false -- Служебная переменная для триггерации.
isPause = false -- Для использовании

-- Где-то в бесконечном цикле
if isPauseMenuActive() and not switchPause then
    switchPause = true
    isPause = true
    print("Вошли в меню.")
    -- Если меню стало активным
    elseif not isPauseMenuActive() and switchPause then
    switchPause = false
    lua_thread.create(function()
        wait(1000)
        print("Вышли из меню. Активировали приём сообщений")
        isPause = false
    end)
end
----------

function hook.onServerMessage(col, text)
    if focus and not isPause then -- ну и того получаем такое
        -- вывод нормальных сообщений
    end
end
 
Последнее редактирование:
  • Вау
Реакции: MrBidloKoder

leekyrave

Известный
419
223
Как убрать хук чата когда чел в афк т.е я выхожу афк и возвращаюсь через минут 5. После нажатия на ESC, все сообщения из чата резко приходят в одну секунду и затем получается пиздец (в случае автоответчика всё именно так). Если кто-то знает решение, то поделитесь пожалуйста.
жиза,такой-же трабл с чекером подобный есть
 

Hatiko

Известный
Проверенный
1,472
611
Сделать предохранитель от этого на основе события onWindowMessage 7 и 8.
Когда игру сворачиваешь, фокус окна теряется и срабатывает id 7. Присваиваешь какой-то переменной false.
Потом когда игру разворачиваешь, срабатывает событие id 8, здесь можно создать поток или что-то другое, что позволит переменной получить true через пару секунд, к примеру.
А далее эту переменную суёшь в туда, куда надо, чтобы на сообщения пришедшие потоком после афк не триггерилось событие onServerMessage.
На счёт ESC по аналогичной технологией. в samp.lua новом точно не помню есть событие на открытие/закрытие меню, если нет, можно проверять статус активности меню.
 
  • Нравится
Реакции: Cosmo и leekyrave

leekyrave

Известный
419
223
Сделать предохранитель от этого на основе события onWindowMessage 7 и 8.
Когда игру сворачиваешь, фокус окна теряется и срабатывает id 7. Присваиваешь какой-то переменной false.
Потом когда игру разворачиваешь, срабатывает событие id 8, здесь можно создать поток или что-то другое, что позволит переменной получить true через пару секунд, к примеру.
А далее эту переменную суёшь в туда, куда надо, чтобы на сообщения пришедшие потоком после афк не триггерилось событие onServerMessage.
На счёт ESC по аналогичной технологией. в samp.lua новом точно не помню есть событие на открытие/закрытие меню, если нет, можно проверять статус активности меню.
а как юзать вообще onwindowmessage
 

MrBidloKoder

Известный
Автор темы
425
248
Сделать предохранитель от этого на основе события onWindowMessage 7 и 8.
Когда игру сворачиваешь, фокус окна теряется и срабатывает id 7. Присваиваешь какой-то переменной false.
Потом когда игру разворачиваешь, срабатывает событие id 8, здесь можно создать поток или что-то другое, что позволит переменной получить true через пару секунд, к примеру.
А далее эту переменную суёшь в туда, куда надо, чтобы на сообщения пришедшие потоком после афк не триггерилось событие onServerMessage.
На счёт ESC по аналогичной технологией. в samp.lua новом точно не помню есть событие на открытие/закрытие меню, если нет, можно проверять статус активности меню.
ну примерно понял, попробую что-то замутить
 

Hatiko

Известный
Проверенный
1,472
611
Приблизительно так, здесь есть некоторые нюансы, но в базовом варианте, думаю, сойдёт. Защита именно от сворачивания или переноса курсора, то бишь потеря фокуса окна.

Lua:
local focus = true

addEventHandler("onWindowMessage", function (msg, wparam, lparam)
    if msg == 7 then
        lua_thread.create(function()
            wait(1500)
            focus = true
        end)
    elseif msg == 8 then
         focus = false
    end
end

function ev.onServerMessage(col, msg)
    if focus and msg:find(".....") then
        -- OK code
    end
end

На счёт меню, посмотрел события, таких нет. Через функцию isPauseMenuActive() можно скостылить.


а разве луашник работает когда чел свернул игру?
В меню работают скрипты, если поставить разрешение - script_properties("work-in-pause")
Когда игра свёрнута и включен антиафк, то всё работает.
 
  • Нравится
  • Bug
Реакции: leekyrave и norrthh

Vintik

Мечтатель
Проверенный
1,467
916
Самп перестаёт принимать пакеты от сервера если игрок находится в меню паузы либо вообще свернул игру
Учитывайте это
А почему тогда когда выходишь из афк – начинает лезть чат как бешенный?
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,482
А почему тогда когда выходишь из афк – начинает лезть чат как бешенный?
Потому что самп получает сообщения после выхода из АФК и.начинает соответственно отображать их