Что нового

[Warface] Нажатие пробела в окне под неактивной учётной записью Windows

dimkot

Новичок
Сообщения
6
Репутация
0
Есть такая игра - Warfaсe. У игры есть процесс Game.exe. Цель - запустить несколько твинков и чтобы они сами циклично нажимали Пробел с паузой в 1000 мс. Казалось бы, с виду - ничего сложного, но есть особенные условия...

Игра запускается в несколько окон под разными учётными записями Windows (песочница и виртуальные машины отпадают). Так, вот - нужен правильный скрипт бота-кликера, который будет работать с окном игры под каждой учётной записью Windows отдельно (в фоне). Пример: запускаем учётную запись User1, в ней запускаем игру (Game.exe) и включаем бота. Далее через быструю смену пользователей запускаем следующую учётную запись User2 и, соответственно, следующий клон игры (Game.exe) и так далее (всего 3-4 твинка). Под разными учётными записями пути запуска игры разные (клоны в разных папках). Так вот, необходимо, чтобы бот работал и отправлял команду даже в фоновой (залогиненной, но не активной) учётной записи. Т.е. через быструю смену пользователей мы переходим во вторую учётную запись User2, а чтобы в первой User1 бот продолжал работать и чтобы игра "видела" нажатие пробела, так, как это делает PS2 клавиатура. С программой Clickermann ничего не получилось, т.к. игра не видит нажатия пробела без параметра #ps2_keyborad в скрипте (эмуляция PS2 клавиатуры), а если прописать данный параметр - выполняться он будет только в активной залогиненной учётной записи. Да и выполняется он почему-то везде, в любых окнах и даже в Logon при выборе пользователя, хотя привязан именно к процессу Game.exe. А простую команду нажатия пробела игра рапознаёт только в чатах, т.е. нет прямого выполнения команды персонажем во время игрового процесса. Поэтому вариант с Clickermann отпадает (его можно использовать только в качестве анти-афк). В итоге вся надежда на AutoIt.

Я пробовал экспериментировать с разными вариантами функций Send и ControlSend но до истины не добрался. У меня нет опыта в написании подобных замысловатых AutoIt скриптов (ботов), но благодаря справке и готовым примерам появилось общее представление. Так вот, при использовании Send скрипт работает только с активным окном, которое находится как бы в фокусе (после клика по нему). Если нажать Win+L, соответственно, скрипт сразу теряет связь с игрой. С ControlSend и привязкой по WinGetHandle ситуация немного иная - скрипт работает, даже если окно не в фокусе (неактивно), но игра не видит команду нажатия Пробела так, как она выполняется при простом Send, т.е. в чатах печатаются отступы, а в самой игре нажатия пробела не происходит (персонаж должен нажимать Пробел, чтобы быстрее возрождаться после смерти). Ну и при быстрой смене пользователя по Win+L скрипт тоже перестаёт работать.

Для теста я взял отрывки кода из готовых примеров, т.к. не знал, с чего мне начать. В общем, прошу помощи и совета! В принципе, не откажусь, если тему перенесут в коммерческий раздел, т.к. чувствую, что хитростей и заморочек в моём скрипте будет много. И всё же очень хотелось бы это реализовать, т.к. песочница не работает, а в виртуальных машинах игра просто не запускается, ругаясь на 3D. Остаётся два варианта - либо несколько учёток, либо несколько компьютеров.

P.S. Windows 7 Professional x64, AutoIt 3.3.12.0, SciTE 3.2.5.99, все учётные записи имеют права администратора.

Для тестов использовались следующие отрывки кода:

Код:
HotKeySet("{F7}", "_start")
HotKeySet("{F8}", "_end")
Global $f = 0
While 1
    If $f = 1 Then
        Send("{SPACE}")
    EndIf
    Sleep(1000)
WEnd
Func _start()
    $f = 1
EndFunc
Func _end()
    $f = 0
EndFunc

Код:
HotKeySet('{F7}', '_start')
HotKeySet('{F8}', '_stop')

Global $var = 0

While 1
	Func _start()
		$var = 0
		While $var = 0
		ControlSend("Warfaсe", '', '', '{SPACE}')
		Sleep(1000)
    WEnd
 EndFunc

Func _stop()
    $var = 1
EndFunc

Код:
HotKeySet('{F7}', '_start')
HotKeySet('{F8}', '_stop')

Global $var = 0
$hWnd = WinGetHandle('Warfaсe')

While 1
	Func _start()
		$var = 0
		While $var = 0
		ControlSend($hWnd, '', '', '{SPACE}')
		Sleep(1000)
    WEnd
 EndFunc
 
Func _stop()
    $var = 1
EndFunc
 

bugaj

Знающий
Сообщения
140
Репутация
11
Re: [Мышь, клавиатура] Цикличное нажатие пробела в окне под

а какую виртуальную машину вы пробовали? VmWarePlayer?
 
Автор
D

dimkot

Новичок
Сообщения
6
Репутация
0
Re: [Мышь, клавиатура] Цикличное нажатие пробела в окне под

bugaj сказал(а):
а какую виртуальную машину вы пробовали? VmWarePlayer?
Откровенно говоря, пробовал только VirtualBox. А с VmWare даже заморачиваться не стал.
 

bugaj

Знающий
Сообщения
140
Репутация
11
Re: [Мышь, клавиатура] Цикличное нажатие пробела в

Откровенно говоря, пробовал только VirtualBox. А с VmWare даже заморачиваться не стал.

ну вот и зря. Потому что под вмВаре с 3Д дела обстоят гораздо лучше.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Мышь, клавиатура] Цикличное нажатие пробела в окне под неактивной учётной записью Windows

Дак попробуй VMWare. VirtualBox - говно унылое. Я на нем установив 95 винду, даже в Hogs Of War поиграть не смог.
 
Автор
D

dimkot

Новичок
Сообщения
6
Репутация
0
Re: [Мышь, клавиатура] Цикличное нажатие пробела в окне под неактивной учётной записью Windows

[quote author=bugaj]под вмВаре с 3Д дела обстоят гораздо лучше.[/quote]
[quote author=Belfigor]Дак попробуй VMWare. VirtualBox - говно унылое.[/quote]
Попробовал! Действительно, есть впечатляющие результаты! Огромное спасибо за совет! :beer:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Мышь, клавиатура] Цикличное нажатие пробела в окне под неактивной учётной записью Windows

Там еще тенденция, что чем более новая винда, тем лучше идет интеграция физических ресурсов пк, и виртуальных машин. При тестах вин8 для клиентов EVE Online, показала лучше фпс чем win7. На win8 удалось запустить больше клиентов EVE с фпс около 27-30, чем на win7. Где то читал что ожидающаяся win10, будет еще лучше интигрироваться в виртуальных средах. Ну собсно у кого есть желание, могут уже качать technical preview (там уже 2-й или даже 3-й есть) и писать ботов под новую ОС, которая будет стандартом Win систем ближайшие года 3 точно.
Там правда согласие надо выразить что вся инфа о работе системы, крашах, багах и тд и тп будет уходить на сервера майкрософта. Но для среды которая ставится исключительно чтобы погонять и потестить бота, это не такая уже большая проблема конфиденциальности. Ну и майкрософту глубоко плевать на наши логины и пароли от аккаунтов. Если бы я щас играл во что-то онлайновое, я бы обязательно гонял своих ботов на десятке, пусть даже тестовой :smile:.


Добавлено:
Сообщение автоматически объединено:

P.S. Использовать рекомендую не VMWare Player, а VMWare Workstation. У меня на ноутбуке, в VMW WS 7 летает 76 виндовых клиентских машин, на которых тестируются боты-вирусы, и никаких проблем нету. А с VMWare Player можно гемора кучу нахватать в виде плохой проброски ресурсов внутрь вирт машины и тд и тп
 

bugaj

Знающий
Сообщения
140
Репутация
11
:laugh: 76? если 7й винде нужно гигов 30-40, то всего 3 терабайта на винте. как ты запихал на ноут столько виртуальных машин?)) а уж тем более запустил.

какую винду используешь в качестве хоста?

В последнее время XP совсем не радует как гостевая винда, все лагает тормозит, причем я не бочу и не играю, и то глюки достали. Почему раньше было все норм) надо что то новое искать, говорят есть виртуалки, которые не палятся защитами(ну есть надежда, что не палятся )) ), потому что они эмулируют железо, но вопрос в том, работают ли на них 3д игры, те что я смотрел виртуалки, что то доисторическое эмулируют) https://ru.wikipedia.org/wiki/Bochs

Может свою виртуалку напишем? для ботеров? кто умеет? )
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Windows Server 2008 R2. Ноут с 4 слотами для 2.5" жестких дисков, один из них WD Black2, остальные по 2 тб, на борту 12 ядерный Xeon, 2 дискретных заменяемых видяхи nVidia GTX880M по 8гб каждая и 32 гб оперативной памяти. Под каждую винду используется минимальное системное требование по месту на жестком диске + 200мб.


Добавлено:
Сообщение автоматически объединено:

P.S. На каждой клиентской машине 256мб оперы и разрешение 800х600
 

nowost

Знающий
Сообщения
178
Репутация
17
mother-of-god-meme-168297.jpg

Уж не этот ли ?
___overclockers.ru/hardnews/52064/Eurocom_Panther_5_SE_noutbuk_s_processorom_v_ispolnenii_LGA_2011.html
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
nowost [?]
Уж не этот ли ?___overclockers.ru/hardnews/52064/Eurocom_Panther_5_SE_noutbuk_s_processorom_v_ispolnenii_LGA_2011.html
Да, он самый, а на прошлой неделе я eurocom m4 еще купил, теперь я абсолютно мобилен :smile:.
У нас в России фирма a-notebook, нормально их доставляет прям из канады. Я вообще после еврокома, другие ноуты покупать не буду. С одинаковыми заявленными ттх, ноут евроком и например асус стоят либо одинаково, либо евроком дешевле. + у еврокома внутрянка очень кастомизируема, при желании можно купить минимальную комплектацию с норм процом, а хдд и память докупать потом.
 

Александр_

[url=http://autoit-script.ru/index.php?topic=21393
Сообщения
62
Репутация
2
Не пробовали запустить просто через песок игру? Для большого количества виртуальных машин требуется серьезное железо)
 
Автор
D

dimkot

Новичок
Сообщения
6
Репутация
0
Александр_ сказал(а):
Не пробовали запустить просто через песок игру? Для большого количества виртуальных машин требуется серьезное железо)
Через песок сие чудо уже давно не работает. А через VMWare на средне-бюджетном ящике мне удалось запустить ТРИ виртуалки с Win7Pro+Warfaсe.

Подопытное железо:
CPU: AMD A8 3870
RAM: 4Gb DDR3 1333
GPU: Radeon R9 270 2Gb GDDR5
SSD 60Gb

При запуске четвёртой виртуалки у машины начинается эпилепсия, т.к. тупо не хватает оперативки :D

67m0ysqhuOY.jpg

Да и места под каждую виртуальную машину выделяется примерно 9-10Gb (с учётом кэша).

Если сравнить с запуском под разными учётками Windows - там конечно же можно запустить на 1-2 учётки больше. Ну а неудобство этого способа, собственно, и являлось причиной для создания этой темы (инфа в шапке).
 
Верх