Как я писал бота для Clash Of Clans. Работа с Bitmap и OCR

Подсел я как-то на игрушку «Clash of Clans» — это такая стратегия, где нужно строить свою деревеньку с шахтами и казармами, а войсками воевать с другими такими же онлайн. Противник подбирается случайным образом, исходя из количества трофеев (кубков) в текущий момент. При успешной атаке число кубков увеличивается, при поражении — уменьшается. Опять же, если на тебя напали и разбили, то кубки забирают, а если недобили — прибавляются. Но на эти кубки мне пока все равно, главное — ресурсы.
Для поиска соперника нужно нажать кнопку «Attack!», а затем «Find a Match». Среди сотен тысяч игроков найдется жертва и мы видим ее базу.

База противника в Clash of Clans

Слева в верхнем углу — ресурсы, которые мы получим, если разгромим все шахты и/или хранилища. Если игрок давно не заходил, шахты заполняются, а с каждым нападением на него они забираются из хранилищ. Таким образом, у брошенных деревень мы видим полные шахты и пустые хранилища — легкая добыча для дешевых воинов.
Игра заключается в том, чтобы нажатием на кнопку подобрать себе противника, у которого было бы достаточное количество ресурсов, но, одновременно с этим, вы смогли бы их у него забрать своим войском. Игроку ничего не остается, как раз за разом кликать кнопку «Next», подыскивая жертву пожирнее. К слову, подготовка одной моей армии для нападения обходится в примерно 180 тысяч эликсира. Поэтому нападать на базы, с которых можно вынести меньше, невыгодно.
Иногда кнопку Next тыкать надоедает и соглашаешься уже на кого-то не столь богатого. Плюс ко всему глаз замыливается и можно легко протыкать базу с большим количеством ресурсов чисто по инерции. Мне стало лень напрягать глаза на эту игру и я озадачился апгрейдом своего мини-бота.]

С чего началось написание бота для Clash Of Clans

А начиналось все вовсе не с нападений, а с их защиты. Чтобы на тебя никто не нападал, нужно постоянно быть в онлайне. Для этого нужно каждые пять минут производить какие-то действия в игре, будь то щелчок мышки или перетаскивание карты. Если действий за 5 минут не произошло, игра отключается с сообщением «You have been disconnected due to inactivity». А если ресурсов у тебя много, то сразу кто-нибудь нападает, хапнув чуть ли не больше, чем ты в последнюю атаку. Чем больше у тебя ресурсов в хранилищах, тем невыносимее становится играть :).
Все гениальное просто, поэтому я придумал программку, которая бы по таймеру дергала мышкой игровую карту. Я прежде не сталкивался с отправкой сообщений под виндой в другие окна, но это оказалось несложно. Программа находит среди всех процессов окно, в названии которого есть «BlueStacks», разворачивает его на весь экран, генерирует сообщение MouseDown, перемещение мышки и затем сообщение MouseUp. Profit!

Вскоре мне стала надоедать эта игра, а именно этот изнурительный поиск противника. Где-то мне встречались описания подобной программы для айфона, но там он должен быть джейлбрейкнутым, чтобы ее запустить. Поискав аналог для андроида, я не нашел ничего, кроме эмуляторов хаков, обещающих начисление гемов за выполнение каких-то там опросов. Очень попахивало каким-то мошенничеством, поэтому я не поддался на авантюру и сел писать свой хак 🙂

Работа с изображениями в C#

Тыкать мышкой в нужные места экрана я уже научился, на этот раз мне понадобилось сначала сфоткать кусочек экрана в нужном месте, а затем распознать. Да, мне тоже понравилась эта задачка, так как до этого я ни разу не имел дела ни с битмапами (изображениями) в C#, ни с их распознаванием. Оказалось, что все очень просто.

Захват изображения с экрана в C#

Так получаем заданную область экрана в битмап:

 using (var bitmap = new Bitmap(100, 25))
 {
     using (Graphics g = Graphics.FromImage(bitmap))
     {
         g.CopyFromScreen(new Point(x, y), Point.Empty, new Size(width, height));
     }
 }

Распознавание символов в C# с помощью OCR Tesseract

А вот так распознаем:

 var ocr = new tessnet2.Tesseract();
 ocr.SetVariable("tessedit_char_whitelist", "0123456789"); // If digit only
 ocr.Init(Application.StartupPath + @"\tessdata\", "eng", false); // To use correct tessdata
 var result = ocr.DoOCR(newBitmap, Rectangle.Empty);
 string fullNumber = "";
 foreach (var word in result)
     fullNumber += word.Text;
 int.TryParse(fullNumber, out number);

Но то ли библиотечка бесплатная лагает, то ли в игре странный шрифт используется, но было очень много ложных распознаваний. Скорее всего из-за того, что сами цифры — былые, обведенные черным и на зеленом фоне.

Инвертирование цвета в Bitmap на языке C#

Решил пойти дальше в работе с изображениями и инвертировал цвета:

 var colorMatrix =
 new ColorMatrix(new float[][]
 {
     new float[] {-1, 0, 0, 0, 0}, new float[] {0, -1, 0, 0, 0}, new float[] {0, 0, -1, 0, 0},
     new float[] {0, 0, 0, 1, 0}, new float[] {1, 1, 1, 0, 1}
 });
 var attributes = new ImageAttributes();
 attributes.SetColorMatrix(colorMatrix);
 var newBitmap = new Bitmap(bitmap.Width, bitmap.Height);
 Graphics newG = Graphics.FromImage(newBitmap);
 newG.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height),
     0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, attributes);
 newG.Dispose();

Уже лучше, но тоже не слишком четко. Всему виной шум на фоне… Надо его убрать, ведь цифры почти все получились черными, а фон — разноцветный. Сделал отдельную функцию, которая заменяет все цвета, кроме близких к черному, на белый:

public Bitmap RemoveLightPixels(Bitmap bitmap)
 {
     // Убираем все, кроме черного
     Color c;
     for (int y = 0; y < bitmap.Height; y++)
         for (int x = 0; x < bitmap.Width; x++) { c = bitmap.GetPixel(x, y); if (c.R + c.G + c.B > 70)
             bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
         }
     return bitmap;
 }

Вот теперь стабильность распознавания была достигнута. Но осталась еще загвоздка с таймерами. Хотелось сделать программу максимально быстрой, а не вешать таймеры «с запасом». Поэтому нужно было определять, сменился ли уже противник после нажатия кнопки или игра еще «думает». Для этого анализируем другой квадрат, в котором во время заставки смены противников (смыкающиеся облака) должен преобладать белый цвет. Если белого цвета уже не так много, значит противник найден и можно пытаться анализировать циферки. Не придумал ничего умнее, как считать «средний цвет» квадрата.

/// Если облака еще есть, возвращает true
public bool CloudExists()
{
  using (var bitmap = new Bitmap(30, 30))
  {
     using (Graphics g = Graphics.FromImage(bitmap))
     {
         g.CopyFromScreen(new Point(placeBluestacks.rcNormalPosition.X + 350, placeBluestacks.rcNormalPosition.Y + 30), Point.Empty,
         new Size(30, 30));
         // Вычисляем средний цвет
         Color c;
         int avR = 255, avG = 255, avB = 255;
         for (int y = 0; y < bitmap.Height; y++)
             for (int x = 0; x < bitmap.Width; x++) { 
                  c = bitmap.GetPixel(x, y); 
                  avR = (avR + c.R) / 2; 
                  avB = (avB + c.B) / 2; 
                  avG = (avG + c.G) / 2; 
              } 
         if (avR + avB + avG > 600)
              return true;
      }
   }
 return false;
}

Вот и все! Осталось издать звук в наушники при нахождении «жирненького» противника и можно играть! точнее, отдыхать, пока программа работает :).

Дешевой армией большие ресурсы

Скачать свежую версию моего бота для Clash of Clans можно по ссылке. Раздача тестовых аккаунтов завершена, но вы можете активировать пробный период на 3 дня через меню программы, чтобы оценить ее пользу. А если будут возникать какие-то ошибки, не стесняйтесь писать мне на электронную почту.

Дальше у меня уже появилась идея о том, как анализировать наличие заполненных шахт у противника (так как у слишком сильных противников иногда очень сложно добыть ресурсы из хранилищ), но это уже совсем другая история…
А что вы думаете по поводу таких методов игры?

126 Responses to Как я писал бота для Clash Of Clans. Работа с Bitmap и OCR

  1. Добрый день. Толковое применение знаний для решения поставленной задачи. Если софт рабочий, то имеет право на жизнь и существование. Моральный аспект не рассматриваю, т.к. любое получаемое преимущество должно быть использовано. С удовольствием поместил бы данную программу. Заранее спасибо.

  2. Хотелось бы услышать по поводу версии бота с нахождением соперника, у которого ресурсы в шахтах.
    Зарание благодарю!

    • При условии, что есть возможность определять цветовую гамму + сочетание цветов , то можно сделать ориентацию на шахты с эликсиром , т.е. если шахта полная, (и выполнены предыдущие условия) , то будет сочетание 3х цветов, золотого , серебрянного и сиреневого, золотые шахты отследить априори нет возможности. Можно пойти от обратного, ориентация, на хранилища, по мере заполнения присутсвие цвета в них увеличивается, но это сложнее для реализации, по причине нахождения ТХ в разных местах и в связи с этим изменением масштабирования и нахождением центра базы. Так же , теоретически возможен поиск по не задействованным рабочим на локации, но на практике это приведет к пропуску баз подходящие под первые условия. Можно сделать привязку к динамике движения (например дрель дарк эликсира) но это увеличит скорость поиска и обязательно приведет к ошибкам. Надеюсь, моя скромная помощь пригодится и я все же смогу протестировать , Вашу программу. Заранее спасибо.

      • корректировка увеличит время рассмотрения отдельно взятой базы, что в итоге приведет к общему увеличению времени поиска подходящей базы

        • Именно, время поиска сильно увеличивается, в этом весь косяк. Поэтому я и посчитал лишним дорабатывать распознавание шахт пока.
          Обязательно дам протестировать программу, как только прикручу к ней простейшую проверку на авторизацию на сервере, надеюсь это произойдет в ближайший месяц 🙂 После отпуска займусь этим)

          • Возможно, Вы единственный кто занялся этим всерьёз. Я смотрел и в гугле, и в яндексе, и в других поисковых системах, но нашёл только статью про робота, но сейчас не о нем, и вот нашёл вашу статью. После прочтения я понял, что Ваш бот будет очень полезен.

  3. Идея просто великолепная! Считаю, что после добавления проверки шахт, программа станет просто бесценной. Удачи Вам!

  4. Первичный тест выявил отклонения в определении суммы при поиске, а именно: поменяв значения на 100к и 100к по элику и золоту, были пропущены базы и по 100+ и по 200+ и особенно грустно 400+ бот не просто не подал сигнал или остановился, а просто прокрутил дальше 🙁 остановка в ручную, единственно спасла ситуацию при нахождении базы. Могу допустить, что мной что то было проделано не верно, с удовольствием внесу корректировки

    • К сожалению, раздача тестовых ключиков завершена, но я отправлю вам пробный ключ на одну неделю, чтобы Вы оценили пользу программы для себя.

  5. Добрый день, Геннадий!
    Спасибо за софт, исправно пашет уже 3 день.
    Единственный комментарий, если на компе оставить активным именно окно с BlueStacks, то щит не работает.

    Поиск пока активно не юзал, так как практически дома не нахожусь…(

    • Да кстати хотел добавить, что видел рекламу вашего бота в какой-то группе по игре вконтакте с бесплатной раздачей трех ключей. Если это вы, то все ок, а если нет, то кто-то пользуется вашей добротой..

      • Спасибо за отзыв, Вы правы, если оставить активным окно, щит действительно не сработает. Это сделано для того, чтобы во время игры (при активном окне) бот не нажал в ненужное место, что привело бы к неприятным последствиям. Поэтому для работы щита необходимо сворачивать окно, пока я не придумаю как это исправить 🙂
        Про группу — спасибо за информацию, все под контролем!)

          • Постоянно дорабатывается, но насчет найма войск пока не думал. Тут основная проблема — открыть окно казармы, то есть нужно знать ее расположение…

  6. Привет а твоя прога действует только на компе или можно установить на телефон ее
    и если можешь скинь мне ключ чтоб проверить
    спасибо

  7. То есть, программа не вмешивается в работу процесса, не изменяет файлы или передаваемые клиентом пакеты? Просто делает скрин и распознает? Вероятность бана интересует.

    Прошу также скинуть мне пробный ключ.

    • Да, все именно так. Вероятность бана сводится к нуля, т.к. программно действия не отличимы от человеческих 🙂 Ключ скинул.

  8. Доработал бота для более-менее стабильного поиска при разрешении экрана менее 1400 на 800 пикселей. А на больших разрешениях стало еше четче 🙂

  9. Пользовался пробным ключем неделю, сегодня приобрел. программой доволен, пожелание на будущее (конечно если таковое возможно реализовать):
    1) поиск незащищенных таун холлов — те что ставят в один из 4х углов карты (для быстрого фарма кубков, с целью получения кристаллов за вхождение в лиги и последующей покупки строителей без вложения реальных средств)
    2) удаленное включение, отключение программы с телефона

    • Спасибо за советы, вот насчет второго пункта я закладывал такую возможность изначально, странно, что никто ранее этого не требовал) Но насчет реализации я пока не до конца придумал — наверно с кодом я буду высылать уникальную ссылку, которую можно будет открыть с телефона, а там будет тупо одна кнопка — вкл/выкл щита удаленно. Пойдет?)

  10. Выложил новую версию бота с не до конца отлаженной функцией, т.к. боюсь, что отладка сильно затянется — это сбор шахт в режиме щита ночью, когда компьютер не используется. Основная проблема в том, что поиск расположения шахт выполняется очень долго — 30-40 секунд. Вторая проблема — перед тем, как оставить бота собирать шахты, нужно сделать минимальный масштаб в игре и убедиться, чтобы все шахты были в зоне видимости (именно ярлыки о заполненности шахт, а не сами шахты). Пробовал уменьшать масштаб автоматически и сдвигать карту максимально вниз, но, увы, пока не получается делать это стабильно. Поэтому пока отложил эту идею и взялся за реализацию возможности отключения бота удаленно. Спасибо всем за поддержку!

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

      • Спасибо! Сохранение, думаю, сделаю на этой неделе. Странно, что дарк не собирает, может шахты слишком высоко находятся, что ярлыков нет на экране в момент поиска?

  11. Выложил свежую версию бота — 1.2. В ней есть функция удаленного отключения уже работающего где-то щита (чтобы напасть в клановой войне или просто пофармить с другого устройства). Если нужна такая функция, рекомендую обновить приложение.
    Как ей пользоваться: в меню появилась кнопка «Управление», которая копирует в буфер обмена ссылку. Эту ссылку вы должны каким-то образом передать на свой телефон, ноутбук или другое устройство, с которого будете управлять удаленно ботом. Заходите по ссылке, там всего одна кнопка — «Выключить». Нажали — бот больше не зайдет в игру, пока вы ее не включите обратно.
    Возможно, есть какие-то баги… если найдете, пишите 🙂

  12. Добрый день еще раз. Я в почту скинул о своей проблеме, напишу и тут.
    Решил воспользоваться ботом, ввел ключ, а мне пишет: ошибка получения пользователя по ключу. Почему так?
    И второй вопрос, где скачать новую версию, с того места где качал ранее все еще старая, ни каких кнопок управления не появилось.

  13. Привет.
    Приобрёл программу. Начал тестировать. Есть вопросы:
    1. Не совсем понятно по какому принципу бот определяет координаты окна, в какой последовательности нужно запускать бот и блюстэк — в некоторых случаях бот не верно определяет координаты и тычет не туда (я эксперементировал с разными размерами окна эмулятора).
    2. Как кто-то уже писал, есть ошибки в определении количества ресурсов. За недолгий период в один час видел одну ситуацию, в которой ресурсов было сильно меньше, чем задано в условии и одну ситуацию, когда одного из ресурсов было более 300 тыс, а условие было любого хотя бы 200 тыс. К сожалению, не сделал скриншот.
    3. Возможно ли по аналогии с распознанными значениями ресурсов в окне бота указвать кол-во попыток с которой удается найти совпадение с условиями. Для статистики. Это поможет понаблюдать за закономерностями при переключении языка интерфейса и времени суток.
    И еще вопрос, как можно быстро остановить поиск? Есть сейчас какая-то горячая клавиша? Или только мышкой ткнуться в окно бота? Если клавиши нет, может быть сделать что-то подобное? Т.к. когда мышка скачет туда-сюда не очень удобно попадать в окно.

    • 1. Координаты окна определяются стабильно, из всех запущенных окон выбирается то, у которого в названии есть «BlueStacks». Может быть, с этим связано, если у Вас было открыто какое-нибудь другое окно, в котором в названии встречается это слово. Уточните, пожалуйста, куда именно он тычет не туда?)
      2. По распознаванию сейчас, насколько я знаю, осталась только одна проблема — библиотека ошибочно считает цифру 6 за 5, но и то не всегда. Ну и чем выше разрешение, тем стабильнее работает поиск.
      3. Спасибо за идею, сделаю.
      Быстро остановить поиск можно комбинацией Alt+Tab. Вот только есть один баг, который тоже скоро исправлю. Ну и надо вывести где-то, что надо нажать для остановки поиска)

  14. Свежая версия 1.3 от 20.10.2014.
    Автоматическая проверка обновлений в программе.
    Сохранение настроек ппрограммы.
    Повыщена стабильность щита и сбора шахт на маленьких разрешениях экрана.
    Выведена информация о том, как остановить поиск противника горячими клавишами.
    Добавлена информация о попытке поиска, с которой был найден результат.

    • Не могу понять как работает удаленное управление щитом.
      Запускаю на компе программу, включаю щит. С телефона иду по ссылке, вижу кнопку «Включить щит», хотя по идее должно быть «Выключить щит», т.к. он уже включен. Нажимаю кнопку, она переходит в стостояние «Выключить щит», но программа внешне никак не реагирует — щит в ней включен (с зеленой галкой).
      Как должно быть на самом деле?

      • Если включили щит, то при переходе по этой ссылке должно быть «Выключить щит», это точно. Почему у Вас по-другому я что-то не понимаю пока…
        Если выключить через эту кнопку щит, то внешне вид программы пока никак не меняется, а, кстати, хорошая идея это сделать. Но когда в очередной раз у бота сработает таймер и он полезет активировать игру, сначала он посмотрит в базе, не выключен ли щит этой кнопкой. И если выключен, то он будет ждать без всяких действий, пока значение в базе не изменится обратно этой кнопкой. Короче, пока писал, понял, что такой процесс никому не понятен и требует доработки)

  15. Предполагаю наличие проблемы.
    На пару предыдущих ночей оставлял программу со включенным щитом. Утром, к своему удивлению, обнаруживал, что клиент отключен из-за бездействия и на базу мою нападали.
    Сегодня стал экспериментировать, получил такую картину:
    Если запусить игру, затем запустить бота и сразу включить щит, то бот дергает карту, а потом сворачивается вместе с клиентом. Если сначала делать поиск, а потом включить щит, то бот сворачивается не дергая карту, окно блюстэкс остается развернутым, щит не работает.
    Начинает работать, только если не запускать поиск.

    • Спасибо за сообщение, Вы были правы, после атаки щит переставал работать. Обновитесь до версии 1.5, исправил эту проблему.

    • Я Вам уже отправлял пробный ключ 10 дней назад и Вы его активировали, а в программе можно использовать только один пробный ключ.

  16. Поставил версию 1.6 — очень ждал того, чтобы игра не разворачивалась каждые пять минут, т.к. это нервирует, если что-то делаешь за компьютером.
    Но определенно что-то работает не так — окно блюстэкса всё равно появляется.

    • Я наверно не уточнил, что щит работает в «тихом» режиме только если не стоит галочка «сбор шахт». Потому что для сбора шахт необходимо делать скриншот окна, а делать скриншот свернутого или неактивного окна я пока не умею 🙁
      Или даже с выключенной галочкой сбора шахт у вас все равно окно все время активизируется? о_О Мне, кстати, уже пришло несколько отзывов об этом обновлении, что стало стабильнее и спокойнее работать))

      • Да, точно, при отключении сбора шахт, в «тихом» режиме работает нормально. Имеет смысл добавить в помощь упоминание об этом.

        • Да, добавлю, спасибо) Просто я предполагал, что сбор шахт делается по ночам, а в дневное время просто щит работает ,чтобы не отвлекать)

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

  18. Хотел бы попробовать ваш бот с пробным ключиком. Игра стоит на эмуляторе bluestacks. Может не в тему: игра работает нормально но нет масштабирования
    экрана игры с клавиатуры. Вроде должно стрелками вверх — вниз.

  19. После обновления на версию 1.7 поиск стал работать хуже.
    Чаще останавливается на ресурсах с меньшим количеством и пропускать с большим.

  20. Выложил сегодня обновление с откатом распознавалки до прошлой версии. Как выяснилось, все мои труды с обновлением библиотеки, тренировкой распознавальщика под конкретный шрифт и другие ухищрения были тщетны… Печаль (

    • Hey) Yep, i trained it hard, I spent so much time for it, but after update lots of users said, that it became more mistakes… So I had to take it back to usual tesseract2 with standart english data.
      Are you trying to make the same bot for clash of clans?

  21. Я уже писал вам раньше, подскажите, он ориентируется по цвету пикселей?
    Просто есть мысль, что если дать ему больше времени на рассмотрение скриншота чужой базы, то он мог бы по определенному набору пикселей видеть, заполнены шахты или нет. Если я конечно нигде не ошибаюсь) Это так?

    • Чтобы ориентироваться по цвету пикселей, надо сначала опознать где находится шахта) И уже потом смотреть заполнена ли она. Причем у шахт слишком много вариантов заполненности, не говоря уже об 11 уровнях… Короче, очень тяжелая задача. Чуть проще будет ориентироваться на пустоту хранилищ.

      • а если в него загрузить картинку, как выглядит шахта? И задать поиск на скриншоте, для ее обнаружения?
        Просто если это удастся реализовать можно подумать о полноценном боте, ведь так же по идеи можно решить вопрос с наймом луков, и соответственно автоматической атаке, которая конечно и будет не такой умелой, но в большинстве случае достаточно луков по периметру кинуть и все. А дистанция сгладит углы.
        Причем этот функционал в случае успешной работы можно будет до продавать даже, чтобы окупить потраченные усилия.
        Вообщем надеюсь это действительно реально, а то я сам в программирование не шарю(

        • Я же уже писал, что шахта выглядит не одинаково на разных уровнях и даже на одном уровне у нее много картинок, отображающих разный уровень заполненности. В общем, сначала я реализую поиск ТХ с краю, а потом уже остальное)

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

  23. Поставил версию 1.11.1 — при поиске ТХ у краёв карты происходит высадка войск и начинается бой.
    Еще столкнулся с такой ситуацией, что время от времени, если долго пользоваться щитом, игра выдает сообщение о том, что нужно сделать перерыв в игре, т.к. долго якобы играю. Может быть сделать такую вещь: анализировать таймер внутриигрового щита, и, если щит активен, то приостанавливать действие программного щита, чтобы не висеть в игре (Для подстраховки можно раз в 20-30 минут заходить и проверять значение таймера щита). Незадолго до окончания действия внутригроового щита включать программный щит.

    • А высадка происходит на первом же противнике? Сообщите плиз какое разрешение экрана и размер окна блюстэкс, если можно.
      По поводу анализа таймера внутриигрового щита — вещь интересная и полезная (деревья не растут, когда постоянно онлайн сидишь), но пока не очень понимаю как ее реализовать… Вот если бы добиться стопроцентного распознавания, тогда еще можно подумать, а так — ошибок много. Плюс еще отлаживать эту фукнцию и тестировать я вообще не представляю как))

  24. Есть ли возможность попробовать ваш бот с пробным ключиком, в первую очередь интересна функция «Поиск ТХ за забором» на сколько это реально. До этого пользовался Xmodgames но эта функция там ещё не реализована.

  25. Очень интересная задумка, особенно с учетом работы со стаксами. Иксмод уже не возбуждает поскольку привязан к конкретному, да и то не всякому андротдодевайсу. Хотел бы попробовать Вашу разработку — скиньте пожалуйста триальный ключик и линк на последний билд

  26. Друзья, последние версии бота содержат встроенный активатор пробной версии, т.е. никакие пробные ключи просить не надо, все делает через меню программы! Условия те же — пробная версия идет на семь дней.

  27. всё , разобрался , сорри , ключ внутри . поиск ресов — это класс , конечно , но для тех , кто постоянно участвует в КВ я думаю важнее такая функция как репетиция атаки или тестовая атака без затрат ресурсов и потери кубков . Вы не планируете создать такую функцию в своем моде ?

  28. Спасибо Геннадий , код активации получил . Хотелось бы узнать — возможно ли на блюстаксе проводить тестовые атаки в клеш оф кланс ?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *