Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.51/39: Рейтинг темы: голосов - 39, средняя оценка - 4.51
TURBOMAX
1 / 1 / 1
Регистрация: 19.04.2009
Сообщений: 150
1

Бот для WoW

10.11.2009, 15:53. Просмотров 6985. Ответов 26
Метки нет (Все метки)

Вот хочу бота написать для WoW кто может сказать че почитать что бы написать ? или еси у кого есть какие исходники выставите почитаю, мне самое основное
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2009, 15:53
Ответы с готовыми решениями:

Как написать бота для WoW
Здравствуйте. У меня вопрос в каком направлении размышлять при создании бота для WoW или Lineage 2...

Программа-бот для онлайн игры WoW
Здравствуйте. Пишу программу-бота для онлайн игры (WoW) на C# используя библиотеку BlackMagic для...

Бот для онлайн игры (Wow, lineage, RF Online и т.д.)
Всем привет! Подскажите можно ли написать бота для онлайн игры в VB Net? Если да то можно ссылку...

Нужен комп для кодинга и игры wow ( и похожих на wow ) =)
Нужен комп в железе особо не секу =) Для игры в Wow и подобные игры ! Для работы в c++ openGl ,...

26
Otaka
1843 / 700 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
11.11.2009, 11:34 2
Ну, может есть и какие-нибудь исходники(Никогда не видел, потому что не искал).
А есть бесплатный сервак Mangos. Так вот ты можешь посмотреть его исходники, что там отправляется, что там принимается, как оно там работает. Как разберешься, так и пиши бота.
1
Rumus
6 / 6 / 1
Регистрация: 29.09.2009
Сообщений: 91
12.11.2009, 09:16 3
Цитата Сообщение от Otaka Посмотреть сообщение
Ну, может есть и какие-нибудь исходники(Никогда не видел, потому что не искал).
А есть бесплатный сервак Mangos. Так вот ты можешь посмотреть его исходники, что там отправляется, что там принимается, как оно там работает. Как разберешься, так и пиши бота.
Что это за сервак Mangos какой у него адрес?
0
Otaka
1843 / 700 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
12.11.2009, 10:24 4
Это программа, на какой комп его поставишь, такой адрес у него и будет. Хоть на свой комп ставь. Тогда адрес 127.0.0.1.
Официальный сайт http://github.com/mangos
Да и с помощью гуглинга ("Mangos") выдается очень много всего полезного(даже на русском).
0
Matumba40
20.11.2010, 17:53 5
На hadabuda.com есть несколько уроков по написанию бота для WOW на C++
ProstoMad
49 / 39 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
20.11.2010, 18:56 6
получается так же можно и сделать что бы при нажатии кнопки деньги давались?
0
petruchodd
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
Завершенные тесты: 1
21.11.2010, 00:05 7
Блин )) даже тут WoW меня нашел . Так как я истинный задрот wow ( в прошлом) то я такой фигней тоже занимался. Желание было большое . но его не было достаточно - знаний и информации не было достаточно. Единственное что получилось сделать это для пиратского сервера писал под своего мага ( одна кнопка) . Обычно на пиратке в то время мало что работало, а босы вообще стояли как истуканы. Нажимать 10 минут одну кнопку было влом. Через WinApi написал фигню которая раз в 2 секунды( при скорости каста в 1.8) нажимала определенную клавишу - которая была привязана к какому нибудь заклинанию. В итоге на таких эвентах я ставил чара - запускал свою корявую программу и смотрел фильм- при этом мой персонаж наносил урон .

Это всё было сказано для минимальной идеи : Можна чара поставить в людное место ( где мобов много )
и по таймеру делать через "таб" .. Типа нажал таб 2 секунды задержка, нажал выстрел/каст , дальше идет автоатака персонажа . Это всё - можна выполнять какое то время.

Это будет самое примитивное.. но оно будет работать. Обыкновенные нажатия и всё. ( конечное если в радиусе что то есть)

А вообще если память не изменяет. То бота для вов нету - либо он платный ( за который платить надо и неизвестно работает ли он ибо в основном люди для офф сервера ищут бота) либо делает какое то определенное действие. Самый распространненый это рыбалка. Найдешь исходники хоть на самый примитивный - получить много ответов.
0
Gremlin
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
21.11.2010, 00:20 8
Цитата Сообщение от ProstoMad Посмотреть сообщение
получается так же можно и сделать что бы при нажатии кнопки деньги давались?
Есть разные варианты, все зависит от сервера на котором играешь

Например у тебя 1000 хп, ты меняешь в клиенте значение (любым редактором памяти) на 1020 хп... у тебя (в твоем клиенте) будет отображаться 1020 но на сервере то ты значение не менял, и разумеется если тебе кто нибудь нанесет 10 урона, то сервер вернет значение не 1010 а 990

А чтоб давались деньги, то нужно найти "баг" - (недоработка\недостаточная проверка полученных данных) (самое частое это переполнение буфера) и уже зная баг можно что то подобное сделать

А бот - он просто эмулирует действия человека (по определенному сценарию)... выделяет моба, бьет его, собирает дроп итд


Например я писал бота для L2 (PVP server) магом, так вот чтоб заработать денег (игровых разумеется) я писал простенькую программку (тыкать 3 кнопки поочередно (для СХ это вампирка, ДаркВортекс и хурик - и маг как почти бессмертный, пока мп на скилы хватает), а когда кончалось мп, то пил ману) ставил на ночь, а утром много денег и всякого хлама
0
ProstoMad
49 / 39 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
21.11.2010, 21:43 9
ну как нить сделать что бы я мог послать запрос, например о продаже шмотки вендеру, которой у меня нету. как нить это вообще возможно сделать?
0
Gremlin
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
22.11.2010, 06:37 10
Цитата Сообщение от ProstoMad Посмотреть сообщение
ну как нить сделать что бы я мог послать запрос, например о продаже шмотки вендеру, которой у меня нету. как нить это вообще возможно сделать?
это уже манипуляции с пакетами передаваемые от клиента серверу (опять же все зависит от сервера, можно авто-бан получить)

все твои шмотки\скилы\статистика все, абсолютно все на сервере хранится...

допустим у мы посылаем пакет на продажу (ну допустим щита\шмотки неважно чего) сервер этот пакет принимает... (этот пакет допустим содержит информацию продать 1 стрелу) сервер забирает у тебя стрелу и дает деньги ... НО! в момент когда он хочет забрать стрелу N_СТРЕЛ - 1 на сервере ошибка, так как у тебя этого нет! (но возможно что и проканает если сервер кривой то количество может уйти в минус (это если совсем кривой серв))


самое популярное это например продать что либо на сумму 2 147 483 648 так как восновном используется int 32 бита - это от "-2147483648" до "2147483647" (не буду дальше в подробности вдаваться)

например (int 32) если к 2147483647 приплюсовать 1 то будет "-2147483648"
или наоборот от "-2147483648" отнять еще единицу то будет +2147483647

C++
1
2
3
4
    int x = 2147483647;
    Edit1->Text = x + 1;
    BYTE y = 256;
    Edit2->Text = y + 1;
зы Сори за ошибки, уже скоро вставать а я и не ложился

Не по теме:


(я когдато давно играл на lineage.ru (щас уже абсолютно другим людям и сервер и хостинг принадлежит))
так вот там был баг (дюп) (смысол в том, что нужно было ухитрится открыть 3 окна обмена... положить в 1 окно N сумму во второе N сумму в 3 N сумму и несколько раз в третье окно добавить 1 монетку и удалить (МОИ_ДЕНЬГИ-(100+100+100)-1+1-1+1) что то такое получалось математически, часть "примера" выполнялась а часть нет и при Удалении 1 монетки сумма денег увеличивалась в 2 раз))


Не по теме:

прогуляйся на allcheats

0
Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
22.11.2010, 22:07 11
хм а как привязвть авто нажатие клавиш"проги" к определёному процесу тобиш клиенту.

Добавлено через 18 минут
Как предложил petruchodd, прогу имитацию клавиш написать просто главное потом не попалица

Добавлено через 48 минут
Вот пример по принципу имитацыи клавиш токочто написал проверил на PW запускаеш игру заходиш подходиш к куче мобов запускаеш прогу и включаеш окно игры прога нажимает "Таб"-переключение между целями потом n раз нажимает кнопку "1" у меня это в игре обычная атака потом n раз нажимает на "2" у меня это подобрать что выпало и так по кругу.

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
int r=0;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
keybd_event(VK_TAB, 0, 0 ,0);
keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);
Timer1->Enabled=false;
Timer2->Enabled=true;
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
if (r<=10)
{
keybd_event('1', 0,0,0);
keybd_event('1', 0,KEYEVENTF_KEYUP,0);
r++;}
else
{Timer2->Enabled=false;
Timer3->Enabled=true;
r=0;}
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer3Timer(TObject *Sender)
{if (r<=4)
{keybd_event('2', 0,0,0);
keybd_event('2', 0,KEYEVENTF_KEYUP,0);
r++;}
else
{Timer3->Enabled=false;
Timer1->Enabled=true;
r=0;}
}
//---------------------------------------------------------------------------
Добавлено через 2 минуты
сразу отключить все три таймера
0
Gremlin
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
23.11.2010, 03:16 12
Ну чтож, тоже кое что выложу (сразу говорю - делал для себя и пары друзей на скорую руку)

l2_key_bind - делал под Lineage 2 но и для других игр подойдет (недоделанный, хотел хоткеи добавить но так и оставил проект незавершенным)
(он посылает нажатия клавиш непосредственно в окно по его handle (поэтому вложил spy++ просто чтоб узнать handle окна по быстрому)... например поставил кликер и свернул окно, а сам тем временем смотришь сериал - то есть не важно активное окно или нет)

samp_key_bind (San Andreas Multi Player) - че там интересного - это правая часть, там что то вроде запоминалки движений только вручную вводить... но криво....


вобщем вот... может кто что то новое и почерпнет для себя...
0
Вложения
Тип файла: zip l2_key_bind.zip (1.11 Мб, 103 просмотров)
Тип файла: zip samp_key_bind.zip (1.22 Мб, 72 просмотров)
Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
23.11.2010, 03:56 13
или я чегото не могу понять или чтото не так выводит ошибки

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
HWND StrHexToHWND(AnsiString s)
{
    HWND h = NULL;
    s = "0x" + s;
    h = (HWND)(StrToInt(s));
    return h;
}
//---------------------------------------------------------------------------
void ClickWindow(int but)
{
    HWND Handle = StrHexToHWND(Form1->Edit1->Text);
 
    if (IsWindow(Handle))
    {
        SendMessage(Handle, WM_KEYDOWN, but, NULL);
        SendMessage(Handle, WM_KEYUP, but, NULL);
    }
    else
    {
        Form1->Button2->Click();
        ShowMessage("Bad handle!");
    }
}
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ClickWindow(VK_F1);
}
//---------------------------------------------------------------------------
[C++ Error] Unit1.cpp(15): E2108 Improper use of typedef 'HWND'
[C++ Error] Unit1.cpp(15): E2379 Statement missing ;
[C++ Error] Unit1.cpp(44): E2268 Call to undefined function 'ClickWindow'
0
Gremlin
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
23.11.2010, 04:03 14
37 или 38 строка лишняя
0
Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
23.11.2010, 04:04 15
увы нет (( они не лишние
0
Gremlin
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
23.11.2010, 04:17 16
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
33
34
35
36
37
38
39
40
41
42
43
44
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
HWND StrHexToHWND(AnsiString s)
{
    HWND h = NULL;
    s = "0x" + s;
    h = (HWND)(StrToInt(s));
    return h;
}
//---------------------------------------------------------------------------
void ClickWindow(int but)
{
    HWND Handle = StrHexToHWND(Form1->Edit1->Text); // в edit1 Handle нужного окна
 
    if (IsWindow(Handle)) // существует ли окно с таким Handle
    {
        SendMessage(Handle, WM_KEYDOWN, but, NULL); // нажимаем
        SendMessage(Handle, WM_KEYUP, but, NULL); // отпускаем
        //или бывает что нужно не SendMessage
        //PostMessage(Handle, WM_KEYDOWN, but, NULL);
        //PostMessage(Handle, WM_KEYUP, but, NULL);
    }
    else
    {
        ShowMessage("Bad handle!");
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClickWindow(VK_F1);
ClickWindow(0x5A); // это клавиша Z
}
//---------------------------------------------------------------------------
или же как с блокнотом... надо не основному окну посылать, а дочернему (в хендл Memo так сказать)
1
Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
23.11.2010, 04:33 17
есть розобралса спасиба

Добавлено через 13 минут
хм а как организовать нажатие сочитании клавиш??

я организовывал так в старом примере
C++
1
2
3
4
keybd_event(VK_MENU, 0, 0 ,0);
keybd_event('3', 0,0,0);
keybd_event('3', 0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP,0);
а через ClickWindow(); как?

Добавлено через 1 минуту
Таже? ClickWindow(VK_MENU);ClickWindow('3');
0
Gremlin
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
23.11.2010, 04:56 18
с сочетанием так и сделать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//---------------------------------------------------------------------------
void ClickWindowX(int but1, int but2)
{
    HWND Handle = (HWND)(StrToInt("0x" + Form1->Edit1->Text)); // в edit1 Handle нужного окна
 
    if (IsWindow(Handle)) // существует ли окно с таким Handle
    {
        SendMessage(Handle, WM_KEYDOWN, but1, NULL); // нажимаем 1
        SendMessage(Handle, WM_KEYDOWN, but2, NULL); // нажимаем 2
        SendMessage(Handle, WM_KEYUP, but1, NULL); // отпускаем 1
        SendMessage(Handle, WM_KEYUP, but2, NULL); // отпускаем 2
    }
    else
    {
        ShowMessage("Bad handle!");
    }
}
//---------------------------------------------------------------------------
//ClickWindowX(VK_MENU, '3');
0
Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
23.11.2010, 06:13 19
вот какая проблема прога работает но увы когда окно игры не активно она не работает (( но как токо становится активным окно игры она начинает работать (( в чём проблема?
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int r=0;
int e=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
HWND StrHexToHWND(AnsiString s)
{
    HWND h = NULL;
    s = "0x" + s;
    h = (HWND)(StrToInt(s));
    return h;
}
//---------------------------------------------------------------------------
void ClickWindow(int but)
{
    HWND Handle = StrHexToHWND(Form1->Edit1->Text); // в edit1 Handle нужного окна
 
    if (IsWindow(Handle)) // существует ли окно с таким Handle
    {
         SendMessage(Handle, WM_KEYDOWN, but, NULL);
         SendMessage(Handle, WM_KEYUP, but, NULL);
    }
    else
    {
        ShowMessage("Bad handle!");
    }
 
 
}
 
   void ClickWindowX(int but1, int but2)
{
    HWND Handle = StrHexToHWND(Form1->Edit1->Text); // в edit1 Handle нужного окна
 
    if (IsWindow(Handle)) // существует ли окно с таким Handle
    {
         SendMessage(Handle, WM_KEYDOWN, but1, NULL);
         SendMessage(Handle, WM_KEYDOWN, but2, NULL);
         SendMessage(Handle, WM_KEYUP, but1, NULL);
         SendMessage(Handle, WM_KEYUP, but2, NULL);
    }
    else
    {
        ShowMessage("Bad handle!");
    }
    }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ClickWindow(VK_TAB);  
 
Timer1->Enabled=false;
Timer2->Enabled=true;
e++;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
if (r<=20)
{
ClickWindowX(VK_MENU, '3');
if (r>=3){ClickWindow('1');}
r++;}
else
{Timer2->Enabled=false;
Timer3->Enabled=true;
r=0;
e++;}
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer3Timer(TObject *Sender)
{
if (r<=4)
{ClickWindow('2');
r++;}
else
{Timer3->Enabled=false;
Timer1->Enabled=true;
r=0;
e++;
if (e==12)
{ClickWindow('3');e=0;}
}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled=false;
Timer2->Enabled=false;
Timer3->Enabled=false;
}
//---------------------------------------------------------------------------
0
petruchodd
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
Завершенные тесты: 1
23.11.2010, 11:08 20
ну нада ж взять окно сначала с игрой. Я уже не помню как ... Мне очень тогда помогла в этом вопросе книга "С++ глазами хакера" там про такие функции WinApi очень хорошо было написано ( но мало )
Правда она для Visual Studio написана.. но оттуда можна вытянуть идейку фукнкции то одинаковые
книжка тутl
1
23.11.2010, 11:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 11:08

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

Сайт для WoW
Давно занимаюсь версткой, ковыряю бывает и php. Вопрос возник вчера, сижу я значит в блокнотике и...

ПК для WoW и интернетов
Супруга любит играть в WoW, по-быстрому накидал железок, по-идее должно хватить, но я особо не...

Создание сервера для WoW 4.0.x
Доброго времени суток форумчане, подскажите мне каким образом можно запустить свой сервер World of...

Где найти Garena для WoW?
помогите найти Garena а то скачиваю она обновляется и все и не языка русского не wow3 где скачать...


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

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

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