struggling with camp total capacity - Henk500 - 02-10-2015
Hi,
i want to use rewrite the getGold.au3 to read the camp capacity. so the bot knows how much troops it has build. this way you can better train troops and start faster to attack, and train the next wave of troops, so troops train while u attack.
for some reason im missing something with the pixels or the coords of the pixels.
ive added the screenshot of the _captureregion that im taking. I presume that the first pixel in the left corner is x=1 and y=1 ? is that correct?
im traying to locate that first digit, the 1
Ive created a new fullCamp.au3 file (which is the same as getGold.au3)
and
ive added my test scripts.
wiztest.au3 is the file you need to run. it opens the bot gui
then in bluestacks open a camp (preferable with 1xx troops)
then press the "u"
in the log screen of the bot you'll see that its not finding the pixel with color 0x606060
Yes, i know im searching 3 times for the same pixelcolor (im using $c1 in all the 3 pixels)
Local $pixel1[3] = [$x + 2, $y + 2, $c1], $pixel2[3] = [$x + 2, $y + 2, $c1], $pixel3[3] = [$x + 2, $y + 2, $c1]
ive adjusted _captureregion with the following lines so i could see the "bitmap" its looking at.
Code: _ScreenCapture_SaveImage("C:\COC-Bot-master\images\GdiPlus_Screen.bmp", $hHBitmap)
_GDIPlus_ImageSaveToFile($hBitmap,"C:\COC-Bot-master\images\hBitmap.bmp")
that gives me this picture
http://minus.com/i/NZrJncWvP0I6
I appreciate any help on how to do a decent digit search
functions\read text\getCamp.au3
Code: ;==============================================================================================================
;===Get Digit=============================================================================================
;--------------------------------------------------------------------------------------------------------------
;Finds pixel color pattern of specific X and Y values, returns digit if pixel color pattern found.
;--------------------------------------------------------------------------------------------------------------
Func getCamp(ByRef $x, $y, $type)
Local $width = 0
;cause our picture is not the complete bs window, reset x and y
$x = 0
$y = 0
;Search for digit 1
$width = 4
Select
Case $type = "Gold"
Local $c1 = Hex(0x606060, 6), $c2 = Hex(0x1c5600, 10), $c3 = Hex(0xd7d7d7, 6)
Case $type = "Elixir"
Local $c1 = Hex(0x968895, 6), $c2 = Hex(0x312D31, 6), $c3 = Hex(0xD8C4D6, 6)
Case $type = "DarkElixir"
Local $c1 = Hex(0x8F8F8F, 6), $c2 = Hex(0x2F2F2F, 6), $c3 = Hex(0xCDCDCD, 6)
Case Else
Local $c1 = Hex(0x969696, 6), $c2 = Hex(0x313131, 6), $c3 = Hex(0xD8D8D8, 6)
EndSelect
Local $pixel1[3] = [$x + 2, $y + 2, $c1], $pixel2[3] = [$x + 2, $y + 2, $c1], $pixel3[3] = [$x + 2, $y + 2, $c1]
;= [$x +1 , $y + 8, $c2], $pixel3[3] = [$x + 4, $y + 9, $c3]
If boolPixelSearch($pixel1, $pixel2, $pixel3) Then
$x += $width
setlog("Jaaaaaaaaa het is 1")
Return 1
Else
$x += 1
setlog("neee 1e else" & $x)
Local $pixel1[3] = [$x + 2, $y + 2, $c1],$pixel2[3] = [$x + 2, $y + 2, $c1], $pixel3[3] = [$x + 2, $y + 2, $c1]
If boolPixelSearch($pixel1, $pixel2, $pixel3) Then
$x += $width
Return 1
Else
$x += 2
setlog("neee 2e else" & $x)
Local $pixel1[3] = [$x + 2, $y + 2, $c1], $pixel2[3] = [$x + 2, $y + 2, $c1], $pixel3[3] = [$x + 2, $y + 2, $c1]
If boolPixelSearch($pixel1, $pixel2, $pixel3) Then
$x += $width
Return 1
Else
$x -= 1
EndIf
EndIf
EndIf
Return ""
EndFunc ;==>getDigit
functions\read text\fullCamp.au3
Code: Func fullCamp($x_start, $y_start)
_CaptureRegion($x_start, $y_start, $x_start + 20, $y_start + 12)
;-----------------------------------------------------------------------------
Local $x = 1, $y = 0
Local $Gold, $i = 0
While getCamp($x, $y + $i, "Gold") = ""
If $i >= 15 Then ExitLoop
$i += 1
WEnd
$x = $x_start
$Gold &= getCamp($x, $y + $i, "Gold")
$Gold &= getCamp($x, $y + $i, "Gold")
$Gold &= getCamp($x, $y + $i, "Gold")
$x += 6
$Gold &= getCamp($x, $y + $i, "Gold")
$Gold &= getCamp($x, $y + $i, "Gold")
$Gold &= getCamp($x, $y + $i, "Gold")
Return $Gold
EndFunc
and in root the wiztest.au3
Code: #RequireAdmin
#AutoIt3Wrapper_UseX64=n
$sBotVersion = "5.5"
$sBotTitle = "COC Bot v" & $sBotVersion
#include "COCBot\Global Variables.au3"
#include "COCBot\GUI Design.au3"
#include "COCBot\GUI Control.au3"
#include "COCBot\Functions.au3"
#include "COCBot\functions\Read Text\fullCamp.au3"
#include "COCBot\functions\Read Text\getCamp.au3"
#include-once
global $hBitmap
HotKeySet("p", "checkDeadBases")
HotKeySet("o", "pixelColor")
HotkeySet("i", "getLoot")
HotkeySet("u", "getdigits")
func getdigits()
$ichkBackground = 1
setLog("lets get camp")
local $result = fullCamp(589, 193)
setLog("getCamp is " & $result)
EndFunc
while 1
sleep(200)
WEnd
RE: struggling with camp total capacity - Henk500 - 02-10-2015
i finally figured it out. The tool Control viewer gave me a lot of info on (correct) location en pixel colors.
i can now tell troop capacity by clikcing on camp
this will make troop training much more efficient
RE: struggling with camp total capacity - SongHyeKyo - 02-10-2015
RE: struggling with camp total capacity - AtoZ - 02-19-2015
RE: struggling with camp total capacity - Henk500 - 02-20-2015
(02-19-2015, 12:47 PM)AtoZ Wrote: @Henk500
There is a need to create an additional getDigit function of GKevinOD to accommodate smaller numbers as found in the camp. I tried editing it but I only have about 85%+ accuracy. I'll post it here when I get 100%. It's useless if bugged LOL.
ive posted the function in a new thread. it works 100% for me
it is never wrong in troop amounts.
I did a test from 0 troops to 200
it had it correct all the time
|