412

Как Crossout "гоняет" читеров

Вчерась на Пикабу было объявлено о появлении нового сообщества об довольно старенькой игре Crossout.

Под первым постом было не очень много жизни, но я решил задать вопрос ТСу, о читерах из за которых стало неинтересно играть в эту игру. А именно, началась ли борьба с читерами или всё так же уныло.
@Crossout заверил меня, что гоняют. И мы договорились, что сегодня я проверяю работает ли мой "чит" и если он продолжает работать, то я его обнародую. На что было получено согласие, таким образом я действую с согласия ТС и на благо сообщества.


Чуть более года назад я создавал тикет в саппорт gaijin об возможности проводить скоростную стрельбу из пулемета без увеличения разброса, программный способ "проклика".

Как Crossout "гоняет" читеров

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

Так вот, повстречав несколько раз явно программно-управляемые спайки практически левиофаноподобных автомобилей в свободном мире, я засомневался, а есть ли вообще античит у этой игры.

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

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

после первого запуска скрипта мне понадобилось 5 минут на подбор настроек, а именно "задержка в миллисекундах между нажатием и отпусканием кнопки мыши" и "задержка в миллисекундах между одиночными кликами"

для меня идеальными на белых-синих пулеметах показались 45-50*100-110


Собственно код на AutoIT.

#include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
HotKeySet("{PAUSE}", "Start")
HotKeySet("+{ESC}", "Quit")
$GUI = GUICreate("klicker", 455, 105)
$InpDownUp = GUICtrlCreateInput("", 5, 5, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "DownUpDelay", "5"))))
GUICtrlCreateLabel("задержка в миллисекундах между нажатием и отпусканием кнопки мыши", 60, 5, 380, 20, 0x0200)
$InpClicks = GUICtrlCreateInput("", 5, 30, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay", "30"))))
GUICtrlCreateLabel("задержка в миллисекундах между одиночными кликами", 60, 30, 380, 20, 0x0200)
GUICtrlCreateLabel("Pause - установка/снятие кликера с паузы", 5, 55, 230, 20, 0x0200)
GUICtrlCreateLabel("Shift+ESC - прекращение работы скрипта", 5, 80, 230, 20, 0x0200)
$BtnStart = GUICtrlCreateButton("Готово", 350, 55, 100, 45)
GUISetState()
Do
Switch GUIGetMsg()
Case -3
Exit
Case $BtnStart
IniWrite(@ScriptDir & "\DelaySets.ini", "Delay", "DownUpDelay", GUICtrlRead($InpDownUp))
IniWrite(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay", GUICtrlRead($InpClicks))
ExitLoop
EndSwitch
Until 0
Global $DownUpDelay = GUICtrlRead($InpDownUp)
Global $ClicksDelay = GUICtrlRead($InpClicks)
Global $Start = True
GUIDelete($GUI)
Do
If $Start Then
If _IsPressed("02") Then
Do
$tPoint = _WinAPI_GetMousePos()
$hWin = _WinAPI_WindowFromPoint($tPoint)
_WinAPI_ScreenToClient($hWin, $tPoint)
LeftDownUp($hWin, $tPoint.X, $tPoint.Y, $DownUpDelay)
Sleep($ClicksDelay)
Until Not _IsPressed("01")
EndIf
EndIf
Sleep(10)
Until 0
Func LeftDownUp($hWnd, $X, $Y, $Sleep = 0)
_WinAPI_PostMessage($hWnd, $WM_LBUTTONDOWN, 0, _WinAPI_MakeLong($X, $Y))
_WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONDOWN))
If $Sleep Then Sleep($Sleep)
_WinAPI_PostMessage($hWnd, $WM_LBUTTONUP, 0, _WinAPI_MakeLong($X, $Y))
_WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONUP))
EndFunc
Func Start()
$Start = Not $Start
EndFunc
Func Quit()
Exit
EndFunc

Как вы догадались, всё работает, буквально пишу из гаража где автосборкой собрал какое-то корытце с пулеметами и пострелял по мишеням близ гаража.


Я не преследовал цель нафармить ресурсов или упростить игру, я хотел чтобы ничего не вышло.

Crossout

256 постов904 подписчика

Правила сообщества

Старайтесь соблюдать общепринятые нормы поведения и уважительную форму общения.


В сообществе запрещается:

— Продажи, нарушающие правила пользовательского и лицензионного соглашений игры.

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

— Написание сообщения заглавными буквами.

— Разбивка одного комментария на несколько, с целью увеличения их общего количества.

— Размещение ссылок на посторонние Интернет-ресурсы, реклама и обсуждение посторонних проектов. Это официальное сообщество игры Crossout, а не других online-проектов.

— Использование сообщества для сообщений личного характера, которые не представляют интереса для других участников сообщества. Для этого существует электронная почта или личные сообщения.