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

MrBidloKoder

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

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

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

leekyrave

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

Hatiko

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

leekyrave

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

MrBidloKoder

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

Hatiko

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

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,526
1,011
Самп перестаёт принимать пакеты от сервера если игрок находится в меню паузы либо вообще свернул игру
Учитывайте это
А почему тогда когда выходишь из афк – начинает лезть чат как бешенный?
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,652
2,535
А почему тогда когда выходишь из афк – начинает лезть чат как бешенный?
Потому что самп получает сообщения после выхода из АФК и.начинает соответственно отображать их
 

Vintik

Через тернии к звёздам
Проверенный
1,526
1,011
Потому что самп получает сообщения после выхода из АФК и.начинает соответственно отображать их
можно как-то при выходе из афк обнулить буффер этих сообщений?