Thread Rating:
  • 7 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Developing Bot
New thread:
Anti, will you be creating and releasing a bot or will this just be a thread of info if users are creating their own bot?
I don't intend to create a full feature bot since it's very time consuming to fine tune all details for everyone's use. For now it just helps me train troops and attack. I created this thread so people who are interested can discuss/share info Smile
Fair enough - cant wait to see how this thread progresses.

would be interesting if the community got together and all chipped in to make a script - end result would be better than the current bots I think.
If i were to make a bot for myself.. u guys have any samples for me to learn?

Or is it impossible for someone like me with no experience to do a bot?
(12-07-2014, 03:24 AM)Captain Planet Wrote:  If i were to make a bot for myself.. u guys have any samples for me to learn?

Or is it impossible for someone like me with no experience to do a bot?

haha don't worry, I have zero experience in botting myself, just some basic programming background.
here's the function I wrote for reading gold and elixir (bluestacks resolution 800x600)
Func ReadValue()
  $Read = _TesseractWinCapture("BlueStacks App Player,"",0,"",1,2,42,70,660,490,0) ;Capture screen region with gold and elixir
  $Read = StringSplit(StringStripWS($Read, 1+2+4), @CRLF) ;Strip whitespaces & blank lines and split into array
  $Gold = Number(StringStripWS($Read[2], 8)) ;Convert gold to number
  $Elixir = Number(StringStripWS($Read[3], 8)) ;Convert exlir to number
  ;$Dark = Number(StringStripWS($Read[4], 8)) ;Convert dark to number
  ;MsgBox(0,"Result", "Gold: " & $Gold & @CR & "Elixir: " & $Elixir & @CR & "Dark: " & $Dark)
I leave out dark elixir since I can't reliably differentiate dark and trophy, for gold and elixir it's not 100% accuracy but it'll miss 1 or 2 every 20 search so it's not a big deal. From then you just write function to compare value, carry out attack..
hi antidote.. hope you get an idea on this script and apply it to autoit..
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" Clash of Clans Auto Tool for Genymotion (VirtualBox Android VM)

import os
import sys
import virtualbox
import subprocess
import as cv
import tesseract
import PIL.ImageOps as ImageOps
from time import sleep
from PIL import Image

# Genymotion Android VM name
genymotion_vm_name = "Google Nexus 7"

menu_text = """Choose function?
1. Keep Alive
2. Auto Search
3. Quit

vbox = virtualbox.VirtualBox()
genymotion_vm = vbox.find_machine(genymotion_vm_name)
genymotion_session = genymotion_vm.create_session()

def keep_alive():
   while True:

def auto_search():
   # click search button

   # processing"adb shell screencap -p /sdcard/screen.png", shell=True)"adb pull /sdcard/screen.png", shell=True)
   im ="screen.png")
   #box = (60, 80, 165, 180)
   #box = (53, 72, 140, 165)
   box = (53, 72, 140, 130)
   loot = im.crop(box).convert('L')
   loot = ImageOps.invert(loot)"loot.png", "png")

   api = tesseract.TessBaseAPI()
   api.Init(".", "coc",tesseract.OEM_DEFAULT)
   api.SetVariable("tessedit_char_whitelist", "0123456789")

   image = cv.LoadImage("loot.png", cv.CV_LOAD_IMAGE_UNCHANGED)
   text = api.GetUTF8Text()
   conf = api.MeanTextConf()
   total_loot = text.splitlines()
   gold_loot, elixir_loot = total_loot[0:2]
   gold_expr = gold_loot.find(" ") == 3 and int(gold_loot.split(" ")[0]) >= 180
   elixir_expr = elixir_loot.find(" ") == 3 and int(elixir_loot.split(" ")[0]) >= 180

   if gold_expr or elixir_expr:
       print gold_loot
       print elixir_loot"mplayer /home/mrtux/Downloads/gun.mp3", shell=True)
       return True

   return False

if __name__ == "__main__":
       while True:
           print menu_text
           answer = raw_input("Your choice: ")
           if answer == "1":
           elif answer == "2":
                   while auto_search() is False:
           elif answer == "3":
and also to this one antidote..

found :=
Loop, 10
num := A_Index-1
bmpNeedle := Gdip_CreateBitmapFromFile( "images/" . num . ".png")
RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,0,0,0,0,5,0x000000,1,0)
Loop, Parse, LIST, `n
StringSplit, Coord, A_LoopField, `,
found = %found%%Coord1%,%Coord2%,%num%`n

sort found, N ; sort list of found numbers by x coordinate
StringLeft, found, found, StrLen(found)-1
amt :=

; bring number together and return amount found
Loop, parse, found, `n
StringSplit, v, A_LoopField, `,
amt = %amt%%v3%
return amt
} - See more at:
I would be interested in doing so. my email is
I have finals coming up in school next week byut after that i have winter break Smile
We should create a github repo with the sources, and manage updates via pull requests. It's not manageable to copy paste code here all the time.

I have a working bot in Java, using Sikuli API and Tesseract. But, i'm having hard time to make Tesseract reliable, as well as Sikuli which randomly fails in image search. I can share my Java code, but would like to trained data for Tesseract too Smile

Forum Jump:

Users browsing this thread: 13 Guest(s)

About The Bytecode Club

We're a community focused on Reverse Engineering, we try to target Java/Android but we also include other langauges/platforms. We pride ourselves in supporting and free and open sourced applications.