Сегодня господин новорег 0x00 NULL предложил решение проблемы выбрасывания из игры в GeForce Now спустя 15 минут простоя. Однако, ни предоставлять исходники, ни объяснять принцип работы своего творения, он по какой-то натянутой причине не захотел, предлагая поверить в безопасность его программы на слово.
Более того, активное пропихивание его группы ВК как в посте, так и в самой программе (принудительный редирект при каждом запуске) отбивает всякое желание пользоваться его продуктом интеллектуального труда.
Всё это довольно подозрительно и неприятно, поэтому я предлагаю вам максимально прозрачный способ решения данной проблемы.
Внимание особо впечатлительным, возможно присутствие быдлокода!
Благодаря наводке от Vladimir Holmston, выяснилось, что всё что делает программа от 0x00 NULL при взаимодействии с GFN, это отсылает в окно лаунчера клавиши F13 и, возможно, IME, которые не существуют в физическом виде в подавляющем большинстве клавиатур. Это объясняет всю «магию» того, почему программа не мешает игровому процессу — на эти клавиши никто не назначает никаких действий.
Проверка кейлоггером это подтвердила, а также показала, что ПО тупо спамит F13 каждую секунду — ровно 10 нажатий за 10 секунд. Но ЗОЧЕМ?
Это также дает основания полагать, что у GFN нет никаких умных проверок на активность — ни на движение мыши, ни на одинаковые промежутки между нажатиями клавиш и т.п, что упрощает задачу.
Наиболее близкое, но прозрачное решение можно получить таким образом:
1. Ставим AutoHotKey (для тех кто в танке: статья на Вики, исходники на Гите)
2. Копируем в блокнот:
{
sleep 120000 ; пауза перед началом цикла 120000 миллисекунд = 2 минуты
IfWinActive, ahk_exe GeForceNOW.exe ; проверка наличия активного окна GeForceNOW
{
SendInput {vk7C} ; отправка клавиши F13 (0x7C)
sleep 500 ; пауза 500 миллисекунд = 0.5 секунд
SendInput {vk1C} ; отправка клавиши IME convert (0x1C)
}
}
3. Сохраняем в формате .ahk
4. Запускаем получившийся файл. По желанию добавляем в автозагрузку
Результат
Интерфейс максимально простой — его нет. Он нам на*уй не нужон, интерфейс ваш. Вам не нужно выбирать процесс игры запущенной в GFN — всё определяется автоматически. Просто либо добавляете программу в автозагрузку, либо запускаете ее вручную.
При наличии активного окна GeForce NOW каждые две минуты скрипт нажимает клавишу F13 и на всякий случай одну из IME. Коды используемых в скрипте клавиш можно посмотреть здесь.
По моим замерам, из игры выбрасывает через 15 минут бездействия. С активным скриптом игра продержалась 30 минут, дальше тестировать не стал.
Частоту нажатия фейковых клавиш можете регулировать по желанию значением в команде Sleep (см. комментарии в коде — пауза перед началом цикла). Но я не заметил никаких проблем и при двухминутной частоте — игровому процессу никак не мешает, лагов нет, управление при нажатии скриптом виртуальных клавишей не блокируется.
Итого мы имеем 6 строчек кода, все команды ясны и прозрачны — обычный кликер, и не надо изобретать велосипед.
А что там у нашего товарища?
UI класс со всеми функциями занимает ~200 строк кода. Код библиотеки занимает ~40 строк кода. Додумайтесь как реализовать подобное и выкладывайте пожалуйста в открытый доступ свои сурсы.
Я придумал способ которым могу обходить кик за афк, зачем мне делать этот способ общедоступным ?
Не совсем обычный кликер, данный способ эмулирования активности пользователя никак не влияет на комфортную игру
Правильно воспользоваться API так чтобы GFN подумал, что ты реальный человек — это нечто другое, чем просто тупое использование какой-то функции. Там нужна логика и прочее.
Если данный вариант пофиксят, тупо запретив использование несуществующих клавиш, или добавят каких-то дополнительных проверок, то есть запасное, менее удобное, но как мне кажется, более надежное решение — его вряд-ли можно как-то запретить:
F2:: SetTimer, AntiAFK, Delete
RandomKeyPress:
Random, rand, 1000, 2000
return
RandomMousePosition:
Random, rand1, 10, 50
Random, rand2, 10, 50
Random, rand3, 10, 50
return
AntiAFK:
Random, rand, 10000, 20000
Sleep %rand%
SendInput {W down}
Gosub, RandomKeyPress
Sleep %rand%
SendInput {W up}
SendInput {S down}
Sleep %rand%
SendInput {S up}
Gosub, RandomMousePosition
MouseMove, %rand1%, %rand2%, %rand3%, R
Gosub, RandomMousePosition
MouseMove, -%rand1%, -%rand2%, %rand3%, R
return
При нажатии на F1, рандомно каждые 10-20 секунд будут нажиматься клавиши W, S с рандомной продолжительностью и двигаться мышка на рандомное количество пикселей с рандомной скоростью. При нажатии на F2 цикл прекращается.
Поменять клавиши запуска и остановки скрипта можно при желании по этой документации.



