Итак,в связи с часто возникающими вопросами по поводу того,как сделать бота,решил написать этот гайд.В нем я научу создавать бота для браузерных игр на примере бота для игры "Кактусомания" Вконтакте.
Требования для создания бота:
Microsoft Visual Studio 2010(в данном гайде я использовал именно ее,хотя можно и более ранние версии)
Начальные знания программирования
Прямые руки
Желание узнать новое
Процесс создания:
Открываем Visual Studio и создаем новый проект
В поле "Имя" вписываем любое имя,которое вам нравиться.В поле "Расположение" выберите местоположение вашего будущего проекта.Нажимаем кнопку "ОК"
После нажатия кнопки "ок" появится дизайнер нашего приложения(в данном случае бота):
так сейчас выглядит наше приложение.Можете потягать за уголочки,поменять размерЕще можно перейти во вкладку "Свойства" и посмотреть/поменять различные свойства нашего приложения
Теперь давайте добавим кнопочку на наше приложение.Для этого в левой части Visual Studio откройте кладку "Панель инструментов" и найдите там элемент "button"
Перетащите его на нашу форму,и во вкладке "Свойства" найдите поле "Техт" и напишите что-то осмысленное там
В результате текст на кнопке у вас поменяется на написанный
Так,с дизайнером покончено,перейдем к коду.Давайте клацнем в дизайнере по только что созданной нами кнопке 2 раза(это значит,что мы добавили обработчик события нажатия левой кнопки мыши на нашу кнопку).Если все сделано правильно,то очутимся мы в редакторе кода
Сверху,где у нас написанны подключенные неймспейсы,давайте допишем еще один: System.Net
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
Теперь приступим к самому главному.Давайте немного теории.Как работает браузерная игра?Ну кочнечно же общаясь со своим сервером пост- и гет-запросами.В данном случае(напомню,что бот под игру "Кактусомания") игра с сервером общается посредством пост-запросов.Поэтому код будем адаптировать под пост-запросы серверу.Итак,перейдем в функцию button1_Click(если вы меняли свойство "Name"(не "Text",а именно "Name"),то название функции может быть другим,но суффикс _Click останется в любом случае)
и добавим туда следующий код:
Код:
// Формируем строку с параметрами
//Кактус
String secondStepForm = "type=1&viewer_id=ваш_айди&authkey=ваш_аутхкей&rand=1295814819207&invite=количество_друзей_в_приложении";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://vkontakteapp.ru/kaktus/item.php");
// Настраиваем параметры запроса
request.UserAgent = "Opera/9.80";
request.Method = "POST";
// Указываем тип отправляемых данных
request.ContentType = "application/x-www-form-urlencoded";
// Преобразуем данные к соответствующую кодировку
byte[] EncodedPostParams = Encoding.ASCII.GetBytes(secondStepForm);
request.ContentLength = EncodedPostParams.Length;
// Записываем данные в поток
request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length);
request.GetRequestStream().Close();
Собственно говоря,комментарии в коде присутствуют довольно подробные,но обращу ваше внимание на 2 строчки:
1.HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://vkontakteapp.ru/kaktus/item.php"); - это строка,URL,на который идет пост-запрос.Получить ее можно,нажав ПКМ в Charles на нужном пакете,и нажав Copy URL
2.String secondStepForm = "type=1&viewer_id=ваш_айди&authkey=ваш_аутхкей&ran d=1295814819207&invite=количество_друзей_в_приложе нии"; - это наши многоуважаемые параметры ,посылаемые в пост-запросе.Получить их можно нажав ПКМ в Charles на нужном пакете,и нажав Copy Request
В данном примере мы не получаем ответа от сервера,но если требуется получить ответ,то дописываем снизу следующий код:
Код:
// Получаем ответ
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Получаем html-код страницы
//string html = new StreamReader(response.GetResponseStream(),Encoding.UTF8).ReadToEnd();
//MessageBox.Show(html);
Нажимаем F5.Все,бот готов
Итак,на примере игры Кактусомания мы,надеюсь,научились создавать ботов для браузерных игр.Этот бот абсолютно не функционален,в нем я хотел всего лишь показать азы создания ботаВключив фантазию,данного бота можно развить в что-то стоящееВсе зависит только от вас.Спасибо за внимание,все вопросы в теме...
P.S:данный пример ищите во вложениях
Cherinho (C) 2011
Special for Zhyk.ru
Последний раз редактировалось Cherinho; 03.02.2011 в 01:39.
C# Не хотел?
А способ второй тоже на C#.
Только там кода меньше.
ну c# так c#,мне-то какая разница
та вообще способов отправки пост-запросов куча,здесь показан только лишь один из них
п.с:уважаемые модеры,а че это первая картинка поменялась?)
дописал код что бы получить ответ от сервера. вот такая ошибка:
Ошибка 1 Не удалось найти имя типа или пространства имен "StreamReader" (пропущена директива using или ссылка на сборку?) C:\Users\Ridlle\Documents\Visual Studio 2010\Projects\bot_for_prison\bot_for_prison\Form1. cs 51 31 bot_for_prison
Еще подскажите как отобразить в проге количество папирирос. по идеи в ответе должно быть указано
дописал код что бы получить ответ от сервера. вот такая ошибка:
Ошибка 1 Не удалось найти имя типа или пространства имен "StreamReader" (пропущена директива using или ссылка на сборку?) C:\Users\Ridlle\Documents\Visual Studio 2010\Projects\bot_for_prison\bot_for_prison\Form1. cs 51 31 bot_for_prison
да,сори,забыл об этом сказать
там,где подключаешь неймспейсы(using System...) допиши using System.IO;
Цитата:
Сообщение от fireridlle
Еще подскажите как отобразить в проге количество папирирос. по идеи в ответе должно быть указано
да,количество папирос в каком-то ответе приходят.в каком именно-можешь в charles посмотреть
Cherinho, я понял что в ответе, вот допустим у меня в проге есть лейб с названием "ваши папиросы" и рядом какой то элемент(не знаю какой надо ставить).
так вот в этом элементе должно отобразиться количество папирос.
можешь лейбл и рядом тоже лейбл ставить,т.к. кол-во пааирос тебе менять не обязательно же)
программно текст в элементе меняется следующим образом
Код:
element.text="твоя строка";
где element - это имя твоего элемента.это во многих элементах так меняется текст,но не во всех
в конкретно твоем случае можно сделать так:
получаем ответ сервера,записываем его в строку.далее из этой строки выдираем количество папирос.а потом
а можно просто вытянуть значение между тегами?а то количество папирос у всех разное, соответственно длина записи тоже разная. например у меня 10000 а у когото 10
Тема суперская, БОЛЬШОЙ РЕСПЕКТ!!!!!!!!!!ОЧЕНЬ ОЧЕНЬ БОЛЬШОЙ !!!!!!!!!!=))))))))))))))))))))))))) Оч понравилась. Этим способом можно вытягивать идишники с приложений 2 левела и вставлять через чарлез, или также написать прогу для вставки идишников.
ЖДУ ПРОДОЛЖЕНИЯ УРОКОВ!!!
Последний раз редактировалось bohdan09; 06.02.2011 в 23:56.