Работа с неактивными окнами игры

Ответить
Aizark
Сообщения: 1
Зарегистрирован: 31 мар 2022, 08:42

Работа с неактивными окнами игры

Сообщение Aizark »

Есть особая не очень популярная игра, разработанная парой человек. Защиты внутри нет. Боты разрешены. Есть открытый код клиента. Клиент на java. Часто патчится и обновляется. Я люблю эту игру и хочу избавить себя от рутины.

Ранее я модифицировал клиент, или пользовался сторонним форком клиента от других пользователей, поддерживающие скриптинг с ботами.
Благодаря скриптам я делал ботов на разные рутинные действия.

В данный момент я хочу отказаться от форков клиента, созданные игроками, в угоду классического клиента от разработчиков.
Внутри у ванильного клиента естественно нет скриптов, и клиент чисто для поиграть. Игра часто патчится, и зачастую форки созданные игроками, умирают и вся наработанная база ботов просто перестает работать, ибо некому устранить ошибки и несостыковки работы клиента.

Я стал искать решение задачи, что бы создать ботов и потом один раз и ими пользоваться, не переписывая все с нуля.
Решил использовать ботов-кликеров, умеющие анализировать графику, и др. условия, а так же выполнять сценарии.
Наткнулся на UoPilot, он мне понравился, но у него были проблемы с тем, что не проходили в нажатия клавиш в клиент.(клики мыши работали)
Пообщавшись, узнал, что есть уже новый "сценарный кликер" переросший из комьюнити UoPilot, и вот я здесь.

Однако, проблема с тем, что в неактивное окно не проходят нажатия клавиш - сохранилась.

Почитав форум я скопипастил разные части кода, и сворганил простое приложение.

Wake up, Neo, select all

$h = Find-Window -Title "Aizark" # найти окно, в имени которого содержится слово

if($h.count -gt 0) # если окно найдено
{
Write-Host "Окно найдено" -ForegroundColor Green

Start-Sleep -Seconds 3 # Время на тесты и манипуляции

Write-Host $h.handle[0] -ForegroundColor Yellow
Send-Key S -Handle $h.handle[0] # нажать клавишу S
}
else # если окно не найдено
{
Write-Host "Окно не найдено" -ForegroundColor Red
Stop-Script # остановить скрипт
}

Я очень не хочу использовать виртуальные машины, для реализации кучи ботов, как это делают когда для бота требуется активное открытое окно игры.
В моем случае я хотел бы иметь открытые 10+- окон игры, и авто логику управления персонажами в них, (всякие рыбаки, строители, копатели и др.) ну а я, спокойно себе играл за отдельным окном игры, и логика скриптов никак не мешала мне играть за мейн персонажа.

Я замечал что излюбленным методом логики кода было сделать окно активным. А это по сути может прервать логику другого скрипта, и тем более помешать тебе самому играть в своем окне.

Мне нужно избежать подобных проблем, и получить возможность запускать кучу скриптов, UoPilot например позволял кучу вкладок открыть, может ли сейчас psClick так делать?
Есть ли у него работа с окнами и отправкой в них нажатия клавиш, или отправка предложений? Часто натыкался на фразу "не все приложения позволяют это делать". Не ужели нет решения? Мб другая логика или другая программа?

Буду рад за ответы и правку кода если она нужна. Естественно нажатие клавиши проходит, если окно игры активно. Я его не сворачиваю, перекрыто тем же кликером.

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: Работа с неактивными окнами игры

Сообщение cirus »

Если игра не воспринимает эмуляцию нажатий, то ничего не сделать, от кликера это не зависит.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: Eldarlrg, Robpmb и 1 гость