Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
denis0612
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
#1

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

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

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

Добавлено через 48 минут
up>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2013, 19:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ориентация бота в игре (C++):

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

Ориентация треугольника в пространстве - C++
Все доброго времени суток, вообщем пытаюсь понять, как определить ориентацию треугольника в пространстве. Для плоскости нашёл, но вот с 3d...

Дано символ C - исходная ориентация локатора и целые числа N1 и N2 - две посланные команды. Вывести ориентацию после выполнения этих команд - C++
Здравствуйтевот само условие в C++ сколкьо думал,сам то я начинающий но к правильному решению прийти немогу,прошу помощи. Локатор...

Разработка бота-асистента - C++
Всем привет. Появилась идея написания бота-асистента.Работать должен на Linux/Windows(больше акцент на Linux) В чем суть: при запуске...

Перемещения р*бота (switch) - C++
Робот может перемещаться в четырех направлениях ("С" — север, "3" — запад. "Ю" — юг, "В" — восток) и принимать три цифровые команды: 0...

Где разместить бота - C++
Возможно не по теме, но надеюсь поможете. Есть ли сервисы, на которых можно запустить и оставить выполняться код (c++, c#, python). ...

43
hepper
Кодогенератор
198 / 198 / 36
Регистрация: 15.06.2011
Сообщений: 792
Завершенные тесты: 3
27.01.2013, 19:28 #16
Цитата Сообщение от denis0612 Посмотреть сообщение
Игра World of Tanks. Это клиентская игра.
Да, с помощью с++ можно с веб приложениями делать что угодно.
в этой игре нет смысла анализировать экран, забей, - если не думаешь сделать бота который стоит и переодически стреляет.

смотри трафик, мб надо просмотреть скрипты (вроде на питоне там или смесь его с чем то) чтоб понять алгоритм передачи инфы.
все более приличные боты для похожих игр пашут на уровне сетевого протокола.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
27.01.2013, 19:30 #17
(NULL, "Заголовок окна")
по моему так, сейчас проверю...

Добавлено через 1 минуту
Цитата Сообщение от hepper Посмотреть сообщение
в этой игре нет смысла анализировать экран, забей, - если не думаешь сделать бота который стоит и переодически стреляет.
смотри трафик, мб надо просмотреть скрипты (вроде на питоне там или смесь его с чем то) чтоб понять алгоритм передачи инфы.
все более приличные боты для похожих игр пашут на уровне сетевого протокола.
Согласен.
Такими попытками можно лишь примитивную тыкалку сделать.
Полноценного бота можно реализовать разобрав пакетное общение клиента с сервером. Так что копай в сторону сетевого программирования.
0
denis0612
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
27.01.2013, 19:59  [ТС] #18
Цитата Сообщение от m1Rr0r Посмотреть сообщение
(NULL, "Заголовок окна")
по моему так, сейчас проверю...

Добавлено через 1 минуту

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

Добавлено через 28 секунд
Цитата Сообщение от m1Rr0r Посмотреть сообщение
(NULL, "Заголовок окна")
по моему так, сейчас проверю...

Добавлено через 1 минуту

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

Добавлено через 8 минут
И почему нет смысла анализировать экран?
Нет смысла, потому что это ничего не даст или ничего не получится?
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
27.01.2013, 20:35 #19
Цитата Сообщение от denis0612 Посмотреть сообщение
Нет смысла, потому что это ничего не даст или ничего не получится?
Мало что даст...
0
denis0612
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
27.01.2013, 20:52  [ТС] #20
Цитата Сообщение от m1Rr0r Посмотреть сообщение
Мало что даст...
Ну так что проверили? Что писать в аргументы?
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
27.01.2013, 21:56 #21
denis0612,
C++
1
2
LPCTSTR lpClassName,    // указатель на имя класса
LPCTSTR lpWindowName    // указатель на имя окна
Добавлено через 3 минуты
Если заголовок все время меняется, но содержит при этом какую то постоянную надпись, тогда можно с помощью Enum перечислять окна, смотреть какая там надпись в заголовке, и если подходит под твое описание запоминать HWND окна, и прекращать перечисление.
0
hepper
Кодогенератор
198 / 198 / 36
Регистрация: 15.06.2011
Сообщений: 792
Завершенные тесты: 3
27.01.2013, 23:50 #22
Цитата Сообщение от m1Rr0r Посмотреть сообщение
Мало что даст...
даже не мало что даст, а можно сказать ничего не даст. графика и клиент игры для реального человека создают сложности восприятия, для бота вообще будет нереал чтото делать, тем более игра очень динамичная.

а на счет трафика - даже если он зашифрован - клиент то у тебя на компе, надо его ковырнуть и достать оттуда методы кодировки/декодировки. я не думаю что это будет сложнее анализа игрового экрана...
1
denis0612
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
28.01.2013, 16:47  [ТС] #23
Цитата Сообщение от 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
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
28.01.2013, 18:01 #24
C++
1
2
HWND client;
client=FindWindow(NULL, (LPCWSTR)"Skype");
Как насчет такого ?
0
denis0612
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
28.01.2013, 21:06  [ТС] #25
Ура, и этого я добивался 2 дня, хух, идем дальше, почему функция возвращает 6 нулей:
FindWindow(NULL, (LPCWSTR)"Skype");
Причем заголовок какого окна я бы не писал...
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
28.01.2013, 21:41 #26
Пробуй так.
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
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:13 #27
потому что нужно использовать не FindWindow, а FindWindowA
0
denis0612
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 39
01.02.2013, 15:16  [ТС] #28
Цитата Сообщение от 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
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
01.02.2013, 16:29 #29
Цитата Сообщение от denis0612 Посмотреть сообщение
Этот код не работает
Код работает.
Вот почему у Вас не работает, понятия не имею.
И потом...Ну допустим вы получили HWND окна, что вы делать дальше будете ?
0
Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
02.02.2013, 11:49 #30
Цитата Сообщение от denis0612 Посмотреть сообщение
Спасибо, а нет ли варианта, если не перехватывать пакеты, а просто разобрать экран по слоям, миникарта, фон, параметры, надписи? Это вообще можно сделать? А то чувствую, что перехватывать пакеты вряд ли удастся.
а для таких целей есть SDK. через него и оперируй)))
0
02.02.2013, 11:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2013, 11:49
Привет! Вот еще темы с ответами:

Как создать бота? - C++
Как сделать прорамму бота? Заходишь, она пишет - Введите имя: вводим имя и чтобы она из файлика какого ни будь брала базу типа ...

Нужно подключить бота к шахматам - C++
Мне нужно написать шахматы с возможностью подключения бота. Шахматы уже написал осталось подключить бота (бота нужно подключать как .exe ) ...

Игра в города для бота - C++
Пытаюсь написать код игры в города для своего бота, только уже много способов пробовал, не выходит. Простую версию игры(где просто...

Вычисление вероятности для решения бота - C++
Доброго времени суток! У меня в задании сказано сделать логику для ботов в игре блэк джэк. Я сделал так, что если сумма очков &lt;=10 то...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru