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

MrBidloKoder

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

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

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

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

#Northn

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

Vintik

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