Я пытался написать небольшую программу, которая работает за Counter-Strike: Global Offensive. Программа должна быть полностью внешней, поскольку нет возможности получить доступ к данным о реальном матче или API в ходе соревновательного рейтинга. До сих пор я мог найти наилучший подход:Как один игрок проигрывает в CS: GO использует внешнюю программу?
case WM_TIMER:
COLORREF curColor, safetyColor;
for(int a = 1750;a < 1830;a++)
for (int b = 75;b < 100;b++)
{
curColor = GetPixel(csgoDC, a, b);
safetyColor = GetPixel(csgoDC, 1856, 1060);
if (GetRValue(curColor) == 255 && GetGValue(curColor) == 255 && GetBValue(curColor) == 255 && GetRValue(safetyColor) != 255)
PlaySound(_T("C:\\headshot.wav"), NULL, SND_FILENAME | SND_ASYNC);
}
break;
Это срабатывает по таймеру. Это не работает надежно, и я уверен, что он вообще не будет работать в полноэкранном режиме (трудно проверить, когда он не является надежным для начала). Индексы в вложенном цикле соответствуют месту на экране, где появляется killfeed. Вот пример пользовательского интерфейса (от Google) Screenshot
Обратите внимание, что я специально не собираюсь использовать пиксельный подход; это единственное решение, о котором я мог думать.
Если они блокируют API во время соревновательного матча, разве это не обманывать? –
Чтение пикселей На экране ничего не происходит в программе; единственный раз, когда я это делаю, это получить идентификатор процесса, и это нормально. – ThePyrotechnic