Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39

Ориентация бота в игре

25.01.2013, 19:57. Показов 5531. Ответов 43
Метки нет (Все метки)

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

Добавлено через 48 минут
up>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2013, 19:57
Ответы с готовыми решениями:

Интеллект бота в игре "Покер на костях"
Вот правила Необходимо так же 5 кубиков. Цель игры: составить наиболее выгодную покерную комбинацию из пяти игральных костей. Количество...

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

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

43
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
27.01.2013, 21:56
Студворк — интернет-сервис помощи студентам
denis0612,
C++
1
2
LPCTSTR lpClassName,    // указатель на имя класса
LPCTSTR lpWindowName    // указатель на имя окна
Добавлено через 3 минуты
Если заголовок все время меняется, но содержит при этом какую то постоянную надпись, тогда можно с помощью Enum перечислять окна, смотреть какая там надпись в заголовке, и если подходит под твое описание запоминать HWND окна, и прекращать перечисление.
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
27.01.2013, 23:50
Цитата Сообщение от m1Rr0r Посмотреть сообщение
Мало что даст...
даже не мало что даст, а можно сказать ничего не даст. графика и клиент игры для реального человека создают сложности восприятия, для бота вообще будет нереал чтото делать, тем более игра очень динамичная.

а на счет трафика - даже если он зашифрован - клиент то у тебя на компе, надо его ковырнуть и достать оттуда методы кодировки/декодировки. я не думаю что это будет сложнее анализа игрового экрана...
1
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
28.01.2013, 16:47  [ТС]
Цитата Сообщение от m1Rr0r Посмотреть сообщение
denis0612,
C++
1
2
LPCTSTR lpClassName,    // указатель на имя класса
LPCTSTR lpWindowName    // указатель на имя окна
Добавлено через 3 минуты
Если заголовок все время меняется, но содержит при этом какую то постоянную надпись, тогда можно с помощью Enum перечислять окна, смотреть какая там надпись в заголовке, и если подходит под твое описание запоминать HWND окна, и прекращать перечисление.
Да я это уже сто раз прочитал, думал вы пример приведете, а то у меня ошибка в компиляторе:
error C2664: FindWindowW: невозможно преобразовать параметр 2 из "const char [6]" в "LPCWSTR"
Пишу:
C++
1
2
HWND client;
client=FindWindow(NULL, "Skype");
Добавлено через 4 часа 14 минут
up+
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
28.01.2013, 18:01
C++
1
2
HWND client;
client=FindWindow(NULL, (LPCWSTR)"Skype");
Как насчет такого ?
0
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
28.01.2013, 21:06  [ТС]
Ура, и этого я добивался 2 дня, хух, идем дальше, почему функция возвращает 6 нулей:
FindWindow(NULL, (LPCWSTR)"Skype");
Причем заголовок какого окна я бы не писал...
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
28.01.2013, 21:41
Пробуй так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <iostream>
 
using namespace std;
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)  {
    char target[] = "Skype";
    char caption[255];
    if(GetWindowText(hwnd, caption, sizeof(caption)))
        if(strstr(caption, target) != 0)
            cout << "HWND: " << hwnd << " | " << "Text: " << caption << endl;
    return TRUE;
}
int main()  {
    setlocale(LC_ALL, "Russian");
    if(EnumWindows(&EnumWindowsProc, 0))
    return 0;
}
Через Spy++ удостоверься что заголовок правильный.
Или используй перечисление окон из примера выше)
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:13
потому что нужно использовать не FindWindow, а FindWindowA
0
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
01.02.2013, 15:16  [ТС]
Цитата Сообщение от m1Rr0r Посмотреть сообщение
Пробуй так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <iostream>
 
using namespace std;
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)  {
    char target[] = "Skype";
    char caption[255];
    if(GetWindowText(hwnd, caption, sizeof(caption)))
        if(strstr(caption, target) != 0)
            cout << "HWND: " << hwnd << " | " << "Text: " << caption << endl;
    return TRUE;
}
int main()  {
    setlocale(LC_ALL, "Russian");
    if(EnumWindows(&EnumWindowsProc, 0))
    return 0;
}
Через Spy++ удостоверься что заголовок правильный.
Или используй перечисление окон из примера выше)
Этот код не работает.
Название верное, беру из spy ++.
После запуска программы наблюдается следующее:
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll" , Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\apphelp.dll", Невозможно найти или открыть файл PDB
SHIMVIEW: ShimInfo(Complete)
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\user32.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\msvcr100d.dll", Символы загружены.
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\msvcp100d.dll", Символы загружены.
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\gdi32.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\imm32.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\msctf.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "C:\Windows\SysWOW64\msvcrt.dll", Невозможно найти или открыть файл PDB
"WOT_cheat.exe": Загружено: "ImageAtBase0xda0000", Загрузка отключена параметром включения/исключения.
"WOT_cheat.exe": Выгружено: "ImageAtBase0xda0000"
Программа "[2720] WOT_cheat.exe: Машинный код" завершилась с кодом -1073741510 (0xc000013a).

Добавлено через 17 часов 47 минут
up+++

Добавлено через 1 час 14 минут
+++
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
01.02.2013, 16:29
Цитата Сообщение от denis0612 Посмотреть сообщение
Этот код не работает
Код работает.
Вот почему у Вас не работает, понятия не имею.
И потом...Ну допустим вы получили HWND окна, что вы делать дальше будете ?
0
 Аватар для Ogniel
24 / 24 / 7
Регистрация: 30.05.2011
Сообщений: 129
02.02.2013, 11:49
Цитата Сообщение от denis0612 Посмотреть сообщение
Спасибо, а нет ли варианта, если не перехватывать пакеты, а просто разобрать экран по слоям, миникарта, фон, параметры, надписи? Это вообще можно сделать? А то чувствую, что перехватывать пакеты вряд ли удастся.
а для таких целей есть SDK. через него и оперируй)))
0
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
04.02.2013, 18:27  [ТС]
Я так понимаю нужно юзать Directx SDK в моем случае.
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
04.02.2013, 18:37
denis0612,
...пальцем в небо тыкать далеко не уедешь...
Цитата Сообщение от denis0612 Посмотреть сообщение
Я так понимаю нужно юзать Directx SDK в моем случае.
Вариант с пакетами на мой взгляд самый оптимальный.
0
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
05.02.2013, 19:03  [ТС]
Допустим стянуть и подменить пакет я смогу, а вот где искать метод шифровки я даже предположения не имею, так что думаю нужно плясать в другую сторону...

Добавлено через 23 часа 12 минут
Можно пример работы функции EnumChildWindows (перечислить все дочерние окна по его HWND), а то в документации не разберусь...
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
05.02.2013, 20:21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <windows.h>
#include <iostream>
 
HWND winHWND = NULL;
 
 
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)  {
    char buff[255];
    GetWindowTextA(hwnd, buff, sizeof(buff));
    std::cout << "\tCaption: " << buff << " | HWND: " << hwnd << std::endl;
    return TRUE;
}
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)  {
    char buff[255];
    char target[] = "Skype";
    if(GetWindowTextA(hwnd, buff, sizeof(buff)))
        if(strstr(buff, target) != 0)  {
            std::cout << "Main win: " << buff << std::endl;
            std::cout << "Child windows: \n";
            EnumChildWindows(hwnd, &EnumChildProc, 0);
        }
    return TRUE;
}
 
 
 
int main()  {
    setlocale(LC_ALL, "Russian");
    if(EnumWindows(&EnumWindowsProc, 0))
    return 0;
}
0
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
05.02.2013, 20:26  [ТС]
Спасибо, и еще вопрос, пытаюсь имитировать нажатия клавиш, так вот использую keybd_event. Символы и цифры работают, а спец. клавиши такие как ESC,ENT,TAB не работают...
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
05.02.2013, 20:52
C++
1
VK_TAB
и т.д.
0
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
06.02.2013, 15:02  [ТС]
Да это я знаю, именно так и не срабатывают.

Добавлено через 13 часов 33 минуты
Я где-то читал, что эта функция не работает в играх и некоторых приложениях, что использовать вместо нее.

Добавлено через 4 часа 9 минут
upp
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
08.02.2013, 14:02
Цитата Сообщение от denis0612 Посмотреть сообщение
Допустим стянуть и подменить пакет я смогу, а вот где искать метод шифровки я даже предположения не имею, так что думаю нужно плясать в другую сторону...
есть возможность подсмотреть исходники клиента... мб там будет нужный алгоритм...
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
08.02.2013, 14:46
Цитата Сообщение от hepper Посмотреть сообщение
есть возможность подсмотреть исходники клиента... мб там будет нужный алгоритм...
имхо, больше нечего сказать. всё зависит от вашего мастерства и размера проекта. наврятли разбираемый вами пакет данных передаёт 3 типа значений
высота
ширина
матрица
или т. п.
разработчики могут просто сделать шифровку и фиг вы решите что тут сделанна именно она ,а не другая
C++
1
2
for(unsigned int i = 0; i > len; i++)
c[i] += i;
так что ... приводите
1 название программы
2 ваши наработки

Добавлено через 3 минуты
denis0612, насчёт перехвата пакета (для программы вашей) - емли любите "хардкор))" можете использовать сырые сокеты. как сделать на них снифер, примеров хватает в инете
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
08.02.2013, 21:36
я даж исходники бота нашел какого то... по протоколу еще ничего там не нашел, но возможно работает по принципу, на котором пытается остановится ТС
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2013, 21:36
Помогаю со студенческими работами здесь

Искуственный интелект бота в игре Пакман
Делаю в питоне игру Пакман. Не знаю как прописать Искуственный Интелект(ИИ) призракам(ботам) что бы они могли самостоятельно выходить из...

Как запрограммировать бота в игре Colobot
Наверное, многие играли в эту игру, но я застрял на одном уровне и не понимаю, как его пройти, как вы понимаете только начала изучать...

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

Алгоритм получения всех вариантов ходов бота в карточной игре 101
Всех приветствую. Где-то два года назад я разработал карточную игру сто одно под android. Пока что поддерживается только игра с ботами....

Ошибка 0x000000101 , при игре 10 минутной игре в Dota 2, CS:GO
Имя события проблемы: BlueScreen Версия ОС: 6.1.7600.2.0.0.256.48 Код языка: 1049 Дополнительные сведения об этой проблеме: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru