Добрый вечер, читатели Хабра! Недавно один человек показал макробота для браузерной игры Diamond Dash. быстрый .
И делал все с помощью макроязыка AutoIt. И я вспомнил, что использовал библиотеку AutoIt для разработки полуавтоматического бота на C#.
Как я это разработал, смотрите ниже.
Необходимые инструменты для работы
- Сама VisualStudio 2010
- Навыки С#
- И библиотека AutoIt
Затем я добавил библиотеку в VisualStudio. Не знаю почему, но я не смог пользоваться библиотекой без установки exe-файла.
Начало работы
Суть моей программы заключалась в том, что вам нужно выделить прямоугольник и затем с помощью горячих клавиш указать его положение, а также указать, сколько полей он содержит. Например:- Положение прямоугольника задается точками 1.1, 1.n, n.1.
- Высота 4
- Ширина 3
Горячие клавиши:
Чтобы использовать горячие клавиши, я использовал класс нашел в интернете , который использовал горячие клавиши не только когда окно приложения было активным, но и когда оно было неактивным.
Мой код горячей клавиши: HotKey[] Key = new HotKey[4];
Key[1] = new HotKey();
Key[2] = new HotKey();
Key[3] = new HotKey();
Key[1].
KeyModifier = HotKey.KeyModifiers.Shift; Key[1].
Key = Keys.Q; Key[1].
HotKeyPressed += new KeyEventHandler(position1); Key[2].
KeyModifier = HotKey.KeyModifiers.Shift; Key[2].
Key = Keys.W; Key[2].
HotKeyPressed += new KeyEventHandler(position2); Key[3].
KeyModifier = HotKey.KeyModifiers.Shift; Key[3].
Key = Keys.E; Key[3].
HotKeyPressed += new KeyEventHandler(position3);
У нас есть 3 горячие клавиши: Shift+Q, Shift+W, Shift+E, которые выполняют события Position1, Position2 и Position3.
Вы можете использовать не только Shift, но и Ctrl, Alt, Win или ничего.
Расчет баллов за «клик»:
Мы передаем позиции в программу для расчета сетки, по которой нужно нажать.
Код расчета: private void button1_Click(object sender, EventArgs e)
{
int shirina = Convert.ToInt32(textBox4.Text);
int Vnax, Vnay, Vx, Vy, Nx, Ny;
Vx = Convert.ToInt32(textBox1.Text);
Vy = Convert.ToInt32(textBox2.Text);
Nx = Convert.ToInt32(textBox3.Text);
Ny = Convert.ToInt32(textBox6.Text);
Vnax = (Convert.ToInt32(textBox7.Text) - Convert.ToInt32(textBox1.Text)) / (shirina - 1);
Vnay = (Convert.ToInt32(textBox2.Text) - Convert.ToInt32(textBox8.Text)) / (shirina - 1);
for (int i = 1; i <= shirina; i++)
{
Shag(Vx, Vy, Nx, Ny);
Vx += Vnax;
Vy -= Vnay;
Nx += Vnax;
Ny -= Vnay;
}
}
private void Shag(int Vx, int Vy, int Nx, int Ny)
{
int vysota = Convert.ToInt32(textBox5.Text);
int nax, nay, x, y;
int nS = 4;
int nCout = 1;
String Str = "left";
nax = (Nx - Vx) / (vysota - 1);
nay = (Ny - Vy) / (vysota - 1);
x = Vx;
y = Vy;
for (int i = 1; i <= vysota; i++)
{
autoIt.MouseClick(Str, x, y, nCout, nS);
x += nax;
y += nay;
}
Параметры:
- Положение верхней точки Vx, Vy
- Nx, Ny нижнее положение точки
- x, y — положение точки для клика
- nS - скорость перемещения курсора от одной точки к другой
- nCout — количество кликов
- Str - какую кнопку нажать, правую или левую
Исходники моей программы: Скачать .
Небольшое видео о приложении:
- Не знаю почему пропал курсор, но в пред. он смотрел.
Камтасия б/у
- нажатие немного подвисает, виноват в этом мой слабый бук + Камтасия хорошо загружала систему
- и еще, точность щелчков зависит от правильного определения положения области «щелкания»
Сначала мне пришлось немного обучить ее использованию программы, но теперь она счастлива.
Спасибо всем.
Теги: #C++ #autoit #программирование
-
Изучение C++ Через Программирование Игр
19 Oct, 24 -
Сбылось Или «Отдам В Хорошие Руки»
19 Oct, 24 -
Jifeon — Онлайн-Редактор 3D-Графики
19 Oct, 24