diff --git a/CHANGELOG b/CHANGELOG index d3d9658a2..0d70eb3ef 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,28 @@ +* **V7.6.6** +* Added check & remove unwanted CC siege machine +* Fixed Custom Drop Order @ViperZ (December 2018 Update) +* Fixed "Wait for Siege Machine", when bot is in "Halt Attack" +* Fixed wait for CC Troops when CC Spells are not used and "Village/Req. & Donate/When lacking" options are not configured +* Fixed several small bugs from previous Version +* Fixed Rearm for Infernos and Xbows/Eagle +* Fixed weak base detection when TH not detected to assume then TH12 +* Fixed exiting search due to zoom-out level, now it just measures village +* Fixed reading quantity of Bat Spell in Clan castle +* Fixed Heroes in AutoUpgrade +* Fixed RequestCC can not request, cause Army Overview moves slightly +* Fixed Haste donation +* Fixed Clock tower boost +* Fixed losing CoC Android shared_prefs when shared folder not available +* Fixed BlueStacks2 support for all versions (incl. 4) +* Fixed Smartfarm for Snow theme +* Fixed shared folder detection for all android emulators +* Fixed returning home from battle report +* Fixed heroes activation when getting weak +* Improved deadbase collector lvl 12 and lvl 13 (snow) and 50% detection +* Improved Eagle lvl 1-3 weak base detection, also re-check weak-base after 5 sec. +* Improved Laboratory, prefer units in current army composition +* Improved Giant Deployment in SmartFarm/Standard Attack + * **V7.6.5** * Add Ice Golem Support @ViperZ * Add Bat Spell Support @ViperZ diff --git a/COCBot/GUI/MBR GUI Control Achievements.au3 b/COCBot/GUI/MBR GUI Control Achievements.au3 index fd28f7194..05a8975b4 100644 --- a/COCBot/GUI/MBR GUI Control Achievements.au3 +++ b/COCBot/GUI/MBR GUI Control Achievements.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Android.au3 b/COCBot/GUI/MBR GUI Control Android.au3 index c75c34aa8..3de2e27cf 100644 --- a/COCBot/GUI/MBR GUI Control Android.au3 +++ b/COCBot/GUI/MBR GUI Control Android.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MMHK (11-2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Attack Scripted.au3 b/COCBot/GUI/MBR GUI Control Attack Scripted.au3 index 2d31859d3..022a3589d 100644 --- a/COCBot/GUI/MBR GUI Control Attack Scripted.au3 +++ b/COCBot/GUI/MBR GUI Control Attack Scripted.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: CodeSlinger69 (2017), MMHK (01-2008) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Attack Standard.au3 b/COCBot/GUI/MBR GUI Control Attack Standard.au3 index 4896fdbae..30211568e 100644 --- a/COCBot/GUI/MBR GUI Control Attack Standard.au3 +++ b/COCBot/GUI/MBR GUI Control Attack Standard.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control BOT Options.au3 b/COCBot/GUI/MBR GUI Control BOT Options.au3 index 8fd8e6150..3f939133f 100644 --- a/COCBot/GUI/MBR GUI Control BOT Options.au3 +++ b/COCBot/GUI/MBR GUI Control BOT Options.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run Team ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -492,39 +492,20 @@ Func btnTestTrain() EndFunc ;==>btnTestTrain Func btnTestDonateCC() - Local $currentOCR = $g_bDebugOcr Local $currentRunState = $g_bRunState Local $currentSetlog = $g_bDebugSetlog _GUICtrlTab_ClickTab($g_hTabMain, 0) - $g_bDebugOcr = True $g_bRunState = True - $g_bDebugSetlog = True - ForceCaptureRegion() - DebugImageSave("donateCC_") SetLog(_PadStringCenter(" Test DonateCC begin (" & $g_sBotVersion & ")", 54, "="), $COLOR_INFO) - $g_iDonationWindowY = 0 - Local $aDonWinOffColors[3][3] = [[0xFFFFFF, 0, 1], [0xFFFFFF, 0, 31], [0xABABA8, 0, 32]] - Local $aDonationWindow = _MultiPixelSearch(409, 0, 410, $g_iDEFAULT_HEIGHT, 1, 1, Hex(0xFFFFFF, 6), $aDonWinOffColors, 10) - - If IsArray($aDonationWindow) Then - $g_iDonationWindowY = $aDonationWindow[1] - _Sleep(250) - SetLog("$DonationWindowY: " & $g_iDonationWindowY, $COLOR_DEBUG) - Else - SetLog("Could not find the Donate Window :(", $COLOR_ERROR) - Return False - EndIf - SetLog("Detecting Troops...") - DetectSlotTroop($eIceG) - SetLog("Detecting Sieges...") - DetectSlotSiege($eSiegeStoneSlammer) - SetLog("Detecting Spells...") - DetectSlotSpell($eBtSpell) + PrepareDonateCC() + $g_iCurrentSpells = 11 + $g_aiCurrentSiegeMachines[$eSiegeWallWrecker] = 1 + $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] = 1 + $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] = 1 + DonateCC() SetLog(_PadStringCenter(" Test DonateCC end ", 54, "="), $COLOR_INFO) - ShellExecute($g_sProfileTempDebugPath & "donateCC_") - $g_bDebugOcr = $currentOCR $g_bRunState = $currentRunState $g_bDebugSetlog = $currentSetlog EndFunc ;==>btnTestDonateCC @@ -566,14 +547,12 @@ Func btnTestAttackBar() SetLog(_PadStringCenter(" Begin AttackBar Detection", 54, "="), $COlOR_INFO) - Local $aAttackBar = StringSplit(AttackBarCheck(False, $DB, True), "|", $STR_NOCOUNT) - Local $aTroop + Local $avAttackBar = AttackBarCheck(False, $DB, True) - If IsArray($aAttackBar) And UBound($aAttackBar, 1) >= 1 Then - SetLog("Found " & UBound($aAttackBar, 1) & " Slots", $COlOR_SUCCESS) - For $i = 0 To UBound($aAttackBar, 1) - 1 - $aTroop = StringSplit($aAttackBar[$i], "#", $STR_NOCOUNT) - If IsArray($aTroop) And UBound($aTroop, 1) = 4 Then SetLog("- Slot " & $aTroop[1] & ": " & $aTroop[2] & " " & GetTroopName($aTroop[0], $aTroop[2]), $COLOR_SUCCESS) + If IsArray($avAttackBar) And UBound($avAttackBar, 1) >= 1 Then + SetLog("Found " & UBound($avAttackBar, 1) & " Slots", $COlOR_SUCCESS) + For $i = 0 To UBound($avAttackBar, 1) - 1 + SetLog("- Slot " & $avAttackBar[$i][1] & ": " & $avAttackBar[$i][2] & " " & GetTroopName($avAttackBar[$i][0], $avAttackBar[$i][2]) & " (X: " & $avAttackBar[$i][3] & "|Y: " & $avAttackBar[$i][4] & "|OCR X: " & $avAttackBar[$i][5] & "|OCR Y: " & $avAttackBar[$i][6] & ")", $COLOR_SUCCESS) Next EndIf SetLog(_PadStringCenter(" End AttackBar Detection ", 54, "="), $COlOR_INFO) @@ -771,7 +750,13 @@ Func btnTestAttackCSV() $g_iMatchMode = $DB ; define which script to use - SearchZoomOut($aCenterEnemyVillageClickDrag, True, "btnTestAttackCSV") + ; reset village measures + setVillageOffset(0, 0, 1) + ConvertInternalExternArea() + ;SearchZoomOut($aCenterEnemyVillageClickDrag, True, "btnTestAttackCSV") + If CheckZoomOut("btnTestAttackCSV", True, False) = False Then + SetLog("CheckZoomOut failed", $COLOR_INFO) + EndIf ResetTHsearch() SetLog("Testing FindTownhall()", $COLOR_INFO) SetLog("FindTownhall() = " & FindTownhall(True), $COLOR_INFO) @@ -809,7 +794,13 @@ Func btnTestGetLocationBuilding() $g_bDebugBuildingPos = True $g_bDebugSetlog = True - SearchZoomOut($aCenterEnemyVillageClickDrag, True, "btnTestAttackCSV") + ; reset village measures + setVillageOffset(0, 0, 1) + ConvertInternalExternArea() + ;SearchZoomOut($aCenterEnemyVillageClickDrag, True, "btnTestAttackCSV") + If CheckZoomOut("btnTestGetLocationBuilding", True, False) = False Then + SetLog("CheckZoomOut failed", $COLOR_INFO) + EndIf ResetTHsearch() SetLog("Testing FindTownhall()", $COLOR_INFO) SetLog("FindTownhall() = " & FindTownhall(True), $COLOR_INFO) @@ -827,6 +818,7 @@ Func btnTestGetLocationBuilding() _LogObjList($g_oBldgAttackInfo) ; log dictionary contents btnTestGetLocationBuildingImage() ; create image of locations + ;AttackCSVDEBUGIMAGE() Local $string, $iFindBldgTotalTestTime Local $iKeys = $g_oBldgAttackInfo.Keys @@ -1095,7 +1087,12 @@ Func btnTestWeakBase() Local $currentRunState = $g_bRunState $g_bRunState = True BeginImageTest() - IsWeakBase() + FindTownhall(True) + If ($g_iSearchTH <> "-") Then + IsWeakBase($g_iImglocTHLevel, $g_sImglocRedline, False) + Else + IsWeakBase($g_iMaxTHLevel, "", False) + EndIf EndImageTest() $g_bRunState = $currentRunState EndFunc ;==>btnTestWeakBase diff --git a/COCBot/GUI/MBR GUI Control Bottom.au3 b/COCBot/GUI/MBR GUI Control Bottom.au3 index 311063cca..aca12f565 100644 --- a/COCBot/GUI/MBR GUI Control Bottom.au3 +++ b/COCBot/GUI/MBR GUI Control Bottom.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), KnowJack(July 2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -44,7 +44,7 @@ Func Initiate() $g_bFirstStart = True $g_bInitiateSwitchAcc = True - $g_iFirstTimeLab = 0 + $g_sLabUpgradeTime = "" ;~ If $g_bNotifyDeleteAllPushesOnStart Then _DeletePush() diff --git a/COCBot/GUI/MBR GUI Control Child Army.au3 b/COCBot/GUI/MBR GUI Control Child Army.au3 index 14d65af2c..f34a76791 100644 --- a/COCBot/GUI/MBR GUI Control Child Army.au3 +++ b/COCBot/GUI/MBR GUI Control Child Army.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), Boju (11-2016), MR.ViPER (11-2016), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -122,7 +122,7 @@ Func lblTotalCountTroop2() Local $TotalTotalTimeTroop = 0 Local $NbrOfBarrack = 4 ;For the moment fix to 4 until fine detect level of each Barrack Local $NbrOfDarkBarrack = 2 ;For the moment fix to 2 until fine detect level of each Barrack - For $i = $eTroopBarbarian To $eTroopIceGolem + For $i = $eTroopBarbarian To $eTroopElectroDragon Local $NbrOfTroop = GUICtrlRead($g_ahTxtTrainArmyTroopCount[$i]) Local $LevOfTroop = $g_aiTrainArmyTroopLevel[$i] diff --git a/COCBot/GUI/MBR GUI Control Child Attack.au3 b/COCBot/GUI/MBR GUI Control Child Attack.au3 index a43e62faf..93220202a 100644 --- a/COCBot/GUI/MBR GUI Control Child Attack.au3 +++ b/COCBot/GUI/MBR GUI Control Child Attack.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Child Misc.au3 b/COCBot/GUI/MBR GUI Control Child Misc.au3 index ffec9b6ae..83a38013b 100644 --- a/COCBot/GUI/MBR GUI Control Child Misc.au3 +++ b/COCBot/GUI/MBR GUI Control Child Misc.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Child Upgrade.au3 b/COCBot/GUI/MBR GUI Control Child Upgrade.au3 index bcd85eb48..dc8d514fe 100644 --- a/COCBot/GUI/MBR GUI Control Child Upgrade.au3 +++ b/COCBot/GUI/MBR GUI Control Child Upgrade.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Collectors.au3 b/COCBot/GUI/MBR GUI Control Collectors.au3 index 363180cb4..83122ea38 100644 --- a/COCBot/GUI/MBR GUI Control Collectors.au3 +++ b/COCBot/GUI/MBR GUI Control Collectors.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: zengzeng ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Donate.au3 b/COCBot/GUI/MBR GUI Control Donate.au3 index f58af118c..8f524a4ac 100644 --- a/COCBot/GUI/MBR GUI Control Donate.au3 +++ b/COCBot/GUI/MBR GUI Control Donate.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: MonkeyHunter (07-2016), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -14,9 +14,9 @@ ; =============================================================================================================================== #include-once -Global $g_aiDonIcons[21] = [$eIcnDonBarbarian, $eIcnDonArcher, $eIcnDonGiant, $eIcnDonGoblin, $eIcnDonWallBreaker, $eIcnDonBalloon, $eIcnDonWizard, $eIcnDonHealer, _ +Global $g_aiDonIcons[$eTroopCount + 1] = [$eIcnDonBarbarian, $eIcnDonArcher, $eIcnDonGiant, $eIcnDonGoblin, $eIcnDonWallBreaker, $eIcnDonBalloon, $eIcnDonWizard, $eIcnDonHealer, _ $eIcnDonDragon, $eIcnDonPekka, $eIcnDonBabyDragon, $eIcnDonMiner, $eIcnElectroDragon, $eIcnDonMinion, $eIcnDonHogRider, $eIcnDonValkyrie, $eIcnDonGolem, _ - $eIcnDonWitch, $eIcnDonLavaHound, $eIcnDonBowler, $eIcnDonBlank] + $eIcnDonWitch, $eIcnDonLavaHound, $eIcnDonBowler, $eIcnIceGolem, $eIcnDonBlank] Func btnDonateTroop() For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount @@ -76,19 +76,23 @@ Func chkDonateTroop() GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $GUI_BKCOLOR_TRANSPARENT) If $i <= $eTroopCount - 1 + $g_iCustomDonateConfigs And GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_DISABLE) EndIf + SetStateTxtGeneralBlacklist() EndIf Next EndFunc ;==>chkDonateTroop Func chkDonateAllTroop() - For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount If @GUI_CtrlId = $g_ahChkDonateAllTroop[$i] Then - If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then - GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_ENABLE) - ElseIf GUICtrlRead($g_ahChkDonateTroop[$i]) = $GUI_UNCHECKED Then - GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_DISABLE) + If $i <= $eTroopCount - 1 + $g_iCustomDonateConfigs Then + If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then + GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_ENABLE) + ElseIf GUICtrlRead($g_ahChkDonateTroop[$i]) = $GUI_UNCHECKED Then + GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_DISABLE) + EndIf EndIf _DonateAllControls($i, GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED ? True : False) + SetStateTxtGeneralBlacklist() ExitLoop EndIf Next @@ -104,6 +108,7 @@ Func chkDonateSpell() GUICtrlSetBkColor($g_ahLblDonateSpell[$i], $GUI_BKCOLOR_TRANSPARENT) If GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueSpellOnly, $GUI_DISABLE) EndIf + SetStateTxtGeneralBlacklist() EndIf Next EndFunc ;==>chkDonateSpell @@ -117,6 +122,7 @@ Func chkDonateAllSpell() If GUICtrlRead($g_ahChkDonateSpell[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueSpellOnly, $GUI_DISABLE) EndIf _DonateAllControlsSpell($i, GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_CHECKED ? True : False) + SetStateTxtGeneralBlacklist() ExitLoop EndIf Next @@ -182,27 +188,42 @@ Func _DonateBtn($hFirstControl, $hLastControl) EndFunc ;==>_DonateBtn Func _DonateControls($iTroopIndex) - Local $bWasRedraw = SetRedrawBotWindow(False, Default, Default, Default, "_DonateControls") +; Local $bWasRedraw = SetRedrawBotWindow(False, Default, Default, Default, "_DonateControls") - For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount + Local $iFirstTroop = 0, $iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount + If $iTroopIndex <= $eTroopCount - 1 + $g_iCustomDonateConfigs Then + $iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs + Else + $iFirstTroop = $eTroopCount + $g_iCustomDonateConfigs + EndIf + + For $i = $iFirstTroop To $iLastTroop If $i = $iTroopIndex Then GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $COLOR_ORANGE) Else If GUICtrlGetBkColor($g_ahLblDonateTroop[$i]) = $COLOR_NAVY Then GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $GUI_BKCOLOR_TRANSPARENT) EndIf - If $iTroopIndex < $eTroopCount + $g_iCustomDonateConfigs Then GUICtrlSetState($g_ahChkDonateAllTroop[$i], $GUI_UNCHECKED) + If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then GUICtrlSetState($g_ahChkDonateAllTroop[$i], $GUI_UNCHECKED) + If BitAND(GUICtrlGetState($g_ahTxtDonateTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateTroop[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistTroop[$i], $GUI_ENABLE) Next - SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateControls") ; cannot use tab item here +; SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateControls") ; cannot use tab item here EndFunc ;==>_DonateControls Func _DonateAllControls($iTroopIndex, $Set) Local $bWasRedraw = SetRedrawBotWindow(False, Default, Default, Default, "_DonateAllControls") + Local $iFirstTroop = 0, $iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount + If $iTroopIndex <= $eTroopCount - 1 + $g_iCustomDonateConfigs Then + $iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs + Else + $iFirstTroop = $eTroopCount + $g_iCustomDonateConfigs + EndIf + If $Set = True Then - For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + For $i = $iFirstTroop To $iLastTroop GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $i = $iTroopIndex ? $COLOR_NAVY : $GUI_BKCOLOR_TRANSPARENT) If $i <> $iTroopIndex Then @@ -214,16 +235,14 @@ Func _DonateAllControls($iTroopIndex, $Set) If BitAND(GUICtrlGetState($g_ahTxtBlacklistTroop[$i]), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_ahTxtBlacklistTroop[$i], $GUI_DISABLE) Next - If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_DISABLE) Else GUICtrlSetBkColor($g_ahLblDonateTroop[$iTroopIndex], $GUI_BKCOLOR_TRANSPARENT) - For $i = 0 To $eTroopCount - 1 + For $i = $iFirstTroop To $iLastTroop If BitAND(GUICtrlGetState($g_ahTxtDonateTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateTroop[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistTroop[$i], $GUI_ENABLE) Next - If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_ENABLE) EndIf SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateAllControls") ; cannot use tab item here @@ -237,7 +256,8 @@ Func _DonateControlsSpell($iSpellIndex) If GUICtrlGetBkColor($g_ahLblDonateSpell[$i]) = $COLOR_NAVY Then GUICtrlSetBkColor($g_ahLblDonateSpell[$i], $GUI_BKCOLOR_TRANSPARENT) EndIf - GUICtrlSetState($g_ahChkDonateAllSpell[$i], $GUI_UNCHECKED) + If GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_CHECKED Then GUICtrlSetState($g_ahChkDonateAllSpell[$i], $GUI_UNCHECKED) + If BitAND(GUICtrlGetState($g_ahTxtDonateSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateSpell[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistSpell[$i], $GUI_ENABLE) Next @@ -261,7 +281,6 @@ Func _DonateAllControlsSpell($iSpellIndex, $Set) If BitAND(GUICtrlGetState($g_ahTxtBlacklistSpell[$i]), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_ahTxtBlacklistSpell[$i], $GUI_DISABLE) Next - If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_DISABLE) Else GUICtrlSetBkColor($g_ahLblDonateSpell[$iSpellIndex], $GUI_BKCOLOR_TRANSPARENT) @@ -270,12 +289,28 @@ Func _DonateAllControlsSpell($iSpellIndex, $Set) If BitAND(GUICtrlGetState($g_ahTxtBlacklistSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistSpell[$i], $GUI_ENABLE) Next - If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_ENABLE) EndIf SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateAllControlsSpell") ; cannot use tab item here EndFunc ;==>_DonateAllControlsSpell +Func SetStateTxtGeneralBlacklist() + Local $bDonateToSpecificKeyWord = False, $bDonateToAll = False + For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount + If $bDonateToSpecificKeyWord Then ExitLoop + If GUICtrlRead($g_ahChkDonateTroop[$i]) = $GUI_CHECKED Then $bDonateToSpecificKeyWord = True + If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then $bDonateToAll = True + If $i >= $eSpellCount - 1 Then ContinueLoop + If GUICtrlRead($g_ahChkDonateSpell[$i]) = $GUI_CHECKED Then $bDonateToSpecificKeyWord = True + If GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_CHECKED Then $bDonateToAll = True + Next + If $bDonateToSpecificKeyWord Or Not $bDonateToAll Then + If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_ENABLE) + ElseIf $bDonateToAll Then + If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_DISABLE) + EndIf +EndFunc + Func btnFilterDonationsCC() SetLog("open folder " & $g_sProfileDonateCapturePath, $COLOR_AQUA) ShellExecute("explorer", $g_sProfileDonateCapturePath) diff --git a/COCBot/GUI/MBR GUI Control Milking.au3 b/COCBot/GUI/MBR GUI Control Milking.au3 index 14f2410f3..046fd08b6 100644 --- a/COCBot/GUI/MBR GUI Control Milking.au3 +++ b/COCBot/GUI/MBR GUI Control Milking.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Notify.au3 b/COCBot/GUI/MBR GUI Control Notify.au3 index da55862a7..c3af546ad 100644 --- a/COCBot/GUI/MBR GUI Control Notify.au3 +++ b/COCBot/GUI/MBR GUI Control Notify.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Preset.au3 b/COCBot/GUI/MBR GUI Control Preset.au3 index 5f8ef99e9..1696194f2 100644 --- a/COCBot/GUI/MBR GUI Control Preset.au3 +++ b/COCBot/GUI/MBR GUI Control Preset.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Splash.au3 b/COCBot/GUI/MBR GUI Control Splash.au3 index 241fc2f20..551b596d4 100644 --- a/COCBot/GUI/MBR GUI Control Splash.au3 +++ b/COCBot/GUI/MBR GUI Control Splash.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: mikemikemikecoc (2016) ; Modified ......: CodeSlinger69 (2017), MonkeyHunter (05-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Tab DropOrder.au3 b/COCBot/GUI/MBR GUI Control Tab DropOrder.au3 index 857589faf..65ebd3850 100644 --- a/COCBot/GUI/MBR GUI Control Tab DropOrder.au3 +++ b/COCBot/GUI/MBR GUI Control Tab DropOrder.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Kychera (5-2017) ; Modified ......: NguyenAnhHD [12-2017] -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -105,7 +105,7 @@ Func BtnDropOrderSet() Local $aiDropOrder[$eDropOrderCount] = [ _ $eTroopBarbarianS, $eTroopArcherS, $eTroopGiantS, $eTroopGoblinS, $eTroopWallBreakerS, $eTroopBalloonS, $eTroopWizardS, _ $eTroopHealerS, $eTroopDragonS, $eTroopPekkaS, $eTroopBabyDragonS, $eTroopMinerS, $eTroopElectroDragonS, $eTroopMinionS, $eTroopHogRiderS, _ - $eTroopValkyrieS, $eTroopGolemS, $eTroopWitchS, $eTroopLavaHoundS, $eTroopBowlerS, $eHeroeS, $eCCS] + $eTroopValkyrieS, $eTroopGolemS, $eTroopWitchS, $eTroopLavaHoundS, $eTroopBowlerS, $eTroopIceGolemS, $eHeroeS, $eCCS] ; check for duplicate combobox index and take action For $i = 0 To UBound($g_ahCmbDropOrder) - 1 diff --git a/COCBot/GUI/MBR GUI Control Tab EndBattle.au3 b/COCBot/GUI/MBR GUI Control Tab EndBattle.au3 index 9620438b5..ae523c447 100644 --- a/COCBot/GUI/MBR GUI Control Tab EndBattle.au3 +++ b/COCBot/GUI/MBR GUI Control Tab EndBattle.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Tab General.au3 b/COCBot/GUI/MBR GUI Control Tab General.au3 index e200ccf43..30cdddcfe 100644 --- a/COCBot/GUI/MBR GUI Control Tab General.au3 +++ b/COCBot/GUI/MBR GUI Control Tab General.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Tab Search.au3 b/COCBot/GUI/MBR GUI Control Tab Search.au3 index c60310707..0780e0243 100644 --- a/COCBot/GUI/MBR GUI Control Tab Search.au3 +++ b/COCBot/GUI/MBR GUI Control Tab Search.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), CodeSlinger69 [2017], MonkeyHunter (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Tab SmartZap.au3 b/COCBot/GUI/MBR GUI Control Tab SmartZap.au3 index aab39931e..86f965b76 100644 --- a/COCBot/GUI/MBR GUI Control Tab SmartZap.au3 +++ b/COCBot/GUI/MBR GUI Control Tab SmartZap.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 [2017] -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Tab Stats.au3 b/COCBot/GUI/MBR GUI Control Tab Stats.au3 index 71eb6ac0b..4bf497272 100644 --- a/COCBot/GUI/MBR GUI Control Tab Stats.au3 +++ b/COCBot/GUI/MBR GUI Control Tab Stats.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), kaganus (August 2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Control Tab Village.au3 b/COCBot/GUI/MBR GUI Control Tab Village.au3 index ee66e5a73..f90ccfdd5 100644 --- a/COCBot/GUI/MBR GUI Control Tab Village.au3 +++ b/COCBot/GUI/MBR GUI Control Tab Village.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -62,21 +62,28 @@ Func chkRequestCountCC() EndIf If GUICtrlRead($g_hChkRequestType_Spells) = $GUI_CHECKED Then GUICtrlSetState($g_hTxtRequestCountCCSpell, $GUI_ENABLE) - For $i = $g_ahCmbClanCastleSpell[0] To $g_ahCmbClanCastleSpell[1] - GUICtrlSetState($i, $GUI_ENABLE) - Next + GUICtrlSetState($g_ahCmbClanCastleSpell[0], $GUI_ENABLE) + GUICtrlSetState($g_ahCmbClanCastleSpell[1], $GUI_ENABLE) + GUICtrlSetState($g_ahCmbClanCastleSpell[2], $GUI_ENABLE) CmbClanCastleSpell() Else GUICtrlSetState($g_hTxtRequestCountCCSpell, $GUI_DISABLE) - For $i = $g_ahCmbClanCastleSpell[0] To $g_ahTxtClanCastleSpell[1] - GUICtrlSetState($i, $GUI_DISABLE) - Next + GUICtrlSetState($g_ahCmbClanCastleSpell[0], $GUI_DISABLE) + GUICtrlSetState($g_ahCmbClanCastleSpell[1], $GUI_DISABLE) + GUICtrlSetState($g_ahCmbClanCastleSpell[2], $GUI_DISABLE) + EndIf + If GUICtrlRead($g_hChkRequestType_Siege) = $GUI_CHECKED Then + GUICtrlSetState($g_ahCmbClanCastleSiege[0], $GUI_ENABLE) + GUICtrlSetState($g_ahCmbClanCastleSiege[1], $GUI_ENABLE) + Else + GUICtrlSetState($g_ahCmbClanCastleSiege[0], $GUI_DISABLE) + GUICtrlSetState($g_ahCmbClanCastleSiege[1], $GUI_DISABLE) EndIf EndFunc ;==>chkRequestCountCC Func CmbClanCastleTroop() For $i = 0 To UBound($g_ahCmbClanCastleTroop) - 1 - If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleTroop[$i]) <= $eTroopBowler Then + If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleTroop[$i]) < $eTroopCount Then GUICtrlSetState($g_ahTxtClanCastleTroop[$i], $GUI_ENABLE) Else GUICtrlSetState($g_ahTxtClanCastleTroop[$i], $GUI_DISABLE) @@ -86,12 +93,7 @@ EndFunc ;==>CmbClanCastleTroop Func CmbClanCastleSpell() For $i = 0 To UBound($g_ahCmbClanCastleSpell) - 1 - If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) = $eCSpell - $eLSpell Then _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSpell[$i], $eBtSpell - $eLSpell + 1) - If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) <= $eBtSpell - $eLSpell Then - GUICtrlSetState($g_ahTxtClanCastleSpell[$i], $GUI_ENABLE) - Else - GUICtrlSetState($g_ahTxtClanCastleSpell[$i], $GUI_DISABLE) - EndIf + If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) = $eCSpell - $eLSpell Then _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSpell[$i], $eSpellCount) Next EndFunc ;==>CmbClanCastleSpell diff --git a/COCBot/GUI/MBR GUI Design About.au3 b/COCBot/GUI/MBR GUI Design About.au3 index b887e6289..c242f5366 100644 --- a/COCBot/GUI/MBR GUI Design About.au3 +++ b/COCBot/GUI/MBR GUI Design About.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: CodeSlinger69 (2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -50,16 +50,16 @@ Func CreateAboutTab() GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) - $sText = "Fliegerfaust, MMHK and TripleM" + $sText = "Cosote, Demen, Fliegerfaust and TripleM" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") $y += 35 - $sText = "Special participation at v7.6: " + $sText = "Special participation at v7.6.6: " GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) - $sText = "Demen, Hecki, ProMac and ViperZ" + $sText = "ViperZ" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") @@ -68,7 +68,7 @@ Func CreateAboutTab() GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) - $sText = "Boju, Codeslinger69, Cosote, Ezeck0001, Hervidero, IceCube, Kaganus, MR.ViPeR, Sardo, TheRevenor, Trlopes" + $sText = "Hervidero, Kaganus, Sardo, Trlopes" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") @@ -77,7 +77,7 @@ Func CreateAboutTab() GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) - $sText = "Antidote, AtoZ, Barracoda, Didipe, Dinobot, DixonHill, DkEd, GkevinOD, HungLe, KnowJack, LunaEclipse, MonkeyHunter, ProMac, Safar46, Saviart, TheMaster1st, Zengzeng, and others" + $sText = "Antidote, AtoZ, Barracoda, Boju, Codeslinger69, Didipe, Dinobot, DixonHill, DkEd, GkevinOD, HungLe, KnowJack, LunaEclipse, MonkeyHunter, ProMac, Safar46, Saviart, TheMaster1st, Zengzeng, and others" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") @@ -102,7 +102,7 @@ Func CreateAboutTab() "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even " & @CRLF & _ "the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " & @CRLF & _ "Public License for more details. The license can be found in the main code folder location." & @CRLF & _ - "Copyright (C) 2015-2018 MyBot.run" + "Copyright (C) 2015-2019 MyBot.run" GUICtrlCreateLabel($sText, $x + 1, $y, 415, 56, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT, $ES_CENTER), 0) GUICtrlSetColor(-1, 0x000053) GUICtrlSetFont(-1, 6.5, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) diff --git a/COCBot/GUI/MBR GUI Design Attack.au3 b/COCBot/GUI/MBR GUI Design Attack.au3 index a4668aba1..216434c59 100644 --- a/COCBot/GUI/MBR GUI Design Attack.au3 +++ b/COCBot/GUI/MBR GUI Design Attack.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -28,12 +28,12 @@ Func LoadTranslatedDropOrderList() "Wall Breakers", "Balloons", "Wizards", "Healers", _ "Dragons", "Pekkas", "Baby Dragons", "Miners", "Electro Dragons", _ "Minions", "Hog Riders", "Valkyries", "Golems", _ - "Witches", "Lava Hounds", "Bowlers", "Clan Castle", "Heroes"] + "Witches", "Lava Hounds", "Bowlers", "Ice Golems", "Clan Castle", "Heroes"] EndFunc ;==>LoadTranslatedDropOrderList Global $g_hChkCustomDropOrderEnable = 0 -Global $g_ahCmbDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -Global $g_ahImgDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_ahCmbDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_ahImgDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_hBtnDropOrderSet = 0, $g_ahImgDropOrderSet = 0 Global $g_hBtnRemoveDropOrder = 0 @@ -60,12 +60,12 @@ EndFunc ;==>CreateAttackTab Func CreateDropOrderGUI() - $g_hGUI_DropOrder = _GUICreate(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "GUI_DropOrder", "Attack Custom Dropping Order"), 322, 428, -1, -1, $WS_BORDER, $WS_EX_CONTROLPARENT) + $g_hGUI_DropOrder = _GUICreate(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "GUI_DropOrder", "Attack Custom Dropping Order"), 322, 438, -1, -1, $WS_BORDER, $WS_EX_CONTROLPARENT) SetDefaultDropOrderGroup(False) LoadTranslatedDropOrderList() Local $x = 25, $y = 25 - GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "Group_03", "Custom Dropping Order"), $x - 20, $y - 20, 308, 365) + GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "Group_03", "Custom Dropping Order"), $x - 20, $y - 20, 308, 375) $x += 10 $y += 20 @@ -86,7 +86,7 @@ Func CreateDropOrderGUI() $y += 5 For $p = 0 To $eDropOrderCount - 1 - If $p < 11 Then + If $p < 12 Then GUICtrlCreateLabel($p + 1 & ":", $x - 19, $y + 3, -1, 18) $g_ahCmbDropOrder[$p] = GUICtrlCreateCombo("", $x, $y, 94, 18, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) GUICtrlSetOnEvent(-1, "GUIDropOrder") @@ -96,7 +96,7 @@ Func CreateDropOrderGUI() $g_ahImgDropOrder[$p] = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnOptions, $x + 96, $y + 1, 18, 18) $y += 25 ; move down to next combobox location Else - If $p = 11 Then + If $p = 12 Then $x += 128 $y = 49 EndIf @@ -112,7 +112,7 @@ Func CreateDropOrderGUI() Next $x = 25 - $y = 335 + $y = 350 ; Create push button to set training order once completed $g_hBtnDropOrderSet = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnDropOrderSet", "Apply New Order"), $x, $y, 100, 25) GUICtrlSetState(-1, BitOR($GUI_UNCHECKED, $GUI_ENABLE)) @@ -129,7 +129,7 @@ Func CreateDropOrderGUI() GUICtrlCreateGroup("", -99, -99, 1, 1) ; Create a button control. - Local $g_hBtnClose = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnClose", "Close"), 229, 373, 85, 25) + Local $g_hBtnClose = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnClose", "Close"), 229, 383, 85, 25) GUICtrlSetOnEvent(-1, "CloseCustomDropOrder") EndFunc ;==>CreateDropOrderGUI diff --git a/COCBot/GUI/MBR GUI Design Bot.au3 b/COCBot/GUI/MBR GUI Design Bot.au3 index ba560aa4c..a323770cd 100644 --- a/COCBot/GUI/MBR GUI Design Bot.au3 +++ b/COCBot/GUI/MBR GUI Design Bot.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Bottom.au3 b/COCBot/GUI/MBR GUI Design Bottom.au3 index 935bbb24e..09330fc24 100644 --- a/COCBot/GUI/MBR GUI Design Bottom.au3 +++ b/COCBot/GUI/MBR GUI Design Bottom.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -29,7 +29,7 @@ Global $g_hLblVillageReportTemp = 0 Global $g_hlblKing = 0, $g_hPicKingGray = 0, $g_hPicKingBlue = 0, $g_hPicKingRed = 0, $g_hPicKingGreen = 0 Global $g_hlblQueen = 0, $g_hPicQueenGray = 0, $g_hPicQueenBlue = 0, $g_hPicQueenRed = 0, $g_hPicQueenGreen = 0 Global $g_hlblWarden = 0, $g_hPicWardenGray = 0, $g_hPicWardenBlue = 0, $g_hPicWardenRed = 0, $g_hPicWardenGreen = 0 -Global $g_hlblLab = 0, $g_hPicLabGray = 0, $g_hPicLabRed = 0, $g_hPicLabGreen = 0 +Global $g_hlblLab = 0, $g_hPicLabGray = 0, $g_hPicLabRed = 0, $g_hPicLabGreen = 0, $g_hLbLLabTime = 0 Func CreateBottomPanel() Local $sTxtTip = "" @@ -187,6 +187,7 @@ Func CreateBottomPanel() $g_hPicLabRed = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnRedShield, $x + 53, $y, 16, 16 ) _GUICtrlSetTip(-1, $sTxtTip) GUICtrlSetState(-1, $GUI_HIDE) + $g_hLbLLabTime = GUICtrlCreateLabel("", $x, $y + 15, 50, 16, $SS_LEFT) ;~ Village Local $x = 295, $y = $y_bottom + 20 diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Scripted.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Scripted.au3 index 5c5386af7..c78217c13 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Scripted.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Scripted.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Standard.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Standard.au3 index a4aa41b0f..6cfaeb165 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Standard.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Activebase Attack Standard.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Attack.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Attack.au3 index 81252a098..1511c32c1 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Attack.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Attack.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Activebase-EndBattle.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Activebase-EndBattle.au3 index f4f65151b..c7f144ad7 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Activebase-EndBattle.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Activebase-EndBattle.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Search.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Search.au3 index a13e25415..f1d8096ca 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Search.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Activebase-Search.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Activebase.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Activebase.au3 index 5a2a5ee9f..c5439635d 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Activebase.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Activebase.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Bully.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Bully.au3 index c803e6536..7da730959 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Bully.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Bully.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Milking.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Milking.au3 index 4ff9c1f91..c8d6f0d53 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Milking.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Milking.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Scripted.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Scripted.au3 index 36855dffb..17bf027ea 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Scripted.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Scripted.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Smart Farm.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Smart Farm.au3 index 09a1e1e8f..d296e42b8 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Smart Farm.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Smart Farm.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac(07-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Standard.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Standard.au3 index 92f2b996d..d764d2de3 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Standard.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase Attack Standard.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Attack.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Attack.au3 index 3ec9b1719..515e68102 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Attack.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Attack.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Collectors.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Collectors.au3 index f1e7dd2de..dd8f58d8f 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Collectors.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Collectors.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-EndBattle.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-EndBattle.au3 index cef671aa2..12b6e3124 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-EndBattle.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-EndBattle.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Search.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Search.au3 index 9f2205965..7ded7a7a3 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Search.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase-Search.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase.au3 index 0dad33c05..85474b67f 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Deadbase.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Deadbase.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Options-Attack.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Options-Attack.au3 index 081f90a99..d7010e263 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Options-Attack.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Options-Attack.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017), MonkeyHunter (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Options-EndBattle.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Options-EndBattle.au3 index 4c2c1c6b5..994d0afe2 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Options-EndBattle.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Options-EndBattle.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Options-Search.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Options-Search.au3 index 98374026a..321c18b30 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Options-Search.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Options-Search.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Options-TrophySettings.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Options-TrophySettings.au3 index c26ce45d6..9131383f3 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Options-TrophySettings.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Options-TrophySettings.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Options.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Options.au3 index bc1f50bc7..000a503f3 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Options.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Options.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Search.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Search.au3 index 39c35a2f4..7e73ead0f 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Search.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Search.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Strategies.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Strategies.au3 index 4c7042f6d..9390cb42d 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Strategies.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Strategies.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Attack.au3 b/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Attack.au3 index b07cc6ddb..7e5d94211 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Attack.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Attack.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-EndBattle.au3 b/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-EndBattle.au3 index a6d928c51..f48ba5790 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-EndBattle.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-EndBattle.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Search.au3 b/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Search.au3 index 849abf6bc..69feb45a6 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Search.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - THSnipe-Search.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - THsnipe.au3 b/COCBot/GUI/MBR GUI Design Child Attack - THsnipe.au3 index 002af3ae7..5ee206aeb 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - THsnipe.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - THsnipe.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Attack - Troops.au3 b/COCBot/GUI/MBR GUI Design Child Attack - Troops.au3 index a8e38197f..896359fe8 100644 --- a/COCBot/GUI/MBR GUI Design Child Attack - Troops.au3 +++ b/COCBot/GUI/MBR GUI Design Child Attack - Troops.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), Boju (11-2016), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Bot - Android.au3 b/COCBot/GUI/MBR GUI Design Child Bot - Android.au3 index e0513d383..6f9a77a7f 100644 --- a/COCBot/GUI/MBR GUI Design Child Bot - Android.au3 +++ b/COCBot/GUI/MBR GUI Design Child Bot - Android.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Bot - Debug.au3 b/COCBot/GUI/MBR GUI Design Child Bot - Debug.au3 index c312489a7..3200d3e8e 100644 --- a/COCBot/GUI/MBR GUI Design Child Bot - Debug.au3 +++ b/COCBot/GUI/MBR GUI Design Child Bot - Debug.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -22,7 +22,7 @@ Global $g_hChkdebugAttackCSV = 0, $g_hChkMakeIMGCSV = 0, $g_hChkDebugDisableZoom Global $g_hBtnTestTrain = 0, $g_hBtnTestDonateCC = 0, $g_hBtnTestRequestCC = 0, $g_hBtnTestSendText = 0, $g_hBtnTestAttackBar = 0, $g_hBtnTestClickDrag = 0, $g_hBtnTestImage = 0 Global $g_hBtnTestVillageSize = 0, $g_hBtnTestDeadBase = 0, $g_hBtnTestTHimgloc = 0, $g_hBtnTestTrainsimgloc = 0, $g_hBtnTestQuickTrainsimgloc = 0, $g_hTxtTestFindButton = 0 -Global $g_hBtnTestFindButton = 0, $g_hBtnTestDeadBaseFolder = 0, $g_hBtnTestCleanYard = 0, $g_hBtnTestAttackCSV = 0, $g_hBtnTestBuildingLocation = 0 +Global $g_hBtnTestFindButton = 0, $g_hBtnTestDeadBaseFolder = 0, $g_hBtnTestCleanYard = 0, $g_hBtnTestAttackCSV = 0, $g_hBtnTestBuildingLocation = 0, $g_hBtnTestArmyWindow = 0 Global $g_hBtnTestConfigSave = 0, $g_hBtnTestConfigApply = 0, $g_hBtnTestConfigRead = 0, $g_hBtnTestOcrMemory = 0, $g_hBtnTestWeakBase = 0, $g_hBtnTestClickAway = 0, $g_hBtnTestAutoUpgrade = 0 Global $g_hBtnTestUpgradeWindow = 0, $g_hBtnTestSmartWait = 0, $g_hBtnConsoleWindow = 0 @@ -165,7 +165,7 @@ Func CreateBotDebug() $g_hBtnTestCleanYard = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestCleanYard", "Test Clean Yard"), $x - 145, $y, 140, 25) $y -= $yNext - $g_hBtnTestAttackCSV = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestAttackCSV", "Army Window"), $x, $y, 140, 25) + $g_hBtnTestAttackCSV = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestAttackCSV", "Test Attack CSV"), $x, $y, 140, 25) $g_hBtnTestBuildingLocation = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestBuildingLocation", "Find Building"), $x - 145, $y, 140, 25) $y -= $yNext @@ -193,6 +193,9 @@ Func CreateBotDebug() $g_hBtnConsoleWindow = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "ConsoleWindow", "Show/hide Console"), $x + 20, $y, 120, 25) $y -= $yNext + + $g_hBtnTestArmyWindow = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestArmyWindow", "Army Window"), $x + 20, $y, 120, 25) + $y -= $yNext GUICtrlCreateGroup("", -99, -99, 1, 1) EndFunc ;==>CreateBotDebug diff --git a/COCBot/GUI/MBR GUI Design Child Bot - Options.au3 b/COCBot/GUI/MBR GUI Design Child Bot - Options.au3 index bb53d0909..ffc1fa491 100644 --- a/COCBot/GUI/MBR GUI Design Child Bot - Options.au3 +++ b/COCBot/GUI/MBR GUI Design Child Bot - Options.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Bot - Profiles.au3 b/COCBot/GUI/MBR GUI Design Child Bot - Profiles.au3 index 2cf3e6d72..cc6cc0562 100644 --- a/COCBot/GUI/MBR GUI Design Child Bot - Profiles.au3 +++ b/COCBot/GUI/MBR GUI Design Child Bot - Profiles.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Bot - Stats.au3 b/COCBot/GUI/MBR GUI Design Child Bot - Stats.au3 index 2cbf51932..58016ef3b 100644 --- a/COCBot/GUI/MBR GUI Design Child Bot - Stats.au3 +++ b/COCBot/GUI/MBR GUI Design Child Bot - Stats.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), kaganus (2015), Boju (2016), TheRevenor (2016), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -54,6 +54,7 @@ Global $g_ahLblHourlyStatsDarkAcc[8], $g_ahLblResultSkipped[8], $g_ahPicResultSk Global $g_ahPicArrowLeft[8], $g_ahPicArrowRight[8] Global $g_ahPicResultGoldTemp[8], $g_ahPicResultElixirTemp[8], $g_ahPicResultDETemp[8], $g_ahLblVillageReportTemp[8], $g_ahGrpTempAcc[8] Global $g_ahLblTroopTime[8], $g_ahPicTroopTime[8] +Global $g_ahLblLabTime[8], $g_ahPicLabTime[8] Func CreateBotStats() @@ -1113,7 +1114,7 @@ Func CreateDonationsSubTab() GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) _GUICtrlSetTip(-1, $sTxtTip) - + ; SIEGE _GUICtrlCreateIcon($g_sLibIconPath, $eIcnWallW, $x + 145, $y, 24, 24) $sTxtTip = "" @@ -1123,7 +1124,7 @@ Func CreateDonationsSubTab() $g_hLblDonSiegel[$eSiegeWallWrecker] = GUICtrlCreateLabel("0", $x + 165, $y + 4, 50, 17, $SS_RIGHT) GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) - _GUICtrlSetTip(-1, $sTxtTip) + _GUICtrlSetTip(-1, $sTxtTip) $y += 28 _GUICtrlCreateIcon($g_sLibIconPath, $eIcnWallBreaker, $x - 10, $y, 24, 24) @@ -1146,7 +1147,7 @@ Func CreateDonationsSubTab() GUICtrlSetColor(-1, $COLOR_BLACK) _GUICtrlSetTip(-1, $sTxtTip) - + ; SIEGE _GUICtrlCreateIcon($g_sLibIconPath, $eIcnBattleB, $x + 145, $y, 24, 24) $sTxtTip = "" @@ -1157,7 +1158,7 @@ Func CreateDonationsSubTab() GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) _GUICtrlSetTip(-1, $sTxtTip) - + $y += 28 _GUICtrlCreateIcon($g_sLibIconPath, $eIcnBalloon, $x - 10, $y, 24, 24) $sTxtTip = "" @@ -1178,7 +1179,7 @@ Func CreateDonationsSubTab() GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) _GUICtrlSetTip(-1, $sTxtTip) - + ; SIEGE _GUICtrlCreateIcon($g_sLibIconPath, $eIcnStoneS, $x + 145, $y, 24, 24) $sTxtTip = "" @@ -1188,7 +1189,7 @@ Func CreateDonationsSubTab() $g_hLblDonSiegel[$eSiegeStoneSlammer] = GUICtrlCreateLabel("0", $x + 165, $y + 4, 50, 17, $SS_RIGHT) GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) - _GUICtrlSetTip(-1, $sTxtTip) + _GUICtrlSetTip(-1, $sTxtTip) GUICtrlCreateGroup("", -99, -99, 1, 1) @@ -1235,7 +1236,7 @@ Func CreateDonationsSubTab() GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) _GUICtrlSetTip(-1, $sTxtTip) - + $y += 28 _GUICtrlCreateIcon($g_sLibIconPath, $eIcnValkyrie, $x - 10, $y, 24, 24) $sTxtTip = "" @@ -1373,7 +1374,7 @@ Func CreateDonationsSubTab() GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) _GUICtrlSetTip(-1, $sTxtTip) - + _GUICtrlCreateIcon($g_sLibIconPath, $eIcnBatSpell, $x + 95, $y, 24, 24) $sTxtTip = "" _GUICtrlSetTip(-1, $sTxtTip) @@ -1382,7 +1383,7 @@ Func CreateDonationsSubTab() $g_hLblDonSpell[$eSpellBat] = GUICtrlCreateLabel("0", $x + 115, $y + 4, 70, 17, $SS_RIGHT) GUICtrlSetFont(-1, 9, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) GUICtrlSetColor(-1, $COLOR_BLACK) - _GUICtrlSetTip(-1, $sTxtTip) + _GUICtrlSetTip(-1, $sTxtTip) $y += 28 _GUICtrlCreateIcon($g_sLibIconPath, $eIcnEarthQuakeSpell, $x - 10, $y, 24, 24) @@ -1470,6 +1471,9 @@ Func CreateMultiStatsSubTab() $g_ahLblResultGemNowAcc[$i] = GUICtrlCreateLabel("", $x + $delX + $i_X * $delX2, $y + $delY * 3 + $i_Y * $delY2, 55, 17, $SS_RIGHT) $g_ahPicResultGemNowAcc[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnGem, $x + 60 + $delX + $i_X * $delX2, $y + $delY * 3 + $i_Y * $delY2, 16, 14) + $g_ahLblLabTime[$i] = GUICtrlCreateLabel("", $x + $i_X * $delX2, $y + $delY * 4 + $i_Y * $delY2, 70, 17, $SS_RIGHT) + $g_ahPicLabTime[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnLaboratory, $x + 75 + $i_X * $delX2, $y + $delY * 4 + $i_Y * $delY2, 15, 14) + $g_ahPicArrowLeft[$i] = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnArrowLeft, $x - 20 + $i_X * $delX2, $y + $delY * 2 + $i_Y * $delY2, 16, 16) Local $sTxtTip = GetTranslatedFileIni("MBR GUI Design Bottom", "GrpVillage_Info_01", "Switch between village info and stats") _GUICtrlSetTip(-1, $sTxtTip) @@ -1497,7 +1501,7 @@ Func CreateMultiStatsSubTab() $g_ahGrpDefaultAcc[$i] = $g_ahGrpVillageAcc[$i] & "#" & $g_ahPicArrowLeft[$i] & "#" & $g_ahPicArrowRight[$i] & "#" & _ $g_ahPicResultGoldNowAcc[$i] & "#" & $g_ahPicResultElixirNowAcc[$i] & "#" & $g_ahPicResultDENowAcc[$i] & "#" & _ - $g_ahLblTroopTime[$i] & "#" & $g_ahPicTroopTime[$i] + $g_ahLblTroopTime[$i] & "#" & $g_ahPicTroopTime[$i] & "#" & $g_ahLblLabTime[$i] & "#" & $g_ahPicLabTime[$i] $g_ahGrpReportAcc[$i] = $g_ahLblResultGoldNowAcc[$i] & "#" & $g_ahLblResultTrophyNowAcc[$i] & "#" & $g_ahPicResultTrophyNowAcc[$i] & "#" & _ $g_ahLblResultElixirNowAcc[$i] & "#" & $g_ahLblResultBuilderNowAcc[$i] & "#" & $g_ahPicResultBuilderNowAcc[$i] & "#" & _ $g_ahLblResultDENowAcc[$i] & "#" & $g_ahLblResultGemNowAcc[$i] & "#" & $g_ahPicResultGemNowAcc[$i] diff --git a/COCBot/GUI/MBR GUI Design Child VIllage - Upgrade.au3 b/COCBot/GUI/MBR GUI Design Child VIllage - Upgrade.au3 index fed5e61d8..1f0d266ff 100644 --- a/COCBot/GUI/MBR GUI Design Child VIllage - Upgrade.au3 +++ b/COCBot/GUI/MBR GUI Design Child VIllage - Upgrade.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Village - Achievements.au3 b/COCBot/GUI/MBR GUI Design Child Village - Achievements.au3 index fbe87e777..a48a27895 100644 --- a/COCBot/GUI/MBR GUI Design Child Village - Achievements.au3 +++ b/COCBot/GUI/MBR GUI Design Child Village - Achievements.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Village - Donate.au3 b/COCBot/GUI/MBR GUI Design Child Village - Donate.au3 index 880032f48..b16965cd5 100644 --- a/COCBot/GUI/MBR GUI Design Child Village - Donate.au3 +++ b/COCBot/GUI/MBR GUI Design Child Village - Donate.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: MonkeyHunter (07-2016), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -25,7 +25,7 @@ Global $g_hLblRequestCChours[12] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_hLblRequestType, $g_hChkRequestType_Troops, $g_hChkRequestType_Spells, $g_hChkRequestType_Siege Global $g_hTxtRequestCountCCTroop, $g_hTxtRequestCountCCSpell, $g_hChkClanCastleSpell = 0 Global $g_ahCmbClanCastleTroop[3], $g_ahTxtClanCastleTroop[3] -Global $g_ahCmbClanCastleSpell[2], $g_ahTxtClanCastleSpell[2] +Global $g_ahCmbClanCastleSpell[3], $g_ahCmbClanCastleSiege[2] ; Donate Global $g_hChkExtraAlphabets = 0, $g_hChkExtraChinese = 0, $g_hChkExtraKorean = 0, $g_hChkExtraPersian = 0 @@ -111,7 +111,7 @@ Func CreateRequestSubTab() Local $y = $yStart $g_hGrpRequestCC = GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Group_01", "Clan Castle Troops"), $x - 20, $y - 20, $g_iSizeWGrpTab3, $g_iSizeHGrpTab3) $y += 10 - $x += 10 + $x += 5 _GUICtrlCreateIcon($g_sLibIconPath, $eIcnCCRequest, $x - 5, $y, 64, 64, $BS_ICON) $g_hChkRequestTroopsEnable = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestTroopsEnable", "Request Troops / Spells"), $x + 40 + 30, $y - 6) GUICtrlSetOnEvent(-1, "chkRequestCCHours") @@ -127,13 +127,14 @@ Func CreateRequestSubTab() _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Info_01", "Send request when CC Troop is not full")) GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetOnEvent(-1, "chkRequestCountCC") - $g_hChkRequestType_Spells = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Spells", "Spells"), $x + 195, $y + 20) + $g_hChkRequestType_Spells = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Spells", "Spells"), $x + 240, $y + 20) _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Spells_Info_01", "Send request when CC Spell is not full")) GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetOnEvent(-1, "chkRequestCountCC") - $g_hChkRequestType_Siege = GUICtrlCreateCheckbox( GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC","ChkRequestType_Sieges", "Siege Machine"), $x + 250, $y + 20) + $g_hChkRequestType_Siege = GUICtrlCreateCheckbox( GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC","ChkRequestType_Sieges", "Siege Machine"), $x + 315, $y + 20) _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC","ChkRequestType_Sieges_Info_01", "Send request when CC Siege Machine is not received")) GUICtrlSetState(-1, $GUI_UNCHECKED) + GUICtrlSetOnEvent(-1, "chkRequestCountCC") $y += 25 GUICtrlCreateLabel(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblIfLessThan", "If less than "), $x + 70, $y + 23) @@ -146,10 +147,10 @@ Func CreateRequestSubTab() Else GUICtrlSetState(-1, $GUI_DISABLE) EndIf - $g_hTxtRequestCountCCSpell = GUICtrlCreateInput("0", $x + 195, $y + 20, 25, 16, BitOR($SS_RIGHT, $ES_NUMBER)) + $g_hTxtRequestCountCCSpell = GUICtrlCreateInput("0", $x + 240, $y + 20, 25, 16, BitOR($SS_RIGHT, $ES_NUMBER)) GUICtrlSetLimit(-1, 1) - _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_01", "Do not request when already received that many CC Spells") & @CRLF & _ - GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_02", "Set to either ""0"" or ""2+"" when full CC Spell wanted")) + _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblIfLessThan_Info_03", "Do not request when already received that many CC Spells") & @CRLF & _ + GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblIfLessThan_Info_04", "Set to either ""0"" or ""2+"" when full CC Spell wanted")) If GUICtrlRead($g_hChkRequestType_Spells) = $GUI_CHECKED Then GUICtrlSetState(-1, $GUI_ENABLE) Else @@ -157,38 +158,41 @@ Func CreateRequestSubTab() EndIf $y += 45 + GUICtrlCreateLabel(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblOnlyTake", "Only take"), $x + 70, $y + 3) Local $sCmbTroopList = GetTranslatedFileIni("MBR Global GUI Design Names Troops", "TxtListOfTroops", _ArrayToString($g_asTroopNames) & "|Any") For $i = 0 To 2 - $g_ahCmbClanCastleTroop[$i] = GUICtrlCreateCombo("", $x + 70, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) + $g_ahCmbClanCastleTroop[$i] = GUICtrlCreateCombo("", $x + 140, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) GUICtrlSetData(-1, $sCmbTroopList, "Any") GUICtrlSetOnEvent(-1, "CmbClanCastleTroop") - _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleTroop_Info_01", "Pick a troop type allow to stay in your Clan Castle")) + _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_01", "Pick a troop type allowed to stay in your Clan Castle. \r\nTroops of other type shall be removed")) - $g_ahTxtClanCastleTroop[$i] = GUICtrlCreateInput("0", $x + 140, $y + $i * 25, 25, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_RIGHT, $ES_NUMBER)) + $g_ahTxtClanCastleTroop[$i] = GUICtrlCreateInput("0", $x + 210, $y + $i * 25, 20, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_RIGHT, $ES_NUMBER)) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetLimit(-1, 2) - _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleTroop_Info_02", "Set the maximum quantity to stay.") & @CRLF & _ - GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_03", "Set to ""0"" or ""40+"" means unlimit")) + _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_02", "Set the maximum quantity to stay. \r\nExcessive quantity shall be removed") & @CRLF & _ + GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_03", "Set to ""0"" or ""40+"" means unlimited")) Next Local $sCmbSpellList = GetTranslatedFileIni("MBR Global GUI Design Names Spells", "TxtListOfSpells", _ArrayToString($g_asSpellNames) & "|Any") - For $i = 0 To 1 - $g_ahCmbClanCastleSpell[$i] = GUICtrlCreateCombo("", $x + 195, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) + For $i = 0 To 2 + $g_ahCmbClanCastleSpell[$i] = GUICtrlCreateCombo("", $x + 240, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) GUICtrlSetData(-1, $sCmbSpellList, "Any") GUICtrlSetOnEvent(-1, "CmbClanCastleSpell") - _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleSpell_Info_01", "Pick a spell type allow to stay in your Clan Castle")) + _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_04", "Only keep this spell (1 unit) in Clan Castle. \r\nOther spells or excessive quantity shall be removed")) + Next - $g_ahTxtClanCastleSpell[$i] = GUICtrlCreateInput("0", $x + 265, $y + $i * 25, 25, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_RIGHT, $ES_NUMBER)) - GUICtrlSetState(-1, $GUI_DISABLE) - GUICtrlSetLimit(-1, 1) - _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleSpell_Info_02", "Set the maximum quantity to stay.") & @CRLF & _ - GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_03", "Set to ""0"" or ""2+"" means unlimit")) + Local $sCmbSiegeList = GetTranslatedFileIni("MBR Global GUI Design Names Sieges", "TxtListOfSieges", _ArrayToString($g_asSiegeMachineNames) & "|Any") + For $i = 0 To 1 + $g_ahCmbClanCastleSiege[$i] = GUICtrlCreateCombo("", $x + 315, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) + GUICtrlSetData(-1, $sCmbSiegeList, "Any") + _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_05", "Only keep this siege machine in Clan Castle. \r\nSiege machine of other types shall be removed")) Next $x += 70 $y += 90 GUICtrlCreateLabel(GetTranslatedFileIni("MBR Global GUI Design", "Only_during_hours", "Only during these hours of each day"), $x, $y, 300, 20, $BS_MULTILINE) + $x += 40 $y += 20 $g_hLblRequestCChour = GUICtrlCreateLabel(GetTranslatedFileIni("MBR Global GUI Design", "Hour", "Hour") & ":", $x, $y, -1, 15) Local $sTxtTip = GetTranslatedFileIni("MBR Global GUI Design", "Only_during_hours", -1) @@ -513,7 +517,7 @@ Func CreateDonateSubTab() GUICtrlSetState(-1, $GUI_DISABLE) $g_ahBtnDonateTroop[$eTroopIceGolem] = GUICtrlCreateButton("", $x + 2, $y, $Offx - 2, $Offx - 2, $BS_ICON) _GUICtrlSetImage(-1, $g_sLibIconPath, $eIcnIceGolem, 1) - GUICtrlSetOnEvent(-1, "btnDonateTroop") + GUICtrlSetOnEvent(-1, "btnDonateTroop") $x += $Offx ; Button Not Active - future expansion? $lblBtnCustomE = GUICtrlCreateLabel("", $x + 2, $y - 2, $Offx + 2, $Offx + 2) @@ -649,7 +653,7 @@ Func CreateDonateSubTab() GUICtrlSetState(-1, $GUI_DISABLE) $g_ahBtnDonateTroop[$eCustomD] = GUICtrlCreateButton("", $x + 2, $y, $Offx - 2, $Offx - 2, $BS_ICON) _GUICtrlSetImage (-1, $g_sLibIconPath, $eIcnDonCustomB, 1) - GUICtrlSetOnEvent(-1, "btnDonateTroop") + GUICtrlSetOnEvent(-1, "btnDonateTroop") $x += $Offx ; Button Not Active - future expansion? $g_hLblDonateTroopCustomH = GUICtrlCreateLabel("", $x, $y - 2, $Offx + 2, $Offx + 2) @@ -1548,7 +1552,7 @@ Func CreateDonateSubTab() GUICtrlSetData(-1, StringFormat(GetTranslatedFileIni("MBR GUI Design Child Village - Donate", "TxtBlacklistTroop_Item_36", "no ice golem\r\nice golem no"))) _GUICtrlSetTip(-1, $sTxtKeywordsNoTip & " " & $sTxtIceGolems) GUICtrlCreateGroup("", -99, -99, 1, 1) - + ; SIEGE - $sTxtBattleBlimps $x = $xStart $y = $Offy @@ -1562,10 +1566,10 @@ Func CreateDonateSubTab() GUICtrlSetState(-1, $GUI_HIDE) _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtWallWreckers & " " & $sTxtDonateTipTroop) GUICtrlSetOnEvent(-1, "chkDonateTroop") - ;$g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) - ;GUICtrlSetState(-1, $GUI_HIDE) - ;_GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtWallWreckers & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) - ;GUICtrlSetOnEvent(-1, "chkDonateAllTroop") + $g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) + GUICtrlSetState(-1, $GUI_HIDE) + _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtWallWreckers & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) + GUICtrlSetOnEvent(-1, "chkDonateAllTroop") GUICtrlCreateLabel($sTxtKeywords & " " & $sTxtWallWreckers & ":" , $x - 5, $y + 5, -1, -1) GUICtrlSetState(-1, $GUI_HIDE) $g_ahTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = GUICtrlCreateEdit("", $x - 5, $y + 20, 205, 125, BitOR($ES_WANTRETURN, $ES_CENTER, $ES_AUTOVSCROLL)) @@ -1594,10 +1598,10 @@ Func CreateDonateSubTab() GUICtrlSetState(-1, $GUI_HIDE) _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtBattleBlimps & " " & $sTxtDonateTipTroop) GUICtrlSetOnEvent(-1, "chkDonateTroop") - ;$g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) - ;GUICtrlSetState(-1, $GUI_HIDE) - ;_GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtBattleBlimps & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) - ;GUICtrlSetOnEvent(-1, "chkDonateAllTroop") + $g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) + GUICtrlSetState(-1, $GUI_HIDE) + _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtBattleBlimps & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) + GUICtrlSetOnEvent(-1, "chkDonateAllTroop") GUICtrlCreateLabel($sTxtKeywords & " " & $sTxtBattleBlimps & ":" , $x - 5, $y + 5, -1, -1) GUICtrlSetState(-1, $GUI_HIDE) $g_ahTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = GUICtrlCreateEdit("", $x - 5, $y + 20, 205, 125, BitOR($ES_WANTRETURN, $ES_CENTER, $ES_AUTOVSCROLL)) @@ -1613,7 +1617,7 @@ Func CreateDonateSubTab() GUICtrlSetData(-1, StringFormat(GetTranslatedFileIni("MBR GUI Design Child Village - Donate", "TxtBlacklistTroop_Item_33", "no blimps\r\nsiege no"))) _GUICtrlSetTip(-1, $sTxtKeywordsNoTip & " " & $sTxtBattleBlimps) GUICtrlCreateGroup("", -99, -99, 1, 1) - + $x = $xStart $y = $Offy $g_ahGrpDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = GUICtrlCreateGroup($sTxtStoneSlammers, $x - 20, $y - 20, $g_iSizeWGrpTab3, 169) @@ -1626,10 +1630,10 @@ Func CreateDonateSubTab() GUICtrlSetState(-1, $GUI_HIDE) _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtStoneSlammers & " " & $sTxtDonateTipTroop) GUICtrlSetOnEvent(-1, "chkDonateTroop") - ;$g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) - ;GUICtrlSetState(-1, $GUI_HIDE) - ;_GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtStoneSlammers & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) - ;GUICtrlSetOnEvent(-1, "chkDonateAllTroop") + $g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) + GUICtrlSetState(-1, $GUI_HIDE) + _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtStoneSlammers & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) + GUICtrlSetOnEvent(-1, "chkDonateAllTroop") GUICtrlCreateLabel($sTxtKeywords & " " & $sTxtStoneSlammers & ":" , $x - 5, $y + 5, -1, -1) GUICtrlSetState(-1, $GUI_HIDE) $g_ahTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = GUICtrlCreateEdit("", $x - 5, $y + 20, 205, 125, BitOR($ES_WANTRETURN, $ES_CENTER, $ES_AUTOVSCROLL)) @@ -1773,7 +1777,7 @@ Func CreateDonateSubTab() GUICtrlSetData(-1, StringFormat(GetTranslatedFileIni("MBR GUI Design Child Village - Donate", "TxtBlacklistTroop_Item_28", "no skeleton\r\nskeleton no\r\nno skel"))) _GUICtrlSetTip(-1, $sTxtKeywordsNoTip & " " & $sTxtSkeletonSpells) GUICtrlCreateGroup("", -99, -99, 1, 1) - + $x = $xStart $y = $Offy $g_ahGrpDonateSpell[$eSpellBat] = GUICtrlCreateGroup($sTxtBatSpells, $x - 20, $y - 20, $g_iSizeWGrpTab3, 169) diff --git a/COCBot/GUI/MBR GUI Design Child Village - Misc.au3 b/COCBot/GUI/MBR GUI Design Child Village - Misc.au3 index 11baaa5d9..633d5f936 100644 --- a/COCBot/GUI/MBR GUI Design Child Village - Misc.au3 +++ b/COCBot/GUI/MBR GUI Design Child Village - Misc.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Child Village - Notify.au3 b/COCBot/GUI/MBR GUI Design Child Village - Notify.au3 index fc18a66d4..3f7f215a1 100644 --- a/COCBot/GUI/MBR GUI Design Child Village - Notify.au3 +++ b/COCBot/GUI/MBR GUI Design Child Village - Notify.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Log.au3 b/COCBot/GUI/MBR GUI Design Log.au3 index 319dd5f5e..a5f13bdc3 100644 --- a/COCBot/GUI/MBR GUI Design Log.au3 +++ b/COCBot/GUI/MBR GUI Design Log.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Splash.au3 b/COCBot/GUI/MBR GUI Design Splash.au3 index fa9f491b4..84853276b 100644 --- a/COCBot/GUI/MBR GUI Design Splash.au3 +++ b/COCBot/GUI/MBR GUI Design Splash.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: mikemikemikecoc (2016) ; Modified ......: cosote (2016-Aug), CodeSlinger69 (2017), MonkeyHunter (05-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/GUI/MBR GUI Design Village.au3 b/COCBot/GUI/MBR GUI Design Village.au3 index 32c1e63a6..aaadee975 100644 --- a/COCBot/GUI/MBR GUI Design Village.au3 +++ b/COCBot/GUI/MBR GUI Design Village.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/MBR Functions.au3 b/COCBot/MBR Functions.au3 index e4308a300..2eb64b6f1 100644 --- a/COCBot/MBR Functions.au3 +++ b/COCBot/MBR Functions.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -90,10 +90,8 @@ #include "functions\Attack\Troops\DropOnEdge.au3" #include "functions\Attack\Troops\DropOnEdges.au3" #include "functions\Attack\Troops\DropOrderTroops.au3" -#include "functions\Attack\Troops\GetXPosOfArmySlot.au3" #include "functions\Attack\Troops\GetSlotIndexFromXPos.au3" #include "functions\Attack\Troops\LaunchTroop.au3" -#include "functions\Attack\Troops\NameOfTroop.au3" #include "functions\Attack\Troops\OldDropTroop.au3" #include "functions\Attack\Troops\ReadTroopQuantity.au3" #include "functions\Attack\Troops\SelectDropTroop.au3" diff --git a/COCBot/MBR GUI Action.au3 b/COCBot/MBR GUI Action.au3 index ed92fc9f4..c7076f091 100644 --- a/COCBot/MBR GUI Action.au3 +++ b/COCBot/MBR GUI Action.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: cosote (2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/MBR GUI Control Variables.au3 b/COCBot/MBR GUI Control Variables.au3 index 00dff4631..262a8eab5 100644 --- a/COCBot/MBR GUI Control Variables.au3 +++ b/COCBot/MBR GUI Control Variables.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Boju(2016) ; Modified ......: MR.ViPER (11-2016), CodeSlinger69 (2017), MMHK (01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/MBR GUI Control.au3 b/COCBot/MBR GUI Control.au3 index 3c29c688d..6f685c573 100644 --- a/COCBot/MBR GUI Control.au3 +++ b/COCBot/MBR GUI Control.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014) ; Modified ......: Hervidero (2015), kaganus (08-2015), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -565,6 +565,8 @@ Func GUIControl_WM_COMMAND($hWind, $iMsg, $wParam, $lParam) Case $g_hBtnTestTHimgloc imglocTHSearch() Case $g_hBtnTestAttackCSV + btnTestAttackCSV() + Case $g_hBtnTestArmyWindow Local $RuntimeA = $g_bRunState $g_bRunState = True Setlog("Army Window Test") @@ -1495,7 +1497,7 @@ EndFunc ;==>tiExit ; Return values .: Boolean of former redraw state ; Author ........: Cosote (2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -1624,7 +1626,7 @@ EndFunc ;==>ControlRedraw Func SetTime($bForceUpdate = False) If $g_hTimerSinceStarted = 0 Then Return ; GIGO, no setTime when timer hasn't started yet Local $day = 0, $hour = 0, $min = 0, $sec = 0 - If GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM2 Or $bForceUpdate = True Then + If (GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM2 And GUICtrlRead($g_hGUI_BOT_TAB, 1) = $g_hGUI_BOT_TAB_ITEM5 And GUICtrlRead($g_hTabMain, 1) = $g_hTabBot) Or $bForceUpdate = True Then _TicksToDay(Int(__TimerDiff($g_hTimerSinceStarted) + $g_iTimePassed), $day, $hour, $min, $sec) GUICtrlSetData($g_hLblResultRuntime, $day > 0 ? StringFormat("%2u Day(s) %02i:%02i:%02i", $day, $hour, $min, $sec) : StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) EndIf @@ -1633,8 +1635,20 @@ Func SetTime($bForceUpdate = False) GUICtrlSetData($g_hLblResultRuntimeNow, StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) EndIf + If _DateIsValid($g_sLabUpgradeTime) Then + Local $iLabTime = _DateDiff("s", _NowCalc(), $g_sLabUpgradeTime) * 1000 + If $iLabTime > 0 Then + _TicksToDay($iLabTime, $day, $hour, $min, $sec) + GUICtrlSetData($g_hLbLLabTime, $day > 0 ? StringFormat("%2ud %02i:%02i'", $day, $hour, $min) : StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) + GUICtrlSetColor($g_hLbLLabTime, $day > 0 ? $COLOR_GREEN : $COLOR_ORANGE) + Else + GUICtrlSetData($g_hLbLLabTime, "") + $g_sLabUpgradeTime = "" + EndIf + EndIf + If ProfileSwitchAccountEnabled() Then - If GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM5 Or $bForceUpdate Then + If GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM5 And GUICtrlRead($g_hGUI_BOT_TAB, 1) = $g_hGUI_BOT_TAB_ITEM5 And GUICtrlRead($g_hTabMain, 1) = $g_hTabBot Then _TicksToTime(Int(__TimerDiff($g_ahTimerSinceSwitched[$g_iCurAccount]) + $g_aiRunTime[$g_iCurAccount]), $hour, $min, $sec) GUICtrlSetData($g_ahLblResultRuntimeNowAcc[$g_iCurAccount], StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) For $i = 0 To $g_iTotalAcc @@ -1649,8 +1663,9 @@ Func SetTime($bForceUpdate = False) Else GUICtrlSetColor($g_ahLblTroopTime[$i], $COLOR_BLACK) EndIf - EndIf + EndIf Next + SwitchAccountVariablesReload("SetTime") EndIf EndIf EndFunc ;==>SetTime diff --git a/COCBot/MBR GUI Design Mini.au3 b/COCBot/MBR GUI Design Mini.au3 index 1cbc1f1c1..83473ff79 100644 --- a/COCBot/MBR GUI Design Mini.au3 +++ b/COCBot/MBR GUI Design Mini.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/MBR GUI Design.au3 b/COCBot/MBR GUI Design.au3 index 1c3c0a73b..7b830b34a 100644 --- a/COCBot/MBR GUI Design.au3 +++ b/COCBot/MBR GUI Design.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GKevinOD (2014) ; Modified ......: DkEd, Hervidero (2015), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/MBR Global Variables.au3 b/COCBot/MBR Global Variables.au3 index e6a2a69a9..5f493ba07 100644 --- a/COCBot/MBR Global Variables.au3 +++ b/COCBot/MBR Global Variables.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Everyone all the time :) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -354,6 +354,7 @@ Global $g_iAndroidClientWidth_Configured = 0 ; Android configured Screen Width Global $g_iAndroidClientHeight_Configured = 0 ; Android configured Screen Height Global $g_iAndroidLaunchWaitSec = 600 ; Seconds to wait for launching Android Simulator +Global $g_sAndroidPicturesPathAvailable = False Global $g_sAndroidPicturesPath = "" ; Android mounted path to pictures on host Global $g_sAndroidPicturesHostPath = "" ; Windows host path to mounted pictures in android Global $g_bAndroidSharedFolderAvailable = True @@ -770,7 +771,7 @@ Func GetTroopName(Const $iIndex, $iQuantity = 1) If $iIndex >= $eBarb And $iIndex <= $eIceG Then Return $iQuantity > 1 ? $g_asTroopNamesPlural[$iIndex] : $g_asTroopNames[$iIndex] ElseIf $iIndex >= $eLSpell And $iIndex <= $eBtSpell Then - Return $iQuantity > 1 ? $g_asSpellNames[$iIndex - $eLSpell] & "Spells" : $g_asSpellNames[$iIndex - $eLSpell] & "Spell" + Return $iQuantity > 1 ? $g_asSpellNames[$iIndex - $eLSpell] & " Spells" : $g_asSpellNames[$iIndex - $eLSpell] & " Spell" ElseIf $iIndex >= $eKing And $iIndex <= $eWarden Then Return $g_asHeroNames[$iIndex - $eKing] ElseIf $iIndex >= $eWallW And $iIndex <= $eStoneS Then @@ -822,8 +823,10 @@ Global $g_abRequestType[3] = [True, True, False] ; (0 = Troop, 1 = Spell, 2 = Si Global $g_iRequestCountCCTroop = 0, $g_iRequestCountCCSpell = 0 Global $g_aiCCTroopsExpected[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_aiCCSpellsExpected[$eSpellCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_aiCCSiegeExpected[$eSiegeMachineCount] = [0, 0, 0] Global $g_aiClanCastleTroopWaitType[3], $g_aiClanCastleTroopWaitQty[3] -Global $g_aiClanCastleSpellWaitType[2], $g_aiClanCastleSpellWaitQty[2] +Global $g_aiClanCastleSpellWaitType[3] +Global $g_aiClanCastleSiegeWaitType[2] ; <><><><> Village / Donate - Donate <><><><> Global $g_bChkDonate = True @@ -1294,7 +1297,6 @@ Global $g_CurrentCampUtilization = 0, $g_iTotalCampSpace = 0 ; Upgrading - Lab Global $g_iLaboratoryElixirCost = 0, $g_iLaboratoryDElixirCost = 0 -Global $g_iFirstTimeLab = 0 Global $g_sLabUpgradeTime = "" ; Upgrading - Wall @@ -1318,6 +1320,7 @@ Global $g_bCloudsActive = False ;True when waiting for clouds Global $g_bAttackActive = False ;True when attacking Village ; Search +Global Const $g_iMaxTHLevel = 12 Global Const $g_asTHText[7] = ["4-6", "7", "8", "9", "10", "11", "12"] Global Const $g_aiSearchCost[12] = [10, 50, 75, 110, 170, 250, 380, 580, 750, 900, 1000, 1100] Global $g_bSearchMode = False @@ -1360,7 +1363,7 @@ Global Const $g_aaiTroopsToBeUsed[12] = [$g_aiUseAllTroops, $g_aiUseBarracks, $g Global $g_bTHSnipeUsedKing = False Global $g_bTHSnipeUsedQueen = False Global $g_bTHSnipeUsedWarden = False -Global $g_avAttackTroops[22][3] ;11 Slots of troops - Name, Amount, x-coord (+ 11 extended slots Slot11+) +Global $g_avAttackTroops[22][6] ;11 Slots of troops - Name, Amount, x-coord (+ 11 extended slots Slot11+) Global $g_bFullArmy = False ;Check for full army or not Global $g_iKingSlot = -1, $g_iQueenSlot = -1, $g_iWardenSlot = -1, $g_iClanCastleSlot = -1 Global $g_iTotalAttackSlot = 10, $g_bDraggedAttackBar = False ; Slot11+ diff --git a/COCBot/functions/Android/Android Status & Information.txt b/COCBot/functions/Android/Android Status & Information.txt index d5dd9c3a2..f24ee5d56 100644 --- a/COCBot/functions/Android/Android Status & Information.txt +++ b/COCBot/functions/Android/Android Status & Information.txt @@ -8,7 +8,7 @@ The once listed here have been tested and do work. Nox === http://en.bignox.com/ -Versions 6.2.5.3, 6.2.0.0, 6.0.1.0, 6.0.0.0, 5.2.1.0, 5.1.0.0, 5.0.0.1, 5.0.0.0, 3.8.1.3, 3.8.0.x, 3.7.6.x, 3.7.5.1, 3.7.5, 3.7.3, 3.7.1, 3.7.0, 3.6.0, 3.5.1, 3.3.0, 3.1.0, 3.0.0 +Versions 6.2.6.x, 6.2.5.3, 6.2.0.0, 6.0.1.0, 6.0.0.0, 5.2.1.0, 5.1.0.0, 5.0.0.1, 5.0.0.0, 3.8.1.3, 3.8.0.x, 3.7.6.x, 3.7.5.1, 3.7.5, 3.7.3, 3.7.1, 3.7.0, 3.6.0, 3.5.1, 3.3.0, 3.1.0, 3.0.0 MyBot Command Line Key: Nox Default Instance Key: nox Second Instance Key: Nox_1 @@ -21,7 +21,7 @@ framerates and 20 fps or lower significantly reduce CPU load. MEmu ==== http://www.memuplay.com/ -Versions 5.2.3.0, 5.0.1.0, 3.6.2.0, 3.5.0.2, 3.1.2.x, 2.9.6.1, 2.9.3, 2.9.1, 2.8.6, 2.8.5, 2.8.3, 2.8.2, 2.8.0, 2.7.2, 2.7.0, 2.6.6, 2.6.5, 2.6.2, 2.6.1, 2.5.0, 2.3.1, 2.3.0, 2.2.1 +Versions 6.0.6.0, 5.3.2.0, 5.2.3.0, 5.0.1.0, 3.6.2.0, 3.5.0.2, 3.1.2.x, 2.9.6.1, 2.9.3, 2.9.1, 2.8.6, 2.8.5, 2.8.3, 2.8.2, 2.8.0, 2.7.2, 2.7.0, 2.6.6, 2.6.5, 2.6.2, 2.6.1, 2.5.0, 2.3.1, 2.3.0, 2.2.1 MyBot Command Line Key: MEmu Default Instance Key: MEmu Second Instance Key: MEmu_1 @@ -31,7 +31,7 @@ Known issues/bugs: **Newest versions , 5.3.2 or 5.5.5 doesn't work the _ControlC BlueStacks ========== http://www.bluestacks.com/ -Version 3.50.x, 3.7.x, 2.7.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x, 0.11.x, 0.10.x, 0.9.x, 0.8.x +Version 4.32.x, 4.3.x, 3.50.x, 3.7.x, 2.7.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x, 0.11.x, 0.10.x, 0.9.x, 0.8.x MyBot Command Line Key (0.8.x - 0.11.x): BlueStacks MyBot Command Line Key (2.x/3.x): BlueStacks2 Default Instance Key: Android @@ -101,7 +101,7 @@ Feature/Function | MEmu | BlueStacks | BlueStacks2/3 | KO DPI Support* | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes (limited) Dock Mode | Yes | Yes | Yes | Yes | Yes | Yes, simulated | Yes | Yes Configure Android Screen | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes -Configure Android Window | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes, unstable +Configure Android Window | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes WinAPI/DirectX background | No | Yes | Yes, DirectX | Yes, DirectX | No | Yes | Yes, DirectX | Yes, DirectX AndroidScreencap | Yes | No | Yes | Yes | Yes | No, mem leak | Yes | Yes AndroidZoomOut | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes diff --git a/COCBot/functions/Android/Android.au3 b/COCBot/functions/Android/Android.au3 index 28d9067f7..b3e96fa50 100644 --- a/COCBot/functions/Android/Android.au3 +++ b/COCBot/functions/Android/Android.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (12-2015) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -16,7 +16,9 @@ Global Const $g_sAdbScriptsPath = $g_sLibPath & "\adb.scripts" ; ADD script and event files folder Global $g_sAndroidAdbPrompt = "mybot.run:" ; Unique ADB PS1 prompt -Global $g_bAndroidAdbPromptUseGiven = True ; Don't set custom prompt with PS1, use default +Global $g_sAndroidAdbInstanceShellOptions = "" ; Additional shell options, only used by BlueStacks2 " -t -t" +Global $g_sAndroidAdbShellOptions = "" ; Additional shell options when launch shell with command, only used by BlueStacks2 " /data/anr/../../system/xbin/bstk/su root" +Global $g_bAndroidAdbPromptUseGiven = False ; If True, don't set custom prompt with PS1, use default Global $g_iAndroidCoCPid = 0 ; Android CoC process PID for suspend and resume Global $g_iAndroidAdbProcess = [0, 0, 0, 0, 0] ; Single instance of ADB used for screencap, 0: PID, 1: StdIn handles, 2: StdOut handles, 3: Process handle, 4: Thread handle Global $g_aiAndroidAdbClicks[1] = [-1] ; Stores clicks after KeepClicks() called, fired and emptied with ReleaseClicks() @@ -74,6 +76,11 @@ Func InitAndroidConfig($bRestart = False) $g_bAndroidBackgroundLaunched = False ; True when Android was launched in headless mode without a window $g_bUpdateAndroidWindowTitle = False ; If Android has always same title (like LeapDroid) instance name will be added $g_bAndroidControlUseParentPos = False ; If true, control pos is used from parent control (only used to fix docking for Nox in DirectX mode) + $g_sAndroidAdbInstanceShellOptions = "" ; Additional shell options, only used by BlueStacks2 " -t -t" + $g_sAndroidAdbShellOptions = "" ; Additional shell options when launch shell with command, only used by BlueStacks2 " /data/anr/../../system/xbin/bstk/su root" + ; reset shared prefs variables + $g_PushedSharedPrefsProfile = "" + $g_PushedSharedPrefsProfile_Timer = 0 ; screencap might have disabled backgroundmode If $g_bAndroidAdbScreencap Then ; update background checkbox @@ -1060,8 +1067,8 @@ Func _RestartAndroidCoC($bInitAndroid = True, $bRestart = True, $bStopCoC = True ;AndroidAdbTerminateShellInstance() If Not $g_bRunState Then Return False ;$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell am start " & $sRestart & "-n " & $g_sAndroidGamePackage & "/" & $g_sAndroidGameClass, $process_killed, 30 * 1000) ; removed "-W" option and added timeout (didn't exit sometimes) - If $g_bChkSharedPrefs And HaveSharedPrefs() And $g_PushedSharedPrefsProfile <> $g_sProfileCurrentName And _ - ($g_PushedSharedPrefsProfile_Timer = 0 Or __TimerDiff($g_PushedSharedPrefsProfile_Timer) > 120000) Then PushSharedPrefs() + If $g_bChkSharedPrefs And HaveSharedPrefs() And _ + ($g_PushedSharedPrefsProfile <> $g_sProfileCurrentName Or ($g_PushedSharedPrefsProfile_Timer = 0 Or __TimerDiff($g_PushedSharedPrefsProfile_Timer) > 120000)) Then PushSharedPrefs() $cmdOutput = AndroidAdbSendShellCommand("set export=$(am start " & $sRestart & "-n " & $g_sAndroidGamePackage & "/" & $g_sAndroidGameClass & " >&2)", 60000) ; timeout of 1 Minute If StringInStr($cmdOutput, "Error:") > 0 And StringInStr($cmdOutput, $g_sAndroidGamePackage) > 0 Then @@ -1269,7 +1276,10 @@ Func WaitForAndroidBootCompleted($WaitInSec = 120, $hTimer = 0) $hMyTimer = ($hTimer = 0 ? __TimerInit() : $hTimer) While True If Not $g_bRunState Then Return True - $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell getprop sys.boot_completed", $process_killed) + $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " getprop sys.boot_completed", $process_killed) + If InvalidAdbShellOptions($cmdOutput, "WaitForAndroidBootCompleted") Then + $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " getprop sys.boot_completed", $process_killed) + EndIf If Not $g_bRunState Then Return True ; Test ADB is connected $connected_to = IsAdbConnected($cmdOutput) @@ -1301,13 +1311,17 @@ Func IsAdbConnected($cmdOutput = Default) $connected_to = StringInStr($cmdOutput, "connected to") > 0 If $connected_to Then ; also check whoami - $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell echo $USER:$USER_ID", $process_killed) + $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " echo $USER:$USER_ID", $process_killed) $connected_to = StringInStr($cmdOutput, " not ") = 0 And StringInStr($cmdOutput, "unable") = 0 And StringInStr($cmdOutput, "error: ") = 0 And StringInStr($cmdOutput, "device ") = 0 And $process_killed = False EndIf Else - $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell echo $USER:$USER_ID", $process_killed) + $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " echo $USER:$USER_ID", $process_killed) $connected_to = StringInStr($cmdOutput, " not ") = 0 And StringInStr($cmdOutput, "unable") = 0 And StringInStr($cmdOutput, "error: ") = 0 And $process_killed = False EndIf + ; check for /data/anr/../../system/xbin/bstk/su: not found + If Not $connected_to And InvalidAdbShellOptions($cmdOutput, "IsAdbConnected") Then + Return IsAdbConnected() + EndIf Else ; $cmdOutput was specified $connected_to = StringInStr($cmdOutput, " not ") = 0 And StringInStr($cmdOutput, "unable") = 0 And StringInStr($cmdOutput, "error: ") = 0 @@ -1549,8 +1563,9 @@ Func AndroidInitPrompt() Local $bIdentified = False Local $s Sleep(250) + AndroidAdbSendShellCommand("", -250, Default, False, False) ; just send enter to clear any incomplete entered command (required for BlueStacks N) + AndroidAdbSendShellCommand("", -250, Default, False, False) ; just send enter again to clear any incomplete entered command (required for BlueStacks N) If $g_bAndroidAdbPromptUseGiven Then - AndroidAdbSendShellCommand("", -250, Default, False, False) ; just send enter to clear any incomplete entered command (required for BlueStacks N) $s = AndroidAdbSendShellCommand("", -500, Default, False, False) If $s Then ; assume this is the prompt @@ -1564,7 +1579,7 @@ Func AndroidInitPrompt() EndIf If Not $bIdentified Then SetDebugLog("Initialize shell prompt with '" & $g_sAndroidAdbPrompt & "'") - $s = AndroidAdbSendShellCommand(@LF & "PS1=" & $g_sAndroidAdbPrompt, -500, Default, False) ; set prompt to unique string $g_sAndroidAdbPrompt + $s = AndroidAdbSendShellCommand("export PS1=" & $g_sAndroidAdbPrompt, -500, Default, False) ; set prompt to unique string $g_sAndroidAdbPrompt EndIf Return $s EndFunc ;==>AndroidInitPrompt @@ -1615,7 +1630,21 @@ Func _AndroidAdbLaunchShellInstance($wasRunState = Default, $rebootAndroidIfNecc EndIf AndroidAdbTerminateShellInstance() ;$g_iAndroidAdbProcess[0] = Run($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell", "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED)) - $g_iAndroidAdbProcess[0] = RunPipe($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell", "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED), $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) + ; avoid "Use multiple -t options to force remote PTY allocation." by using -t -t + $g_iAndroidAdbProcess[0] = RunPipe($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbInstanceShellOptions, "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED), $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) + Sleep(500) + If $g_sAndroidAdbInstanceShellOptions And $g_iAndroidAdbProcess[0] <> 0 And ProcessExists2($g_iAndroidAdbProcess[0]) <> $g_iAndroidAdbProcess[0] Then + Local $aReadPipe = $g_iAndroidAdbProcess[2] + Local $output = ReadPipe($aReadPipe[0]) + If StringInStr($output, "error: target doesn't support PTY") > 0 Or StringInStr($output, ": unknown option") Then + SetDebugLog("Shell instance option '" & $g_sAndroidAdbInstanceShellOptions & "' not supported and now disabled") + $g_sAndroidAdbInstanceShellOptions = "" + ; try again + ClosePipe($g_iAndroidAdbProcess[0], $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) + $g_iAndroidAdbProcess[0] = RunPipe($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbInstanceShellOptions, "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED), $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) + Sleep(500) + EndIf + EndIf If $g_iAndroidAdbProcess[0] = 0 Or ProcessExists2($g_iAndroidAdbProcess[0]) <> $g_iAndroidAdbProcess[0] Then SetLog($g_sAndroidEmulator & " error launching ADB for background mode, zoom-out, mouse click and input", $COLOR_ERROR) $g_iAndroidAdbProcess[0] = 0 @@ -1629,6 +1658,32 @@ Func _AndroidAdbLaunchShellInstance($wasRunState = Default, $rebootAndroidIfNecc EndIf EndIf + ; call init script + If $g_bAndroidAdbInstance = True Then + $s = "" + ; increase shell priority + #cs 2016-04-08 cosote Replaced by shell.init.script + Local $renice = "/system/xbin/renice -20 " + $s = AndroidAdbSendShellCommand($renice & "$$", Default, $wasRunState, False) ; increase shell priority to maximum + If StringInStr($s, "not found") > 0 Then + $renice = "renice -- -20 " + $s = AndroidAdbSendShellCommand($renice & "$$", Default, $wasRunState, False) ; increase shell priority to maximum + EndIf + $s &= AndroidAdbSendShellCommand("stop media", Default, $wasRunState, False) ; stop media service as it can consume up to 30% Android CPU + #ce + Local $scriptFile = "" + If $scriptFile = "" And FileExists($g_sAdbScriptsPath & "\shell.init." & $g_sAndroidEmulator & ".script") = 1 Then $scriptFile = "shell.init." & $g_sAndroidEmulator & ".script" + If $scriptFile = "" Then $scriptFile = "shell.init.script" + $s &= AndroidAdbSendShellCommandScript($scriptFile, Default, True, 3000, $wasRunState, False) + $s &= AndroidInitPrompt() + Local $error = @error + SetDebugLog("ADB shell launched, PID = " & $g_iAndroidAdbProcess[0] & ": " & $s) + If $error <> 0 Then + SuspendAndroid($SuspendMode) + Return + EndIf + EndIf + ; check shared folder ;If StringInStr($g_sAndroidPicturesPath, "|", $STR_NOCASESENSEBASIC) > 0 Then If True Then ; always validate picture patch @@ -1643,26 +1698,23 @@ Func _AndroidAdbLaunchShellInstance($wasRunState = Default, $rebootAndroidIfNecc Local $pathFound = False Local $iMount For $iMount = 0 To 9 - If $g_sAndroidPicturesPath = "" Then - SetDebugLog("Problem in configuration, $g_sAndroidPicturesPath is empty", $COLOR_ERROR) - ExitLoop - EndIf $s = AndroidAdbSendShellCommand("mount", Default, $wasRunState, False) Local $path = $g_sAndroidPicturesPath If StringRight($path, 1) = "/" Then $path = StringLeft($path, StringLen($path) - 1) - Local $aRegExResult = StringRegExp($s, $path, $STR_REGEXPARRAYMATCH) + Local $aRegExResult = StringRegExp($s, "[^ ]+ ([^ ]+).+", $STR_REGEXPARRAYGLOBALMATCH) SetError(0) - If UBound($aRegExResult) = 0 Then Local $aRegExResult = [] - _ArrayConcatenate($aRegExResult, StringSplit(((StringLeft($path, 1) = "(" And StringRight($path, 1) = ")") ? StringMid($path, 2, StringLen($path) - 2) : $path), "|", $STR_NOCOUNT)) + Local $aMounts[0] + If $path Then _ArrayConcatenate($aMounts, StringSplit(((StringLeft($path, 1) = "(" And StringRight($path, 1) = ")") ? StringMid($path, 2, StringLen($path) - 2) : $path), "|", $STR_NOCOUNT)) + If UBound($aRegExResult) > 0 Then _ArrayConcatenate($aMounts, $aRegExResult) ; check which path contains dummy file Local $dummyFile = StringMid(_Crypt_HashData($g_sBotTitle & _Now(), $CALG_SHA1), 3) FileWriteLine($g_sAndroidPicturesHostPath & $dummyFile, _Now()) - For $i = 0 To UBound($aRegExResult) - 1 - $path = $aRegExResult[$i] + For $i = 0 To UBound($aMounts) - 1 + $path = $aMounts[$i] If $path = "" Then ContinueLoop If StringRight($path, 1) <> "/" Then $path &= "/" - $s = AndroidAdbSendShellCommand("set result=$(ls '" & $path & $dummyFile & "' >&2)", Default, $wasRunState, False) - If StringInStr($s, "No such file or directory") = 0 And StringInStr($s, "syntax error:") = 0 Then + $s = AndroidAdbSendShellCommand("set result=$(ls '" & $path & $dummyFile & "' >&2)", 10000, $wasRunState, False) ; use timeout of 10 Seconds + If StringInStr($s, $dummyFile) > 0 And StringInStr($s, "No such file or directory") = 0 And StringInStr($s, "syntax error:") = 0 Then $pathFound = True $g_sAndroidPicturesPath = $path SetDebugLog("Using " & $g_sAndroidPicturesPath & " for Android shared folder") @@ -1679,38 +1731,16 @@ Func _AndroidAdbLaunchShellInstance($wasRunState = Default, $rebootAndroidIfNecc EndIf If _Sleep(6000) Then Return Next + $g_sAndroidPicturesPathAvailable = $pathFound If $pathFound = False Then SetLog($g_sAndroidEmulator & " cannot use ADB on shared folder, """ & $g_sAndroidPicturesPath & """ not found", $COLOR_ERROR) EndIf - + ; clear output + AndroidAdbSendShellCommand("", Default, $wasRunState, False) ; update $g_iAndroidSystemAPI ; getprop ro.build.version.sdk $g_iAndroidVersionAPI = Int(AndroidAdbSendShellCommand("getprop ro.build.version.sdk", Default, $wasRunState, False)) SetDebugLog("Android Version API = " & $g_iAndroidVersionAPI) EndIf - If $g_bAndroidAdbInstance = True Then - $s = "" - ; increase shell priority - #cs 2016-04-08 cosote Replaced by shell.init.script - Local $renice = "/system/xbin/renice -20 " - $s = AndroidAdbSendShellCommand($renice & "$$", Default, $wasRunState, False) ; increase shell priority to maximum - If StringInStr($s, "not found") > 0 Then - $renice = "renice -- -20 " - $s = AndroidAdbSendShellCommand($renice & "$$", Default, $wasRunState, False) ; increase shell priority to maximum - EndIf - $s &= AndroidAdbSendShellCommand("stop media", Default, $wasRunState, False) ; stop media service as it can consume up to 30% Android CPU - #ce - Local $scriptFile = "" - If $scriptFile = "" And FileExists($g_sAdbScriptsPath & "\shell.init." & $g_sAndroidEmulator & ".script") = 1 Then $scriptFile = "shell.init." & $g_sAndroidEmulator & ".script" - If $scriptFile = "" Then $scriptFile = "shell.init.script" - $s &= AndroidAdbSendShellCommandScript($scriptFile, Default, Default, 3000, $wasRunState, False) - $s &= AndroidInitPrompt() - Local $error = @error - SetDebugLog("ADB shell launched, PID = " & $g_iAndroidAdbProcess[0] & ": " & $s) - If $error <> 0 Then - SuspendAndroid($SuspendMode) - Return - EndIf - EndIf ; check mouse device If StringLen($g_sAndroidMouseDevice) > 0 And $g_sAndroidMouseDevice = $g_avAndroidAppConfig[$g_iAndroidConfig][13] Then $iConnected = ConnectAndroidAdb($rebootAndroidIfNeccessary) @@ -1878,7 +1908,8 @@ Func _AndroidAdbSendShellCommand($cmd = Default, $timeout = Default, $wasRunStat If $bNoShellTerminate = False Then AndroidAdbTerminateShellInstance() EndIf EndIf - Return SetError($error, Int(__TimerDiff($hTimer)) & "ms,#" & $loopCount, $s) + ;Return SetError($error, Int(__TimerDiff($hTimer)) & "ms,#" & $loopCount, $s) + Return SetError($error, Int(__TimerDiff($hTimer)), $s) EndFunc ;==>_AndroidAdbSendShellCommand Func GetBinaryEvent($type, $code, $value) @@ -3363,6 +3394,8 @@ Func OpenAdbShell($bRunInitScript = True) ControlSend($hWnd, "", "", "{ENTER}") ; first send just enter (required for BlueStacks N) SetLog("Send Shell command: " & $g_iAndroidAdbSuCommand) ControlSend($hWnd, "", "", $g_iAndroidAdbSuCommand & "{ENTER}") + ControlSend($hWnd, "", "", "{ENTER}") + ControlSend($hWnd, "", "", "{ENTER}") EndIf Return $iPid EndFunc ;==>OpenAdbShell @@ -3536,6 +3569,11 @@ Func PullSharedPrefs($sProfile = $g_sProfileCurrentName) Local $iFiles = 5 Local $iFilesPulled = 0 + If Not $g_sAndroidPicturesPathAvailable Then + SetLog("Shard folder in Android not availble, cannot pull shared_prefs", $COLOR_RED) + Return SetError(0, 0, $Result) + EndIf + SetDebugLog("Pulling shared_pref of profile " & $sProfile) ; create temporary backup of shared_prefs @@ -3624,6 +3662,11 @@ Func PushSharedPrefs($sProfile = $g_sProfileCurrentName, $bCloseGameIfRunning = Local $process_killed Local $cmdOutput + If Not $g_sAndroidPicturesPathAvailable Then + SetLog("Shard folder in Android not availble, cannot push shared_prefs", $COLOR_RED) + Return SetError(0, 0, $Result) + EndIf + Local $aNewFiles = HaveSharedPrefs($sProfile, True, True) Local $bHaveNew = UBound($aNewFiles) > 1 Local $bHaveOld = HaveSharedPrefs($sProfile, False, True) @@ -3661,6 +3704,7 @@ Func PushSharedPrefs($sProfile = $g_sProfileCurrentName, $bCloseGameIfRunning = Local $iFiles = UBound($aNewFiles) - 1 Local $iFilesPushed = 0 + _Sleep(1000) ; use ADB push to transfer files If $g_bPullPushSharedPrefsAbdCommand Then $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " push """ & $g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs"" /data/data/" & $g_sAndroidGamePackage & "/shared_prefs", $process_killed) @@ -3694,8 +3738,9 @@ Func PushSharedPrefs($sProfile = $g_sProfileCurrentName, $bCloseGameIfRunning = If FileCopy($g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs\*", $hostFolder & "\shared_prefs", $FC_OVERWRITE) And UBound(_FileListToArray($hostFolder & "\shared_prefs", "*", $FLTA_FILES)) - 1 >= $iFiles Then AndroidAdbSendShellCommand("set result=$(rm /data/data/" & $g_sAndroidGamePackage & "/shared_prefs/* >&2)") AndroidAdbSendShellCommand("set result=$(cp " & $androidFolder & "/shared_prefs/* /data/data/" & $g_sAndroidGamePackage & "/shared_prefs >&2)") - $cmdOutput = AndroidAdbSendShellCommand("set result=$(ls -l " & $androidFolder & "/shared_prefs/ >&2)") + $cmdOutput = AndroidAdbSendShellCommand("set result=$(ls -l /data/data/" & $g_sAndroidGamePackage & "/shared_prefs/ >&2)") $iFilesPushed = UBound(Ls_l_FilesOnly(StringSplit($cmdOutput, @LF, $STR_NOCOUNT))) + $cmdOutput += AndroidAdbSendShellCommand("set result=$(ls -l " & $androidFolder & "/shared_prefs/ >&2)") If $iFilesPushed >= $iFiles And StringInStr($cmdOutput, "Permission denied") = 0 And StringInStr($cmdOutput, "No such file or directory") = 0 Then ; And StringInStr($cmdOutput, "usage: cp") = 0 ; OK, files pushed AndroidAdbSendShellCommand("set result=$(rm -r " & $androidFolder & " >&2)") @@ -3725,6 +3770,7 @@ Func PushSharedPrefs($sProfile = $g_sProfileCurrentName, $bCloseGameIfRunning = SetLog("Pushed shared_prefs of profile " & $sProfile & " (" & $iFilesPushed & " files)") $g_PushedSharedPrefsProfile = $sProfile $g_PushedSharedPrefsProfile_Timer = __TimerInit() + _Sleep(3000) Else ; something went wrong SetLog("Error pushing shared_prefs of profile " & $sProfile, $COLOR_ERROR) @@ -3782,17 +3828,27 @@ Func CheckEmuNewVersions() Switch $g_sAndroidEmulator Case "BlueStacks2" - $NewVersion = GetVersionNormalized("4.0.0.0") + $NewVersion = GetVersionNormalized("4.33.0.0") Case "MEmu" - $NewVersion = GetVersionNormalized("5.2.3.0") + $NewVersion = GetVersionNormalized("6.1.0.0") Case "Nox" - $NewVersion = GetVersionNormalized("6.2.1.1") + $NewVersion = GetVersionNormalized("6.3.0.0") Case Else - $NewVersion = GetVersionNormalized("1.1.0.0") + $NewVersion = GetVersionNormalized("99.0.0.0") EndSwitch If $Version > $NewVersion Then - Setlog("You are using an unsupported " & $g_sAndroidEmulator & " version (" & $g_sAndroidVersion & ")!", $COLOR_ERROR) - Setlog($HelpLink, $COLOR_INFO) + SetLog("You are using an unsupported " & $g_sAndroidEmulator & " version (" & $g_sAndroidVersion & ")!", $COLOR_ERROR) + SetLog($HelpLink, $COLOR_INFO) EndIf EndFunc ;==>CheckClickAdbNewVersions + +Func InvalidAdbShellOptions($cmdOutput, $source) + ; check for /data/anr/../../system/xbin/bstk/su: not found + If $g_sAndroidAdbShellOptions And StringInStr($cmdOutput, ": not found") > 0 Then + SetDebugLog($source & ": Shell option '" & $g_sAndroidAdbShellOptions & "' not supported and now disabled") + $g_sAndroidAdbShellOptions = "" + Return True + EndIf + Return False +EndFunc ;==>InvalidAdbShellOptions diff --git a/COCBot/functions/Android/AndroidBlueStacks.au3 b/COCBot/functions/Android/AndroidBlueStacks.au3 index a0a712da2..88a263360 100644 --- a/COCBot/functions/Android/AndroidBlueStacks.au3 +++ b/COCBot/functions/Android/AndroidBlueStacks.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: GkevinOD (2014), Hervidero (2015) ; Modified ......: Cosote (12-2015), KnowJack (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -311,6 +311,8 @@ Func InitBlueStacks2($bCheckOnly = False) If $bInstalled And Not $bCheckOnly Then $__VBoxManage_Path = $__BlueStacks_Path & "BstkVMMgr.exe" + $g_sAndroidAdbInstanceShellOptions = " -t -t" ; Additional shell options, only used by BlueStacks2 " -t -t" + $g_sAndroidAdbShellOptions = " /data/anr/../../system/xbin/bstk/su root" ; Additional shell options when launch shell with command, only used by BlueStacks2 " /data/anr/../../system/xbin/bstk/su root" CheckBlueStacksVersionMod() diff --git a/COCBot/functions/Android/AndroidDroid4X.au3 b/COCBot/functions/Android/AndroidDroid4X.au3 index 5a308ccca..431f44186 100644 --- a/COCBot/functions/Android/AndroidDroid4X.au3 +++ b/COCBot/functions/Android/AndroidDroid4X.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (12-2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/AndroidEmbed.au3 b/COCBot/functions/Android/AndroidEmbed.au3 index 79e5f4e6d..32eb876ed 100644 --- a/COCBot/functions/Android/AndroidEmbed.au3 +++ b/COCBot/functions/Android/AndroidEmbed.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (07-2016) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/AndroidKOPLAYER.au3 b/COCBot/functions/Android/AndroidKOPLAYER.au3 index 81abd69c7..1cd8151a5 100644 --- a/COCBot/functions/Android/AndroidKOPLAYER.au3 +++ b/COCBot/functions/Android/AndroidKOPLAYER.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (04-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/AndroidLeapDroid.au3 b/COCBot/functions/Android/AndroidLeapDroid.au3 index 794963968..fbce67cd3 100644 --- a/COCBot/functions/Android/AndroidLeapDroid.au3 +++ b/COCBot/functions/Android/AndroidLeapDroid.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (07-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/AndroidMEmu.au3 b/COCBot/functions/Android/AndroidMEmu.au3 index a3dc54411..5c6d7044d 100644 --- a/COCBot/functions/Android/AndroidMEmu.au3 +++ b/COCBot/functions/Android/AndroidMEmu.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (12-2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/AndroidMenuShortcuts.au3 b/COCBot/functions/Android/AndroidMenuShortcuts.au3 index 7ef5fd5ec..208631b57 100644 --- a/COCBot/functions/Android/AndroidMenuShortcuts.au3 +++ b/COCBot/functions/Android/AndroidMenuShortcuts.au3 @@ -7,7 +7,7 @@ ; Return values .: False if controlsend error ; Author ........: MonkeyHunter (12-2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -30,7 +30,7 @@ EndFunc ;==>AndroidBackButton ; Return values .: False if controlsend error ; Author ........: MonkeyHunter (2015-12) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/AndroidNox.au3 b/COCBot/functions/Android/AndroidNox.au3 index a6cc49979..1f64beb3f 100644 --- a/COCBot/functions/Android/AndroidNox.au3 +++ b/COCBot/functions/Android/AndroidNox.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (02-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -219,7 +219,7 @@ Func InitNox($bCheckOnly = False) ;$g_sAndroidPicturesPath = "/mnt/shell/emulated/0/Download/other/" ;$g_sAndroidPicturesPath = "/mnt/shared/Other/" - $g_sAndroidPicturesPath = "(/mnt/shared/Other|/mnt/shell/emulated/0/Download/other)" + $g_sAndroidPicturesPath = "(/mnt/shared/Other|/mnt/shell/emulated/0/Download/other|/mnt/shell/emulated/0/Others)" $aRegexResult = StringRegExp($__VBoxVMinfo, "Name: 'Other', Host path: '(.*)'.*", $STR_REGEXPARRAYGLOBALMATCH) If Not @error Then $g_bAndroidSharedFolderAvailable = True diff --git a/COCBot/functions/Android/AndroidiTools.au3 b/COCBot/functions/Android/AndroidiTools.au3 index 47b7da422..8adf8fdd7 100644 --- a/COCBot/functions/Android/AndroidiTools.au3 +++ b/COCBot/functions/Android/AndroidiTools.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (11-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/Close_OpenCoC.au3 b/COCBot/functions/Android/Close_OpenCoC.au3 index 5ebc717be..55fc5a48d 100644 --- a/COCBot/functions/Android/Close_OpenCoC.au3 +++ b/COCBot/functions/Android/Close_OpenCoC.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: The Master (06-2015) ; Modified ......: cosote (12-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -32,6 +32,7 @@ Func CloseCoC($ReOpenCoC = False, $bCheckRunState = True) ;AndroidHomeButton() AndroidAdbSendShellCommand("am force-stop " & $g_sAndroidGamePackage, Default, Default, False) ResetAndroidProcess() + _Sleep($DELAYCLOSEOPEN3000) If $bCheckRunState And Not $g_bRunState Then Return FuncReturn() If $ReOpenCoC Then OpenCoC() @@ -50,7 +51,7 @@ EndFunc ;==>CloseCoC ; Return values .: None ; Author ........: The Master (2015) ; Modified ......: cosote (Dec 2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -65,14 +66,14 @@ Func OpenCoC() Local $RunApp = "", $iCount = 0 WinGetAndroidHandle() ;AndroidHomeButton() - If _Sleep(500) Then Return FuncReturn() + If _Sleep($DELAYCLOSEOPEN500) Then Return FuncReturn() If Not $g_bRunState Then Return FuncReturn() If Not StartAndroidCoC() Then Return FuncReturn() While _CheckPixel($aIsMain, True) = False ; Wait for MainScreen $iCount += 1 - If _Sleep(100) Then Return FuncReturn() + If _Sleep($DELAYCLOSEOPEN500) Then Return FuncReturn() If checkObstacles() Then $iCount += 1 - If $iCount > 250 Then ExitLoop + If $iCount > 50 Then ExitLoop If Not $g_bRunState Then ExitLoop WEnd FuncReturn() @@ -90,7 +91,7 @@ EndFunc ;==>OpenCoC ; Return values .: None ; Author ........: KnowJack (Aug 2015) ; Modified ......: TheMaster (2015), cosote (Dec 2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -151,7 +152,7 @@ EndFunc ;==>_WaitnOpenCoC ; Return values .: None ; Author ........: MonkeyHunter (05-2016), MMHK (11-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/Distributors.au3 b/COCBot/functions/Android/Distributors.au3 index b4cd4a0b5..9d8edf633 100644 --- a/COCBot/functions/Android/Distributors.au3 +++ b/COCBot/functions/Android/Distributors.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MMHK (11-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/UniversalCloseWaitOpenCoC.au3 b/COCBot/functions/Android/UniversalCloseWaitOpenCoC.au3 index dd7c3d632..aaf2bdafb 100644 --- a/COCBot/functions/Android/UniversalCloseWaitOpenCoC.au3 +++ b/COCBot/functions/Android/UniversalCloseWaitOpenCoC.au3 @@ -11,7 +11,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (04-2016) ; Modified ......: Cosote (06-2016), MonkeyHunter (07-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Android/ZoomOut.au3 b/COCBot/functions/Android/ZoomOut.au3 index 1278af308..2e47d11f2 100644 --- a/COCBot/functions/Android/ZoomOut.au3 +++ b/COCBot/functions/Android/ZoomOut.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack (07-2015), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -103,7 +103,7 @@ Func DefaultZoomOut($ZoomOutKey = "{DOWN}", $tryCtrlWheelScrollAfterCycles = 40, Else SetLog("Zooming Out", $COLOR_INFO) EndIf - If _Sleep($DELAYZOOMOUT1) Then Return + If _Sleep($DELAYZOOMOUT1) Then Return True If $bAndroidZoomOut Then AndroidZoomOut(False) ; use new ADB zoom-out ForceCaptureRegion() @@ -120,7 +120,7 @@ Func DefaultZoomOut($ZoomOutKey = "{DOWN}", $tryCtrlWheelScrollAfterCycles = 40, If Not $bAndroidZoomOut Then ; original windows based zoom-out If $g_bDebugSetlog Then SetDebugLog("Index = "&$i, $COLOR_DEBUG) ; Index=2X loop count if success, will be increment by 1 if controlsend fail - If _Sleep($DELAYZOOMOUT2) Then Return + If _Sleep($DELAYZOOMOUT2) Then Return True If $g_bChkBackgroundMode = False And $g_bNoFocusTampering = False Then $Result0 = ControlFocus($g_hAndroidWindow, "", "") Else @@ -136,7 +136,7 @@ Func DefaultZoomOut($ZoomOutKey = "{DOWN}", $tryCtrlWheelScrollAfterCycles = 40, EndIF If $i > $delayCount Then - If _Sleep($DELAYZOOMOUT3) Then Return + If _Sleep($DELAYZOOMOUT3) Then Return True EndIf If $tryCtrlWheelScrollAfterCycles > 0 And $i > $tryCtrlWheelScrollAfterCycles Then $tryCtrlWheelScroll = True If $i > $exitCount Then Return @@ -179,7 +179,7 @@ Func ZoomOutCtrlWheelScroll($CenterMouseWhileZooming = True, $GlobalMouseWheel = EndIf AndroidShield("ZoomOutCtrlWheelScroll") ; Update shield status - If _Sleep($DELAYZOOMOUT1) Then Return + If _Sleep($DELAYZOOMOUT1) Then Return True If $AndroidZoomOut Then AndroidZoomOut(False) ; use new ADB zoom-out ForceCaptureRegion() @@ -294,7 +294,7 @@ Func ZoomOutCtrlClick($ZoomOutOverWaters = False, $CenterMouseWhileZooming = Fal EndIf EndIf - If _Sleep($DELAYZOOMOUT1) Then Return + If _Sleep($DELAYZOOMOUT1) Then Return True Local $aMousePos = MouseGetPos() $i = 0 diff --git a/COCBot/functions/Android/getBSPos.au3 b/COCBot/functions/Android/getBSPos.au3 index 23b5496aa..3a87f10bb 100644 --- a/COCBot/functions/Android/getBSPos.au3 +++ b/COCBot/functions/Android/getBSPos.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack(07-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Attack Algorithms/AttackFromCSV.au3 b/COCBot/functions/Attack/Attack Algorithms/AttackFromCSV.au3 index 1fb8140b7..bb9e99b5a 100644 --- a/COCBot/functions/Attack/Attack Algorithms/AttackFromCSV.au3 +++ b/COCBot/functions/Attack/Attack Algorithms/AttackFromCSV.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -239,7 +239,7 @@ Func Algorithm_AttackCSV($testattack = False, $captureredarea = True) ;01 - TROOPS ------------------------------------------------------------------------------------------------------------------------------------------ debugAttackCSV("Troops to be used (purged from troops) ") For $i = 0 To UBound($g_avAttackTroops) - 1 ; identify the position of this kind of troop - debugAttackCSV("SLOT n.: " & $i & " - Troop: " & NameOfTroop($g_avAttackTroops[$i][0]) & " (" & $g_avAttackTroops[$i][0] & ") - Quantity: " & $g_avAttackTroops[$i][1]) + debugAttackCSV("SLOT n.: " & $i & " - Troop: " & GetTroopName($g_avAttackTroops[$i][0]) & " (" & $g_avAttackTroops[$i][0] & ") - Quantity: " & $g_avAttackTroops[$i][1]) Next Local $hTimerTOTAL = __timerinit() diff --git a/COCBot/functions/Attack/Attack Algorithms/SmartFarm.au3 b/COCBot/functions/Attack/Attack Algorithms/SmartFarm.au3 index 8c074c7c3..eca49519d 100644 --- a/COCBot/functions/Attack/Attack Algorithms/SmartFarm.au3 +++ b/COCBot/functions/Attack/Attack Algorithms/SmartFarm.au3 @@ -225,7 +225,7 @@ Func SmartFarmDetection($txtBuildings = "Mines") $sdirectory = @ScriptDir & "\imgxml\Storages\GoldMines" EndIf $iMaxReturnPoints = 7 - $iMaxLevel = 12 + $iMaxLevel = 13 Case "Collectors" If $g_iDetectedImageType = 1 Then $sdirectory = @ScriptDir & "\imgxml\Storages\Collectors_Snow" @@ -233,13 +233,17 @@ Func SmartFarmDetection($txtBuildings = "Mines") $sdirectory = @ScriptDir & "\imgxml\Storages\Collectors" EndIf $iMaxReturnPoints = 7 - $iMaxLevel = 12 + $iMaxLevel = 13 Case "Drills" $sdirectory = @ScriptDir & "\imgxml\Storages\Drills" $iMaxReturnPoints = 3 - $iMaxLevel = 6 + $iMaxLevel = 7 Case "All" - $sdirectory = @ScriptDir & "\imgxml\Storages\All" + If $g_iDetectedImageType = 1 Then + $sdirectory = @ScriptDir & "\imgxml\Storages\All" + Else + $sdirectory = @ScriptDir & "\imgxml\Storages\All_Snow" + EndIf $iMaxReturnPoints = 21 $iMaxLevel = 13 EndSwitch @@ -478,7 +482,7 @@ Func DebugImageSmartFarm($THdetails, $aIn, $aOut, $sTime, $BestSideToAttack, $re _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen2) _GDIPlus_GraphicsDispose($hGraphic) - Setlog(" » Debug Image saved!") + Setlog(" » Debug Image saved!") ; Open the Debug Directory ; Run("explorer.exe " & $subDirectory) @@ -492,6 +496,7 @@ Func AttackSmartFarm($Nside, $SIDESNAMES) SetSlotSpecialTroops() Local $nbSides = Null + Local $GiantComp = 0 _CaptureRegion2() ; ensure full screen is captured (not ideal for debugging as clean image was already saved, but...) _GetRedArea() @@ -515,10 +520,14 @@ Func AttackSmartFarm($Nside, $SIDESNAMES) $g_iSidesAttack = $nbSides - ; Reset the deploy Giants points , for 2 points - $g_iSlotsGiants = 1 + ; Reset the deploy Giants points , spread along red line + $g_iSlotsGiants = 0 ; Giants quantities - Local $GiantComp = $g_aiArmyCompTroops[$eTroopGiant] + For $i = 0 To UBound($g_avAttackTroops) - 1 + If $g_avAttackTroops[$i][0] = $eGiant Then + $GiantComp = $g_avAttackTroops[$i][1] + EndIf + Next ; Lets select the deploy points according by Giants qunatities & sides ; Deploy points : 0 - spreads along the red line , 1 - one deploy point .... X - X deploy points @@ -527,9 +536,7 @@ Func AttackSmartFarm($Nside, $SIDESNAMES) $g_iSlotsGiants = 2 Case Else Switch $nbSides - Case 2 - $g_iSlotsGiants = 2 - Case 1 + Case 1 To 2 $g_iSlotsGiants = 4 Case Else $g_iSlotsGiants = 0 @@ -539,7 +546,7 @@ Func AttackSmartFarm($Nside, $SIDESNAMES) SetDebugLog("Giants : " & $GiantComp & " , per side: " & ($GiantComp / $nbSides) & " / deploy points per side: " & $g_iSlotsGiants) If $g_bCustomDropOrderEnable Then - Local $listInfoDeploy[22][5] = [[MatchTroopDropName(0), $nbSides, MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], _ + Local $listInfoDeploy[23][5] = [[MatchTroopDropName(0), $nbSides, MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], _ [MatchTroopDropName(1), $nbSides, MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], _ [MatchTroopDropName(2), $nbSides, MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], _ [MatchTroopDropName(3), $nbSides, MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], _ @@ -560,7 +567,8 @@ Func AttackSmartFarm($Nside, $SIDESNAMES) [MatchTroopDropName(18), $nbSides, MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], _ [MatchTroopDropName(19), $nbSides, MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], _ [MatchTroopDropName(20), $nbSides, MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], _ - [MatchTroopDropName(21), $nbSides, MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)]] + [MatchTroopDropName(21), $nbSides, MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)], _ + [MatchTroopDropName(22), $nbSides, MatchTroopWaveNb(22), 1, MatchSlotsPerEdge(22)]] Else Local $listInfoDeploy[23][5] = [[$eGole, $nbSides, 1, 1, 2] _ , [$eLava, $nbSides, 1, 1, 2] _ @@ -642,7 +650,7 @@ Func LaunchTroopSmartFarm($listInfoDeploy, $iCC, $iKing, $iQueen, $iWarden, $SID Local $waveNb = $listInfoDeploy[$i][2] ; waves Local $maxWaveNb = $listInfoDeploy[$i][3] ; Max waves Local $slotsPerEdge = $listInfoDeploy[$i][4] ; deploy Points per Edge - If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": USE " & NameOfTroop($troopKind, 0) & " SIDES " & $nbSides & " WAVE " & $waveNb & " XWAVE " & $maxWaveNb & " SLOTXEDGE " & $slotsPerEdge, $COLOR_DEBUG) + If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": USE " & GetTroopName($troopKind, 0) & " SIDES " & $nbSides & " WAVE " & $waveNb & " XWAVE " & $maxWaveNb & " SLOTXEDGE " & $slotsPerEdge, $COLOR_DEBUG) ; Regular Troops , not Heroes or Castle If (IsNumber($troopKind)) Then @@ -650,9 +658,7 @@ Func LaunchTroopSmartFarm($listInfoDeploy, $iCC, $iKing, $iQueen, $iWarden, $SID If $g_avAttackTroops[$j][0] = $troopKind Then $troop = $j $troopNb = Ceiling($g_avAttackTroops[$j][1] / $maxWaveNb) - Local $plural = 0 - If $troopNb > 1 Then $plural = 1 - $name = NameOfTroop($troopKind, $plural) + $name = GetTroopName($troopKind, $troopNb) EndIf Next EndIf @@ -760,9 +766,12 @@ Func LaunchTroopSmartFarm($listInfoDeploy, $iCC, $iKing, $iQueen, $iWarden, $SID Local $infoPixelDropTroop = $listInfoDeployTroopPixel[$i] If Not (IsString($infoPixelDropTroop[0]) And ($infoPixelDropTroop[0] = "CC" Or $infoPixelDropTroop[0] = "HEROES")) Then Local $numberLeft = ReadTroopQuantity($infoPixelDropTroop[0]) - If $g_bDebugSetlog Then SetDebugLog("Slot Nun= " & $infoPixelDropTroop[0]) - If $g_bDebugSetlog Then SetDebugLog("Slot Xaxis= " & GetXPosOfArmySlot($infoPixelDropTroop[0], 40)) - If $g_bDebugSetlog Then SetDebugLog($infoPixelDropTroop[5] & " - NumberLeft : " & $numberLeft) + If $g_bDebugSetlog Then + Local $aiSlotPos = GetSlotPosition($infoDropTroop[0]) + SetDebugLog("Slot Nun= " & $infoPixelDropTroop[0]) + SetDebugLog("Slot Xaxis= " & $aiSlotPos[0]) + SetDebugLog($infoPixelDropTroop[5] & " - NumberLeft : " & $numberLeft) + EndIf If ($numberLeft > 0) Then If _Sleep($DELAYLAUNCHTROOP21) Then Return SelectDropTroop($infoPixelDropTroop[0]) ;Select Troop @@ -790,7 +799,7 @@ Func DropTroopSmartFarm($troop, $nbSides, $number, $slotsPerEdge = 0, $name = "" If ($number > 0 And $nbTroopsPerEdge = 0) Then $nbTroopsPerEdge = 1 - If $g_bDebugSmartFarm Then Setlog(" - " & NameOfTroop($troop) & " Number: " & $number & " Sides: " & $nbSides & " SlotsPerEdge: " & $slotsPerEdge) + If $g_bDebugSmartFarm Then Setlog(" - " & GetTroopName($troop) & " Number: " & $number & " Sides: " & $nbSides & " SlotsPerEdge: " & $slotsPerEdge) If $nbSides = 4 Then ; $listInfoPixelDropTroop = [$newPixelBottomRight, $newPixelTopLeft, $newPixelBottomLeft, $newPixelTopRight] diff --git a/COCBot/functions/Attack/Attack Algorithms/THAttackTypes.au3 b/COCBot/functions/Attack/Attack Algorithms/THAttackTypes.au3 index ec43000b2..4a5f1c6cf 100644 --- a/COCBot/functions/Attack/Attack Algorithms/THAttackTypes.au3 +++ b/COCBot/functions/Attack/Attack Algorithms/THAttackTypes.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: AtoZ (2015) ; Modified ......: Barracoda (07-2015), TheMaster1st (10-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Attack Algorithms/algorithmTH.au3 b/COCBot/functions/Attack/Attack Algorithms/algorithmTH.au3 index 78912dbab..a5150be4b 100644 --- a/COCBot/functions/Attack/Attack Algorithms/algorithmTH.au3 +++ b/COCBot/functions/Attack/Attack Algorithms/algorithmTH.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: AtoZ (2015) ; Modified ......: Barracoda (07-2015), TheMaster1st (10-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -29,7 +29,6 @@ Func AttackTHGrid($troopKind, $iNbOfSpots = 1, $iAtEachSpot = 1, $Sleep = Random Local $THtroop = -1 Local $troopNb = 0 Local $name = "" - Local $plural = 0 Local $waveName = "first" Local $NumTroopDeployed = 0 @@ -117,8 +116,7 @@ Func AttackTHGrid($troopKind, $iNbOfSpots = 1, $iAtEachSpot = 1, $Sleep = Random ; All Barracks Troops If $troopKind >= $eBarb And $troopKind <= $eIceG Then $troopNb = $iNbOfSpots * $iAtEachSpot - If $troopNb > 1 Then $plural = 1 - $name = NameOfTroop($troopKind, $plural) + $name = GetTroopName($troopKind, $troopNb) $TroopCountBeg = Number(ReadTroopQuantity($THtroop)) If ($TroopCountBeg = 0) And $g_bDebugSetlog Then SetLog("No " & $name & " Remaining!!!") @@ -285,7 +283,7 @@ Func CastSpell($THSpell, $x, $y) For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][0] = $THSpell Then $Spell = $i - $name = NameOfTroop($THSpell, 0) + $name = GetTroopName($THSpell) EndIf Next diff --git a/COCBot/functions/Attack/Attack Algorithms/algorithm_AllTroops.au3 b/COCBot/functions/Attack/Attack Algorithms/algorithm_AllTroops.au3 index 649ab4787..80771a355 100644 --- a/COCBot/functions/Attack/Attack Algorithms/algorithm_AllTroops.au3 +++ b/COCBot/functions/Attack/Attack Algorithms/algorithm_AllTroops.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Didipe (05-2015), ProMac(2016), MonkeyHunter(03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -82,18 +82,37 @@ Func algorithm_AllTroops() ;Attack Algorithm for all existing troops If _Sleep($DELAYALGORITHM_ALLTROOPS2) Then Return $g_iSidesAttack = $nbSides - $g_iSlotsGiants = 1 + + ; Reset the deploy Giants points , spread along red line + $g_iSlotsGiants = 0 + Local $GiantComp = 0 + ; Giants quantities + For $i = 0 To UBound($g_avAttackTroops) - 1 + If $g_avAttackTroops[$i][0] = $eGiant Then + $GiantComp = $g_avAttackTroops[$i][1] + EndIf + Next - Local $GiantComp = $g_aiArmyCompTroops[$eTroopGiant] - If Number($GiantComp) > 16 Or (Number($GiantComp) >= 8 And $nbSides = 4) Then $g_iSlotsGiants = 2 - If Number($GiantComp) > 20 Or (Number($GiantComp) >= 12 And $nbSides = 4) Then $g_iSlotsGiants = 0 + ; Lets select the deploy points according by Giants qunatities & sides + ; Deploy points : 0 - spreads along the red line , 1 - one deploy point .... X - X deploy points + Switch $GiantComp + Case 0 To 10 + $g_iSlotsGiants = 2 + Case Else + Switch $nbSides + Case 1 To 2 + $g_iSlotsGiants = 4 + Case Else + $g_iSlotsGiants = 0 + EndSwitch + EndSwitch ; $ListInfoDeploy = [Troop, No. of Sides, $WaveNb, $MaxWaveNb, $slotsPerEdge] If $g_iMatchMode = $LB And $g_aiAttackStdDropSides[$LB] = 4 Then ; Customise DE side wave deployment here Switch $g_aiAttackStdDropOrder[$g_iMatchMode] Case 0 If $g_bCustomDropOrderEnable Then - Local $listInfoDeploy[22][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], _ + Local $listInfoDeploy[23][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], _ [MatchTroopDropName(1), MatchSidesDrop(1), MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], _ [MatchTroopDropName(2), MatchSidesDrop(2), MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], _ [MatchTroopDropName(3), MatchSidesDrop(3), MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], _ @@ -114,7 +133,8 @@ Func algorithm_AllTroops() ;Attack Algorithm for all existing troops [MatchTroopDropName(18), MatchSidesDrop(18), MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], _ [MatchTroopDropName(19), MatchSidesDrop(19), MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], _ [MatchTroopDropName(20), MatchSidesDrop(20), MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], _ - [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)]] + [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)], _ + [MatchTroopDropName(22), MatchSidesDrop(22), MatchTroopWaveNb(22), 1, MatchSlotsPerEdge(22)]] Else Local $listInfoDeploy[23][5] = [[$eGole, $nbSides, 1, 1, 2] _ , [$eLava, $nbSides, 1, 1, 2] _ @@ -170,7 +190,7 @@ Func algorithm_AllTroops() ;Attack Algorithm for all existing troops Switch $g_aiAttackStdDropOrder[$g_iMatchMode] Case 0 If $g_bCustomDropOrderEnable Then - Local $listInfoDeploy[22][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], _ + Local $listInfoDeploy[23][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], _ [MatchTroopDropName(1), MatchSidesDrop(1), MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], _ [MatchTroopDropName(2), MatchSidesDrop(2), MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], _ [MatchTroopDropName(3), MatchSidesDrop(3), MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], _ @@ -191,7 +211,8 @@ Func algorithm_AllTroops() ;Attack Algorithm for all existing troops [MatchTroopDropName(18), MatchSidesDrop(18), MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], _ [MatchTroopDropName(19), MatchSidesDrop(19), MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], _ [MatchTroopDropName(20), MatchSidesDrop(20), MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], _ - [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)]] + [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)], _ + [MatchTroopDropName(22), MatchSidesDrop(22), MatchTroopWaveNb(22), 1, MatchSlotsPerEdge(22)]] Else Local $listInfoDeploy[23][5] = [[$eGole, $nbSides, 1, 1, 2] _ , [$eLava, $nbSides, 1, 1, 2] _ diff --git a/COCBot/functions/Attack/AttackCSV/AttackCSVDebugImage.au3 b/COCBot/functions/Attack/AttackCSV/AttackCSVDebugImage.au3 index 4c9d15c75..102dbbf4b 100644 --- a/COCBot/functions/Attack/AttackCSV/AttackCSVDebugImage.au3 +++ b/COCBot/functions/Attack/AttackCSV/AttackCSVDebugImage.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/CheckCSVValues.au3 b/COCBot/functions/Attack/AttackCSV/CheckCSVValues.au3 index c05d42439..68a7718bd 100644 --- a/COCBot/functions/Attack/AttackCSV/CheckCSVValues.au3 +++ b/COCBot/functions/Attack/AttackCSV/CheckCSVValues.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/ChkAttackCSVConfig.au3 b/COCBot/functions/Attack/AttackCSV/ChkAttackCSVConfig.au3 index 9b90e06d8..1da0f45cd 100644 --- a/COCBot/functions/Attack/AttackCSV/ChkAttackCSVConfig.au3 +++ b/COCBot/functions/Attack/AttackCSV/ChkAttackCSVConfig.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/CleanRedArea.au3 b/COCBot/functions/Attack/AttackCSV/CleanRedArea.au3 index 3ce8d88a2..0c6767785 100644 --- a/COCBot/functions/Attack/AttackCSV/CleanRedArea.au3 +++ b/COCBot/functions/Attack/AttackCSV/CleanRedArea.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/DebugAttackCSV.au3 b/COCBot/functions/Attack/AttackCSV/DebugAttackCSV.au3 index 2dea6c170..b49f00053 100644 --- a/COCBot/functions/Attack/AttackCSV/DebugAttackCSV.au3 +++ b/COCBot/functions/Attack/AttackCSV/DebugAttackCSV.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/DropTroopFromINI.au3 b/COCBot/functions/Attack/AttackCSV/DropTroopFromINI.au3 index 19798ba39..3325543fb 100644 --- a/COCBot/functions/Attack/AttackCSV/DropTroopFromINI.au3 +++ b/COCBot/functions/Attack/AttackCSV/DropTroopFromINI.au3 @@ -19,7 +19,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: MonkeyHunter (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -101,39 +101,39 @@ Func DropTroopFromINI($vectors, $indexStart, $indexEnd, $indexArray, $qtaMin, $q debugAttackCSV("New troop position: " & $troopPosition) EndIf - Local $usespell = True + Local $bUseSpell = True Switch $iTroopIndex Case $eLSpell - If $g_abAttackUseLightSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseLightSpell[$g_iMatchMode] Then $bUseSpell = False Case $eHSpell - If $g_abAttackUseHealSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseHealSpell[$g_iMatchMode] Then $bUseSpell = False Case $eRSpell - If $g_abAttackUseRageSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseRageSpell[$g_iMatchMode] Then $bUseSpell = False Case $eJSpell - If $g_abAttackUseJumpSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseJumpSpell[$g_iMatchMode] Then $bUseSpell = False Case $eFSpell - If $g_abAttackUseFreezeSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseFreezeSpell[$g_iMatchMode] Then $bUseSpell = False Case $eCSpell - If $g_abAttackUseCloneSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseCloneSpell[$g_iMatchMode] Then $bUseSpell = False Case $ePSpell - If $g_abAttackUsePoisonSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUsePoisonSpell[$g_iMatchMode] Then $bUseSpell = False Case $eESpell - If $g_abAttackUseEarthquakeSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseEarthquakeSpell[$g_iMatchMode] Then $bUseSpell = False Case $eHaSpell - If $g_abAttackUseHasteSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseHasteSpell[$g_iMatchMode] Then $bUseSpell = False Case $eSkSpell - If $g_abAttackUseSkeletonSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseSkeletonSpell[$g_iMatchMode] Then $bUseSpell = False Case $eBtSpell - If $g_abAttackUseBatSpell[$g_iMatchMode] = False Then $usespell = False + If Not $g_abAttackUseBatSpell[$g_iMatchMode] Then $bUseSpell = False EndSwitch - If $troopPosition = -1 Or $usespell = False Then + If $troopPosition = -1 Or Not $bUseSpell Then - If $usespell = True Then - SetLog("No " & NameOfTroop($iTroopIndex) & " found in your attack troops list") - debugAttackCSV("No " & NameOfTroop($iTroopIndex) & " found in your attack troops list") + If $bUseSpell Then + SetLog("No " & GetTroopName($iTroopIndex) & " found in your attack troops list") + debugAttackCSV("No " & GetTroopName($iTroopIndex) & " found in your attack troops list") Else - If $g_bDebugSetlog Then SetDebugLog("Discard use " & NameOfTroop($iTroopIndex), $COLOR_DEBUG) + If $g_bDebugSetlog Then SetDebugLog("Discard use " & GetTroopName($iTroopIndex), $COLOR_DEBUG) EndIf Else @@ -163,7 +163,7 @@ Func DropTroopFromINI($vectors, $indexStart, $indexEnd, $indexArray, $qtaMin, $q Else $delayDrop = $delayDropMin EndIf - debugAttackCSV(">> delay change drop point: " & $delayDrop) + debugAttackCSV("- delay change drop point: " & $delayDrop) EndIf For $j = 1 To $numbersOfVectors @@ -244,7 +244,7 @@ Func DropTroopFromINI($vectors, $indexStart, $indexEnd, $indexArray, $qtaMin, $q $sleepafter = Int($sleepafterMin) EndIf If $sleepafter > 0 And IsKeepClicksActive() = False Then - debugAttackCSV(">> delay after drop all troops: " & $sleepafter) + debugAttackCSV("- delay after drop all troops: " & $sleepafter) If $sleepafter <= 1000 Then ; check SLEEPAFTER value is less than 1 second? If _Sleep($sleepafter) Then Return If $bHeroDrop = True Then ;Check hero but skip Warden if was dropped with sleepafter to short to allow icon update diff --git a/COCBot/functions/Attack/AttackCSV/GetListPixel3.au3 b/COCBot/functions/Attack/AttackCSV/GetListPixel3.au3 index ef98f743a..b96b8c4f5 100644 --- a/COCBot/functions/Attack/AttackCSV/GetListPixel3.au3 +++ b/COCBot/functions/Attack/AttackCSV/GetListPixel3.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/IsInsideDiamondRedArea.au3 b/COCBot/functions/Attack/AttackCSV/IsInsideDiamondRedArea.au3 index 45f758f5a..e7071b7bd 100644 --- a/COCBot/functions/Attack/AttackCSV/IsInsideDiamondRedArea.au3 +++ b/COCBot/functions/Attack/AttackCSV/IsInsideDiamondRedArea.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/Line2Points.au3 b/COCBot/functions/Attack/AttackCSV/Line2Points.au3 index ad6699790..f85de1552 100644 --- a/COCBot/functions/Attack/AttackCSV/Line2Points.au3 +++ b/COCBot/functions/Attack/AttackCSV/Line2Points.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/MakeDropLine.au3 b/COCBot/functions/Attack/AttackCSV/MakeDropLine.au3 index 2c5040582..e52088f8b 100644 --- a/COCBot/functions/Attack/AttackCSV/MakeDropLine.au3 +++ b/COCBot/functions/Attack/AttackCSV/MakeDropLine.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/MakeDropPoints.au3 b/COCBot/functions/Attack/AttackCSV/MakeDropPoints.au3 index 8daa53b32..eb3deb2f4 100644 --- a/COCBot/functions/Attack/AttackCSV/MakeDropPoints.au3 +++ b/COCBot/functions/Attack/AttackCSV/MakeDropPoints.au3 @@ -11,7 +11,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -176,7 +176,7 @@ EndFunc ;==>MakeDropPoints ; : 4 = strange programming error? ; Author ........: MonkeyHunter (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/ParseAttackCSV.au3 b/COCBot/functions/Attack/AttackCSV/ParseAttackCSV.au3 index 84d92ca7c..aa9bec506 100644 --- a/COCBot/functions/Attack/AttackCSV/ParseAttackCSV.au3 +++ b/COCBot/functions/Attack/AttackCSV/ParseAttackCSV.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: MMHK (07-2017)(01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Read_SIDE_variables.au3 b/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Read_SIDE_variables.au3 index 9f40c3ba8..e5a024576 100644 --- a/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Read_SIDE_variables.au3 +++ b/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Read_SIDE_variables.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Settings_variables.au3 b/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Settings_variables.au3 index fe92a398c..84a661553 100644 --- a/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Settings_variables.au3 +++ b/COCBot/functions/Attack/AttackCSV/ParseAttackCSV_Settings_variables.au3 @@ -7,7 +7,7 @@ ; Failure: 0 ; Author ........: MMHK (01-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackCSV/Slice8.au3 b/COCBot/functions/Attack/AttackCSV/Slice8.au3 index afee84bf4..30499a8cc 100644 --- a/COCBot/functions/Attack/AttackCSV/Slice8.au3 +++ b/COCBot/functions/Attack/AttackCSV/Slice8.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/AttackReport.au3 b/COCBot/functions/Attack/AttackReport.au3 index 8e7e6f6c7..86e0dd915 100644 --- a/COCBot/functions/Attack/AttackReport.au3 +++ b/COCBot/functions/Attack/AttackReport.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Hervidero (02-2015), Sardo (05-2015), Hervidero (12-2015) ; Modified ......: Sardo (05-2015), Hervidero (05-2015), Knowjack (07-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/BuildingSide.au3 b/COCBot/functions/Attack/BuildingSide.au3 index 3621d2e8f..0947faee4 100644 --- a/COCBot/functions/Attack/BuildingSide.au3 +++ b/COCBot/functions/Attack/BuildingSide.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: Knowskones (2015) ; Modified ......: Hervidero (2015), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/GoldElixirChangeEBO.au3 b/COCBot/functions/Attack/GoldElixirChangeEBO.au3 index 98ba73647..ed186f3ad 100644 --- a/COCBot/functions/Attack/GoldElixirChangeEBO.au3 +++ b/COCBot/functions/Attack/GoldElixirChangeEBO.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Sardo (06-2015), Fliegerfaust (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......:v ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/GoldElixirChangeThSnipes.au3 b/COCBot/functions/Attack/GoldElixirChangeThSnipes.au3 index a6076974e..0e5e66100 100644 --- a/COCBot/functions/Attack/GoldElixirChangeThSnipes.au3 +++ b/COCBot/functions/Attack/GoldElixirChangeThSnipes.au3 @@ -9,7 +9,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/Algorithm_MilkingAttack.au3 b/COCBot/functions/Attack/MilkingAttack/Algorithm_MilkingAttack.au3 index 423c32f61..391ad630d 100644 --- a/COCBot/functions/Attack/MilkingAttack/Algorithm_MilkingAttack.au3 +++ b/COCBot/functions/Attack/MilkingAttack/Algorithm_MilkingAttack.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -67,10 +67,10 @@ Func Alogrithm_MilkingAttack() For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][1] <> -1 Then ;if not empty If $g_avAttackTroops[$i][0] = $eGobl Then - If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & NameOfTroop($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & " <<---" & $eGobl, $COLOR_SUCCESS) + If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & GetTroopName($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & " <<---" & $eGobl, $COLOR_SUCCESS) $troopPosition = $i Else - If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & NameOfTroop($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & "", $COLOR_GRAY) + If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & GetTroopName($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & "", $COLOR_GRAY) EndIf EndIf Next diff --git a/COCBot/functions/Attack/MilkingAttack/AmountOfResourcesInStructure.au3 b/COCBot/functions/Attack/MilkingAttack/AmountOfResourcesInStructure.au3 index 601254cee..9ec9676b6 100644 --- a/COCBot/functions/Attack/MilkingAttack/AmountOfResourcesInStructure.au3 +++ b/COCBot/functions/Attack/MilkingAttack/AmountOfResourcesInStructure.au3 @@ -6,7 +6,7 @@ ; Return values .:True or False ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/DetectAmountOfResourceInStructure.au3 b/COCBot/functions/Attack/MilkingAttack/DetectAmountOfResourceInStructure.au3 index 20613d7d0..2c0918728 100644 --- a/COCBot/functions/Attack/MilkingAttack/DetectAmountOfResourceInStructure.au3 +++ b/COCBot/functions/Attack/MilkingAttack/DetectAmountOfResourceInStructure.au3 @@ -9,7 +9,7 @@ ; Return values .:$capacityanalized-how many resources were detected in the building ; Author ........: Sardo (2016) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/LoadAmountOfResourcesImages.au3 b/COCBot/functions/Attack/MilkingAttack/LoadAmountOfResourcesImages.au3 index 3dd373887..489b26f88 100644 --- a/COCBot/functions/Attack/MilkingAttack/LoadAmountOfResourcesImages.au3 +++ b/COCBot/functions/Attack/MilkingAttack/LoadAmountOfResourcesImages.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesDebugImage.au3 b/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesDebugImage.au3 index a1d617a54..1c096f6b6 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesDebugImage.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesDebugImage.au3 @@ -7,7 +7,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesSTR_INSERT.au3 b/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesSTR_INSERT.au3 index 131120108..29425fc1f 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesSTR_INSERT.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkFarmObjectivesSTR_INSERT.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructure.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructure.au3 index 411fb78d9..ac16328ea 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructure.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructure.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructureDestroyed.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructureDestroyed.au3 index 2dddc76a3..0c4385790 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructureDestroyed.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingAttackStructureDestroyed.au3 @@ -6,7 +6,7 @@ ; Return values .:True or False ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingCheckMilkingBase.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingCheckMilkingBase.au3 index 932e3c19a..fc8fe3960 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingCheckMilkingBase.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingCheckMilkingBase.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingDebug.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingDebug.au3 index 3b3e269a4..5ce91065b 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingDebug.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingDebug.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingDetectDarkExtractors.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingDetectDarkExtractors.au3 index 32413e58d..aba1a81a6 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingDetectDarkExtractors.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingDetectDarkExtractors.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingDetectElixirExtractors.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingDetectElixirExtractors.au3 index 9675dbe06..169414f85 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingDetectElixirExtractors.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingDetectElixirExtractors.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingDetectMineExtractors.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingDetectMineExtractors.au3 index 38e20eff7..1021a9e43 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingDetectMineExtractors.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingDetectMineExtractors.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingDetectRedArea.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingDetectRedArea.au3 index 054947f83..654d5072d 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingDetectRedArea.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingDetectRedArea.au3 @@ -6,7 +6,7 @@ ; Return values .:None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/MilkingAttack/MilkingRedAreaPointsNearStructure.au3 b/COCBot/functions/Attack/MilkingAttack/MilkingRedAreaPointsNearStructure.au3 index 9291af7a6..92a8d9d79 100644 --- a/COCBot/functions/Attack/MilkingAttack/MilkingRedAreaPointsNearStructure.au3 +++ b/COCBot/functions/Attack/MilkingAttack/MilkingRedAreaPointsNearStructure.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: Sardo (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/PrepareAttack.au3 b/COCBot/functions/Attack/PrepareAttack.au3 index 80971d4fe..5968dc811 100644 --- a/COCBot/functions/Attack/PrepareAttack.au3 +++ b/COCBot/functions/Attack/PrepareAttack.au3 @@ -7,17 +7,17 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assigns troops +Func PrepareAttack($pMatchMode, $bRemaining = False, $DebugSiege = False) ;Assigns troops ; Attack CSV has debug option to save attack line image, save have png of current $g_hHBitmap2 If ($pMatchMode = $DB And $g_aiAttackAlgorithm[$DB] = 1) Or ($pMatchMode = $LB And $g_aiAttackAlgorithm[$LB] = 1) Then - If $g_bDebugMakeIMGCSV And $Remaining = False And TestCapture() = 0 Then + If $g_bDebugMakeIMGCSV And $bRemaining = False And TestCapture() = 0 Then If $g_iSearchTH = "-" Then ; If TH is unknown, try again to find as it is needed for filename imglocTHSearch(True, False, False) EndIf @@ -25,7 +25,7 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign EndIf EndIf - If $Remaining = False Then ; reset Hero variables before attack if not checking remaining troops + If Not $bRemaining Then ; reset Hero variables before attack if not checking remaining troops $g_bDropKing = False ; reset hero dropped flags $g_bDropQueen = False $g_bDropWarden = False @@ -37,9 +37,8 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign $g_bDraggedAttackBar = False EndIf - Local $troopsnumber = 0 If $g_bDebugSetlog Then SetDebugLog("PrepareAttack for " & $pMatchMode & " " & $g_asModeText[$pMatchMode], $COLOR_DEBUG) - If $Remaining Then + If $bRemaining Then SetLog("Checking remaining unused troops for: " & $g_asModeText[$pMatchMode], $COLOR_INFO) Else SetLog("Initiating attack for: " & $g_asModeText[$pMatchMode], $COLOR_ERROR) @@ -51,7 +50,7 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign Local $aPaths = [$g_sImgSwitchSiegeCastle, $g_sImgSwitchSiegeWallWrecker, $g_sImgSwitchSiegeBattleBlimp, $g_sImgSwitchSiegeStoneSlammer] Local $ToUse = $eCastle, $iDa = 0 - If ($pMatchMode = $DB Or $pMatchMode = $LB Or $pMatchMode = $TS) And Not $Remaining Then + If ($pMatchMode = $DB Or $pMatchMode = $LB Or $pMatchMode = $TS) And Not $bRemaining Then ; Default is CC ,let's check Siege Machines , if is to be used and exist. If $g_abAttackDropCC[$pMatchMode] And $g_aiAttackUseSiege[$pMatchMode] = 3 And ($g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] > 0 Or $g_aiCurrentCCSiegeMachines[$eSiegeStoneSlammer] > 0) Then $ToUse = $eStoneS @@ -68,8 +67,8 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign EndIf ; Only procceds if necessary Drop the CC troops - If Not $Remaining And $g_abAttackDropCC[$pMatchMode] Then - Setlog("Let's use " & NameOfTroop($ToUse)) + If Not $bRemaining And $g_abAttackDropCC[$pMatchMode] Then + Setlog("Let's use " & GetTroopName($ToUse)) If QuickMIS("BC1", $g_sImgSwitchSiegeMachine, 50, 700, 820, 720, True, False) Then If $g_bDebugSetlog Then SetDebugLog("Benchmark Switch Siege Bar: " & StringFormat("%.2f", _Timer_Diff($hStarttime)) & "'ms") $hStarttime = _Timer_Init() @@ -116,7 +115,7 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign $aSiegeAvailable[UBound($aSiegeAvailable) - 1][2] = $SiegeLevel <> "" ? Number($SiegeLevel) : 1 If $DebugSiege Then - Local $Info = $i + 1 & "_" & NameOfTroop($ToUse) & "_L" & $aSiegeAvailable[UBound($aSiegeAvailable) - 1][2] & "_" & $x & "_" & $y + Local $Info = $i + 1 & "_" & GetTroopName($ToUse) & "_L" & $aSiegeAvailable[UBound($aSiegeAvailable) - 1][2] & "_" & $x & "_" & $y addInfoToDebugImage($hGraphic, $hPenRED, $Info, $x, $y) _GDIPlus_GraphicsDrawLine($hGraphic, 0, 587, 860, 587, $hPenRED) _GDIPlus_GraphicsDrawLine($hGraphic, $x - 26, 0, $x - 26, 732, $hPenRED) @@ -138,14 +137,14 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign Next Click($iFinalX, $iFinalY, 1) Local $TextLog = $ToUse = $eCastle ? "" : " Level " & $iFinalLevel - Setlog(NameOfTroop($ToUse) & $TextLog & " selected!", $COLOR_SUCCESS) + Setlog(GetTroopName($ToUse) & $TextLog & " selected!", $COLOR_SUCCESS) Else If $g_bDebugImageSave Then DebugImageSave("PrepareAttack_SwitchSiege") Click($lastX, $lastY, 1) EndIf If _sleep(250) Then Return - Click(35, 595 + $g_iBottomOffsetY, 1, 0, "#0111") ;860x780 +;~ Click(35, 595 + $g_iBottomOffsetY, 1, 0, "#0111") ;860x780 click 1st troop slot If $DebugSiege Then ; Destroy the used GDI stuff @@ -157,10 +156,10 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign Else If $g_bDebugImageSave Then DebugImageSave("PrepareAttack_SwitchSiege") ; If was not detectable lets click again on green icon to hide the window! - Setlog("Undetected " & NameOfTroop($ToUse) & " after click on switch btn!", $COLOR_DEBUG) + Setlog("Undetected " & GetTroopName($ToUse) & " after click on switch btn!", $COLOR_DEBUG) Click($lastX, $lastY, 1) If _sleep(250) Then Return - Click(35, 595 + $g_iBottomOffsetY, 1, 0, "#0111") ;860x780 +;~ Click(35, 595 + $g_iBottomOffsetY, 1, 0, "#0111") ;860x780 click 1st troop slot EndIf If _Sleep(750) Then Return EndIf @@ -169,157 +168,108 @@ Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) ;Assign If $g_bDebugSetlog Then SetDebugLog("Benchmark Switch Siege Detection: " & StringFormat("%.2f", _Timer_Diff($hStarttime)) & "'ms") If $g_bDebugSetlog Then SetDebugLog("Sleeps : " & 250 + 750 & "'ms") - ;_CaptureRegion2(0, 571 + $g_iBottomOffsetY, 859, 671 + $g_iBottomOffsetY) If _Sleep($DELAYPREPAREATTACK1) Then Return - For $i = 0 To UBound($g_avAttackTroops) - 1 + Local $iTroopNumber = 0 + For $i = 0 To UBound($g_avAttackTroops, 1) - 1 $g_avAttackTroops[$i][0] = -1 $g_avAttackTroops[$i][1] = 0 $g_avAttackTroops[$i][2] = 0 + $g_avAttackTroops[$i][3] = 0 + $g_avAttackTroops[$i][4] = 0 + $g_avAttackTroops[$i][5] = 0 Next - Local $Plural = 0 - Local $result = AttackBarCheck($Remaining, $pMatchMode) ; adding $pMatchMode for not checking Slot11+ when DropTrophy attack - If $g_bDebugSetlog Then SetDebugLog("DLL Troopsbar list: " & $result, $COLOR_DEBUG) - Local $aTroopDataList = StringSplit($result, "|") - Local $aTemp[22][4] ; Slot11+ - If $result <> "" Then - ; example : 0#0#92|1#1#108|2#2#8|22#3#1|20#4#1|21#5#1|26#5#0|23#6#1|24#7#2|25#8#1|29#10#1 - ; [0] = Troop Enum Cross Reference [1] = Slot position [2] = Quantities - For $i = 1 To $aTroopDataList[0] - Local $troopData = StringSplit($aTroopDataList[$i], "#", $STR_NOCOUNT) - $aTemp[Number($troopData[1])][0] = $troopData[0] ; troop name - $aTemp[Number($troopData[1])][1] = Number($troopData[2]) ; amount - $aTemp[Number($troopData[1])][2] = Number($troopData[1]) ; index - $aTemp[Number($troopData[1])][3] = Number($troopData[3]) ; x-coord + Local $avAttackBar = AttackBarCheck($bRemaining, $pMatchMode) + If UBound($avAttackBar, 1) > 0 Then + For $i = 0 To UBound($avAttackBar, 1) - 1 + If IsUnitUsed($pMatchMode, $avAttackBar[$i][0]) Then + $g_avAttackTroops[$avAttackBar[$i][1]][0] = Number($avAttackBar[$i][0]) ; Troop Index + $g_avAttackTroops[$avAttackBar[$i][1]][1] = Number($avAttackBar[$i][2]) ; Amount + $g_avAttackTroops[$avAttackBar[$i][1]][2] = Number($avAttackBar[$i][3]) ; X-Coord + $g_avAttackTroops[$avAttackBar[$i][1]][3] = Number($avAttackBar[$i][4]) ; Y-Coord + $g_avAttackTroops[$avAttackBar[$i][1]][4] = Number($avAttackBar[$i][5]) ; OCR X-Coord + $g_avAttackTroops[$avAttackBar[$i][1]][5] = Number($avAttackBar[$i][6]) ; OCR Y-Coord + $iTroopNumber += $avAttackBar[$i][2] + Local $sDebugText = $g_bDebugSetlog ? " (X:" & $avAttackBar[$i][3] & "|Y:" & $avAttackBar[$i][4] & "|OCR-X:" & $avAttackBar[$i][5] & "|OCR-Y:" & $avAttackBar[$i][6] & ")" : "" + SetLog($avAttackBar[$i][1] & ": " & $avAttackBar[$i][2] & " " & GetTroopName($avAttackBar[$i][0], $avAttackBar[$i][2]) & $sDebugText, $COLOR_SUCCESS) + Else + SetDebugLog("Discard use of " & GetTroopName($avAttackBar[$i][0]) & " (" & $avAttackBar[$i][0] & ")", $COLOR_ERROR) + EndIf Next EndIf - For $i = 0 To UBound($aTemp) - 1 - If $aTemp[$i][0] = "" And $aTemp[$i][1] = "" Then - $g_avAttackTroops[$i][0] = -1 - $g_avAttackTroops[$i][1] = 0 - $g_avAttackTroops[$i][2] = 0 - Else - Local $troopKind = $aTemp[$i][0] - If $troopKind < $eKing Then - ;normal troop - If Not IsTroopToBeUsed($pMatchMode, $troopKind) Then - If $g_bDebugSetlog Then SetDebugLog("Discard use of troop " & $troopKind & " " & NameOfTroop($troopKind), $COLOR_ERROR) - $g_avAttackTroops[$i][0] = -1 - $g_avAttackTroops[$i][1] = 0 - $g_avAttackTroops[$i][2] = 0 - $troopKind = -1 - Else - ;use troop - ;Setlog ("troopsnumber = " & $troopsnumber & "+ " & Number( $aTemp[$i][1])) - $g_avAttackTroops[$i][0] = $aTemp[$i][0] - $g_avAttackTroops[$i][1] = $aTemp[$i][1] - $g_avAttackTroops[$i][2] = $aTemp[$i][3] - $troopsnumber += $aTemp[$i][1] - EndIf - - Else ;king, queen, warden , spells , Castle and Sieges - $g_avAttackTroops[$i][0] = $troopKind - If IsSpecialTroopToBeUsed($pMatchMode, $troopKind) Then - $troopsnumber += 1 - ;Setlog ("troopsnumber = " & $troopsnumber & "+1") - $g_avAttackTroops[$i][0] = $aTemp[$i][0] - $g_avAttackTroops[$i][1] = $aTemp[$i][1] - $g_avAttackTroops[$i][2] = $aTemp[$i][3] - If $g_avAttackTroops[$i][0] = $eKing Or $g_avAttackTroops[$i][0] = $eQueen Or $g_avAttackTroops[$i][0] = $eWarden Then $g_avAttackTroops[$i][1] = 1 - $troopKind = $g_avAttackTroops[$i][1] - $troopsnumber += 1 - Else - If $g_bDebugSetlog Then SetDebugLog($aTemp[$i][2] & " » Discard use Hero/Spell/Castle/Siege [" & $troopKind & "] " & NameOfTroop($troopKind), $COLOR_ERROR) - $troopKind = -1 - EndIf - EndIf - - $Plural = 0 - If $aTemp[$i][1] > 1 Then $Plural = 1 - If $troopKind <> -1 Then SetLog($aTemp[$i][2] & " » " & $g_avAttackTroops[$i][1] & " " & NameOfTroop($g_avAttackTroops[$i][0], $Plural) & ", x: " & $g_avAttackTroops[$i][2], $COLOR_SUCCESS) - - EndIf - Next - - ;ResumeAndroid() SetSlotSpecialTroops() - If $g_bDebugSetlog Then SetDebugLog("troopsnumber = " & $troopsnumber) - Return $troopsnumber + Return $iTroopNumber EndFunc ;==>PrepareAttack -Func IsTroopToBeUsed($pMatchMode, $pTroopType) - If $pMatchMode = $DT Or $pMatchMode = $TB Then Return True - If $pMatchMode = $MA Then - Local $tempArr = $g_aaiTroopsToBeUsed[$g_aiAttackTroopSelection[$DB]] - Else - Local $tempArr = $g_aaiTroopsToBeUsed[$g_aiAttackTroopSelection[$pMatchMode]] - EndIf - For $x = 0 To UBound($tempArr) - 1 - If $tempArr[$x] = $pTroopType Then - If $pMatchMode = $MA And $pTroopType = $eGobl Then ;exclude goblins in $MA +Func IsUnitUsed($iMatchMode, $iTroopIndex) + Local $iTempMode = ($iMatchMode = $MA ? $DB : $iMatchMode) + + If $iTroopIndex < $eKing Then ;Index is a Troop + If $iMatchMode = $DT Or $iMatchMode = $TB Then Return True + Local $aTempArray = $g_aaiTroopsToBeUsed[$g_aiAttackTroopSelection[$iTempMode]] + Local $iFoundAt = _ArraySearch($aTempArray, $iTroopIndex) + If $iFoundAt <> -1 Then + If $iMatchMode = $MA And $iTroopIndex = $eGobl Then Return False Else Return True EndIf EndIf - Next - Return False -EndFunc ;==>IsTroopToBeUsed + Return False + Else ; Index is a Hero/Siege/Castle/Spell + Local $iTempMode = ($iMatchMode = $MA ? $DB : $iMatchMode) -Func IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) - Local $iTempMode = ($pMatchMode = $MA ? $DB : $pMatchMode) + If $iMatchMode <> $DB And $iMatchMode <> $LB And $iMatchMode <> $TS And $iMatchMode <> $MA Then + Return True + Else + Switch $iTroopIndex + Case $eKing + If (BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroKing) = $eHeroKing) Then Return True + Case $eQueen + If (BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroQueen) = $eHeroQueen) Then Return True + Case $eWarden + If (BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroWarden) = $eHeroWarden) Then Return True + Case $eCastle + If $g_abAttackDropCC[$iTempMode] Then Return True + Case $eLSpell + If $g_abAttackUseLightSpell[$iTempMode] Or $g_bSmartZapEnable Then Return True + Case $eHSpell + If $g_abAttackUseHealSpell[$iTempMode] Then Return True + Case $eRSpell + If $g_abAttackUseRageSpell[$iTempMode] Then Return True + Case $eJSpell + If $g_abAttackUseJumpSpell[$iTempMode] Then Return True + Case $eFSpell + If $g_abAttackUseFreezeSpell[$iTempMode] Then Return True + Case $ePSpell + If $g_abAttackUsePoisonSpell[$iTempMode] Then Return True + Case $eESpell + If $g_abAttackUseEarthquakeSpell[$iTempMode] = 1 Or $g_bSmartZapEnable Then Return True + Case $eHaSpell + If $g_abAttackUseHasteSpell[$iTempMode] Then Return True + Case $eCSpell + If $g_abAttackUseCloneSpell[$iTempMode] Then Return True + Case $eSkSpell + If $g_abAttackUseSkeletonSpell[$iTempMode] Then Return True + Case $eBtSpell + If $g_abAttackUseBatSpell[$iTempMode] Then Return True + Case $eWallW, $eBattleB, $eStoneS + If $g_abAttackDropCC[$iTempMode] Then Return True + Case Else + Return False + EndSwitch + Return False + EndIf - If $pMatchMode <> $DB And $pMatchMode <> $LB And $pMatchMode <> $TS And $pMatchMode <> $MA Then - Return True - Else - Switch $pTroopType - Case $eKing - If (BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroKing) = $eHeroKing) Then Return True - Case $eQueen - If (BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroQueen) = $eHeroQueen) Then Return True - Case $eWarden - If (BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroWarden) = $eHeroWarden) Then Return True - Case $eCastle - If $g_abAttackDropCC[$iTempMode] Then Return True - Case $eLSpell - If $g_abAttackUseLightSpell[$iTempMode] Or $g_bSmartZapEnable = True Then Return True - Case $eHSpell - If $g_abAttackUseHealSpell[$iTempMode] Then Return True - Case $eRSpell - If $g_abAttackUseRageSpell[$iTempMode] Then Return True - Case $eJSpell - If $g_abAttackUseJumpSpell[$iTempMode] Then Return True - Case $eFSpell - If $g_abAttackUseFreezeSpell[$iTempMode] Then Return True - Case $ePSpell - If $g_abAttackUsePoisonSpell[$iTempMode] Then Return True - Case $eESpell - If $g_abAttackUseEarthquakeSpell[$iTempMode] = 1 Or $g_bSmartZapEnable = True Then Return True - Case $eHaSpell - If $g_abAttackUseHasteSpell[$iTempMode] Then Return True - Case $eCSpell - If $g_abAttackUseCloneSpell[$iTempMode] Then Return True - Case $eSkSpell - If $g_abAttackUseSkeletonSpell[$iTempMode] Then Return True - Case $eBtSpell - If $g_abAttackUseBatSpell[$iTempMode] Then Return True - Case $eWallW - If $g_abAttackDropCC[$iTempMode] Then Return True - Case $eBattleB - If $g_abAttackDropCC[$iTempMode] Then Return True - Case $eStoneS - If $g_abAttackDropCC[$iTempMode] Then Return True - Case Else - Return False - EndSwitch Return False EndIf -EndFunc ;==>IsSpecialTroopToBeUsed + Return False +EndFunc ;==>IsUnitUsed Func AttackRemainingTime($bInitialze = Default) - If $bInitialze = True Then + If $bInitialze Then $g_hAttackTimer = __TimerInit() $g_iAttackTimerOffset = Default SuspendAndroidTime(True) ; Reset suspend Android time for compensation when Android is suspended @@ -342,7 +292,7 @@ Func AttackRemainingTime($bInitialze = Default) EndIf - If $bInitialze = False Then Return + If Not $bInitialze Then Return ; Return remaining attack time Local $iAttackTime = 3 * 60 * 1000 @@ -351,5 +301,3 @@ Func AttackRemainingTime($bInitialze = Default) Return $iRemaining EndFunc ;==>AttackRemainingTime - - diff --git a/COCBot/functions/Attack/RedArea/DebugRedArea.au3 b/COCBot/functions/Attack/RedArea/DebugRedArea.au3 index d2dc9d520..f92b2b2d7 100644 --- a/COCBot/functions/Attack/RedArea/DebugRedArea.au3 +++ b/COCBot/functions/Attack/RedArea/DebugRedArea.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: didipe ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/DropOnPixel.au3 b/COCBot/functions/Attack/RedArea/DropOnPixel.au3 index c049cdb20..e5283c887 100644 --- a/COCBot/functions/Attack/RedArea/DropOnPixel.au3 +++ b/COCBot/functions/Attack/RedArea/DropOnPixel.au3 @@ -9,7 +9,7 @@ ; Return values .: None ; Author ........: ; Modified ......: ProMac (07-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/DropTroop.au3 b/COCBot/functions/Attack/RedArea/DropTroop.au3 index 74b72b089..becc98dd5 100644 --- a/COCBot/functions/Attack/RedArea/DropTroop.au3 +++ b/COCBot/functions/Attack/RedArea/DropTroop.au3 @@ -11,7 +11,7 @@ ; Return values .: None ; Author ........: didipe ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/GetLocation.au3 b/COCBot/functions/Attack/RedArea/GetLocation.au3 index 422700e1e..9cd8b3722 100644 --- a/COCBot/functions/Attack/RedArea/GetLocation.au3 +++ b/COCBot/functions/Attack/RedArea/GetLocation.au3 @@ -6,7 +6,7 @@ ; Return values .: String with locations ; Author ........: ; Modified ......: ProMac (04-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -167,7 +167,7 @@ EndFunc ;==>GetLocationDarkElixirWithLevel ; Return values .: None ; Author ........: MonkeyHunter (04-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/GetOffestPixelRedArea2.au3 b/COCBot/functions/Attack/RedArea/GetOffestPixelRedArea2.au3 index 4a72b7058..7c8d58470 100644 --- a/COCBot/functions/Attack/RedArea/GetOffestPixelRedArea2.au3 +++ b/COCBot/functions/Attack/RedArea/GetOffestPixelRedArea2.au3 @@ -8,7 +8,7 @@ ; Return values .: The pixel with offset ; Author ........: didipe ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/GetPixelDropTroop.au3 b/COCBot/functions/Attack/RedArea/GetPixelDropTroop.au3 index df8e1ea97..b6136f462 100644 --- a/COCBot/functions/Attack/RedArea/GetPixelDropTroop.au3 +++ b/COCBot/functions/Attack/RedArea/GetPixelDropTroop.au3 @@ -9,7 +9,7 @@ ; Return values .: None ; Author ........: ; Modified ......: ProMac (07-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/GetPixelSide.au3 b/COCBot/functions/Attack/RedArea/GetPixelSide.au3 index 34f2f1b7d..744310897 100644 --- a/COCBot/functions/Attack/RedArea/GetPixelSide.au3 +++ b/COCBot/functions/Attack/RedArea/GetPixelSide.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/GetVectorPixelOnEachSide.au3 b/COCBot/functions/Attack/RedArea/GetVectorPixelOnEachSide.au3 index b7ad4ddf0..212d2601d 100644 --- a/COCBot/functions/Attack/RedArea/GetVectorPixelOnEachSide.au3 +++ b/COCBot/functions/Attack/RedArea/GetVectorPixelOnEachSide.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: ; Modified ......: ProMac (07-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/PointInPoly.au3 b/COCBot/functions/Attack/RedArea/PointInPoly.au3 index 0c5b6635a..80ac526e3 100644 --- a/COCBot/functions/Attack/RedArea/PointInPoly.au3 +++ b/COCBot/functions/Attack/RedArea/PointInPoly.au3 @@ -10,7 +10,7 @@ ; Return values .: None ; Author ........: Malkey from https://www.autoitscript.com/forum/topic/89034-check-if-a-point-is-within-various-defined-closed-shapes/ ; Modified ......: MonkeyHunter (05-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -45,7 +45,7 @@ EndFunc ;==>_IsPointInPoly ; Return values .: True if inside polygon ; Author ........: MonkeyHunter (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -83,7 +83,7 @@ EndFunc ;==>IsPointOnSide ; Return values .: New count of locations in string ; Author ........: MonkeyHunter (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -194,7 +194,7 @@ EndFunc ;==>RemoveDupNearby ; Return values .: Returns new count of locations in $sLoc1Coord - adds new points to Existing location string by reference ; Author ........: MonkeyHunter (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -300,7 +300,7 @@ EndFunc ;==>AddPoints_RemoveDuplicate ; Return values .: FALSE if any location is on outside when $sSide - "IN" or FALSE when any location is on inside when $sSide = "OUT", TRUE when all locations met conditions ; Author ........: MonkeyHunter (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/_FindPixelCloser.au3 b/COCBot/functions/Attack/RedArea/_FindPixelCloser.au3 index 3d2060b92..73205d307 100644 --- a/COCBot/functions/Attack/RedArea/_FindPixelCloser.au3 +++ b/COCBot/functions/Attack/RedArea/_FindPixelCloser.au3 @@ -9,7 +9,7 @@ ; Return values .: None ; Author ........: didipe ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/_GetOffsetTroopFurther.au3 b/COCBot/functions/Attack/RedArea/_GetOffsetTroopFurther.au3 index 14da36a98..70e964418 100644 --- a/COCBot/functions/Attack/RedArea/_GetOffsetTroopFurther.au3 +++ b/COCBot/functions/Attack/RedArea/_GetOffsetTroopFurther.au3 @@ -9,7 +9,7 @@ ; Return values .: None ; Author ........: didipe ; Modified ......: ProMac (12-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/_GetRedArea.au3 b/COCBot/functions/Attack/RedArea/_GetRedArea.au3 index 3d29c29be..1f758113a 100644 --- a/COCBot/functions/Attack/RedArea/_GetRedArea.au3 +++ b/COCBot/functions/Attack/RedArea/_GetRedArea.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/RedArea/_GetVectorOutZone.au3 b/COCBot/functions/Attack/RedArea/_GetVectorOutZone.au3 index b52f21497..7938ca97b 100644 --- a/COCBot/functions/Attack/RedArea/_GetVectorOutZone.au3 +++ b/COCBot/functions/Attack/RedArea/_GetVectorOutZone.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: didipe ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/ReturnHome.au3 b/COCBot/functions/Attack/ReturnHome.au3 index def5d862d..c7cf8d607 100644 --- a/COCBot/functions/Attack/ReturnHome.au3 +++ b/COCBot/functions/Attack/ReturnHome.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack (07-2015), MonkeyHunter (01-2016), CodeSlinger69 (01-2017), MonkeyHunter (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -146,16 +146,19 @@ Func ReturnHome($TakeSS = 1, $GoldChangeCheck = True) ;Return main screen If $GoldChangeCheck Then PushMsg("LastRaid") $i = 0 ; Reset Loop counter + Local $iExitLoop = -1 While 1 If $g_bDebugSetlog Then SetDebugLog("Wait for End Fight Scene to appear #" & $i) If _CheckPixel($aEndFightSceneAvl, $g_bCapturePixel) Then ; check for the gold ribbon in the end of battle data screen - If IsReturnHomeBattlePage() Then ClickP($aReturnHomeButton, 1, 0, "#0101") ;Click Return Home Button - ExitLoop - Else - $i += 1 + If IsReturnHomeBattlePage() Then + ClickP($aReturnHomeButton, 1, 0, "#0101") ;Click Return Home Button + ; sometimes 1st click is not closing, so try again + $iExitLoop = $i + EndIf EndIf - If $i > 10 Then ExitLoop ; if end battle window is not found in 10*200mms or 2 seconds, then give up. + If $i > 25 Or ($iExitLoop > -1 And $i > $iExitLoop) Then ExitLoop ; if end battle window is not found in 25*200mms or 5 seconds, then give up. If _Sleep($DELAYRETURNHOME5) Then Return + $i += 1 WEnd If _Sleep($DELAYRETURNHOME2) Then Return ; short wait for screen to close @@ -209,19 +212,23 @@ Func ReturnfromDropTrophies() If _Sleep(100) Then Return Next - Local $i = 0 ; Reset Loop counter + $i = 0 ; Reset Loop counter + Local $iExitLoop = -1 While 1 If $g_bDebugSetlog Then SetDebugLog("Wait for End Fight Scene to appear #" & $i) If _CheckPixel($aEndFightSceneAvl, $g_bCapturePixel) Then ; check for the gold ribbon in the end of battle data screen - If IsReturnHomeBattlePage() Then ClickP($aReturnHomeButton, 1, 0, "#0101") ;Click Return Home Button - ExitLoop + If IsReturnHomeBattlePage() Then + ClickP($aReturnHomeButton, 1, 0, "#0101") ;Click Return Home Button + ; sometimes 1st click is not closing, so check again + $iExitLoop = $i + EndIf Else $i += 1 EndIf - If $i > 10 Then ExitLoop ; if end battle window is not found in 10*200mms or 2 seconds, then give up. - If _Sleep(100) Then Return + If $i > 25 Or ($iExitLoop > -1 And $i > $iExitLoop) Then ExitLoop ; if end battle window is not found in 25*200mms or 5 seconds, then give up. + If _Sleep($DELAYRETURNHOME5) Then Return WEnd - If _Sleep(100) Then Return ; short wait for screen to close + If _Sleep($DELAYRETURNHOME2) Then Return ; short wait for screen to close $g_bFullArmy = False ; forcing check the army $g_bIsFullArmywithHeroesAndSpells = False ; forcing check the army If ReturnHomeMainPage() Then Return diff --git a/COCBot/functions/Attack/SmartZap/drillSearch.au3 b/COCBot/functions/Attack/SmartZap/drillSearch.au3 index 8fbbbc2e2..95cea36cc 100644 --- a/COCBot/functions/Attack/SmartZap/drillSearch.au3 +++ b/COCBot/functions/Attack/SmartZap/drillSearch.au3 @@ -6,7 +6,7 @@ ; Return values .: Array with data on Dark Elixir Drills found in search ; Author ........: TripleM (01-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/SmartZap/easyPreySearch.au3 b/COCBot/functions/Attack/SmartZap/easyPreySearch.au3 index 9edfdc5d3..59118cc75 100644 --- a/COCBot/functions/Attack/SmartZap/easyPreySearch.au3 +++ b/COCBot/functions/Attack/SmartZap/easyPreySearch.au3 @@ -6,7 +6,7 @@ ; Return values .: Array with data on easy targets found in search ; Author ........: TripleM (04-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/SmartZap/smartZap.au3 b/COCBot/functions/Attack/SmartZap/smartZap.au3 index efb21346f..abda76f9e 100644 --- a/COCBot/functions/Attack/SmartZap/smartZap.au3 +++ b/COCBot/functions/Attack/SmartZap/smartZap.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: LunaEclipse(03-2016) ; Modified ......: TheRevenor(11-2016), ProMac(12-2016), TheRevenor(12-2016), TripleM(01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -28,13 +28,13 @@ Func displayZapLog(Const ByRef $aDarkDrills, Const ByRef $Spells) If $Spells[0][4] + $Spells[1][4] + $Spells[2][4] = 0 Then $spellsLeftString &= "None" Else - If $Spells[2][4] > 0 Then $spellsLeftString &= $Spells[2][4] & " " & NameOfTroop($Spells[2][1], 1) + If $Spells[2][4] > 0 Then $spellsLeftString &= $Spells[2][4] & " " & GetTroopName($Spells[2][1], 2) If $Spells[2][4] > 0 And $Spells[0][4] + $Spells[1][4] > 0 Then $spellsLeftString &= ", " - If $Spells[0][4] + $Spells[1][4] > 0 Then $spellsLeftString &= $Spells[0][4] + $Spells[1][4] & " " & NameOfTroop($Spells[1][1], 1) + If $Spells[0][4] + $Spells[1][4] > 0 Then $spellsLeftString &= $Spells[0][4] + $Spells[1][4] & " " & GetTroopName($Spells[1][1], 2) EndIf ; Display the drill string if it contains any information If $drillStealableString <> "Drills Lvl/Estimated Amount left: " Then - If $g_bNoobZap = False Then + If Not $g_bNoobZap Then SetLog($drillStealableString, $COLOR_INFO) Else If $g_bDebugSmartZap = True Then SetLog($drillStealableString, $COLOR_DEBUG) @@ -188,19 +188,19 @@ Func smartZap($minDE = -1) For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][0] = $eLSpell Then If $aSpells[0][4] = 0 Then - If $g_bDebugSmartZap = True Then SetLog(NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog(GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[0][2] = $i $aSpells[0][3] = Number($g_iLSpellLevel) ; Get the Level on Attack bar $aSpells[0][4] = $g_avAttackTroops[$i][1] Else - If $g_bDebugSmartZap = True Then SetLog("Donated " & NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) + If $g_bDebugSmartZap = True Then SetLog("Donated " & GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[1][2] = $i $aSpells[1][3] = Number($g_iLSpellLevel) ; Get the Level on Attack bar $aSpells[1][4] = $g_avAttackTroops[$i][1] EndIf EndIf If $g_avAttackTroops[$i][0] = $eESpell Then - If $g_bDebugSmartZap = True Then SetLog(NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) + If $g_bDebugSmartZap = True Then SetLog(GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[2][2] = $i $aSpells[2][3] = Number($g_iESpellLevel) ; Get the Level on Attack bar $aSpells[2][4] = $g_avAttackTroops[$i][1] @@ -213,15 +213,15 @@ Func smartZap($minDE = -1) Return $performedZap Else If $aSpells[0][4] > 0 Then - SetLog(" - Number of " & NameOfTroop($aSpells[0][1], 1) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) + SetLog(" - Number of " & GetTroopName($aSpells[0][1], 2) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) EndIf If $aSpells[1][4] > 0 Then - SetLog(" - Number of Donated " & NameOfTroop($aSpells[1][1], 1) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) + SetLog(" - Number of Donated " & GetTroopName($aSpells[1][1], 2) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) EndIf EndIf If $aSpells[2][4] > 0 And $g_bEarthQuakeZap = True Then - SetLog(" - Number of " & NameOfTroop($aSpells[2][1], 1) & " (Lvl " & $aSpells[2][3] & "): " & Number($aSpells[2][4]), $COLOR_INFO) + SetLog(" - Number of " & GetTroopName($aSpells[2][1], 2) & " (Lvl " & $aSpells[2][3] & "): " & Number($aSpells[2][4]), $COLOR_INFO) Else $aSpells[2][4] = 0 ; remove the EQ , is not to use it EndIf @@ -230,7 +230,7 @@ Func smartZap($minDE = -1) ; Check to ensure there is at least the minimum amount of DE available. If (Number($g_iSearchDark) < Number($minDE)) And $g_bNoobZap = True Then SetLog("Dark Elixir is below minimum value [" & Number($g_iSmartZapMinDE) & "]!", $COLOR_INFO) - If $g_bDebugSmartZap = True Then SetLog("$g_iSearchDark|Current DE value: " & Number($g_iSearchDark), $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog("$g_iSearchDark|Current DE value: " & Number($g_iSearchDark), $COLOR_DEBUG) $bZapDrills = False ElseIf Number($g_iSearchDark) < ($g_aDrillLevelTotal[3 - $drillLvlOffset] / $g_aDrillLevelHP[3 - $drillLvlOffset] * $g_fDarkStealFactor * $g_aLSpellDmg[$aSpells[0][3] - 1] * $g_fDarkFillLevel) Then SetLog("There is less Dark Elixir(" & Number($g_iSearchDark) & ") than", $COLOR_INFO) @@ -238,10 +238,10 @@ Func smartZap($minDE = -1) SetLog("Base is not worth a Zap!", $COLOR_INFO) $bZapDrills = False Else - If $g_bDebugSmartZap = True Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark) & " | $g_iSmartZapMinDE = " & Number($g_iSmartZapMinDE), $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark) & " | $g_iSmartZapMinDE = " & Number($g_iSmartZapMinDE), $COLOR_DEBUG) EndIf - If $g_bDebugSmartZap = True Then + If $g_bDebugSmartZap Then SetLog("$g_iSmartZapExpectedDE| Expected DE value:" & Number($g_iSmartZapExpectedDE), $COLOR_DEBUG) SetLog("$g_abStopAtkNoLoot1Enable[$DB] = " & $g_abStopAtkNoLoot1Enable[$DB] & ", $g_aiStopAtkNoLoot1Time[$DB] = " & $g_aiStopAtkNoLoot1Time[$DB] & "s", $COLOR_DEBUG) EndIf @@ -283,7 +283,7 @@ Func smartZap($minDE = -1) If $aCluster <> -1 Then Local $tLastZap = 0 For $i = 0 To UBound($aCluster[3]) - 1 - If $aDarkDrills[($aCluster[3])[$i]][4] <> 0 Then + If $aDarkDrills[($aCluster[3])[$i]][4] <> 0 Then If $tLastZap = 0 Then $tLastZap = __TimerDiff($aDarkDrills[($aCluster[3])[$i]][4]) Else @@ -296,7 +296,7 @@ Func smartZap($minDE = -1) Local $sToDelete = "" Local $iToDelete = 0 For $i = 0 To UBound($aCluster[3]) - 1 - If $aDarkDrills[($aCluster[3])[$i]][4] <> 0 Then + If $aDarkDrills[($aCluster[3])[$i]][4] <> 0 Then If ReCheckDrillExist($aDarkDrills[($aCluster[3])[$i]][0], $aDarkDrills[($aCluster[3])[$i]][1]) Then $aDarkDrills[($aCluster[3])[$i]][4] = 0 Else @@ -309,7 +309,7 @@ Func smartZap($minDE = -1) EndIf EndIf Next - If $iToDelete > 1 Then + If $iToDelete > 1 Then SetLog("Removing " & $iToDelete & " destroyed drills from list.", $COLOR_ACTION) _ArrayDelete($aDarkDrills, $sToDelete) ContinueLoop @@ -444,14 +444,14 @@ Func smartZap($minDE = -1) $bZapDrills = False ExitLoop Else - If $g_bDebugSmartZap = True Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark), $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark), $COLOR_DEBUG) EndIf ; Check to make sure we actually zapped - If $skippedZap = False Then - If $g_bDebugSmartZap = True Then SetLog("$oldSearchDark = [" & Number($oldSearchDark) & "] - $g_iSearchDark = [" & Number($g_iSearchDark) & "]", $COLOR_DEBUG) + If Not $skippedZap Then + If $g_bDebugSmartZap Then SetLog("$oldSearchDark = [" & Number($oldSearchDark) & "] - $g_iSearchDark = [" & Number($g_iSearchDark) & "]", $COLOR_DEBUG) $strikeGain = Number($oldSearchDark - $g_iSearchDark) - If $g_bDebugSmartZap = True Then SetLog("$strikeGain = " & Number($strikeGain), $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog("$strikeGain = " & Number($strikeGain), $COLOR_DEBUG) $expectedDE = -1 @@ -479,7 +479,7 @@ Func smartZap($minDE = -1) EndIf EndIf - If $g_bDebugSmartZap = True Then SetLog("$expectedDE = " & Number($expectedDE), $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog("$expectedDE = " & Number($expectedDE), $COLOR_DEBUG) ; If change in DE is less than expected, remove the Drill from list. else, subtract change from assumed total If $strikeGain < $expectedDE And $expectedDE <> -1 Then @@ -536,7 +536,7 @@ Func smartZap($minDE = -1) If $iTroops > 0 Then For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][0] = $eLSpell Then - If $g_bDebugSmartZap = True Then SetLog("Donated " & NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) + If $g_bDebugSmartZap Then SetLog("Donated " & GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[1][2] = $i $aSpells[1][3] = Number($g_iLSpellLevel) ; Get the Level on Attack bar $aSpells[1][4] = $g_avAttackTroops[$i][1] @@ -544,7 +544,7 @@ Func smartZap($minDE = -1) Next EndIf If $aSpells[1][4] > 0 Then - SetLog("Woohoo, found a donated " & NameOfTroop($aSpells[1][1], 0) & " (Lvl " & $aSpells[1][3] & ").", $COLOR_INFO) + SetLog("Woohoo, found a donated " & GetTroopName($aSpells[1][1]) & " (Lvl " & $aSpells[1][3] & ").", $COLOR_INFO) EndIf EndIf @@ -566,10 +566,10 @@ Func smartZap($minDE = -1) Return $performedZap Else If $aSpells[0][4] > 0 Then - SetLog(" - Number of " & NameOfTroop($aSpells[0][1], 1) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) + SetLog(" - Number of " & GetTroopName($aSpells[0][1], 2) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) EndIf If $aSpells[1][4] > 0 Then - SetLog(" - Number of Donated " & NameOfTroop($aSpells[1][1], 1) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) + SetLog(" - Number of Donated " & GetTroopName($aSpells[1][1], 2) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) EndIf EndIf @@ -626,13 +626,13 @@ Func zapBuilding(ByRef $Spells, $x, $y) EndIf Next If $Spells[$iSpell][2] > -1 Then - SetLog("Dropping " & $Spells[$iSpell][0] & " " & String(NameOfTroop($Spells[$iSpell][1], 0)), $COLOR_ACTION) + SetLog("Dropping " & $Spells[$iSpell][0] & " " & String(GetTroopName($Spells[$iSpell][1])), $COLOR_ACTION) SelectDropTroop($Spells[$iSpell][2]) If _Sleep($DELAYCASTSPELL1) Then Return If IsAttackPage() Then Click($x, $y, 1, 0, "#0029") $Spells[$iSpell][4] -= 1 Else - If $g_bDebugSmartZap = True Then SetLog("No " & String(NameOfTroop($Spells[$iSpell][1], 0)) & " Found", $COLOR_DEBUG) + If $g_bDebugSmartZap = True Then SetLog("No " & String(GetTroopName($Spells[$iSpell][1])) & " Found", $COLOR_DEBUG) EndIf Return $Spells[$iSpell][1] EndFunc ;==>zapBuilding diff --git a/COCBot/functions/Attack/Troops/CheckHeroesHealth.au3 b/COCBot/functions/Attack/Troops/CheckHeroesHealth.au3 index aa98bf822..c5ab7615f 100644 --- a/COCBot/functions/Attack/Troops/CheckHeroesHealth.au3 +++ b/COCBot/functions/Attack/Troops/CheckHeroesHealth.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: MonkeyHunter(03-2017), Fliegerfaust (11-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -24,7 +24,7 @@ Func CheckHeroesHealth() Local $TempQueenSlot = $g_iQueenSlot Local $TempWardenSlot = $g_iWardenSlot If $g_iKingSlot >= 11 Or $g_iQueenSlot >= 11 Or $g_iWardenSlot >= 11 Then - If $g_bDraggedAttackBar = False Then DragAttackBar($g_iTotalAttackSlot, False) ; drag forward + If Not $g_bDraggedAttackBar Then DragAttackBar($g_iTotalAttackSlot, False) ; drag forward ElseIf $g_iKingSlot >= 0 And $g_iQueenSlot >= 0 And $g_iWardenSlot >= 0 And ($g_iKingSlot < $g_iTotalAttackSlot - 10 Or $g_iQueenSlot < $g_iTotalAttackSlot - 10 Or $g_iWardenSlot < $g_iTotalAttackSlot - 10) Then If $g_bDraggedAttackBar Then DragAttackBar($g_iTotalAttackSlot, True) ; return drag EndIf @@ -40,14 +40,15 @@ Func CheckHeroesHealth() EndIf If $g_iActivateQueen = 0 Or $g_iActivateQueen = 2 Then - If $g_bCheckQueenPower Then + If $g_bCheckQueenPower And ($g_aHeroesTimerActivation[$eHeroArcherQueen] = 0 Or __TimerDiff($g_aHeroesTimerActivation[$eHeroArcherQueen]) > $DELAYCHECKHEROESHEALTH) Then Local $aQueenHealthCopy = $aQueenHealth ; copy ScreenCoordinates array to modify locally with dynamic X coordinate from slotposition - $aQueenHealthCopy[0] = GetXPosOfArmySlot($TempQueenSlot, 68) + $aQueenHealthCopy[4] ; Slot11+ + Local $aSlotPosition = GetSlotPosition($TempQueenSlot) + $aQueenHealthCopy[0] = $aSlotPosition[0] + $aQueenHealthCopy[4] ; Slot11+ Local $QueenPixelColor = _GetPixelColor($aQueenHealthCopy[0], $aQueenHealthCopy[1], $g_bCapturePixel) If $g_bDebugSetlog Then SetDebugLog(" Queen _GetPixelColor(" & $aQueenHealthCopy[0] & "," & $aQueenHealthCopy[1] & "): " & $QueenPixelColor, $COLOR_DEBUG) If Not _CheckPixel2($aQueenHealthCopy, $QueenPixelColor, "Red+Blue") Then SetLog("Queen is getting weak, Activating Queen's ability", $COLOR_INFO) - SelectDropTroop($TempQueenSlot) ; Slot11+ + SelectDropTroop($TempQueenSlot, 2, Default, False) ; Slot11+ $g_iCSVLastTroopPositionDropTroopFromINI = $g_iQueenSlot $g_bCheckQueenPower = False EndIf @@ -60,7 +61,7 @@ Func CheckHeroesHealth() EndIf If (Int($g_iDelayActivateQueen) / 1000) <= $aDisplayTime[$eHeroArcherQueen] Then SetLog("Activating Queen's ability after " & $aDisplayTime[$eHeroArcherQueen] & "'s", $COLOR_INFO) - SelectDropTroop($TempQueenSlot) ; Slot11+ + SelectDropTroop($TempQueenSlot, 2, Default, False) ; Slot11+ $g_iCSVLastTroopPositionDropTroopFromINI = $g_iQueenSlot $g_bCheckQueenPower = False ; Reset check power flag $g_aHeroesTimerActivation[$eHeroArcherQueen] = 0 ; Reset Timer @@ -74,14 +75,15 @@ Func CheckHeroesHealth() EndIf If $g_iActivateKing = 0 Or $g_iActivateKing = 2 Then - If $g_bCheckKingPower Then + If $g_bCheckKingPower And ($g_aHeroesTimerActivation[$eHeroBarbarianKing] = 0 Or __TimerDiff($g_aHeroesTimerActivation[$eHeroBarbarianKing]) > $DELAYCHECKHEROESHEALTH) Then Local $aKingHealthCopy = $aKingHealth ; copy ScreenCoordinates array to modify locally with dynamic X coordinate from slotposition - $aKingHealthCopy[0] = GetXPosOfArmySlot($TempKingSlot, 68) + $aKingHealthCopy[4] ; Slot11+ + Local $aSlotPosition = GetSlotPosition($TempKingSlot) + $aKingHealthCopy[0] = $aSlotPosition[0] + $aKingHealthCopy[4] ; Slot11+ Local $KingPixelColor = _GetPixelColor($aKingHealthCopy[0], $aKingHealthCopy[1], $g_bCapturePixel) - If $g_bDebugSetlog Then SetDebugLog(" King _GetPixelColor(" & $aKingHealthCopy[0] & "," & $aKingHealthCopy[1] & "): " & $KingPixelColor, $COLOR_DEBUG) + If $g_bDebugSetlog Then SetDebugLog("King _GetPixelColor(" & $aKingHealthCopy[0] & "," & $aKingHealthCopy[1] & "): " & $KingPixelColor, $COLOR_DEBUG) If Not _CheckPixel2($aKingHealthCopy, $KingPixelColor, "Red+Blue") Then SetLog("King is getting weak, Activating King's ability", $COLOR_INFO) - SelectDropTroop($TempKingSlot) ; Slot11+ + SelectDropTroop($TempKingSlot, 2, Default, False) ; Slot11+ $g_iCSVLastTroopPositionDropTroopFromINI = $g_iKingSlot $g_bCheckKingPower = False EndIf @@ -94,7 +96,7 @@ Func CheckHeroesHealth() EndIf If (Int($g_iDelayActivateKing) / 1000) <= $aDisplayTime[$eHeroBarbarianKing] Then SetLog("Activating King's ability after " & $aDisplayTime[$eHeroBarbarianKing] & "'s", $COLOR_INFO) - SelectDropTroop($TempKingSlot) ; Slot11+ + SelectDropTroop($TempKingSlot, 2, Default, False) ; Slot11+ $g_iCSVLastTroopPositionDropTroopFromINI = $g_iKingSlot $g_bCheckKingPower = False ; Reset check power flag $g_aHeroesTimerActivation[$eHeroBarbarianKing] = 0 ; Reset Timer @@ -107,15 +109,16 @@ Func CheckHeroesHealth() If _Sleep($DELAYRESPOND) Then Return ; improve pause button response EndIf - If $g_iActivateWarden = 0 Or $g_iActivateWarden = 2 Then + If $g_iActivateWarden = 0 Or $g_iActivateWarden = 2 And ($g_aHeroesTimerActivation[$eHeroGrandWarden] = 0 Or __TimerDiff($g_aHeroesTimerActivation[$eHeroGrandWarden]) > $DELAYCHECKHEROESHEALTH) Then If $g_bCheckWardenPower Then Local $aWardenHealthCopy = $aWardenHealth - $aWardenHealthCopy[0] = GetXPosOfArmySlot($TempWardenSlot, 68) + $aWardenHealthCopy[4] ; Slot11+ + Local $aSlotPosition = GetSlotPosition($TempWardenSlot) + $aWardenHealthCopy[0] = $aSlotPosition[0] + $aWardenHealthCopy[4] ; Slot11+ Local $WardenPixelColor = _GetPixelColor($aWardenHealthCopy[0], $aWardenHealthCopy[1], $g_bCapturePixel) If $g_bDebugSetlog Then SetDebugLog(" Grand Warden _GetPixelColor(" & $aWardenHealthCopy[0] & "," & $aWardenHealthCopy[1] & "): " & $WardenPixelColor, $COLOR_DEBUG) If Not _CheckPixel2($aWardenHealthCopy, $WardenPixelColor, "Red+Blue") Then SetLog("Grand Warden is getting weak, Activating Warden's ability", $COLOR_INFO) - SelectDropTroop($TempWardenSlot) ; Slot11+ + SelectDropTroop($TempWardenSlot, 2, Default, False) ; Slot11+ $g_iCSVLastTroopPositionDropTroopFromINI = $g_iWardenSlot $g_bCheckWardenPower = False EndIf @@ -128,7 +131,7 @@ Func CheckHeroesHealth() EndIf If (Int($g_iDelayActivateWarden) / 1000) <= $aDisplayTime[$eHeroGrandWarden] Then SetLog("Activating Warden's ability after " & $aDisplayTime[$eHeroGrandWarden] & "'s", $COLOR_INFO) - SelectDropTroop($TempWardenSlot) ; Slot11+ + SelectDropTroop($TempWardenSlot, 2, Default, False) ; Slot11+ $g_iCSVLastTroopPositionDropTroopFromINI = $g_iWardenSlot $g_bCheckWardenPower = False ; Reset check power flag $g_aHeroesTimerActivation[$eHeroGrandWarden] = 0 ; Reset Timer diff --git a/COCBot/functions/Attack/Troops/DropOnEdge.au3 b/COCBot/functions/Attack/Troops/DropOnEdge.au3 index 43d8064e8..79b0efe6f 100644 --- a/COCBot/functions/Attack/Troops/DropOnEdge.au3 +++ b/COCBot/functions/Attack/Troops/DropOnEdge.au3 @@ -12,7 +12,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Troops/DropOnEdges.au3 b/COCBot/functions/Attack/Troops/DropOnEdges.au3 index 17771fcd5..a12ebaf8c 100644 --- a/COCBot/functions/Attack/Troops/DropOnEdges.au3 +++ b/COCBot/functions/Attack/Troops/DropOnEdges.au3 @@ -10,7 +10,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Troops/DropOrderTroops.au3 b/COCBot/functions/Attack/Troops/DropOrderTroops.au3 index 923f86f89..065b27ba4 100644 --- a/COCBot/functions/Attack/Troops/DropOrderTroops.au3 +++ b/COCBot/functions/Attack/Troops/DropOrderTroops.au3 @@ -53,8 +53,10 @@ Func MatchTroopDropName($Num) Case 19 Return $eBowl Case 20 - Return "CC" + Return $eIceG Case 21 + Return "CC" + Case 22 Return "HEROES" EndSwitch EndFunc ;==>MatchTroopDropName @@ -134,16 +136,18 @@ Func MatchSlotsPerEdge($Num) Return 2 Case 19 ;$eBowl Return 0 - Case 20 ;CC + Case 20 ;$eIceG + Return 2 + Case 21 ;CC Return 1 - Case 21 ;HEROES + Case 22 ;HEROES Return 1 EndSwitch EndFunc ;==>MatchSlotsPerEdge Func MatchSidesDrop($Num) Switch _GUICtrlComboBox_GetCurSel($g_ahCmbDropOrder[$Num]) - Case 0 To 19 ;$eBarb to $eBowl + Case 0 To 20 ;$eBarb to $eIceG If $g_aiAttackStdDropSides[$g_iMatchMode] = 0 Then Return 1 If $g_aiAttackStdDropSides[$g_iMatchMode] = 1 Then Return 2 If $g_aiAttackStdDropSides[$g_iMatchMode] = 2 Then Return 3 @@ -151,9 +155,9 @@ Func MatchSidesDrop($Num) If $g_aiAttackStdDropSides[$g_iMatchMode] = 4 Then Return 4 If $g_aiAttackStdDropSides[$g_iMatchMode] = 5 Then Return 1 If $g_aiAttackStdDropSides[$g_iMatchMode] = 6 Then Return 1 - Case 20 - Return 1 ;CC Case 21 + Return 1 ;CC + Case 22 Return 1 ;HEROES EndSwitch EndFunc ;==>MatchSidesDrop diff --git a/COCBot/functions/Attack/Troops/GetSlotIndexFromXPos.au3 b/COCBot/functions/Attack/Troops/GetSlotIndexFromXPos.au3 index 9316eb170..defd618b2 100644 --- a/COCBot/functions/Attack/Troops/GetSlotIndexFromXPos.au3 +++ b/COCBot/functions/Attack/Troops/GetSlotIndexFromXPos.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Troops/GetXPosOfArmySlot.au3 b/COCBot/functions/Attack/Troops/GetXPosOfArmySlot.au3 deleted file mode 100644 index 95efbbf07..000000000 --- a/COCBot/functions/Attack/Troops/GetXPosOfArmySlot.au3 +++ /dev/null @@ -1,56 +0,0 @@ -; #FUNCTION# ==================================================================================================================== -; Name ..........: GetXPosOfArmySlot -; Description ...: -; Syntax ........: GetXPosOfArmySlot($slotNumber, $xOffsetFor11Slot) -; Parameters ....: $slotNumber - a string value. -; $xOffsetFor11Slot - an unknown value. -; Return values .: None -; Author ........: -; Modified ......: Promac(12-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 -; MyBot is distributed under the terms of the GNU GPL -; Related .......: -; Link ..........: https://github.com/MyBotRun/MyBot/wiki -; Example .......: No -; =============================================================================================================================== - -Func GetXPosOfArmySlot($slotNumber, $xOffsetFor11Slot) - - If $slotNumber < 0 Or $slotNumber + 1 > UBound($g_avAttackTroops) Then - ; invalid slot - Return 0 - EndIf - - ; use x-cord from $g_avAttackTroops - Return $g_avAttackTroops[$slotNumber][2] - - #cs - Local $CheckSlot12, $SlotPixelColorTemp, $SlotPixelColor1 - - $xOffsetFor11Slot -= 8 - - Local $SlotComp = ($slotNumber = 7 ? 1 : 0) - - If $slotNumber = $g_iKingSlot Or $slotNumber = $g_iQueenSlot Or $slotNumber = $g_iWardenSlot Then $xOffsetFor11Slot += 8 - - If $g_bDraggedAttackBar Then Return $xOffsetFor11Slot + $SlotComp + ($slotNumber * 72) + 14 ; Slot11+ - - ; check Dark color on slot 0 to verify if exists > 11 slots - ; $SlotPixelColor = _ColorCheck(_GetPixelColor(17, 580 + $g_iBottomOffsetY, True), Hex(0x07202A, 6), 20) - $CheckSlot12 = _ColorCheck(_GetPixelColor(17, 643, True), Hex(0x478AC6, 6), 15) Or _ ; Slot Filled / Background Blue / More than 11 Slots - _ColorCheck(_GetPixelColor(17, 643, True), Hex(0x434343, 6), 10) ; Slot deployed / Gray / More than 11 Slots - - - If $g_bDebugSetlog Then - SetDebugLog(" Slot 0 _ColorCheck 0x478AC6 at (17," & 643 & "): " & $CheckSlot12, $COLOR_DEBUG) ;Debug - $SlotPixelColorTemp = _GetPixelColor(17, 643, $g_bCapturePixel) - SetDebugLog(" Slot 0 _GetPixelColo(17," & 643 & "): " & $SlotPixelColorTemp, $COLOR_DEBUG) ;Debug - EndIf - - If Not $CheckSlot12 Then - Return $xOffsetFor11Slot + $SlotComp + ($slotNumber * 72) - Else - Return $xOffsetFor11Slot + $SlotComp + ($slotNumber * 72) - 13 - EndIf - #ce -EndFunc ;==>GetXPosOfArmySlot diff --git a/COCBot/functions/Attack/Troops/LaunchTroop.au3 b/COCBot/functions/Attack/Troops/LaunchTroop.au3 index 93f83d2ea..26d0babc3 100644 --- a/COCBot/functions/Attack/Troops/LaunchTroop.au3 +++ b/COCBot/functions/Attack/Troops/LaunchTroop.au3 @@ -11,7 +11,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -26,9 +26,7 @@ Func LaunchTroop($troopKind, $nbSides, $waveNb, $maxWaveNb, $slotsPerEdge = 0) If $g_avAttackTroops[$i][1] < 1 Then Return False $troop = $i $troopNb = Ceiling($g_avAttackTroops[$i][1] / $maxWaveNb) - Local $plural = 0 - If $troopNb > 1 Then $plural = 1 - $name = NameOfTroop($troopKind, $plural) + $name = GetTroopName($troopKind, $troopNb) EndIf Next @@ -57,44 +55,38 @@ Func LaunchTroop2($listInfoDeploy, $iCC, $iKing, $iQueen, $iWarden) If ($g_abAttackStdSmartAttack[$g_iMatchMode]) Then For $i = 0 To UBound($listInfoDeploy) - 1 - Local $troop = -1 - Local $troopNb = 0 - Local $name = "" - Local $troopKind = $listInfoDeploy[$i][0] - Local $nbSides = $listInfoDeploy[$i][1] - Local $waveNb = $listInfoDeploy[$i][2] - Local $maxWaveNb = $listInfoDeploy[$i][3] - Local $slotsPerEdge = $listInfoDeploy[$i][4] - If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": USE " & $troopKind & " SIDES " & $nbSides & " WAVE " & $waveNb & " XWAVE " & $maxWaveNb & " SLOTXEDGE " & $slotsPerEdge, $COLOR_DEBUG) - If (IsNumber($troopKind)) Then - For $j = 0 To UBound($g_avAttackTroops) - 1 ; identify the position of this kind of troop - If $g_avAttackTroops[$j][0] = $troopKind Then - $troop = $j - $troopNb = Ceiling($g_avAttackTroops[$j][1] / $maxWaveNb) - Local $plural = 0 - If $troopNb > 1 Then $plural = 1 - $name = NameOfTroop($troopKind, $plural) - EndIf - Next + Local $iFoundTroopAt = -1, $iTroopAmount = 0, $sTroopName + Local $vTroopIndex = $listInfoDeploy[$i][0] + Local $iNumberSides = $listInfoDeploy[$i][1] + Local $iNumberWaves = $listInfoDeploy[$i][2] + Local $iMaxNumberWaves = $listInfoDeploy[$i][3] + Local $iSlotsPerEdge = $listInfoDeploy[$i][4] + If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": Use: " & $vTroopIndex & "|Sides: " & $iNumberSides & "|Wave: " & $iNumberWaves & "|Max Wavess: " & $iMaxNumberWaves & "|Slots per Edge " & $iSlotsPerEdge, $COLOR_DEBUG) + If IsNumber($vTroopIndex) Then + $iFoundTroopAt = _ArraySearch($g_avAttackTroops, $vTroopIndex, 0, 0, 0, 0, 1, 0) + If $iFoundTroopAt <> -1 Then + $iTroopAmount = Ceiling($g_avAttackTroops[$iFoundTroopAt][1] / $iMaxNumberWaves) + $sTroopName = GetTroopName($vTroopIndex, $iTroopAmount) + EndIf EndIf - If ($troop <> -1 And $troopNb > 0) Or IsString($troopKind) Then + If ($iFoundTroopAt <> -1 And $iTroopAmount > 0) Or IsString($vTroopIndex) Then Local $listInfoDeployTroopPixel - If (UBound($listListInfoDeployTroopPixel) < $waveNb) Then - ReDim $listListInfoDeployTroopPixel[$waveNb] + If (UBound($listListInfoDeployTroopPixel) < $iNumberWaves) Then + ReDim $listListInfoDeployTroopPixel[$iNumberWaves] Local $newListInfoDeployTroopPixel[0] - $listListInfoDeployTroopPixel[$waveNb - 1] = $newListInfoDeployTroopPixel + $listListInfoDeployTroopPixel[$iNumberWaves - 1] = $newListInfoDeployTroopPixel EndIf - $listInfoDeployTroopPixel = $listListInfoDeployTroopPixel[$waveNb - 1] + $listInfoDeployTroopPixel = $listListInfoDeployTroopPixel[$iNumberWaves - 1] ReDim $listInfoDeployTroopPixel[UBound($listInfoDeployTroopPixel) + 1] - If (IsString($troopKind)) Then - Local $arrCCorHeroes[1] = [$troopKind] + If (IsString($vTroopIndex)) Then + Local $arrCCorHeroes[1] = [$vTroopIndex] $listInfoDeployTroopPixel[UBound($listInfoDeployTroopPixel) - 1] = $arrCCorHeroes Else - Local $infoDropTroop = DropTroop2($troop, $nbSides, $troopNb, $slotsPerEdge, $name) + Local $infoDropTroop = DropTroop2($iFoundTroopAt, $iNumberSides, $iTroopAmount, $iSlotsPerEdge, $sTroopName) $listInfoDeployTroopPixel[UBound($listInfoDeployTroopPixel) - 1] = $infoDropTroop EndIf - $listListInfoDeployTroopPixel[$waveNb - 1] = $listInfoDeployTroopPixel + $listListInfoDeployTroopPixel[$iNumberWaves - 1] = $listInfoDeployTroopPixel EndIf Next diff --git a/COCBot/functions/Attack/Troops/NameOfTroop.au3 b/COCBot/functions/Attack/Troops/NameOfTroop.au3 deleted file mode 100644 index 38f225517..000000000 --- a/COCBot/functions/Attack/Troops/NameOfTroop.au3 +++ /dev/null @@ -1,108 +0,0 @@ -; #FUNCTION# ==================================================================================================================== -; Name ..........: NameOfTroop -; Description ...: Returns the string value of the troopname in singular or plural form -; Syntax ........: NameOfTroop($iKind[, $iPlural = 0]) -; Parameters ....: $iKind - an integer value, enumerated value of the troops, like $eBarb = 0, $eArch = 1 etc. -; $iPlural - [optional] a integer value to indicate the $sTroopname returned must be in plural form. Default is 0. -; Return values .: $sTroopname -; Author ........: Unknown (2015) -; Modified ......: ZengZeng (01-2016), Hervidero (01-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 -; MyBot is distributed under the terms of the GNU GPL -; Related .......: -; Link ..........: https://github.com/MyBotRun/MyBot/wiki -; Example .......: No -; =============================================================================================================================== - -Func NameOfTroop($iKind, $iPlural = 0) - Local $sTroopname - Switch $iKind - Case $eBarb - $sTroopname = "Barbarian" - Case $eArch - $sTroopname = "Archer" - Case $eGobl - $sTroopname = "Goblin" - Case $eGiant - $sTroopname = "Giant" - Case $eWall - $sTroopname = "Wall Breaker" - Case $eWiza - $sTroopname = "Wizard" - Case $eBall - $sTroopname = "Balloon" - Case $eHeal - $sTroopname = "Healer" - Case $eDrag - $sTroopname = "Dragon" - Case $ePekk - $sTroopname = "Pekka" - Case $eBabyD - $sTroopname = "Baby Dragon" - Case $eMine - $sTroopname = "Miner" - Case $eEDrag - $sTroopname = "Electro Dragon" - Case $eMini - $sTroopname = "Minion" - Case $eHogs - $sTroopname = "Hog Rider" - Case $eValk - $sTroopname = "Valkyrie" - Case $eWitc - $sTroopname = "Witch" - Case $eGole - $sTroopname = "Golem" - Case $eLava - $sTroopname = "Lava Hound" - Case $eBowl - $sTroopname = "Bowler" - Case $eIceG - $sTroopname = "Ice Golem" - Case $eKing - $sTroopname = "King" - $iPlural = 0 ; safety reset, $sTroopname of $eKing cannot be plural - Case $eQueen - $sTroopname = "Queen" - $iPlural = 0 ; safety reset - Case $eWarden - $sTroopname = "Grand Warden" - $iPlural = 0 ; safety reset - Case $eCastle - $sTroopname = "Clan Castle" - $iPlural = 0 ; safety reset - Case $eLSpell - $sTroopname = "Lightning Spell" - Case $eHSpell - $sTroopname = "Heal Spell" - Case $eRSpell - $sTroopname = "Rage Spell" - Case $eJSpell - $sTroopname = "Jump Spell" - Case $eFSpell - $sTroopname = "Freeze Spell" - Case $eCSpell - $sTroopname = "Clone Spell" - Case $ePSpell - $sTroopname = "Poison Spell" - Case $eESpell - $sTroopname = "Earthquake Spell" - Case $eHaSpell - $sTroopname = "Haste Spell" - Case $eSkSpell - $sTroopname = "Skeleton Spell" - Case $eBtSpell - $sTroopname = "Bat Spell" - Case $eWallW - $sTroopname = "Wall Wrecker" - Case $eBattleB - $sTroopname = "Battle Blimp" - Case $eStoneS - $sTroopname = "Stone Slammer" - Case Else - Return "" ; error or unknown case - EndSwitch - If $iPlural = 1 And $iKind = $eWitc Then $sTroopname &= "e" ; adding the "e" for "witches" - If $iPlural = 1 Then $sTroopname &= "s" ; if troop is not $eKing, $eQueen, $eCastle, $eWarden add the plural "s" - Return $sTroopname -EndFunc ;==>NameOfTroop diff --git a/COCBot/functions/Attack/Troops/OldDropTroop.au3 b/COCBot/functions/Attack/Troops/OldDropTroop.au3 index b13012db6..9bec3593d 100644 --- a/COCBot/functions/Attack/Troops/OldDropTroop.au3 +++ b/COCBot/functions/Attack/Troops/OldDropTroop.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Troops/ReadTroopQuantity.au3 b/COCBot/functions/Attack/Troops/ReadTroopQuantity.au3 index 9678905cd..20f547a37 100644 --- a/COCBot/functions/Attack/Troops/ReadTroopQuantity.au3 +++ b/COCBot/functions/Attack/Troops/ReadTroopQuantity.au3 @@ -7,60 +7,54 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Func ReadTroopQuantity($Troop, $CheckSelectedSlot = False, $bNeedNewCapture = True) - Local $iAmount - Switch $CheckSelectedSlot +Func ReadTroopQuantity($iSlotNumber, $bCheckSelectedSlot = False, $bNeedNewCapture = True) + Local $iAmount, $aSlotPosition = GetSlotPosition($iSlotNumber) + Switch $bCheckSelectedSlot Case False - $iAmount = getTroopCountSmall(GetXPosOfArmySlot($Troop, 47), 640) + $iAmount = getTroopCountSmall($aSlotPosition[0], $aSlotPosition[1]) If $iAmount = "" Then - $iAmount = getTroopCountBig(GetXPosOfArmySlot($Troop, 47), 633) + $iAmount = getTroopCountBig($aSlotPosition[0], $aSlotPosition[1] - 3) EndIf Case Else - Local $rGetXPosOfArmySlot = GetXPosOfArmySlot($Troop, 47) - Local $isTheSlotSelected = IsSlotSelected($Troop, $bNeedNewCapture) + Local $isTheSlotSelected = IsSlotSelected($iSlotNumber, $bNeedNewCapture) If Not $isTheSlotSelected Then - $iAmount = Number(getTroopCountSmall($rGetXPosOfArmySlot, 640)) + $iAmount = Number(getTroopCountSmall($aSlotPosition[0], $aSlotPosition[1])) Else - $iAmount = Number(getTroopCountBig($rGetXPosOfArmySlot, 633)) + $iAmount = Number(getTroopCountBig($aSlotPosition[0], $aSlotPosition[1] - 3)) EndIf EndSwitch Return Number($iAmount) EndFunc ;==>ReadTroopQuantity -Func UpdateTroopQuantity($sTroop, $bNeedNewCapture = Default) +Func UpdateTroopQuantity($sTroopName, $bNeedNewCapture = Default) If Not $bNeedNewCapture Then $bNeedNewCapture = True If $bNeedNewCapture Then _CaptureRegion2() EndIf ; Get the integer index of the troop name specified - Local $troopName = $sTroop - Local $iTroopIndex = TroopIndexLookup($troopName) + Local $iTroopIndex = TroopIndexLookup($sTroopName) If $iTroopIndex = -1 Then - SetLog("'UpdateTroopQuantity' troop name '" & $troopName & "' is unrecognized.") + SetLog("'UpdateTroopQuantity' troop name '" & $sTroopName & "' is unrecognized.") Return EndIf - Local $troopPosition = -1 - For $i = 0 To UBound($g_avAttackTroops) - 1 - If $g_avAttackTroops[$i][0] = $iTroopIndex Then - $troopPosition = $i - ExitLoop - EndIf - Next + Local $iFoundAt = _ArraySearch($g_avAttackTroops, $iTroopIndex) + If $iFoundAt = -1 Then + SetLog("Couldn't find '" & $sTroopName & "' in $g_avAttackTroops", $COLOR_ERROR) + EndIf If Not $g_bRunState Then Return - If $troopPosition <> -1 Then - Local $iQuantity = ReadTroopQuantity($troopPosition, True, Not $bNeedNewCapture) - $g_avAttackTroops[$troopPosition][1] = $iQuantity - EndIf - Return $troopPosition ; Return Troop Position in the Array, will be the slot of Troop in Attack bar + Local $iQuantity = ReadTroopQuantity($iFoundAt, True, Not $bNeedNewCapture) + $g_avAttackTroops[$iFoundAt][1] = $iQuantity + + Return $iFoundAt ; Return Troop Position in the Array, will be the slot of Troop in Attack bar EndFunc ;==>UpdateTroopQuantity Func IsSlotSelected($iSlotIndex, $bNeedNewCapture = Default) diff --git a/COCBot/functions/Attack/Troops/SelectDropTroop.au3 b/COCBot/functions/Attack/Troops/SelectDropTroop.au3 index 46e08874f..12bf08ce8 100644 --- a/COCBot/functions/Attack/Troops/SelectDropTroop.au3 +++ b/COCBot/functions/Attack/Troops/SelectDropTroop.au3 @@ -2,18 +2,34 @@ ; #FUNCTION# ==================================================================================================================== ; Name ..........: SelectDropTroop ; Description ...: -; Syntax ........: SelectDropTroop($Troop) -; Parameters ....: $Troop - an unknown value. +; Syntax ........: SelectDropTroop($iTroopIndex) +; Parameters ....: $iTroopIndex : Index of any Troop from Barbarian to Siege Machines ; Return values .: None ; Author ........: -; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Modified ......: Fliegerfaust (12/2018) +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Func SelectDropTroop($Troop) - ; Red button 'End Battle' Check | $aIsAttackPage[4] = [56, 548 + $g_iBottomOffsetY, 0xcf0d0e, 20] ; red button "end battle" 860x780 - If IsAttackPage() Then Click(GetXPosOfArmySlot($Troop, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0111") ;860x780 +Func SelectDropTroop($iSlotIndex, $iClicks = 1, $iDelay = Default, $bCheckAttackPage = Default) + If $iDelay = Default Then $iDelay = 0 + If $bCheckAttackPage = Default Then $bCheckAttackPage = True + If Not $bCheckAttackPage Or IsAttackPage() Then ClickP(GetSlotPosition($iSlotIndex), $iClicks, $iDelay, "#0111") EndFunc ;==>SelectDropTroop + +Func GetSlotPosition($iSlotIndex, $bOCRPosition = False) + Local $aiReturnPosition[2] = [0, 0] + + If $iSlotIndex < 0 Or $iSlotIndex + 1 > UBound($g_avAttackTroops, 1) Then Return $aiReturnPosition ;Invalid Slot Index returns Click Position X: 0 And Y:0 + + If Not $bOCRPosition Then + $aiReturnPosition[0] = $g_avAttackTroops[$iSlotIndex][2] + $aiReturnPosition[1] = $g_avAttackTroops[$iSlotIndex][3] + Else + $aiReturnPosition[0] = $g_avAttackTroops[$iSlotIndex][4] + $aiReturnPosition[1] = $g_avAttackTroops[$iSlotIndex][5] + EndIf + Return $aiReturnPosition +EndFunc ;==>GetSlotPosition diff --git a/COCBot/functions/Attack/Troops/SetSleep.au3 b/COCBot/functions/Attack/Troops/SetSleep.au3 index 67b379082..50bace39b 100644 --- a/COCBot/functions/Attack/Troops/SetSleep.au3 +++ b/COCBot/functions/Attack/Troops/SetSleep.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack (06-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -45,7 +45,7 @@ EndFunc ;==>SetSleep ; Return values .: see _Sleep ; Author ........: cosote (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Attack/Troops/dropCC.au3 b/COCBot/functions/Attack/Troops/dropCC.au3 index a076417d0..f945a6d18 100644 --- a/COCBot/functions/Attack/Troops/dropCC.au3 +++ b/COCBot/functions/Attack/Troops/dropCC.au3 @@ -8,13 +8,13 @@ ; Return values .: None ; Author ........: ; Modified ......: Sardo (12-2015) KnowJack (06-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Func dropCC($x, $y, $slot) ;Drop clan castle +Func dropCC($iX, $iY, $iCCSlot) ;Drop clan castle Local $test1 = False Local $test2 = False @@ -23,7 +23,7 @@ Func dropCC($x, $y, $slot) ;Drop clan castle If ($g_iMatchMode <> $DB And $g_iMatchMode <> $LB And $g_iMatchMode <> $MA) Or $g_abAttackDropCC[$g_iMatchMode] Then $test2 = True EndIf - If $slot <> -1 And ($test1 Or $test2) Then + If $iCCSlot <> -1 And ($test1 Or $test2) Then If $g_bPlannedDropCCHoursEnable = True Then Local $hour = StringSplit(_NowTime(4), ":", $STR_NOCOUNT) If $g_abPlannedDropCCHours[$hour[0]] = False Then @@ -38,27 +38,27 @@ Func dropCC($x, $y, $slot) ;Drop clan castle If Number($g_iTroopsReceived) <> 0 Then If Number(Number($g_iTroopsDonated) / Number($g_iTroopsReceived)) >= (Number($g_iCCDonated) / Number($g_iCCReceived)) Then SetLog("Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") >= " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) - Click(GetXPosOfArmySlot($slot, 68), 595 + $g_iBottomOffsetY, 1, $DELAYDROPCC2, "#0086") + SelectDropTroop($iCCSlot) If _Sleep($DELAYDROPCC1) Then Return - AttackClick($x, $y, 1, 0, 0, "#0087") + AttackClick($iX, $iY, 1, 0, 0, "#0087") Else SetLog("No Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") < " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) EndIf Else If Number(Number($g_iTroopsDonated) / 1) >= (Number($g_iCCDonated) / Number($g_iCCReceived)) Then SetLog("Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") >= " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) - Click(GetXPosOfArmySlot($slot, 68), 595 + $g_iBottomOffsetY, 1, $DELAYDROPCC2, "#0088") + SelectDropTroop($iCCSlot) If _Sleep($DELAYDROPCC1) Then Return - AttackClick($x, $y, 1, 0, 0, "#0089") + AttackClick($iX, $iY, 1, 0, 0, "#0089") Else SetLog("No Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") < " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) EndIf EndIf Else SetLog("Dropping Siege/Clan Castle", $COLOR_INFO) - Click(GetXPosOfArmySlot($slot, 68), 595 + $g_iBottomOffsetY, 1, $DELAYDROPCC2, "#0090") + SelectDropTroop($iCCSlot) If _Sleep($DELAYDROPCC1) Then Return - AttackClick($x, $y, 1, 0, 0, "#0091") + AttackClick($iX, $iY, 1, 0, 0, "#0091") EndIf EndIf diff --git a/COCBot/functions/Attack/Troops/dropHeroes.au3 b/COCBot/functions/Attack/Troops/dropHeroes.au3 index 51c1d7ac4..83c2c52e5 100644 --- a/COCBot/functions/Attack/Troops/dropHeroes.au3 +++ b/COCBot/functions/Attack/Troops/dropHeroes.au3 @@ -10,14 +10,14 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Func dropHeroes($x, $y, $KingSlot = -1, $QueenSlot = -1, $WardenSlot = -1) ;Drops for king and queen and Grand Warden - If $g_bDebugSetlog Then SetDebugLog("dropHeroes KingSlot " & $KingSlot & " QueenSlot " & $QueenSlot & " WardenSlot " & $WardenSlot & " matchmode " & $g_iMatchMode, $COLOR_DEBUG) +Func dropHeroes($iX, $iY, $iKingSlotNumber = -1, $iQueenSlotNumber = -1, $iWardenSlotNumber = -1) ;Drops for king and queen and Grand Warden + If $g_bDebugSetlog Then SetDebugLog("dropHeroes $iKingSlotNumber " & $iKingSlotNumber & " $iQueenSlotNumber " & $iQueenSlotNumber & " $iWardenSlotNumber " & $iWardenSlotNumber & " matchmode " & $g_iMatchMode, $COLOR_DEBUG) If _Sleep($DELAYDROPHEROES1) Then Return Local $bDropKing = False Local $bDropQueen = False @@ -32,9 +32,9 @@ Func dropHeroes($x, $y, $KingSlot = -1, $QueenSlot = -1, $WardenSlot = -1) ;Drop EndIf ;use hero if slot (detected ) and ( (matchmode <>DB and <>LB ) or (check user GUI settings) ) - If $KingSlot <> -1 And (($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroKing) = $eHeroKing) Then $bDropKing = True - If $QueenSlot <> -1 And (($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroQueen) = $eHeroQueen) Then $bDropQueen = True - If $WardenSlot <> -1 And (($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroWarden) = $eHeroWarden) Then $bDropWarden = True + If $iKingSlotNumber <> -1 And (($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroKing) = $eHeroKing) Then $bDropKing = True + If $iQueenSlotNumber <> -1 And (($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroQueen) = $eHeroQueen) Then $bDropQueen = True + If $iWardenSlotNumber <> -1 And (($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroWarden) = $eHeroWarden) Then $bDropWarden = True If $g_bDebugSetlog Then SetDebugLog("drop KING = " & $bDropKing, $COLOR_DEBUG) If $g_bDebugSetlog Then SetDebugLog("drop QUEEN = " & $bDropQueen, $COLOR_DEBUG) @@ -42,16 +42,16 @@ Func dropHeroes($x, $y, $KingSlot = -1, $QueenSlot = -1, $WardenSlot = -1) ;Drop If $bDropKing Then SetLog("Dropping King", $COLOR_INFO) - Click(GetXPosOfArmySlot($KingSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0092") ;Select King 860x780 + SelectDropTroop($iKingSlotNumber, 1, Default, False) If _Sleep($DELAYDROPHEROES2) Then Return - AttackClick($x, $y, 1, 0, 0, "#0093") + AttackClick($iX, $iY, 1, 0, 0, "#0093") If Not $g_bDropKing Then ; check global flag, only begin hero health check on 1st hero drop as flag is reset to false after activation $g_bCheckKingPower = True Else SetDebugLog("King dropped 2nd time, Check Power flag not changed") ; do nothing as hero already dropped EndIf $g_bDropKing = True ; Set global flag hero dropped - If $g_iActivateKing = 1 Or $g_iActivateKing = 2 Then $g_aHeroesTimerActivation[$eHeroBarbarianKing] = __TimerInit() ; initialize fixed activation timer + $g_aHeroesTimerActivation[$eHeroBarbarianKing] = __TimerInit() ; initialize fixed activation timer If _Sleep($DELAYDROPHEROES1) Then Return EndIf @@ -59,16 +59,16 @@ Func dropHeroes($x, $y, $KingSlot = -1, $QueenSlot = -1, $WardenSlot = -1) ;Drop If $bDropQueen Then SetLog("Dropping Queen", $COLOR_INFO) - Click(GetXPosOfArmySlot($QueenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0094") ;Select Queen 860x780 + SelectDropTroop($iQueenSlotNumber, 1, Default, False) If _Sleep($DELAYDROPHEROES2) Then Return - AttackClick($x, $y, 1, 0, 0, "#0095") + AttackClick($iX, $iY, 1, 0, 0, "#0095") If Not $g_bDropQueen Then ; check global flag, only begin hero health check on 1st hero drop as flag is reset to false after activation $g_bCheckQueenPower = True Else SetDebugLog("Queen dropped 2nd time, Check Power flag not changed") ; do nothing as hero already dropped EndIf $g_bDropQueen = True ; Set global flag hero dropped - If $g_iActivateQueen = 1 Or $g_iActivateQueen = 2 Then $g_aHeroesTimerActivation[$eHeroArcherQueen] = __TimerInit() ; initialize fixed activation timer + $g_aHeroesTimerActivation[$eHeroArcherQueen] = __TimerInit() ; initialize fixed activation timer If _Sleep($DELAYDROPHEROES1) Then Return EndIf @@ -76,16 +76,16 @@ Func dropHeroes($x, $y, $KingSlot = -1, $QueenSlot = -1, $WardenSlot = -1) ;Drop If $bDropWarden Then SetLog("Dropping Grand Warden", $COLOR_INFO) - Click(GetXPosOfArmySlot($WardenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#X998") ;Select Warden 860x780 + SelectDropTroop($iWardenSlotNumber, 1, Default, False) If _Sleep($DELAYDROPHEROES2) Then Return - AttackClick($x, $y, 1, 0, 0, "#x999") + AttackClick($iX, $iY, 1, 0, 0, "#x999") If Not $g_bDropWarden Then ; check global flag, only begin hero health check on 1st hero drop as flag is reset to false after activation $g_bCheckWardenPower = True Else SetDebugLog("Warden dropped 2nd time, Check Power flag not changed") ; do nothing as hero already dropped EndIf $g_bDropWarden = True ; Set global flag hero dropped - If $g_iActivateWarden = 1 Or $g_iActivateWarden = 2 Then $g_aHeroesTimerActivation[$eHeroGrandWarden] = __TimerInit() ; initialize fixed activation timer + $g_aHeroesTimerActivation[$eHeroGrandWarden] = __TimerInit() ; initialize fixed activation timer If _Sleep($DELAYDROPHEROES1) Then Return EndIf diff --git a/COCBot/functions/Attack/unbreakable.au3 b/COCBot/functions/Attack/unbreakable.au3 index a5a50376b..25cea116c 100644 --- a/COCBot/functions/Attack/unbreakable.au3 +++ b/COCBot/functions/Attack/unbreakable.au3 @@ -6,7 +6,7 @@ ; Return values .: False if regular farming is needed to refill storage ; Author ........: KnowJack (07-2015) ; Modified ......: Sardo (08-2015), MonkeyHunter (12-2015)(6-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -78,13 +78,13 @@ Func Unbreakable() While Number($iTrophyCurrent) > Number($g_iDropTrophyMax) ; verify that trophy dropped and didn't fail due misc errors searching If $g_bDebugSetlog Then SetDebugLog("Drop Trophy Loop #" & $iCount + 1, $COLOR_DEBUG) DropTrophy() - If _Sleep($DELAYUNBREAKABLE2) Then Return ; wait for home screen + If _Sleep($DELAYUNBREAKABLE2) Then Return True; wait for home screen ClickP($aAway, 1, 0, "#0395") ;clear screen - If _Sleep($DELAYUNBREAKABLE1) Then Return ; wait for home screen + If _Sleep($DELAYUNBREAKABLE1) Then Return True; wait for home screen $iTrophyCurrent = getTrophyMainScreen($aTrophies[0], $aTrophies[1]) If ($iCount > 2) And (Number($iTrophyCurrent) > Number($g_iDropTrophyMax)) Then ; If unable to drop trophy after a couple of tries, restart at main loop. SetLog("Unable to drop trophy, trying again", $COLOR_ERROR) - If _Sleep(500) Then Return + If _Sleep(500) Then Return True Return True EndIf $iCount += 1 diff --git a/COCBot/functions/Config/DelayTimes.au3 b/COCBot/functions/Config/DelayTimes.au3 index 6c0d72db6..7f51e23dc 100644 --- a/COCBot/functions/Config/DelayTimes.au3 +++ b/COCBot/functions/Config/DelayTimes.au3 @@ -4,7 +4,7 @@ ; Syntax ........: $iDelayXXXXXXYYY : XXXX = function name using the delay, YYY = delay value or position of delay in file ; Author ........: Sardo (08-2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -56,6 +56,7 @@ Global Const $DELAYDROPCC2 = 500 ;click ;dropHeroes Global Const $DELAYDROPHEROES1 = 300 Global Const $DELAYDROPHEROES2 = 500 +Global Const $DELAYCHECKHEROESHEALTH = 4000 ;GoldElixirChange Global Const $DELAYGOLDELIXIRCHANGE1 = 500 @@ -231,7 +232,7 @@ Global Const $DELAYGETTHLEVEL3 = 200 ; click ;Laboratory -Global Const $DELAYLABORATORY1 = 750 +Global Const $DELAYLABORATORY1 = 1000 Global Const $DELAYLABORATORY2 = 200 Global Const $DELAYLABORATORY3 = 1000 Global Const $DELAYLABORATORY4 = 200 ; click @@ -372,6 +373,7 @@ Global Const $DELAYWAITATTACK1 = 60000 Global Const $DELAYWAITATTACK2 = 300000 ;Close Open +Global Const $DELAYCLOSEOPEN500 = 500 Global Const $DELAYCLOSEOPEN1000 = 1000 Global Const $DELAYCLOSEOPEN1500 = 1500 Global Const $DELAYCLOSEOPEN2000 = 2000 diff --git a/COCBot/functions/Config/ImageDirectories.au3 b/COCBot/functions/Config/ImageDirectories.au3 index 5ad4ea2dd..56644d8f8 100644 --- a/COCBot/functions/Config/ImageDirectories.au3 +++ b/COCBot/functions/Config/ImageDirectories.au3 @@ -4,7 +4,7 @@ ; Syntax ........: $g_sImgxxx = @ScriptDir & "\imgxml\xxx\" ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -48,6 +48,7 @@ Global $g_sImgBoatBB = @ScriptDir & "\imgxml\Boat\BoatBuilderBase_0_89.xml" Global $g_sImgZoomOutDirBB = @ScriptDir & "\imgxml\village\BuilderBase\" Global $g_sImgStartCTBoost = @ScriptDir & "\imgxml\Resources\BuildersBase\ClockTower\ClockTowerAvailable*.xml" Global $g_sImgCleanBBYard = @ScriptDir & "\imgxml\Resources\ObstaclesBB" +Global $g_sImgIsOnBB = @ScriptDir & "\imgxml\village\Page\BuilderBase*" #EndRegion #Region DonateCC @@ -86,6 +87,7 @@ Global $g_sImgAutoUpgradeNewBldgNo = @ScriptDir & "\imgxml\Resources\BuildersBas Global $g_sImgTrainTroops = @ScriptDir & "\imgxml\Train\Train_Train\" Global $g_sImgTrainSpells = @ScriptDir & "\imgxml\Train\Spell_Train\" Global $g_sImgArmyOverviewSpells = @ScriptDir & "\imgxml\ArmyOverview\Spells" ; @ScriptDir & "\imgxml\ArmySpells" +Global $g_sImgRequestCCButton = @ScriptDir & "\imgxml\ArmyOverview\RequestCC" #EndRegion #Region Attack @@ -112,6 +114,7 @@ Global $g_sImgWeakBaseBuildingsAirDefenseDir = @ScriptDir & "\imgxml\Buildings\A Global $g_sImgSearchDrill = @ScriptDir & "\imgxml\Storages\Drills" Global $g_sImgSearchDrillLevel = @ScriptDir & "\imgxml\Storages\Drills\Level" Global $g_sImgEasyBuildings = @ScriptDir & "\imgxml\easybuildings" +Global $g_sImgRetrySearchButton = @ScriptDir & "\imgxml\Resources\Clouds\RetryButton*" #EndRegion #Region SwitchAcc diff --git a/COCBot/functions/Config/ScreenCoordinates.au3 b/COCBot/functions/Config/ScreenCoordinates.au3 index 2a31e8844..477b365c3 100644 --- a/COCBot/functions/Config/ScreenCoordinates.au3 +++ b/COCBot/functions/Config/ScreenCoordinates.au3 @@ -4,7 +4,7 @@ ; Syntax ........: $aXXXXX[Y] : XXXX is name of point or item being checked, Y = 2 for position only, or 4 when color/tolerance value included ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -122,11 +122,13 @@ Global $aWonThreeStarAtkRprt[4] = [534, 180 + $g_iMidOffsetY, 0xC8CAC7, 30] ; Ce ; pixel color: location information BS 850MB (Reg GFX), BS 500MB (Med GFX) : location Global $NextBtn[4] = [780, 546 + $g_iBottomOffsetY, 0xD34300, 20] ; Next Button -Global $a12OrMoreSlots[4] = [16, 670, 0x5C93C8, 25] ; Attackbar Check if 12+ Slots exist -; Someone asking troops : Color 0xD0E978 in x = 121 +Global $a12OrMoreSlots[4] = [16, 648, 0x4583B9, 25] ; Attackbar Check if 12+ Slots exist +Global $aDoubRowAttackBar[4] = [68, 486, 0xFC5D64, 20] +Global $aTroopIsDeployed[4] = [0, 0, 0x404040, 20] ; Attackbar Remain Check X and Y are Dummies +Global Const $aIsAttackPage[4] = [56, 548 + $g_iBottomOffsetY, 0xcf0d0e, 20] ; red button "end battle" 860x780 ; 1 - Dark Gray : Castle filled/No Castle | 2 - Light Green : Available or Already made | 3 - White : Available or Castle filled/No Castle -Global $aRequestTroopsAO[6] = [761, 592, 0x565656, 0x3C6C27, 0xFFFFFE, 25] ; Button Request Troops in Army Overview (x,y, Gray - Full/No Castle, Green - Available or Already, White - Available or Full) +Global $aRequestTroopsAO[6] = [761, 592, 0x565656, 0x71BA2F, 0xFFFFFE, 25] ; Button Request Troops in Army Overview (x,y, Gray - Full/No Castle, Green - Available or Already, White - Available or Full) Global Const $aOpenChatTab[4] = [19, 335 + $g_iMidOffsetY, 0xE88D27, 20] Global Const $aCloseChat[4] = [331, 330 + $g_iMidOffsetY, 0xF0951D, 20] ; duplicate with $aChatTab above, need to rename and fix all code to use one? @@ -144,9 +146,6 @@ Global Const $aRtnHomeCheck2[4] = [497, 548 + $g_iMidOffsetY, 0x79C326, 20] Global Const $aSearchLimit[6] = [19, 565, 104, 580, 0xD9DDCF, 10] ; (kaganus) no idea what this is for -;inattackscreen -Global Const $aIsAttackPage[4] = [56, 548 + $g_iBottomOffsetY, 0xcf0d0e, 20] ; red button "end battle" 860x780 - ;CheckImageType (Normal, Snow, etc) Global Const $aImageTypeN1[4] = [237, 161, 0xD5A849, 30] ; Sand on Forest Edge 'Lane' 860x780 Global Const $aImageTypeN2[4] = [205, 180, 0x86A533, 30] ; Grass on Forest Edge 'Lane' 860x780 diff --git a/COCBot/functions/Config/_Ini_Table.au3 b/COCBot/functions/Config/_Ini_Table.au3 index 9ee991b2e..f3c516134 100644 --- a/COCBot/functions/Config/_Ini_Table.au3 +++ b/COCBot/functions/Config/_Ini_Table.au3 @@ -10,7 +10,7 @@ ; Return values .: NA ; Author ........: CodeSlinger69 (2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Config/applyConfig.au3 b/COCBot/functions/Config/applyConfig.au3 index 9a450632e..ed07f2a72 100644 --- a/COCBot/functions/Config/applyConfig.au3 +++ b/COCBot/functions/Config/applyConfig.au3 @@ -6,7 +6,7 @@ ; Return values .: NA ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -428,10 +428,11 @@ Func ApplyConfig_600_11($TypeReadSave) For $i = 0 To 2 _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleTroop[$i] , $g_aiClanCastleTroopWaitType[$i]) GUICtrlSetData($g_ahTxtClanCastleTroop[$i], $g_aiClanCastleTroopWaitQty[$i]) - Next - For $i = 0 To 1 + _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSpell[$i] , $g_aiClanCastleSpellWaitType[$i]) - GUICtrlSetData($g_ahTxtClanCastleSpell[$i], $g_aiClanCastleSpellWaitQty[$i]) + + If $i > 1 Then ContinueLoop ; Siege has only 2 combobox + _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSiege[$i] , $g_aiClanCastleSiegeWaitType[$i]) Next chkRequestCountCC() chkRequestCCHours() @@ -451,10 +452,11 @@ Func ApplyConfig_600_11($TypeReadSave) For $i = 0 To 2 $g_aiClanCastleTroopWaitType[$i] = _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleTroop[$i]) $g_aiClanCastleTroopWaitQty[$i] = GUICtrlRead($g_ahTxtClanCastleTroop[$i]) - Next - For $i = 0 To 1 + $g_aiClanCastleSpellWaitType[$i] = _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) - $g_aiClanCastleSpellWaitQty[$i] = GUICtrlRead($g_ahTxtClanCastleSpell[$i]) + + If $i > 1 Then ContinueLoop ; Siege has only 2 combobox + $g_aiClanCastleSiegeWaitType[$i] = _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSiege[$i]) Next For $i = 0 To 23 $g_abRequestCCHours[$i] = (GUICtrlRead($g_ahChkRequestCCHours[$i]) = $GUI_CHECKED) @@ -521,6 +523,13 @@ Func ApplyConfig_600_12($TypeReadSave) GUICtrlSetBkColor($g_ahLblDonateTroop[$index + $i], $GUI_BKCOLOR_TRANSPARENT) EndIf + If $g_abChkDonateAllTroop[$index + $i] Then + GUICtrlSetState($g_ahChkDonateAllTroop[$index + $i], $GUI_CHECKED) + _DonateAllControls($index + $i, True) + Else + GUICtrlSetState($g_ahChkDonateAllTroop[$index + $i], $GUI_UNCHECKED) + EndIf + GUICtrlSetData($g_ahTxtDonateTroop[$index + $i], $g_asTxtDonateTroop[$index + $i]) GUICtrlSetData($g_ahTxtBlacklistTroop[$index + $i], $g_asTxtBlacklistTroop[$index + $i]) Next @@ -579,6 +588,7 @@ Func ApplyConfig_600_12($TypeReadSave) For $i = $eSiegeWallWrecker to $eSiegeMachineCount - 1 Local $index = $eTroopCount + $g_iCustomDonateConfigs $g_abChkDonateTroop[$index + $i] = (GUICtrlRead($g_ahChkDonateTroop[$index + $i]) = $GUI_CHECKED) + $g_abChkDonateAllTroop[$index + $i] = (GUICtrlRead($g_ahChkDonateAllTroop[$index + $i]) = $GUI_CHECKED) $g_asTxtDonateTroop[$index + $i] = GUICtrlRead($g_ahTxtDonateTroop[$index + $i]) $g_asTxtBlacklistTroop[$index + $i] = GUICtrlRead($g_ahTxtBlacklistTroop[$index + $i]) Next diff --git a/COCBot/functions/Config/profileFunctions.au3 b/COCBot/functions/Config/profileFunctions.au3 index e8e3ee2a8..278509c58 100644 --- a/COCBot/functions/Config/profileFunctions.au3 +++ b/COCBot/functions/Config/profileFunctions.au3 @@ -3,7 +3,7 @@ ; Description ...: Functions for the new profile system ; Author ........: LunaEclipse(02-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; =============================================================================================================================== diff --git a/COCBot/functions/Config/readConfig.au3 b/COCBot/functions/Config/readConfig.au3 index b7c56a3e2..fbb719ebe 100644 --- a/COCBot/functions/Config/readConfig.au3 +++ b/COCBot/functions/Config/readConfig.au3 @@ -6,7 +6,7 @@ ; Return values .: NA ; Author ........: ; Modified ......: CodeSlinger69 (01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -454,20 +454,23 @@ Func ReadConfig_600_11() For $i = 0 To $eTroopCount - 1 $g_aiCCTroopsExpected[$i] = 0 If $i < $eSpellCount Then $g_aiCCSpellsExpected[$i] = 0 + If $i < $eSiegeMachineCount Then $g_aiCCSiegeExpected[$i] = 0 Next For $i = 0 To 2 - $g_aiClanCastleTroopWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleTroop" & $i, "20")) + $g_aiClanCastleTroopWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleTroop" & $i, $eTroopCount)) $g_aiClanCastleTroopWaitQty[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "txtClanCastleTroop" & $i, "0")) If $g_aiClanCastleTroopWaitType[$i] < $eTroopCount Then ; barb - IceG $g_aiCCTroopsExpected[$g_aiClanCastleTroopWaitType[$i]] += $g_aiClanCastleTroopWaitQty[$i] EndIf - Next - For $i = 0 To 1 - $g_aiClanCastleSpellWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSpell" & $i, "10")) - $g_aiClanCastleSpellWaitQty[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "txtClanCastleSpell" & $i, "0")) - If $g_aiClanCastleSpellWaitType[$i] < $eSpellCount Then ; LSpell - SkSpell - $g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] += $g_aiClanCastleSpellWaitQty[$i] + + $g_aiClanCastleSpellWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSpell" & $i, $eSpellCount)) + If $g_aiClanCastleSpellWaitType[$i] < $eSpellCount Then ; LSpell - BtSpell + $g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] += 1 EndIf + + If $i > 1 Then ContinueLoop ; Siege has only 2 combobox + $g_aiClanCastleSiegeWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSiege" & $i, $eSiegeMachineCount)) + If $g_aiClanCastleSiegeWaitType[$i] < $eSiegeMachineCount Then $g_aiCCSiegeExpected[$g_aiClanCastleSiegeWaitType[$i]] = 1 ; WallW - StoneS Next $g_abRequestCCHours = StringSplit(IniRead($g_sProfileConfigPath, "planned", "RequestHours", "1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1"), "|", $STR_NOCOUNT) @@ -558,7 +561,7 @@ Func ReadConfig_600_12() $g_asTxtDonateTroop[$eTroopBowler] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateBowlers", "bowler|bowl"), "|", @CRLF) $g_asTxtBlacklistTroop[$eTroopBowler] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistBowlers", "no bowler|bowl no"), "|", @CRLF) - + $g_asTxtDonateTroop[$eTroopIceGolem] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateIceGolems", "ice golem|ice golems"), "|", @CRLF) $g_asTxtBlacklistTroop[$eTroopIceGolem] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistIceGolems", "no ice golem|ice golem no"), "|", @CRLF) @@ -608,7 +611,7 @@ Func ReadConfig_600_12() $g_asTxtDonateSpell[$eSpellSkeleton] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateSkeletonSpells", "skeleton"), "|", @CRLF) $g_asTxtBlacklistSpell[$eSpellSkeleton] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistSkeletonSpells", "no skeleton|skeleton no"), "|", @CRLF) - + $g_asTxtDonateSpell[$eSpellBat] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateBatSpells", "bat"), "|", @CRLF) $g_asTxtBlacklistSpell[$eSpellBat] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistBatSpells", "no bat|bat no"), "|", @CRLF) @@ -616,6 +619,7 @@ Func ReadConfig_600_12() Local $index = $eTroopCount + $g_iCustomDonateConfigs Local $sIniName = $g_asSiegeMachineShortNames[$i] $g_abChkDonateTroop[$index + $i] = (IniRead($g_sProfileConfigPath, "donate", "chkDonate" & $sIniName, "0") = "1") + $g_abChkDonateAllTroop[$index + $i] = (IniRead($g_sProfileConfigPath, "donate", "chkDonateAll" & $sIniName, "0") = "1") Next $g_asTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateWallW", "Wrecker|siege"), "|", @CRLF) @@ -623,7 +627,7 @@ Func ReadConfig_600_12() $g_asTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateBattleB", "Blimp|siege"), "|", @CRLF) $g_asTxtBlacklistTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistBattleB", "no Blimp|siege no"), "|", @CRLF) - + $g_asTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateStoneS", "Slammer|siege"), "|", @CRLF) $g_asTxtBlacklistTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistStoneS", "no Slammer|siege no"), "|", @CRLF) @@ -679,7 +683,7 @@ EndFunc ;==>ReadConfig_600_13 Func ReadConfig_600_14() IniReadS($g_bAutoLabUpgradeEnable, $g_sProfileBuildingPath, "upgrade", "upgradetroops", False, "Bool") IniReadS($g_iCmbLaboratory, $g_sProfileBuildingPath, "upgrade", "upgradetroopname", 0, "int") - $g_sLabUpgradeTime = IniRead($g_sProfileBuildingPath, "upgrade", "upgradelabtime", "") +;~ $g_sLabUpgradeTime = IniRead($g_sProfileBuildingPath, "upgrade", "upgradelabtime", "") IniReadS($g_iLaboratoryElixirCost, $g_sProfileBuildingPath, "upgrade", "upgradelabelexircost", 0, "int") IniReadS($g_iLaboratoryDElixirCost, $g_sProfileBuildingPath, "upgrade", "upgradelabdelexircost", 0, "int") EndFunc ;==>ReadConfig_600_14 diff --git a/COCBot/functions/Config/saveConfig.au3 b/COCBot/functions/Config/saveConfig.au3 index 3eb6468f9..9f5190bbd 100644 --- a/COCBot/functions/Config/saveConfig.au3 +++ b/COCBot/functions/Config/saveConfig.au3 @@ -6,7 +6,7 @@ ; Return values .: NA ; Author ........: ; Modified ......: CodeSlinger69 (01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -115,7 +115,7 @@ Func SaveBuildingConfig() ApplyConfig_600_14(GetApplyConfigSaveAction()) _Ini_Add("upgrade", "upgradetroops", $g_bAutoLabUpgradeEnable ? 1 : 0) _Ini_Add("upgrade", "upgradetroopname", $g_iCmbLaboratory) - _Ini_Add("upgrade", "upgradelabtime", $g_sLabUpgradeTime) +;~ _Ini_Add("upgrade", "upgradelabtime", $g_sLabUpgradeTime) _Ini_Add("upgrade", "upgradelabelexircost", $g_iLaboratoryElixirCost) _Ini_Add("upgrade", "upgradelabdelexircost", $g_iLaboratoryDElixirCost) @@ -405,10 +405,8 @@ Func SaveConfig_600_11() For $i = 0 To 2 _Ini_Add("donate", "cmbClanCastleTroop" & $i, $g_aiClanCastleTroopWaitType[$i]) _Ini_Add("donate", "txtClanCastleTroop" & $i, $g_aiClanCastleTroopWaitQty[$i]) - Next - For $i = 0 To 1 _Ini_Add("donate", "cmbClanCastleSpell" & $i, $g_aiClanCastleSpellWaitType[$i]) - _Ini_Add("donate", "txtClanCastleSpell" & $i, $g_aiClanCastleSpellWaitQty[$i]) + If $i <= 1 Then _Ini_Add("donate", "cmbClanCastleSiege" & $i, $g_aiClanCastleSiegeWaitType[$i]) Next Local $string = "" For $i = 0 To 23 @@ -461,6 +459,7 @@ Func SaveConfig_600_12() Local $index = $eTroopCount + $g_iCustomDonateConfigs Local $sIniName = $g_asSiegeMachineShortNames[$i] _Ini_Add("donate", "chkDonate" & $sIniName, $g_abChkDonateTroop[$index + $i] ? 1 : 0) + _Ini_Add("donate", "chkDonateAll" & $sIniName, $g_abChkDonateAllTroop[$index + $i] ? 1 : 0) _Ini_Add("donate", "txtDonate" & $sIniName, StringReplace($g_asTxtDonateTroop[$index + $i], @CRLF, "|")) _Ini_Add("donate", "txtBlacklist" & $sIniName, StringReplace($g_asTxtBlacklistTroop[$index + $i], @CRLF, "|")) NExt diff --git a/COCBot/functions/CreateArmy/CheckFullArmy.au3 b/COCBot/functions/CreateArmy/CheckFullArmy.au3 index a2efa2ed7..04db6a76c 100644 --- a/COCBot/functions/CreateArmy/CheckFullArmy.au3 +++ b/COCBot/functions/CreateArmy/CheckFullArmy.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: KnowJack (07-2015) ; Modified ......: MonkeyHunter (03-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -75,7 +75,7 @@ EndFunc ;==>CheckOverviewFullArmy ; Return values .: None ; Author ........: The Master ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/DoubleTrain.au3 b/COCBot/functions/CreateArmy/DoubleTrain.au3 index c2bd6e70a..0cb171fdd 100644 --- a/COCBot/functions/CreateArmy/DoubleTrain.au3 +++ b/COCBot/functions/CreateArmy/DoubleTrain.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Demen ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/SmartWait4Train.au3 b/COCBot/functions/CreateArmy/SmartWait4Train.au3 index 0f1bc5404..f4c762097 100644 --- a/COCBot/functions/CreateArmy/SmartWait4Train.au3 +++ b/COCBot/functions/CreateArmy/SmartWait4Train.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (05-2016) ; Modified ......: MR.ViPER (10-2016), TheRevenor (10-2016), MR.ViPER (12-2016), CodeSlinger69 (01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -147,13 +147,12 @@ Func SmartWait4Train($iTestSeconds = Default) Local $iHeroIdx = $pTroopType - $eKing For $pMatchMode = $DB To $LB ; check only DB and LB (TS has no wait option!) If $g_bDebugSetlogTrain Or $g_bDebugSetlog Then - SetLog("$pTroopType: " & NameOfTroop($pTroopType) & ", $pMatchMode: " & $g_asModeText[$pMatchMode], $COLOR_DEBUG) - SetLog("TroopToBeUsed: " & IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) & ", Hero Wait Status= " & IsSearchModeActiveMini($pMatchMode) & " & " & IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) & " & " & ($g_iHeroUpgrading[$iHeroIdx] <> 1) & " & " & ($g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1), $COLOR_DEBUG) + SetLog("$pTroopType: " & GetTroopName($pTroopType) & ", $pMatchMode: " & $g_asModeText[$pMatchMode], $COLOR_DEBUG) + SetLog("TroopToBeUsed: " & IsUnitUsed($pMatchMode, $pTroopType) & ", Hero Wait Status= " & IsSearchModeActiveMini($pMatchMode) & " & " & IsUnitUsed($pMatchMode, $pTroopType) & " & " & ($g_iHeroUpgrading[$iHeroIdx] <> 1) & " & " & ($g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1), $COLOR_DEBUG) SetLog("$g_aiAttackUseHeroes[" & $pMatchMode & "]= " & $g_aiAttackUseHeroes[$pMatchMode] & ", $g_aiSearchHeroWaitEnable[" & $pMatchMode & "]= " & $g_aiSearchHeroWaitEnable[$pMatchMode] & ", $g_iHeroUpgradingBit=" & $g_iHeroUpgradingBit, $COLOR_DEBUG) EndIf $iActiveHero = -1 - ;If IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And BitAND($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiAttackUseHeroes[$pMatchMode] Then ; check if Hero enabled to wait - If IsSearchModeActiveMini($pMatchMode) And IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$iHeroIdx] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1 Then + If IsSearchModeActiveMini($pMatchMode) And IsUnitUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$iHeroIdx] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1 Then $iActiveHero = $iHeroIdx ; compute array offset to active hero EndIf If $iActiveHero <> -1 And $aHeroResult[$iActiveHero] > 0 Then ; valid time? @@ -165,7 +164,7 @@ Func SmartWait4Train($iTestSeconds = Default) EndIf $iTrainWaitCloseFlag = BitOR($iTrainWaitCloseFlag, $TRAINWAIT_HERO) If $g_bDebugSetlogTrain Or $g_bDebugSetlog Then - SetLog("Wait enabled: " & NameOfTroop($pTroopType) & ":" & $g_asModeText[$pMatchMode] & ", $iTrainWaitCloseFlag:" & $iTrainWaitCloseFlag & ", Hero Time:" & $aHeroResult[$iActiveHero] & ", Wait Time: " & StringFormat("%.2f", $g_aiTimeTrain[2]), $COLOR_DEBUG) + SetLog("Wait enabled: " & GetTroopName($pTroopType) & ":" & $g_asModeText[$pMatchMode] & ", $iTrainWaitCloseFlag:" & $iTrainWaitCloseFlag & ", Hero Time:" & $aHeroResult[$iActiveHero] & ", Wait Time: " & StringFormat("%.2f", $g_aiTimeTrain[2]), $COLOR_DEBUG) EndIf EndIf Next diff --git a/COCBot/functions/CreateArmy/TrainClick.au3 b/COCBot/functions/CreateArmy/TrainClick.au3 index 24f4a0744..732d1be41 100644 --- a/COCBot/functions/CreateArmy/TrainClick.au3 +++ b/COCBot/functions/CreateArmy/TrainClick.au3 @@ -12,7 +12,7 @@ ; Return values .: None ; Author ........: KnowJack (07-2015) ; Modified ......: Sardo (08-2015), Boju (06-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/TrainIt.au3 b/COCBot/functions/CreateArmy/TrainIt.au3 index f9fde7492..29e1aac57 100644 --- a/COCBot/functions/CreateArmy/TrainIt.au3 +++ b/COCBot/functions/CreateArmy/TrainIt.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack(07-2015), MonkeyHunter (05-2016), ProMac (01-2018), CodeSlinger69 (01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: GetTrainPos, GetFullName, GetGemName ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/TrainSiege.au3 b/COCBot/functions/CreateArmy/TrainSiege.au3 index ec74f0f0e..38f418999 100644 --- a/COCBot/functions/CreateArmy/TrainSiege.au3 +++ b/COCBot/functions/CreateArmy/TrainSiege.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac(07-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -78,7 +78,7 @@ Func TrainSiege() If $aSearchResult[0][0] <> "" Then For $i = 0 To UBound($aSearchResult) - 1 Local $tempSiege = TroopIndexLookup($aSearchResult[$i][0]) - Setlog("- " & NameOfTroop($tempSiege) & " Queued.", $COLOR_INFO) + Setlog("- " & GetTroopName($tempSiege) & " Queued.", $COLOR_INFO) Next EndIf diff --git a/COCBot/functions/CreateArmy/TrainSystem.au3 b/COCBot/functions/CreateArmy/TrainSystem.au3 index 39bae099a..06ae263d9 100644 --- a/COCBot/functions/CreateArmy/TrainSystem.au3 +++ b/COCBot/functions/CreateArmy/TrainSystem.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Mr.Viper(10-2016), ProMac(10-2016), CodeSlinger69 (01-2018) ; Modified ......: ProMac (11-2016), Boju (11-2016), MR.ViPER (12-2016), CodeSlinger69 (01-2018) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -357,7 +357,7 @@ Func CheckSiegeMachine() Local $bToReturn = True - If IsWaitforSiegeMachine() Or $g_iCommandStop = 0 Then + If IsWaitforSiegeMachine() Then For $i = $eSiegeWallWrecker To $eSiegeMachineCount - 1 If $g_aiCurrentSiegeMachines[$i] < $g_aiArmyCompSiegeMachine[$i] Then $bToReturn = False If $g_bDebugSetlogTrain Then diff --git a/COCBot/functions/CreateArmy/checkArmyCamp.au3 b/COCBot/functions/CreateArmy/checkArmyCamp.au3 index 033428325..84d7378af 100644 --- a/COCBot/functions/CreateArmy/checkArmyCamp.au3 +++ b/COCBot/functions/CreateArmy/checkArmyCamp.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Sardo (08-2015), KnowJack(08-2015). ProMac (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyCCSiegeMachines/getArmyCCSiegeMachines.au3 b/COCBot/functions/CreateArmy/getArmyCCSiegeMachines/getArmyCCSiegeMachines.au3 index 20ff39515..6b51345e7 100644 --- a/COCBot/functions/CreateArmy/getArmyCCSiegeMachines/getArmyCCSiegeMachines.au3 +++ b/COCBot/functions/CreateArmy/getArmyCCSiegeMachines/getArmyCCSiegeMachines.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Fliegerfaust(06-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -38,7 +38,9 @@ Func getArmyCCSiegeMachines($bOpenArmyWindow = False, $bCloseArmyWindow = False, Local $aTempCCSiegeArray, $aCCSiegeCoords Local $sCCSiegeName = "" Local $iCCSiegeIndex = -1 - Local $aCurrentCCSiegeEmpty[$eSiegeMachineCount] = [0, 0] ; Local Copy to reset Siege Machine Array + Local $aCurrentCCSiegeEmpty[$eSiegeMachineCount] = [0, 0, 0] ; Local Copy to reset Siege Machine Array + + $g_aiCurrentCCSiegeMachines = $aCurrentCCSiegeEmpty ; Reset Current Siege Machine Array ; Get CC Siege Capacities Local $sSiegeInfo = getArmyCampCap(650, 468, $bNeedCapture) ; OCR read Siege built and total @@ -51,7 +53,6 @@ Func getArmyCCSiegeMachines($bOpenArmyWindow = False, $bCloseArmyWindow = False, Return EndIf - $g_aiCurrentCCSiegeMachines = $aCurrentCCSiegeEmpty ; Reset Current Siege Machine Array If UBound($aCurrentCCSiegeMachines, 1) >= 1 Then For $i = 0 To UBound($aCurrentCCSiegeMachines, 1) - 1 ; Loop through found Troops $aTempCCSiegeArray = $aCurrentCCSiegeMachines[$i] ; Declare Array to Temp Array diff --git a/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpell.au3 b/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpell.au3 index 5dc322c58..80cef745a 100644 --- a/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpell.au3 +++ b/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpell.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Fliegerfaust(11-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpellCapacity.au3 b/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpellCapacity.au3 index 3c2fc5204..6a56f94d5 100644 --- a/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpellCapacity.au3 +++ b/COCBot/functions/CreateArmy/getArmyCCSpells/getArmyCCSpellCapacity.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017), Fliegerfaust (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCStatus.au3 b/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCStatus.au3 index b72eeb8fb..b639f8c1d 100644 --- a/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCStatus.au3 +++ b/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCStatus.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: MonkeyHunter (06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCTroops.au3 b/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCTroops.au3 index fa055558c..5f6e7b9ad 100644 --- a/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCTroops.au3 +++ b/COCBot/functions/CreateArmy/getArmyCCTroops/getArmyCCTroops.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Fliegerfaust(11-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroCount.au3 b/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroCount.au3 index c0c7f5a86..18c8de23d 100644 --- a/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroCount.au3 +++ b/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroCount.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: MonkeyHunter (06-2016), MR.ViPER (10-2016), Fliegerfaust (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -331,6 +331,7 @@ Func LabGuiDisplay() ; called from main loop to get an early status for indictor SetLog("Research will finish in " & $sLabTimeOCR & " (" & $g_sLabUpgradeTime & ")") EndIf ClickP($aAway, 2, $DELAYLABORATORY4, "#0359") + If ProfileSwitchAccountEnabled() Then SwitchAccountVariablesReload("Save") ; saving $asLabUpgradeTime[$g_iCurAccount] = $g_sLabUpgradeTime for instantly displaying in multi-stats Return True ElseIf _ColorCheck(_GetPixelColor(730, 200, True), Hex(0x8088B0, 6), 20) Then ; Look for light purple in upper right corner of lab window. SetLog("Laboratory has Stopped", $COLOR_INFO) @@ -339,9 +340,11 @@ Func LabGuiDisplay() ; called from main loop to get an early status for indictor GUICtrlSetState($g_hPicLabGray, $GUI_HIDE) GUICtrlSetState($g_hPicLabGreen, $GUI_HIDE) GUICtrlSetState($g_hPicLabRed, $GUI_SHOW) + GUICtrlSetData($g_hLbLLabTime, "") ;============================================ ClickP($aAway, 2, $DELAYLABORATORY4, "#0359") $g_sLabUpgradeTime = "" + If ProfileSwitchAccountEnabled() Then SwitchAccountVariablesReload("Save") ; saving $asLabUpgradeTime[$g_iCurAccount] = $g_sLabUpgradeTime for instantly displaying in multi-stats Return Else SetLog("Unable to determine Lab Status", $COLOR_INFO) @@ -350,6 +353,7 @@ Func LabGuiDisplay() ; called from main loop to get an early status for indictor GUICtrlSetState($g_hPicLabGreen, $GUI_HIDE) GUICtrlSetState($g_hPicLabRed, $GUI_HIDE) GUICtrlSetState($g_hPicLabGray, $GUI_SHOW) + GUICtrlSetData($g_hLbLLabTime, "") ;============================================= Return EndIf @@ -357,18 +361,18 @@ Func LabGuiDisplay() ; called from main loop to get an early status for indictor EndFunc ;==>LabGuiDisplay Func HideShields($bHide = False) - Local Static $ShieldState[19] + Local Static $ShieldState[20] Local $counter If $bHide = True Then $counter = 0 - For $i = $g_hlblKing to $g_hPicLabRed + For $i = $g_hlblKing to $g_hLbLLabTime $ShieldState[$counter] = GUICtrlGetState($i) GUICtrlSetState($i, $GUI_HIDE) $counter += 1 Next Else $counter = 0 - For $i = $g_hlblKing to $g_hPicLabRed + For $i = $g_hlblKing to $g_hLbLLabTime If $ShieldState[$counter] = 80 Then GUICtrlSetState($i, $GUI_SHOW ) EndIf diff --git a/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroTime.au3 b/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroTime.au3 index 2d25cdcdc..119309547 100644 --- a/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroTime.au3 +++ b/COCBot/functions/CreateArmy/getArmyHeroes/getArmyHeroTime.au3 @@ -8,7 +8,7 @@ ; Return values .: ; Author ........: MonkeyHunter (05-2016) ; Modified ......: MR.ViPER (12-2016), Fliegerfaust (03-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -88,7 +88,7 @@ Func getArmyHeroTime($iHeroType, $bOpenArmyWindow = False, $bCloseArmyWindow = F Else ; reading all heros, need to find if hero is active/wait to determine how to log message? For $pMatchMode = $DB To $g_iMatchMode - 1 ; check all attack modes - If IsSpecialTroopToBeUsed($pMatchMode, $aHeroRemainData[$index][3]) And BitAND($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiSearchHeroWaitEnable[$pMatchMode] Then ; check if Hero enabled to wait + If IsUnitUsed($pMatchMode, $aHeroRemainData[$index][3]) And BitAND($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiSearchHeroWaitEnable[$pMatchMode] Then ; check if Hero enabled to wait SetLog("Can not read remaining " & $aHeroRemainData[$index][2] & " train time", $COLOR_ERROR) ExitLoop Else diff --git a/COCBot/functions/CreateArmy/getArmySiegeMachines/getArmySiegeMachines.au3 b/COCBot/functions/CreateArmy/getArmySiegeMachines/getArmySiegeMachines.au3 index cbc0bc633..d0717f1c1 100644 --- a/COCBot/functions/CreateArmy/getArmySiegeMachines/getArmySiegeMachines.au3 +++ b/COCBot/functions/CreateArmy/getArmySiegeMachines/getArmySiegeMachines.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Fliegerfaust(06-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCapacity.au3 b/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCapacity.au3 index d932cdbec..3ac14c522 100644 --- a/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCapacity.au3 +++ b/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCapacity.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCount.au3 b/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCount.au3 index 08fad8c60..9838b516f 100644 --- a/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCount.au3 +++ b/COCBot/functions/CreateArmy/getArmySpells/getArmySpellCount.au3 @@ -7,7 +7,7 @@ ; Return values .: Total current spell count or -1 when not yet read ; Author ........: ; Modified ......: MonkeyHunter (06-2016), CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmySpells/getArmySpellTime.au3 b/COCBot/functions/CreateArmy/getArmySpells/getArmySpellTime.au3 index 529b7a240..50fb7d8b5 100644 --- a/COCBot/functions/CreateArmy/getArmySpells/getArmySpellTime.au3 +++ b/COCBot/functions/CreateArmy/getArmySpells/getArmySpellTime.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Promac(04-2016) ; Modified ......: MonkeyHunter (04-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmySpells/getArmySpells.au3 b/COCBot/functions/CreateArmy/getArmySpells/getArmySpells.au3 index e3c81fe54..05e7c43a7 100644 --- a/COCBot/functions/CreateArmy/getArmySpells/getArmySpells.au3 +++ b/COCBot/functions/CreateArmy/getArmySpells/getArmySpells.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Fliegerfaust(11-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopCapacity.au3 b/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopCapacity.au3 index 43ac047f0..531493de6 100644 --- a/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopCapacity.au3 +++ b/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopCapacity.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopTime.au3 b/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopTime.au3 index b1b535961..2c11e72c8 100644 --- a/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopTime.au3 +++ b/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroopTime.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Promac(04-2016), MonkeyHunter (04-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroops.au3 b/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroops.au3 index bca70c738..e76226cb3 100644 --- a/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroops.au3 +++ b/COCBot/functions/CreateArmy/getArmyTroops/getArmyTroops.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Fliegerfaust(11-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/CreateArmy/openArmyOverview.au3 b/COCBot/functions/CreateArmy/openArmyOverview.au3 index 1a83fe32f..d238dda9d 100644 --- a/COCBot/functions/CreateArmy/openArmyOverview.au3 +++ b/COCBot/functions/CreateArmy/openArmyOverview.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (01-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/GUI/GUI_State.au3 b/COCBot/functions/GUI/GUI_State.au3 index bff2286c1..c7600e8ec 100644 --- a/COCBot/functions/GUI/GUI_State.au3 +++ b/COCBot/functions/GUI/GUI_State.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Boju(06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/GUI/_GUICtrlCreatePic.au3 b/COCBot/functions/GUI/_GUICtrlCreatePic.au3 index 52b124452..b6cedef75 100644 --- a/COCBot/functions/GUI/_GUICtrlCreatePic.au3 +++ b/COCBot/functions/GUI/_GUICtrlCreatePic.au3 @@ -6,7 +6,7 @@ ; Return values .: Control ID ; Author ........: UEZ ; Modified ......: Melba23, guinness, jpm, cosote -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/GUI/_GUICtrlSetTip.au3 b/COCBot/functions/GUI/_GUICtrlSetTip.au3 index b3002c774..9b8bbf82b 100644 --- a/COCBot/functions/GUI/_GUICtrlSetTip.au3 +++ b/COCBot/functions/GUI/_GUICtrlSetTip.au3 @@ -6,7 +6,7 @@ ; Return values .: See _GUIToolTip_AddTool ; Author ........: Cosote (06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Image Search/CheckTombs.au3 b/COCBot/functions/Image Search/CheckTombs.au3 index a3331d1ec..0db80793e 100644 --- a/COCBot/functions/Image Search/CheckTombs.au3 +++ b/COCBot/functions/Image Search/CheckTombs.au3 @@ -6,7 +6,7 @@ ; Return values .: False if regular farming is needed to refill storage ; Author ........: barracoda/KnowJack (2015) ; Modified ......: sardo (05-2015/06-2015) , ProMac (04-2016), MonkeyHuner (06-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Image Search/ImageSearch.au3 b/COCBot/functions/Image Search/ImageSearch.au3 index bf3b23c24..8395e6bb5 100644 --- a/COCBot/functions/Image Search/ImageSearch.au3 +++ b/COCBot/functions/Image Search/ImageSearch.au3 @@ -9,7 +9,7 @@ ; $Tolerance - allowable variation in finding image. ; Return values .: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -36,7 +36,7 @@ EndFunc ;==>_ImageSearch ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Image Search/checkDeadBase.au3 b/COCBot/functions/Image Search/checkDeadBase.au3 index 1d8da31dc..f0f775573 100644 --- a/COCBot/functions/Image Search/checkDeadBase.au3 +++ b/COCBot/functions/Image Search/checkDeadBase.au3 @@ -7,7 +7,7 @@ ; Return values .: True if it is, returns false if it is not a dead base ; Author ........: AtoZ , DinoBot (01-2015) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -279,9 +279,9 @@ Func checkDeadBaseSuperNew($bForceCapture = True, $sFillDirectory = @ScriptDir & ; check for any collector filling Local $result = findMultiple($sFillDirectory, $sCocDiamond, $redLines, $minLevel, $maxLevel, $maxReturnPoints, $returnProps, $bForceCapture) - Local $foundFilledCollectors = IsArray($result) = 1 + Local $bFoundFilledCollectors = IsArray($result) = 1 - If $foundFilledCollectors = True Then + If $bFoundFilledCollectors Then For $matchedValues In $result Local $aPoints = StringSplit($matchedValues[1], "|", $STR_NOCOUNT) ; multiple points splited by | char @@ -312,7 +312,7 @@ Func checkDeadBaseSuperNew($bForceCapture = True, $sFillDirectory = @ScriptDir & ExitLoop EndIf Next - If $bSkipPoint = False Then + If Not $bSkipPoint Then Local $i = UBound($aPos) ReDim $aPos[$i + 1] $aPos[$i] = $aP @@ -370,12 +370,12 @@ Func checkDeadBaseSuperNew($bForceCapture = True, $sFillDirectory = @ScriptDir & Local $dbFound = $TotalMatched >= $g_iCollectorMatchesMin If $g_bDebugSetlog Then - If $foundFilledCollectors = False Then - SetDebugLog("IMGLOC : NOT A DEADBASE!!!", $COLOR_INFO) - ElseIf $dbFound = False Then + If Not $bFoundFilledCollectors Then + SetDebugLog("IMGLOC : NOT A DEADBASE", $COLOR_INFO) + ElseIf Not $dbFound Then SetDebugLog("IMGLOC : DEADBASE NOT MATCHED: " & $TotalMatched & "/" & $g_iCollectorMatchesMin, $COLOR_WARNING) Else - SetDebugLog("IMGLOC : FOUND DEADBASE !!! Matched: " & $TotalMatched & "/" & $g_iCollectorMatchesMin & ": " & UBound($aPoints), $COLOR_GREEN) + SetDebugLog("IMGLOC : FOUND DEADBASE Matched: " & $TotalMatched & "/" & $g_iCollectorMatchesMin & ": " & UBound($aPoints), $COLOR_GREEN) EndIf EndIf diff --git a/COCBot/functions/Image Search/imglocAttackBar.au3 b/COCBot/functions/Image Search/imglocAttackBar.au3 index c49279d17..c9614281d 100644 --- a/COCBot/functions/Image Search/imglocAttackBar.au3 +++ b/COCBot/functions/Image Search/imglocAttackBar.au3 @@ -1,387 +1,344 @@ ; #FUNCTION# ==================================================================================================================== -; Name ..........: searchTroopBar -; Description ...: Searches for the Troops and Spels in Troop Attack Bar -; Syntax ........: searchTroopBar($directory, $maxReturnPoints = 1, $TroopBarSlots) -; Parameters ....: $directory - tile location to perform search , $maxReturnPoints ( max number of coords returned , $TroopBarSlots array to hold return values -; Return values .: $TroopBarSlots +; Name ..........: AttackBarCheck +; Description ...: Detects Army in the Attackbar and Returns Name, Slot, Amount and X Coordinate +; Syntax ........: AttackBarCheck($bRemaining = False, $pMatchMode = $DB, $bDebug = False) +; Parameters ....: $bRemaining (First Check or for Remaining Troops), $pMatchMode (Attackmode that needs the Attackbar: $DB, $AB), $bDebug (Debug AttackbarCheck) +; Return values .: ; Author ........: Trlopes (06-2016) -; Modified ......: ProMac (12-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Modified ......: ProMac (12-2016), Fliegerfaust(12-2018) +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== Func AttackBarCheck($bRemaining = False, $pMatchMode = $DB, $bDebug = False) - - Local $iX1 = 0, $iY1 = 635, $iX2 = 835, $iY2 = 698 - Static Local $bCheckSlot12 = False - - If Not $bRemaining Then $bCheckSlot12 = False + Local Static $aAttackBar[0][8] + Local Static $bDoubleRow = False, $bCheckSlot12 = False + Local $sSearchDiamond = GetDiamondFromRect("0,635,835,698") + Local $iYBelowRowOne = 630, $aiOCRLocation[2] = [-1, -1], $aSlotAmountX[0][3] If $g_bDraggedAttackBar Then DragAttackBar($g_iTotalAttackSlot, True) - ; Reset to level one the Spells level - $g_iLSpellLevel = 1 - $g_iESpellLevel = 1 - - ; Setup arrays, including default return values for $return - Local $aResult[1][6], $aCoordArray[1][2], $aCoords, $aCoordsSplit, $aValue, $sName, $aSlotAmountX[0][2] + ;Reset All Static Variables if the AttackBarCheck is not for Remaining + If Not $bRemaining Then + $bCheckSlot12 = False + $bDoubleRow = False + Local $aDummyArray[0][8] + $aAttackBar = $aDummyArray + $g_iLSpellLevel = 1 + $g_iESpellLevel = 1 + + ;Check if Double Row is enabled aswell as has 12+ Slots + If _CheckPixel($aDoubRowAttackBar, True) Then + $bDoubleRow = True + $sSearchDiamond = GetDiamondFromRect("0,535,835,698") + ElseIf _CheckPixel($a12OrMoreSlots, True) Then + $bCheckSlot12 = True + EndIf + SetDebugLog("AttackBarCheck: DoubleRow= " & $bDoubleRow) + EndIf If Not $g_bRunState Then Return - ; Capture the screen for comparison - _CaptureRegion2($iX1, $iY1, $iX2, $iY2) + If UBound($aAttackBar) = 0 Or Not $bRemaining Then + Local $iAttackbarStart = __TimerInit() + Local $aTempArray, $aTempCoords, $aTempMultiCoords, $iRow = 1 - Local $sFinalResult = "", $iAttackbarStart = __TimerInit() + Local $aAttackBarResult = findMultiple($g_sImgAttackBarDir, $sSearchDiamond, $sSearchDiamond, 0, 1000, 0, "objectname,objectpoints", True) - ; Perform the search - Local $sAttBarRes = DllCallMyBot("SearchMultipleTilesBetweenLevels", "handle", $g_hHBitmap2, "str", $g_sImgAttackBarDir, "str", "FV", "Int", 0, "str", "FV", "Int", 0, "Int", 1000) + If UBound($aAttackBarResult) = 0 Then + SetLog("Error in AttackBarCheck(): Search did not return any results!", $COLOR_ERROR) + DebugImageSave("ErrorAttackBarCheck", False, Default, Default, "#1") + Return "" + EndIf - If IsArray($sAttBarRes) Then - If $sAttBarRes[0] = "0" Or $sAttBarRes[0] = "" Then - SetLog("AttackBarCheck Error: Nothing found", $COLOR_ERROR) - ElseIf StringLeft($sAttBarRes[0], 2) = "-1" Then - SetLog("DLL Error: " & $sAttBarRes[0] & ", AttackBarCheck", $COLOR_ERROR) - Else - ; Get the keys for the dictionary item. - Local $aKeys = StringSplit($sAttBarRes[0], "|", $STR_NOCOUNT) - - ; Redimension the result array to allow for the new entries - ReDim $aResult[UBound($aKeys)][6] - Local $iResultAddDup = 0 - - ; Loop through the array - For $i = 0 To UBound($aKeys) - 1 - If Not $g_bRunState Then Return - ; Get the property values - $sName = RetrieveImglocProperty($aKeys[$i], "objectname") - ; Get the coords property - $aValue = RetrieveImglocProperty($aKeys[$i], "objectpoints") - $aCoords = decodeMultipleCoords($aValue, 50) ; dedup coords by x on 50 pixel - If StringRegExp($sName, "(AmountX)", 0) Then - For $j = 0 To UBound($aCoords) - 1 - $aCoordsSplit = $aCoords[$j] - _ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) - Next + ;Add found Stuff into our Arrays + For $i = 0 To UBound($aAttackBarResult, 1) - 1 + $aTempArray = $aAttackBarResult[$i] + $aTempMultiCoords = decodeMultipleCoords($aTempArray[1], 40, 40, -1) + For $j = 0 To UBound($aTempMultiCoords, 1) - 1 + $aTempCoords = $aTempMultiCoords[$j] + If $bDoubleRow And $aTempCoords[1] >= $iYBelowRowOne Then $iRow = 2 + If StringRegExp($aTempArray[0], "(AmountX)", 0) Then + _ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) + $aiOCRLocation[$iRow - 1] = $aTempCoords[1] ; Store any OCR Location for later use on Heroes Else - - $aResult[$i + $iResultAddDup][0] = $sName - $aCoordsSplit = $aCoords[0] - If StringRegExp($sName, "(King)|(Warden)|(Queen)", 0) Then - _ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) - EndIf - If UBound($aCoordsSplit) = 2 Then - ; Store the coords into a two dimensional array - $aCoordArray[0][0] = $aCoordsSplit[0] ; X coord. - $aCoordArray[0][1] = $aCoordsSplit[1] ; Y coord. - Else - $aCoordArray[0][0] = -1 - $aCoordArray[0][1] = -1 - EndIf - If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aCoordArray[0][0] & "-" & $aCoordArray[0][1]) - ; Store the coords array as a sub-array - $aResult[$i + $iResultAddDup][1] = Number($aCoordArray[0][0]) - $aResult[$i + $iResultAddDup][2] = Number($aCoordArray[0][1]) - ;If a Clan Castle Spell exists - Local $iMultipleCoords = UBound($aCoords) - ; Check if two Clan Castle Spells exist with different levels - If $iMultipleCoords > 1 And StringInStr($aResult[$i + $iResultAddDup][0], "Spell") <> 0 Then - If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " detected " & $iMultipleCoords & " times!") - For $j = 1 To $iMultipleCoords - 1 - Local $aCoordsSplit2 = $aCoords[$j] - If UBound($aCoordsSplit2) = 2 Then - ; add slot - $iResultAddDup += 1 - ReDim $aResult[UBound($aKeys) + $iResultAddDup][6] - $aResult[$i + $iResultAddDup][0] = $aResult[$i + $iResultAddDup - 1][0] ; same objectname - $aResult[$i + $iResultAddDup][1] = $aCoordsSplit2[0] - $aResult[$i + $iResultAddDup][2] = $aCoordsSplit2[1] - If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aResult[$i + $iResultAddDup][1] & "-" & $aResult[$i + $iResultAddDup][2]) - Else - ; don't invalidate anything - ;$aCoordArray[0][0] = -1 - ;$aCoordArray[0][1] = -1 - EndIf - Next - EndIf + If StringRegExp($aTempArray[0], "(King)|(Queen)|(Warden)", 0) Then _ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) + Local $aTempElement[1][8] = [[$aTempArray[0], $aTempCoords[0], $aTempCoords[1], -1, -1, -1, -1, $iRow]] ; trick to get the right variable types into our array. Delimiter Adding only gets us string which can't be sorted.... + _ArrayAdd($aAttackBar, $aTempElement) EndIf + $iRow = 1 Next + Next - _ArraySort($aResult, 0, 0, 0, 1) ; Sort By X position , will be the Slot 0 to $i - _ArraySort($aSlotAmountX) - - If $g_bDebugSetlog Then SetDebugLog("Attackbar detection completed in " & StringFormat("%.2f", _Timer_Diff($iAttackbarStart)) & " ms") - $iAttackbarStart = __TimerInit() - - If Not $bRemaining And _CheckPixel($a12OrMoreSlots, True) Then $bCheckSlot12 = True - - Local $iSPellLevelOCR = -8 - For $i = 0 To UBound($aResult) - 1 - Local $aTempSlot - If $aResult[$i][1] > 0 Then - If $g_bDebugSetlog Then SetDebugLog("SLOT : " & $i, $COLOR_DEBUG) ;Debug - If $g_bDebugSetlog Then SetDebugLog("Detection : " & $aResult[$i][0] & "|x" & $aResult[$i][1] & "|y" & $aResult[$i][2], $COLOR_DEBUG) ;Debug - $aTempSlot = SlotAttack(Number($aResult[$i][1]), $aSlotAmountX) - ; - If $g_bRunState = False Then Return ; Stop function - If _Sleep(20) Then Return ; Pause function - If UBound($aTempSlot) = 3 Then - If $g_bDebugSetlog Then SetDebugLog("OCR : " & $aTempSlot[0] & "|SLOT: " & $aTempSlot[2], $COLOR_DEBUG) ;Debug - If $aResult[$i][0] = "Castle" Or $aResult[$i][0] = "King" Or $aResult[$i][0] = "Queen" Or $aResult[$i][0] = "Warden" Or $aResult[$i][0] = "WallW" Or $aResult[$i][0] = "BattleB" Or $aResult[$i][0] = "StoneS" Then - $aResult[$i][3] = 1 - $aResult[$i][4] = $aTempSlot[2] - Else - $aResult[$i][3] = Number(getTroopCountBig(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1) - 2)) ; For big numbers when the troop is selected - $aResult[$i][4] = $aTempSlot[2] - If $aResult[$i][3] = "" Or $aResult[$i][3] = 0 Then - $aResult[$i][3] = Number(getTroopCountSmall(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1))) ; For small numbers when the troop isn't selected - $aResult[$i][4] = $aTempSlot[2] - EndIf - - If StringInStr($aResult[$i][0], "ESpell") <> 0 And $g_bSmartZapEnable Then - $aResult[$i][5] = getTroopsSpellsLevel(Number($aTempSlot[0] + $iX1) + $iSPellLevelOCR, 704) - If $aResult[$i][5] <> "" Then $g_iESpellLevel = $aResult[$i][5] ; If they aren't empty will store the correct level, or will be level 1 , just in case - If $g_bDebugSmartZap Then SetLog("Earthquake Spell detected with level: " & $aResult[$i][5], $COLOR_DEBUG) - EndIf - If StringInStr($aResult[$i][0], "LSpell") <> 0 And $g_bSmartZapEnable Then - $aResult[$i][5] = getTroopsSpellsLevel(Number($aTempSlot[0] + $iX1) + $iSPellLevelOCR, 704) - If $aResult[$i][5] <> "" Then $g_iLSpellLevel = $aResult[$i][5] ; If they aren't empty will store the correct level, or will be level 1 , just in case - If $g_bDebugSmartZap Then SetLog("Lightning Spell detected with level: " & $aResult[$i][5], $COLOR_DEBUG) - EndIf - EndIf - Else - SetLog("Error while detecting Attackbar", $COLOR_ERROR) - SetLog("Detection: " & $aResult[$i][0] & "|X:" & $aResult[$i][1] & "|Y:" & $aResult[$i][2], $COLOR_DEBUG) - $aResult[$i][3] = -1 - $aResult[$i][4] = -1 - EndIf - $sFinalResult &= "|" & TroopIndexLookup($aResult[$i][0]) & "#" & $aResult[$i][4] & "#" & $aResult[$i][3] & "#" & $aResult[$i][1] ; Name#Index#Amount#x-coord - EndIf - Next + If UBound($aAttackBar, 1) = 0 Then + SetLog("Error in AttackBarCheck(): $aAttackBar has no results in it", $COLOR_ERROR) + Return "" EndIf - EndIf + ;Sort the Arrays by X Position of the Results + _ArraySort($aAttackBar, 0, 0, 0, 1) + _ArraySort($aSlotAmountX) + If $bDoubleRow Then $aSlotAmountX = SortDoubleRowXElements($aSlotAmountX) - If $g_bDebugSetlog Then SetDebugLog("Attackbar OCR completed in " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") + SetDebugLog("AttackBarCheck(): Finished Image Search in: " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") + $iAttackbarStart = __TimerInit() - If $bDebug Then - Local $iX1 = 0, $iY1 = 635, $iX2 = 853, $iY2 = 698 - _CaptureRegion2($iX1, $iY1, $iX2, $iY2) - - Local $sSubDir = $g_sProfileTempDebugPath & "AttackBarDetection" - - DirCreate($sSubDir) - - Local $sDate = @YEAR & "-" & @MON & "-" & @MDAY, $sTime = @HOUR & "." & @MIN & "." & @SEC - Local $sDebugImageName = String($sDate & "_" & $sTime & "_.png") - Local $hEditedImage = _GDIPlus_BitmapCreateFromHBITMAP($g_hHBitmap2) - Local $hGraphic = _GDIPlus_ImageGetGraphicsContext($hEditedImage) - Local $hPenRED = _GDIPlus_PenCreate(0xFFFF0000, 3) + EndIf - For $i = 0 To UBound($aResult) - 1 - addInfoToDebugImage($hGraphic, $hPenRED, $aResult[$i][0], $aResult[$i][1], $aResult[$i][2]) - Next + #comments-start + $aAttackBar[n][8] + [n][0] = Name of the found Troop/Spell/Hero/Siege + [n][1] = The X Coordinate of the Troop/Spell/Hero/Siege + [n][2] = The Y Coordinate of the Troop/Spell/Hero/Siege + [n][3] = The Slot Number (Starts with 0) + [n][4] = The Amount + [n][5] = The X Coordinate of the Y beside the Amount + [n][6] = The Y Coordinate of the X beside the Amount + [n][7] = The Row where it is in (If Single Row all Should be 2) + #comments-end + + Local $aFinalAttackBar[0][7] + Local $aiOCRY = [-1, -1] + If Not $bRemaining Then $aiOCRY = GetOCRYLocation($aSlotAmountX) + Local $sKeepRemainTroops = "(King)|(Queen)|(Warden)|(WallW)|(BattleB)|(StoneS)" ; TODO: check if (WallW)|(BattleB)|(StoneS) required + + For $i = 0 To UBound($aAttackBar, 1) - 1 + If $aAttackBar[$i][1] > 0 Then + Local $bRemoved = False + If Not $g_bRunState Then Return + If _Sleep(20) Then Return + + If $bRemaining Then + $aTroopIsDeployed[0] = $aAttackBar[$i][5] - 15 + $aTroopIsDeployed[1] = $aAttackBar[$i][6] + If _CheckPixel($aTroopIsDeployed, True) Then + ; Troop got deployed already + $bRemoved = True + $aAttackBar[$i][4] = 0 ; set available troops to 0 + If StringRegExp($aAttackBar[$i][0], $sKeepRemainTroops, 0) = 0 Then + SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, now removed") + ContinueLoop + Else + SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, but stays") + EndIf + EndIf + Else + Local $aTempSlot = AttackSlot(Number($aAttackBar[$i][1]), Number($aAttackBar[$i][7]), $aSlotAmountX) + $aAttackBar[$i][5] = Number($aTempSlot[0]) + $aAttackBar[$i][6] = Number($aTempSlot[1]) + $aAttackBar[$i][3] = Number($aTempSlot[2]) + If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)", 0) And $aiOCRY[$aAttackBar[$i][7] - 1] <> -1 Then $aAttackBar[$i][6] = ($aiOCRY[$aAttackBar[$i][7] - 1] - 7) + EndIf - _GDIPlus_ImageSaveToFile($hEditedImage, $sSubDir & "\" & $sDebugImageName) - _GDIPlus_PenDispose($hPenRED) - _GDIPlus_GraphicsDispose($hGraphic) - _GDIPlus_BitmapDispose($hEditedImage) - EndIf + If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)|(Castle)|(WallW)|(BattleB)|(StoneS)", 0) Then + If Not $bRemoved Then $aAttackBar[$i][4] = 1 + Else + If Not $bRemoved Then + $aAttackBar[$i][4] = Number(getTroopCountSmall(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6]))) + If $aAttackBar[$i][4] = 0 Then $aAttackBar[$i][4] = Number(getTroopCountBig(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6] - 2))) + EndIf + If StringRegExp($aAttackBar[$i][0], "(LSpell)|(ESpell)", 0) And $g_bSmartZapEnable Then + Local $iSpellLevel = Number(getTroopsSpellsLevel(Number($aAttackBar[$i][5]) - 20, 704)) + If StringInStr($aAttackBar[$i][0], "LSpell") <> 0 And $iSpellLevel > 0 Then $g_iLSpellLevel = $iSpellLevel + If StringInStr($aAttackBar[$i][0], "ESpell") <> 0 And $iSpellLevel > 0 Then $g_iESpellLevel = $iSpellLevel + EndIf + EndIf + ; 0: Index, 1: Slot, 2: Amount, 3: X-Coord, 4: Y-Coord, 5: OCR X-Coord, 6: OCR Y-Coord + Local $aTempFinalArray[1][7] = [[TroopIndexLookup($aAttackBar[$i][0]), $aAttackBar[$i][3], $aAttackBar[$i][4], $aAttackBar[$i][1], $aAttackBar[$i][2], $aAttackBar[$i][5], $aAttackBar[$i][6]]] + _ArrayAdd($aFinalAttackBar, $aTempFinalArray) + EndIf + Next ; Drag left & checking extended troops from Slot11+ ONLY if not a smart attack - If ($pMatchMode <= $LB And $bCheckSlot12 And UBound($aResult) > 1 And $g_aiAttackAlgorithm[$pMatchMode] <> 3) Or $bDebug Then - SetDebuglog("$sFinalResult 1st page = " & $sFinalResult) - Local $aLastTroop1stPage[2] - $aLastTroop1stPage[0] = $aResult[UBound($aResult) - 1][0] ; Name of troop at last slot 1st page - $aLastTroop1stPage[1] = UBound(_ArrayFindAll($aResult, $aLastTroop1stPage[0])) ; Number of slots this troop appears in 1st page - SetDebuglog("$sLastTroop1stPage = " & $aLastTroop1stPage[0] & ", appears: " & $aLastTroop1stPage[1]) + If ($pMatchMode <= $LB And $bCheckSlot12 And Not $bDoubleRow And UBound($aAttackBar) > 1 And $g_aiAttackAlgorithm[$pMatchMode] <> 3) Or ($bDebug And $bCheckSlot12) Then DragAttackBar() - $sFinalResult &= ExtendedAttackBarCheck($aLastTroop1stPage, $bRemaining) + Local $aExtendedArray = ExtendedAttackBarCheck($aAttackBar, $bRemaining, $sSearchDiamond) + _ArrayAdd($aFinalAttackBar, $aExtendedArray) + $g_iTotalAttackSlot = UBound($aFinalAttackBar, 1) + 1 If Not $bRemaining Then DragAttackBar($g_iTotalAttackSlot, True) ; return drag EndIf - $sFinalResult = StringTrimLeft($sFinalResult, 1) - - Return $sFinalResult + _ArraySort($aFinalAttackBar, 0, 0, 0, 1) ; Sort Final Array by Slot Number + Return $aFinalAttackBar EndFunc ;==>AttackBarCheck -Func SlotAttack($iPosX, $aSlots) - Local $aTempSlot[3] = [0, 0, 0] - Local $iClosest = SearchNearest($aSlots, $iPosX) - Local $bLast = False - If $iClosest = _ArrayMaxIndex($aSlots, 0) And $aSlots[$iClosest][0] >= ($g_iGAME_WIDTH - 60) Then $bLast = True +Func ExtendedAttackBarCheck($aAttackBarFirstSearch, $bRemaining, $sSearchDiamond) - If $iClosest >= 0 And $iClosest < UBound($aSlots) Then - $aTempSlot[0] = $bLast ? $g_iGAME_WIDTH - 53 : $aSlots[$iClosest][0] - 15 ; X Coord | Last Item to get OCRd needs to be compensated because it could happen that the Capture Rectangle gets out of boundary and image gets not usable - $aTempSlot[1] = $aSlots[$iClosest][1] - 7 ; Y Coord - $aTempSlot[2] = $iClosest - EndIf + Local Static $aAttackBar[0][8] + Local $iLastSlotNumber = _ArrayMax($aAttackBarFirstSearch, 0, -1, -1, 3) + Local $sLastTroopName = $aAttackBarFirstSearch[_ArrayMaxIndex($aAttackBarFirstSearch, 0, -1, -1, 1)][0], $aiOCRLocation[2] = [-1, -1] + Local $aSlotAmountX[0][3] - Return $aTempSlot -EndFunc ;==>SlotAttack + ;Reset All Static Variables if the AttackBarCheck is not for Remaining + If Not $bRemaining Then + Local $aDummyArray[0][8] + $aAttackBar = $aDummyArray + $g_iTotalAttackSlot = 11 + EndIf -Func SearchNearest($aArray, $iNumber) - Local $iVal, $iValOld = _ArrayMax($aArray), $iReturn - For $i = 0 To UBound($aArray) - 1 - $iVal = Abs($aArray[$i][0] - $iNumber) - If $iValOld >= $iVal Then - $iValOld = $iVal - $iReturn = $i - EndIf - Next - Return $iReturn -EndFunc ;==>SearchNearest + If Not $g_bRunState Then Return -Func ExtendedAttackBarCheck($aLastTroop1stPage, $bRemaining) + If UBound($aAttackBar) = 0 Or Not $bRemaining Then + Local $iAttackbarStart = __TimerInit() + Local $aTempArray, $aTempCoords, $aTempMultiCoords, $iRow = 1 - Local $iX1 = 0, $iY1 = 635, $iX2 = 835, $iY2 = 698 - Static $bCheckSlotwHero2 = False + Local $aAttackBarResult = findMultiple($g_sImgAttackBarDir, $sSearchDiamond, $sSearchDiamond, 0, 1000, 0, "objectname,objectpoints", True) - ; Setup arrays, including default return values for $return - Local $aResult[1][6], $aCoordArray[1][2], $aCoords, $aCoordsSplit, $aValue, $sName, $aSlotAmountX[0][2] - If Not $g_bRunState Then Return + If UBound($aAttackBarResult) = 0 Then + SetLog("Error in AttackBarCheck(): Search did not return any results!", $COLOR_ERROR) + DebugImageSave("ErrorAttackBarCheck", False, Default, Default, "#2") + Return "" + EndIf - ; Capture the screen for comparison - _CaptureRegion2($iX1, $iY1, $iX2, $iY2) - - Local $sFinalResult = "" - ; Perform the search - Local $sAttBarRes = DllCallMyBot("SearchMultipleTilesBetweenLevels", "handle", $g_hHBitmap2, "str", $g_sImgAttackBarDir, "str", "FV", "Int", 0, "str", "FV", "Int", 0, "Int", 1000) - If IsArray($sAttBarRes) Then - If $sAttBarRes[0] = "0" Or $sAttBarRes[0] = "" Then - SetLog("Imgloc|AttackBarCheck not found!", $COLOR_ERROR) - ElseIf StringLeft($sAttBarRes[0], 2) = "-1" Then - SetLog("DLL Error: " & $sAttBarRes[0] & ", AttackBarCheck", $COLOR_RED) - Else - ; Get the keys for the dictionary item. - Local $aKeys = StringSplit($sAttBarRes[0], "|", $STR_NOCOUNT) - - ; Redimension the result array to allow for the new entries - ReDim $aResult[UBound($aKeys)][6] - Local $iResultAddDup = 0 - - ; Loop through the array - For $i = 0 To UBound($aKeys) - 1 - If Not $g_bRunState Then Return - ; Get the property values - $sName = RetrieveImglocProperty($aKeys[$i], "objectname") - ; Get the coords property - $aValue = RetrieveImglocProperty($aKeys[$i], "objectpoints") - $aCoords = decodeMultipleCoords($aValue, 50) ; dedup coords by x on 50 pixel - - If StringRegExp($sName, "(AmountX)", 0) Then - For $j = 0 To UBound($aCoords) - 1 - $aCoordsSplit = $aCoords[$j] - _ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) - Next + ;Add found Stuff into our Arrays + For $i = 0 To UBound($aAttackBarResult, 1) - 1 + $aTempArray = $aAttackBarResult[$i] + $aTempMultiCoords = decodeMultipleCoords($aTempArray[1], 60, 60, -1) + For $j = 0 To UBound($aTempMultiCoords, 1) - 1 + $aTempCoords = $aTempMultiCoords[$j] + If StringRegExp($aTempArray[0], "(AmountX)", 0) Then + _ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) + $aiOCRLocation[$iRow - 1] = $aTempCoords[1] Else - $aResult[$i + $iResultAddDup][0] = $sName - $aCoordsSplit = $aCoords[0] - If StringRegExp($sName, "(King)|(Warden)|(Queen)", 0) Then _ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) - If UBound($aCoordsSplit) = 2 Then - ; Store the coords into a two dimensional array - $aCoordArray[0][0] = $aCoordsSplit[0] ; X coord. - $aCoordArray[0][1] = $aCoordsSplit[1] ; Y coord. - Else - $aCoordArray[0][0] = -1 - $aCoordArray[0][1] = -1 - EndIf - If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aCoordArray[0][0] & "-" & $aCoordArray[0][1]) - ; Store the coords array as a sub-array - $aResult[$i + $iResultAddDup][1] = Number($aCoordArray[0][0]) - $aResult[$i + $iResultAddDup][2] = Number($aCoordArray[0][1]) - ;If a Clan Castle Spell exists - Local $iMultipleCoords = UBound($aCoords) - ; Check if two Clan Castle Spells exist with different levels - If $iMultipleCoords > 1 And StringInStr($aResult[$i + $iResultAddDup][0], "Spell") <> 0 Then - If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " detected " & $iMultipleCoords & " times!") - For $j = 1 To $iMultipleCoords - 1 - Local $aCoordsSplit2 = $aCoords[$j] - If UBound($aCoordsSplit2) = 2 Then - ; add slot - $iResultAddDup += 1 - ReDim $aResult[UBound($aKeys) + $iResultAddDup][6] - $aResult[$i + $iResultAddDup][0] = $aResult[$i + $iResultAddDup - 1][0] ; same objectname - $aResult[$i + $iResultAddDup][1] = $aCoordsSplit2[0] - $aResult[$i + $iResultAddDup][2] = $aCoordsSplit2[1] - If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aResult[$i + $iResultAddDup][1] & "-" & $aResult[$i + $iResultAddDup][2]) - Else - ; don't invalidate anything - ;$aCoordArray[0][0] = -1 - ;$aCoordArray[0][1] = -1 - EndIf - Next - EndIf + If StringRegExp($aTempArray[0], "(King)|(Queen)|(Warden)", 0) Then _ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) + Local $aTempElement[1][8] = [[$aTempArray[0], $aTempCoords[0], $aTempCoords[1], -1, -1, -1, -1, $iRow]] + _ArrayAdd($aAttackBar, $aTempElement) EndIf Next + Next - _ArraySort($aResult, 0, 0, 0, 1) ; Sort By X position , will be the Slot 0 to $i - _ArraySort($aSlotAmountX) + If UBound($aAttackBar, 1) = 0 Then + SetLog("Error in AttackBarCheck(): $aAttackBar has no results in it", $COLOR_ERROR) + Return "" + EndIf - Local $iSlotExtended = 0 - Static $iFirstExtendedSlot = -1 ; Location of 1st extended troop after drag - If Not $bRemaining Then - $iFirstExtendedSlot = -1 ; Reset value for 1st time detecting troop bar - EndIf + ;Sort the Arrays by X Position of the Results + _ArraySort($aAttackBar, 0, 0, 0, 1) + _ArraySort($aSlotAmountX) - Local $iFoundLastTroop1stPage - Local $bStart2ndPage = False - For $i = 0 To UBound($aResult) - 1 - Local $aTempSlot - If $aResult[$i][1] > 0 Then - SetDebugLog("Slot : " & $i, $COLOR_DEBUG) ;Debug - SetDebugLog("Detection : " & $aResult[$i][0] & "|x" & $aResult[$i][1] & "|y" & $aResult[$i][2], $COLOR_DEBUG) ;Debug - - ; Finding where to start the 2nd page - If $aResult[$i][0] = $aLastTroop1stPage[0] And Not $bStart2ndPage Then - $iFoundLastTroop1stPage += 1 - SetDebugLog("Found $aLastTroop1stPage[0]: " & $aResult[$i][0] & " x" & $iFoundLastTroop1stPage) - If $iFoundLastTroop1stPage >= $aLastTroop1stPage[1] Then $bStart2ndPage = True + SetDebugLog("AttackBarCheck(): Finished Image Search in: " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") + $iAttackbarStart = __TimerInit() + EndIf + + #comments-start + $aAttackBar[n][8] + [n][0] = Name of the found Troop/Spell/Hero/Siege + [n][1] = The X Coordinate of the Troop/Spell/Hero/Siege + [n][2] = The Y Coordinate of the Troop/Spell/Hero/Siege + [n][3] = The Slot Number (Starts with 0) + [n][4] = The Amount + [n][5] = The X Coordinate of the Y beside the Amount + [n][6] = The Y Coordinate of the X beside the Amount + [n][7] = The Row where it is in (If Single Row all Should be 2) + #comments-end + + Local $aFinalAttackBar[0][7] + Local $aiOCRY = [-1, -1] + Local $sKeepRemainTroops = "(King)|(Queen)|(Warden)|(WallW)|(BattleB)|(StoneS)" ; TODO: check if (WallW)|(BattleB)|(StoneS) required + + If Not $bRemaining Then + $aiOCRY = GetOCRYLocation($aSlotAmountX) + $aAttackBar = _ArrayExtract($aAttackBar, _ArraySearch($aAttackBar, $sLastTroopName, 0, 0, 0, 0, 1, 0) + 1) + EndIf + For $i = 0 To UBound($aAttackBar, 1) - 1 + If $aAttackBar[$i][1] > 0 Then + Local $bRemoved = False + If Not $g_bRunState Then Return + If _Sleep(20) Then Return + + If $bRemaining Then + $aTroopIsDeployed[0] = $aAttackBar[$i][5] - 15 + $aTroopIsDeployed[1] = $aAttackBar[$i][6] + If _CheckPixel($aTroopIsDeployed, True) Then + ; Troop got deployed already + $bRemoved = True + $aAttackBar[$i][4] = 0 ; set available troops to 0 + If StringRegExp($aAttackBar[$i][0], $sKeepRemainTroops, 0) = 0 Then + SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, now removed") ContinueLoop - EndIf - If Not $bStart2ndPage Then ContinueLoop - - $aTempSlot = SlotAttack(Number($aResult[$i][1]), $aSlotAmountX) - If $iFirstExtendedSlot = -1 Then $iFirstExtendedSlot = $aTempSlot[2] ; flag only once - $iSlotExtended = $aTempSlot[2] - $iFirstExtendedSlot + 1 - If Not $g_bRunState Then Return ; Stop function - If _Sleep(20) Then Return ; Pause function - If UBound($aTempSlot) = 3 Then - SetDebugLog("OCR : " & $aTempSlot[0] & "|SLOT: " & $aTempSlot[2], $COLOR_DEBUG) ;Debug - If $aResult[$i][0] = "Castle" Or $aResult[$i][0] = "King" Or $aResult[$i][0] = "Queen" Or $aResult[$i][0] = "Warden" Or $aResult[$i][0] = "WallW" Or $aResult[$i][0] = "BattleB" Or $aResult[$i][0] = "StoneS" Then - $aResult[$i][3] = 1 - Else - $aResult[$i][3] = Number(getTroopCountSmall(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1))) ; For small Numbers - If $aResult[$i][3] = "" Or $aResult[$i][3] = 0 Then - $aResult[$i][3] = Number(getTroopCountBig(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1) - 4)) ; For Big Numbers , when the troops is selected - EndIf - EndIf - $aResult[$i][4] = ($aTempSlot[2] + 11) - $iFirstExtendedSlot Else - Setlog("Problem with Attack bar detection!", $COLOR_ERROR) - SetLog("Detection : " & $aResult[$i][0] & "|x" & $aResult[$i][1] & "|y" & $aResult[$i][2], $COLOR_DEBUG) - $aResult[$i][3] = -1 - $aResult[$i][4] = -1 + SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, but stays") EndIf - $sFinalResult &= "|" & TroopIndexLookup($aResult[$i][0]) & "#" & $aResult[$i][4] & "#" & $aResult[$i][3] & "#" & $aResult[$i][1] EndIf - Next - If Not $bRemaining Then - $g_iTotalAttackSlot = $iSlotExtended + 10 + Else + Local $aTempSlot = AttackSlot(Number($aAttackBar[$i][1]), Number($aAttackBar[$i][7]), $aSlotAmountX) + $aAttackBar[$i][5] = Number($aTempSlot[0]) + $aAttackBar[$i][6] = Number($aTempSlot[1]) + $aAttackBar[$i][3] = Number($aTempSlot[2] + $iLastSlotNumber - 1) + If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)", 0) And $aiOCRY[$aAttackBar[$i][7] - 1] <> -1 Then $aAttackBar[$i][6] = ($aiOCRY[$aAttackBar[$i][7] - 1] - 7) EndIf - SetDebugLog("$iSlotExtended / $g_iTotalAttackSlot: " & $iSlotExtended & "/" & $g_iTotalAttackSlot) - + If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)|(Castle)|(WallW)|(BattleB)|(StoneS)", 0) Then + If Not $bRemoved Then $aAttackBar[$i][4] = 1 + Else + If Not $bRemoved Then + $aAttackBar[$i][4] = Number(getTroopCountSmall(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6]))) + If $aAttackBar[$i][4] = 0 Then $aAttackBar[$i][4] = Number(getTroopCountBig(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6] - 2))) + EndIf + If StringRegExp($aAttackBar[$i][0], "(LSpell)|(ESpell)", 0) And $g_bSmartZapEnable Then + Local $iSpellLevel = Number(getTroopsSpellsLevel(Number($aAttackBar[$i][5]) - 20, 704)) + If StringInStr($aAttackBar[$i][0], "LSpell") <> 0 And $iSpellLevel > 0 Then $g_iLSpellLevel = $iSpellLevel + If StringInStr($aAttackBar[$i][0], "ESpell") <> 0 And $iSpellLevel > 0 Then $g_iESpellLevel = $iSpellLevel + EndIf + EndIf + ; 0: Index, 1: Slot, 2: Amount, 3: X-Coord, 4: Y-Coord, 5: OCR X-Coord, 6: OCR Y-Coord + Local $aTempFinalArray[1][7] = [[TroopIndexLookup($aAttackBar[$i][0]), $aAttackBar[$i][3], $aAttackBar[$i][4], $aAttackBar[$i][1], $aAttackBar[$i][2], $aAttackBar[$i][5], $aAttackBar[$i][6]]] + _ArrayAdd($aFinalAttackBar, $aTempFinalArray) EndIf - EndIf + Next - SetDebugLog("Extended $sFinalResult: " & $sFinalResult) - Return $sFinalResult + _ArraySort($aFinalAttackBar, 0, 0, 0, 1) ; Sort Final Array by Slot Number + Return $aFinalAttackBar EndFunc ;==>ExtendedAttackBarCheck +Func GetOCRYLocation($aArray) + Local $aiReturn[2] = [-1, -1], $aTempArray[0], $aTempArray2[0] + For $i = 0 To UBound($aArray, 1) - 1 + If $aArray[$i][2] = 1 Then + _ArrayAdd($aTempArray, $aArray[$i][1]) + Else + _ArrayAdd($aTempArray2, $aArray[$i][1]) + EndIf + Next + $aiReturn[0] = _ArrayMin($aTempArray) + $aiReturn[1] = _ArrayMin($aTempArray2) + + Return $aiReturn +EndFunc ;==>GetOCRYLocation + +Func SearchNearest($aArray, $iNumber, $iRow) + Local $iVal, $iValOld = _ArrayMax($aArray), $iReturn + For $i = 0 To UBound($aArray) - 1 + $iVal = Abs($aArray[$i][0] - $iNumber) + If $iValOld >= $iVal And $iRow = Number($aArray[$i][2]) Then + $iValOld = $iVal + $iReturn = $i + EndIf + Next + Return $iReturn +EndFunc ;==>SearchNearest + +Func SortDoubleRowXElements($aArray) + Local $aSecondRow[0][3] + Local $aNewSlotAmountX[0][3] + For $i = 0 To UBound($aArray) - 1 + If $aArray[$i][2] = 2 Then + _ArrayAdd($aSecondRow, _ArrayExtract($aArray, $i, $i)) + Else + _ArrayAdd($aNewSlotAmountX, _ArrayExtract($aArray, $i, $i)) + EndIf + Next + _ArraySort($aNewSlotAmountX) + _ArraySort($aSecondRow) + _ArrayAdd($aNewSlotAmountX, $aSecondRow) + + Return $aNewSlotAmountX +EndFunc ;==>SortDoubleRowXElements + Func DragAttackBar($iTotalSlot = 20, $bBack = False) If $g_iTotalAttackSlot > 10 Then $iTotalSlot = $g_iTotalAttackSlot Local $bAlreadyDrag = False @@ -402,3 +359,49 @@ Func DragAttackBar($iTotalSlot = 20, $bBack = False) $g_iCSVLastTroopPositionDropTroopFromINI = -1 ; after drag attack bar, need to clear last troop selected Return $bAlreadyDrag EndFunc ;==>DragAttackBar + +Func AttackSlot($iPosX, $iRow, $aSlots) + Local $aTempSlot[3] = [0, 0, 0] + Local $iClosest = SearchNearest($aSlots, $iPosX, $iRow) + Local $bLast = False + If $iClosest = _ArrayMaxIndex($aSlots, 0) And $aSlots[$iClosest][0] >= ($g_iGAME_WIDTH - 60) Then $bLast = True + + If $iClosest >= 0 And $iClosest < UBound($aSlots) Then + $aTempSlot[0] = $bLast ? $g_iGAME_WIDTH - 53 : $aSlots[$iClosest][0] - 15 ; X Coord | Last Item to get OCRd needs to be compensated because it could happen that the Capture Rectangle gets out of boundary and image gets not usable + $aTempSlot[1] = $aSlots[$iClosest][1] - 7 ; Y Coord + $aTempSlot[2] = $iClosest + EndIf + + Return $aTempSlot +EndFunc ;==>AttackSlot + +Func DebugAttackBarImage($aAttackBarResult) + #comments-start + If $g_bDebugSetlog Then SetDebugLog("Attackbar OCR completed in " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") + + If $bDebug Then + Local $iX1 = 0, $iY1 = 635, $iX2 = 853, $iY2 = 698 + _CaptureRegion2($iX1, $iY1, $iX2, $iY2) + + Local $sSubDir = $g_sProfileTempDebugPath & "AttackBarDetection" + + DirCreate($sSubDir) + + Local $sDate = @YEAR & "-" & @MON & "-" & @MDAY, $sTime = @HOUR & "." & @MIN & "." & @SEC + Local $sDebugImageName = String($sDate & "_" & $sTime & "_.png") + Local $hEditedImage = _GDIPlus_BitmapCreateFromHBITMAP($g_hHBitmap2) + Local $hGraphic = _GDIPlus_ImageGetGraphicsContext($hEditedImage) + Local $hPenRED = _GDIPlus_PenCreate(0xFFFF0000, 3) + + For $i = 0 To UBound($aResult) - 1 + addInfoToDebugImage($hGraphic, $hPenRED, $aResult[$i][0], $aResult[$i][1], $aResult[$i][2]) + Next + + _GDIPlus_ImageSaveToFile($hEditedImage, $sSubDir & "\" & $sDebugImageName) + _GDIPlus_PenDispose($hPenRED) + _GDIPlus_GraphicsDispose($hGraphic) + _GDIPlus_BitmapDispose($hEditedImage) + EndIf + + #comments-end +EndFunc ;==>DebugAttackBarImage diff --git a/COCBot/functions/Image Search/imglocAuxiliary.au3 b/COCBot/functions/Image Search/imglocAuxiliary.au3 index fa8d8670b..3cd97f96e 100644 --- a/COCBot/functions/Image Search/imglocAuxiliary.au3 +++ b/COCBot/functions/Image Search/imglocAuxiliary.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Trlopes (2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -350,7 +350,7 @@ Func findImage($sImageName, $sImageTile, $sImageArea, $maxReturnPoints = 1, $bFo Return EndIf - If checkImglocError($result, "findImage", $sImageTile) = True Then + If checkImglocError($result, "findImage", $sImageTile) Then If $g_bDebugSetlog And $g_bDebugImageSave Then DebugImageSave("findImage_" & $sImageName, True) Return $aCoords EndIf @@ -707,7 +707,7 @@ Func decodeTroopEnum($tEnum) Case $eBowl Return "Bowler" Case $eIceG - Return "IceGolem" + Return "IceGolem" Case $eESpell Return "EarthquakeSpell" Case $eFSpell @@ -727,7 +727,7 @@ Func decodeTroopEnum($tEnum) Case $eSkSpell Return "SkeletonSpell" Case $eBtSpell - Return "BatSpell" + Return "BatSpell" Case $eCSpell Return "CloneSpell" Case $eCastle @@ -787,7 +787,7 @@ Func decodeTroopName($sName) Case "Bowler" Return $eBowl Case "IceGolem" - Return $eIceG + Return $eIceG Case "EarthquakeSpell" Return $eESpell Case "FreezeSpell" @@ -807,7 +807,7 @@ Func decodeTroopName($sName) Case "SkeletonSpell" Return $eSkSpell Case "BatSpell" - Return $eBtSpell + Return $eBtSpell Case "CloneSpell" Return $eCSpell Case "Castle" @@ -874,14 +874,14 @@ Func Slot($iX, $iY) ; Return Slots for Quantity Reading on Army Window Case 308 To 392 ; CC Troops Slot 5 Return 330 - Case 393 To 464 ; CC Troops Slot 6 + Case 393 To 435 ; CC Troops Slot 6 Return 403 Case 450 To 510; CC Spell Slot 1 Return 475 - Case 511 To 550 ; CC Spell Middle ( Happens with Clan Castles with the max. Capacity of 1!) + Case 511 To 535 ; CC Spell Middle ( Happens with Clan Castles with the max. Capacity of 1!) Return 510 - Case 551 To 605 ; CC Spell Slot 2 + Case 536 To 605 ; CC Spell Slot 2 Return 555 Case 625 To 700 ; CC Siege Machines Return 650 diff --git a/COCBot/functions/Image Search/imglocCheckWall.au3 b/COCBot/functions/Image Search/imglocCheckWall.au3 index 7d68c36b3..fbdb35dae 100644 --- a/COCBot/functions/Image Search/imglocCheckWall.au3 +++ b/COCBot/functions/Image Search/imglocCheckWall.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Trlopes (06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Image Search/imglocTHSearch.au3 b/COCBot/functions/Image Search/imglocTHSearch.au3 index 1848f3acd..83c878315 100644 --- a/COCBot/functions/Image Search/imglocTHSearch.au3 +++ b/COCBot/functions/Image Search/imglocTHSearch.au3 @@ -6,7 +6,7 @@ ; Return values .: None , sets several global variables ; Author ........: Trlopes (10-2016) ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -20,8 +20,9 @@ Global $IMGLOCTHFAR Global $IMGLOCTHRDISTANCE Func imglocTHSearch($bReTest = False, $myVillage = False, $bForceCapture = True) - Local $xdirectory = "imglocth-bundle" + Local $xdirectorya = "imglocth-bundle" Local $xdirectoryb = "imglocth2-bundle" + Local $xdirectory Local $sCocDiamond = "ECD" Local $redLines = "" Local $minLevel = 6 ; We only support TH6+ @@ -41,12 +42,19 @@ Func imglocTHSearch($bReTest = False, $myVillage = False, $bForceCapture = True) Local $propsNames = StringSplit($returnProps, ",", $STR_NOCOUNT) If $g_bDebugSetlog Then SetDebugLog("imgloc TH search Start", $COLOR_DEBUG) Local $numRetry = 1 ; try to find TH twice (one retry) + If $g_iDetectedImageType = 1 Then + $numRetry = 3 ; try to find TH 4 times (three retries also without snow) + EndIf For $retry = 0 To $numRetry Local $iLvlFound = 0 - If $retry > 0 Then $xdirectory = $xdirectoryb + If Mod($retry, 2) = 0 Then + $xdirectory = $xdirectorya + Else + $xdirectory = $xdirectoryb + EndIf - If $g_iDetectedImageType = 1 Then ;Snow theme on + If $g_iDetectedImageType = 1 And $retry < 2 Then ;Snow theme on $xdirectory = "snow-" & $xdirectory EndIf diff --git a/COCBot/functions/Main Screen/GetDPI_Ratio.au3 b/COCBot/functions/Main Screen/GetDPI_Ratio.au3 index 6963d6bb1..aa558685c 100644 --- a/COCBot/functions/Main Screen/GetDPI_Ratio.au3 +++ b/COCBot/functions/Main Screen/GetDPI_Ratio.au3 @@ -7,7 +7,7 @@ ; Return values .: Ratio of DPI to standard 96 DPI display ; Author ........: Spiff59 (AutoIt Forums posted 9/23/2013) ; Modified ......: KnowJack -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: None ; Link ..........: https://www.autoitscript.com/forum/topic/154885-autoit-and-dpi-awareness/ @@ -40,7 +40,7 @@ EndFunc ;==>GetDPI_Ratio ; Return values .: None ; Author ........: Spiff59 (AutoIt Forums posted 9/23/2013) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: None ; Link ..........: https://github.com/MyBotRun/MyBot/wiki https://www.autoitscript.com/forum/topic/154885-autoit-and-dpi-awareness/ diff --git a/COCBot/functions/Main Screen/RemoveGhostTrayIcons.au3 b/COCBot/functions/Main Screen/RemoveGhostTrayIcons.au3 index 46bb2c107..f43ae2664 100644 --- a/COCBot/functions/Main Screen/RemoveGhostTrayIcons.au3 +++ b/COCBot/functions/Main Screen/RemoveGhostTrayIcons.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: wraithdu (AutoIt Forums) ; Modified ......: Cosote (12-2015), Knowjack (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://www.autoitscript.com/forum/topic/103871-_systray-udf, https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Main Screen/checkAttackDisable.au3 b/COCBot/functions/Main Screen/checkAttackDisable.au3 index f877688c4..1dd0a5360 100644 --- a/COCBot/functions/Main Screen/checkAttackDisable.au3 +++ b/COCBot/functions/Main Screen/checkAttackDisable.au3 @@ -9,7 +9,7 @@ ; Return values .: None ; Author ........: KnowJack (08-2015) ; Modified ......: TheMaster (2015), MonkeyHunter (12-2015/01-2016), Hervidero (12-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Main Screen/checkMainScreen.au3 b/COCBot/functions/Main Screen/checkMainScreen.au3 index 31d144de7..4ea44ddbc 100644 --- a/COCBot/functions/Main Screen/checkMainScreen.au3 +++ b/COCBot/functions/Main Screen/checkMainScreen.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack (07-2015) , TheMaster1st(2015), Fliegerfaust (06-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkObstacles(), waitMainScreen() ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Main Screen/checkObstacles.au3 b/COCBot/functions/Main Screen/checkObstacles.au3 index e75df76d8..c5f6b3eb6 100644 --- a/COCBot/functions/Main Screen/checkObstacles.au3 +++ b/COCBot/functions/Main Screen/checkObstacles.au3 @@ -7,7 +7,7 @@ ; Return values .: Returns True when there is something blocking ; Author ........: Hungle (2014) ; Modified ......: KnowJack (2015), Sardo (08-2015), TheMaster1st(10-2015), MonkeyHunter (08-2016), MMHK (12-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -137,6 +137,7 @@ Func _checkObstacles($bBuilderBase = False, $bRecursive = False) ;Checks if some SetLog("Please wait for loading CoC...!") PushSharedPrefs() OpenCoC() + Return True EndIf Case _CheckPixel($aIsCheckOOS, $g_bNoCapturePixel) Or (UBound(decodeSingleCoord(FindImageInPlace("OOS", $g_sImgOutOfSync, "355,335,435,395", False, $g_iAndroidLollipop))) > 1) ; Check OoS SetLog("Out of Sync Error, Reloading CoC...", $COLOR_ERROR) diff --git a/COCBot/functions/Main Screen/isGemOpen.au3 b/COCBot/functions/Main Screen/isGemOpen.au3 index c3b35fc58..136e5334b 100644 --- a/COCBot/functions/Main Screen/isGemOpen.au3 +++ b/COCBot/functions/Main Screen/isGemOpen.au3 @@ -6,7 +6,7 @@ ; Return values .: True if Gem window is open and it was closed with click to $aAway ; Author ........: KnowJack (05-2015) ; Modified ......: Sardo (12-2015), MonkeyHutner (12-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Main Screen/isNoUpgradeLoot.au3 b/COCBot/functions/Main Screen/isNoUpgradeLoot.au3 index f1a1e0505..28113eac4 100644 --- a/COCBot/functions/Main Screen/isNoUpgradeLoot.au3 +++ b/COCBot/functions/Main Screen/isNoUpgradeLoot.au3 @@ -6,7 +6,7 @@ ; Return values .: True if Not enough loot, and clicks away to close the window ; Author ........: KnowJack (05-2015) ; Modified ......: Sardo (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Main Screen/isOnBuilderBase.au3 b/COCBot/functions/Main Screen/isOnBuilderBase.au3 index 23fff97c9..e1487691b 100644 --- a/COCBot/functions/Main Screen/isOnBuilderBase.au3 +++ b/COCBot/functions/Main Screen/isOnBuilderBase.au3 @@ -6,7 +6,7 @@ ; Return values .: True if is on Builder Base ; Author ........: Fliegerfaust (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -15,10 +15,10 @@ Func isOnBuilderBase($bNeedCaptureRegion = False) _Sleep($DELAYISBUILDERBASE) + Local $aSearchResult = decodeSingleCoord(findImage("isOnBuilderBase", $g_sImgIsOnBB, GetDiamondFromRect("260,0,406,54"), 1, $bNeedCaptureRegion)) - Local $ImagePath = @ScriptDir & "\imgxml\village\Page\BuilderIsland\" - If QuickMIS("BC1", $ImagePath, 260, 0, 406, 54, $bNeedCaptureRegion, $g_bDebugSetlog) Then - If $g_bDebugSetlog Then SetDebugLog("Builder Base Builder detected", $COLOR_DEBUG) + If IsArray($aSearchResult) And UBound($aSearchResult) = 2 Then + SetDebugLog("Builder Base Builder detected", $COLOR_DEBUG) Return True Else Return False diff --git a/COCBot/functions/Main Screen/isProblemAffect.au3 b/COCBot/functions/Main Screen/isProblemAffect.au3 index 04decb18f..233b09fd7 100644 --- a/COCBot/functions/Main Screen/isProblemAffect.au3 +++ b/COCBot/functions/Main Screen/isProblemAffect.au3 @@ -6,7 +6,7 @@ ; Return values .: True if screen is blocked by an error message from CoC or BlueStacks ; Author ........: HungLe (05-2015) ; Modified ......: Hervidero (05-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Main Screen/waitMainScreen.au3 b/COCBot/functions/Main Screen/waitMainScreen.au3 index c58167d66..20f5d2799 100644 --- a/COCBot/functions/Main Screen/waitMainScreen.au3 +++ b/COCBot/functions/Main Screen/waitMainScreen.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack (08-2015), TheMaster1st (09-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ADB.au3 b/COCBot/functions/Other/ADB.au3 index 4ea1de9bf..5f3952d25 100644 --- a/COCBot/functions/Other/ADB.au3 +++ b/COCBot/functions/Other/ADB.au3 @@ -7,7 +7,7 @@ ; Return values .: True if no device not found error was detected or device is now connected and $cmd executed ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/Api.au3 b/COCBot/functions/Other/Api.au3 index 277e87f89..34e7d8b87 100644 --- a/COCBot/functions/Other/Api.au3 +++ b/COCBot/functions/Other/Api.au3 @@ -3,7 +3,7 @@ ; Description ...: Register Windows Message and provides functions to communicate between bots and manage bot application ; Author ........: cosote (12-2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Read/write memory: https://www.autoitscript.com/forum/topic/104117-shared-memory-variables-demo/ ; Related .......: diff --git a/COCBot/functions/Other/ApiClient.au3 b/COCBot/functions/Other/ApiClient.au3 index 43ea3eb85..66cb5a9cf 100644 --- a/COCBot/functions/Other/ApiClient.au3 +++ b/COCBot/functions/Other/ApiClient.au3 @@ -3,7 +3,7 @@ ; Description ...: Register Windows Message and provides functions to communicate between bots and manage bot application ; Author ........: cosote (12-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Read/write memory: https://www.autoitscript.com/forum/topic/104117-shared-memory-variables-demo/ ; Related .......: diff --git a/COCBot/functions/Other/ApiHost.au3 b/COCBot/functions/Other/ApiHost.au3 index 45df946ca..299076571 100644 --- a/COCBot/functions/Other/ApiHost.au3 +++ b/COCBot/functions/Other/ApiHost.au3 @@ -3,7 +3,7 @@ ; Description ...: Register Windows Message and provides functions to communicate between bots and manage bot application ; Author ........: cosote (12-2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Read/write memory: https://www.autoitscript.com/forum/topic/104117-shared-memory-variables-demo/ ; Related .......: diff --git a/COCBot/functions/Other/AppUserModelId.au3 b/COCBot/functions/Other/AppUserModelId.au3 index 9da7404ba..b354d2ba1 100644 --- a/COCBot/functions/Other/AppUserModelId.au3 +++ b/COCBot/functions/Other/AppUserModelId.au3 @@ -10,7 +10,7 @@ ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Link ..........: https://www.autoitscript.com/forum/topic/168099-how-to-prevent-multiple-guis-from-combining-in-the-taskbar/ ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Example .......: No diff --git a/COCBot/functions/Other/CheckPrerequisites.au3 b/COCBot/functions/Other/CheckPrerequisites.au3 index 90712a55d..39f96ebdd 100644 --- a/COCBot/functions/Other/CheckPrerequisites.au3 +++ b/COCBot/functions/Other/CheckPrerequisites.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Heridero, Zengzeng (2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/CheckVersion.au3 b/COCBot/functions/Other/CheckVersion.au3 index 7e7cece37..05fd28d4f 100644 --- a/COCBot/functions/Other/CheckVersion.au3 +++ b/COCBot/functions/Other/CheckVersion.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2015-06) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/Click.au3 b/COCBot/functions/Other/Click.au3 index 356e837d6..7d7a5722f 100644 --- a/COCBot/functions/Other/Click.au3 +++ b/COCBot/functions/Other/Click.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: (2014) ; Modified ......: HungLe (may-2015) Sardo 2015-08 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ClickDrag.au3 b/COCBot/functions/Other/ClickDrag.au3 index d9e3ba913..5e1ed2893 100644 --- a/COCBot/functions/Other/ClickDrag.au3 +++ b/COCBot/functions/Other/ClickDrag.au3 @@ -18,7 +18,7 @@ ; 5 = Failed to send a MouseMove command. ; 7 = Failed to send a MouseUp command. ; Author(s): KillerDeluxe -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ClickOkay.au3 b/COCBot/functions/Other/ClickOkay.au3 index e4dfbc513..2317831de 100644 --- a/COCBot/functions/Other/ClickOkay.au3 +++ b/COCBot/functions/Other/ClickOkay.au3 @@ -8,7 +8,7 @@ ; Return values .: Returns True if button found, if button not found, then returns False and sets @error = 1 ; Author ........: MonkeyHunter (2015-12) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ClickRemove.au3 b/COCBot/functions/Other/ClickRemove.au3 index b74a51502..cb3d88fbe 100644 --- a/COCBot/functions/Other/ClickRemove.au3 +++ b/COCBot/functions/Other/ClickRemove.au3 @@ -7,7 +7,7 @@ ; Return values .: Returns True if button found, if button not found, then returns False and sets @error = 1 ; Author ........: MonkeyHunter (2015-12)(2017-06) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ClickZoneR.au3 b/COCBot/functions/Other/ClickZoneR.au3 index 43ea5abb7..5eda884c9 100644 --- a/COCBot/functions/Other/ClickZoneR.au3 +++ b/COCBot/functions/Other/ClickZoneR.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Boju(2016 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/CloseRunningBot.au3 b/COCBot/functions/Other/CloseRunningBot.au3 index f955da922..7d238bae9 100644 --- a/COCBot/functions/Other/CloseRunningBot.au3 +++ b/COCBot/functions/Other/CloseRunningBot.au3 @@ -6,7 +6,7 @@ ; Return values .: True if window found and closed ; Author ........: Cosote (2016-01) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/CreateLogFile.au3 b/COCBot/functions/Other/CreateLogFile.au3 index 7c6b54327..e0bdc9aef 100644 --- a/COCBot/functions/Other/CreateLogFile.au3 +++ b/COCBot/functions/Other/CreateLogFile.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -82,7 +82,7 @@ EndFunc ;==>CreateLogFile ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/DebugImageSave.au3 b/COCBot/functions/Other/DebugImageSave.au3 index ff8234b72..ea893ccc3 100644 --- a/COCBot/functions/Other/DebugImageSave.au3 +++ b/COCBot/functions/Other/DebugImageSave.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: KnowJack (Aug 2015) ; Modified ......: Sardo (2016-01) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/DeleteFiles.au3 b/COCBot/functions/Other/DeleteFiles.au3 index 9258fd916..5e091a197 100644 --- a/COCBot/functions/Other/DeleteFiles.au3 +++ b/COCBot/functions/Other/DeleteFiles.au3 @@ -7,7 +7,7 @@ ; Author ........: Sardo (2015-06), MonkeyHunter (05-2017) ; Modified ......: ; Needs..........: include -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ExtMsgBox.au3 b/COCBot/functions/Other/ExtMsgBox.au3 index 52217fe23..031f1aeaa 100644 --- a/COCBot/functions/Other/ExtMsgBox.au3 +++ b/COCBot/functions/Other/ExtMsgBox.au3 @@ -9,7 +9,7 @@ ; Author(s) .....: Melba23, based on some original code by photonbuddy & YellowLab, and KaFu (default font data) ; Link ..........: https://www.autoitscript.com/forum/topic/109096-extended-message-box-bugfix-version-9-aug-16/ ; -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ExtendedErrorInfo.au3 b/COCBot/functions/Other/ExtendedErrorInfo.au3 index 8837feb2a..9a854bd49 100644 --- a/COCBot/functions/Other/ExtendedErrorInfo.au3 +++ b/COCBot/functions/Other/ExtendedErrorInfo.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (2016-2) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -42,7 +42,7 @@ EndFunc ;==>_logErrorDLLCall ; Return values .: None ; Author ........: MonkeyHunter (2016-2) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -69,7 +69,7 @@ EndFunc ;==>_logErrorDateDiff ; Return values .: None ; Author ........: MonkeyHunter (2016-2) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/FindAButton.au3 b/COCBot/functions/Other/FindAButton.au3 index ffaf63f94..bc68ff237 100644 --- a/COCBot/functions/Other/FindAButton.au3 +++ b/COCBot/functions/Other/FindAButton.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MMHK (11-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/FindPos.au3 b/COCBot/functions/Other/FindPos.au3 index 252ca2461..5f157be53 100644 --- a/COCBot/functions/Other/FindPos.au3 +++ b/COCBot/functions/Other/FindPos.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Your Name ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/GUICtrlGetBkColor.au3 b/COCBot/functions/Other/GUICtrlGetBkColor.au3 index 748f67421..a62b2de30 100644 --- a/COCBot/functions/Other/GUICtrlGetBkColor.au3 +++ b/COCBot/functions/Other/GUICtrlGetBkColor.au3 @@ -7,7 +7,7 @@ ; Failure - 0 ; Author ........: guinness ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/IsPage.au3 b/COCBot/functions/Other/IsPage.au3 index add0aac0c..4eb2a061a 100644 --- a/COCBot/functions/Other/IsPage.au3 +++ b/COCBot/functions/Other/IsPage.au3 @@ -5,7 +5,7 @@ ; Description ...: Verify if you are in the correct window... ; Author ........: Sardo (2015) ; Modified ......: ProMac (2015), MonkeyHunter (12-2015) -; Remarks .......: This file is part of MyBot Copyright 2015-2018 +; Remarks .......: This file is part of MyBot Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Returns True or False ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -58,7 +58,7 @@ EndFunc ;==>IsTrainPage Func IsAttackPage($bCapturePixel = $g_bCapturePixel) - If IsPageLoop($aIsAttackPage, 1, $bCapturePixel) Then + If IsPageLoop($aIsAttackPage, 1, $bCapturePixel) Or IsPageLoop($aDoubRowAttackBar, 1, $bCapturePixel) Then If $g_bDebugSetlog Or $g_bDebugClick Then SetLog("**Attack Window OK**", $COLOR_ACTION) Return True EndIf diff --git a/COCBot/functions/Other/KillProcess.au3 b/COCBot/functions/Other/KillProcess.au3 index 8349ff083..a1e89d11d 100644 --- a/COCBot/functions/Other/KillProcess.au3 +++ b/COCBot/functions/Other/KillProcess.au3 @@ -9,7 +9,7 @@ ; Return values .: True if process was killed, false if not or _Sleep interrupted ; Author ........: Cosote (Dec-2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/LaunchConsole.au3 b/COCBot/functions/Other/LaunchConsole.au3 index c3d6c57af..a5c912e1f 100644 --- a/COCBot/functions/Other/LaunchConsole.au3 +++ b/COCBot/functions/Other/LaunchConsole.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Cosote (2015-12) ; Modified ......: Cosote (2016-08) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/MBRFunc.au3 b/COCBot/functions/Other/MBRFunc.au3 index 27d34862c..be9c3ea5d 100644 --- a/COCBot/functions/Other/MBRFunc.au3 +++ b/COCBot/functions/Other/MBRFunc.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Didipe (2015) ; Modified ......: Hervidero (2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/MakeScreenshot.au3 b/COCBot/functions/Other/MakeScreenshot.au3 index c017314d2..18583061f 100644 --- a/COCBot/functions/Other/MakeScreenshot.au3 +++ b/COCBot/functions/Other/MakeScreenshot.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Sardo (2015-06) ; Modified ......: Hervidero, ProMac (2015-10), MonkeyHunter (2016-2) -; Remarks .......: This file is part of MyBot Copyright 2015-2018 +; Remarks .......: This file is part of MyBot Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/MoveMouseOutBS.au3 b/COCBot/functions/Other/MoveMouseOutBS.au3 index b780d59a0..8502a814d 100644 --- a/COCBot/functions/Other/MoveMouseOutBS.au3 +++ b/COCBot/functions/Other/MoveMouseOutBS.au3 @@ -4,7 +4,7 @@ ; Description ...: Moves Mouse out of BS if it is inside of BS window ; Author ........: The Master (2015) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot Copyright 2015-2018 +; Remarks .......: This file is part of MyBot Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/Multilanguage.au3 b/COCBot/functions/Other/Multilanguage.au3 index 1a0c733ce..4f240bb67 100644 --- a/COCBot/functions/Other/Multilanguage.au3 +++ b/COCBot/functions/Other/Multilanguage.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2015-11), Hervidero (2015-11), Boju (2017-04) ; Modified ......: -; Remarks .......: This file is part of MyBot Copyright 2015-2018 +; Remarks .......: This file is part of MyBot Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/OnAutoItErrorRegisterBot.au3 b/COCBot/functions/Other/OnAutoItErrorRegisterBot.au3 index cca0e878b..e93fcf2c8 100644 --- a/COCBot/functions/Other/OnAutoItErrorRegisterBot.au3 +++ b/COCBot/functions/Other/OnAutoItErrorRegisterBot.au3 @@ -4,18 +4,18 @@ #CS Name: OnAutoItErrorRegister - Register AutoIt critical error handler (syntax error usualy). - Author: Copyright © 2011-2015 CreatoR's Lab (G.Sandler), www.creator-lab.ucoz.ru, www.autoit-script.ru. All rights reserved. + Author: Copyright © 2011-2015 CreatoR's Lab (G.Sandler), www.creator-lab.ucoz.ru, www.autoit-script.ru. All rights reserved. AutoIt version: 3.3.10.2 - 3.3.12.0 UDF version: 2.0 Credits: - * JScript (João Carlos) - code parts and few ideas from _AutoItErrorTrap UDF. + * JScript (João Carlos) - code parts and few ideas from _AutoItErrorTrap UDF. Notes: * The UDF can not handle crashes that triggered by memory leaks, such as DllCall crashes, "Recursion level has been exceeded..." (when using hook method ($bUseStdOut = False)). * When using StdOut method ($bUseStdOut = True), CUI not supported, and additional process executed to allow monitor for errors. * After using _OnAutoItErrorUnRegister when $bUseStdOut = True, standard AutoIt error message will not be displayed on following syntax error. - * To use the "Send bug report" feature, there is need to fill related parameters (variables) under the «User Variables» section in UDF file (check the comments of these variables), or just build your own user function. + * To use the "Send bug report" feature, there is need to fill related parameters (variables) under the «User Variables» section in UDF file (check the comments of these variables), or just build your own user function. [If $bSetErrLine is True...] * Script must be executed before compilation (after any change in it), or use '#AutoIt3Wrapper_Run_Before=%autoitdir%\AutoIt3.exe "%in%" /BC_Strip' in your main script. diff --git a/COCBot/functions/Other/RestartBot.au3 b/COCBot/functions/Other/RestartBot.au3 index eec43b69d..068f8c598 100644 --- a/COCBot/functions/Other/RestartBot.au3 +++ b/COCBot/functions/Other/RestartBot.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: MyBot.run team ; Modified ......: Cosote (Feb-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/ScriptingDictionaryTools.au3 b/COCBot/functions/Other/ScriptingDictionaryTools.au3 index e4e58c0b6..e2c5fa2a2 100644 --- a/COCBot/functions/Other/ScriptingDictionaryTools.au3 +++ b/COCBot/functions/Other/ScriptingDictionaryTools.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: BugFix ( bugfix@autoit.de ) ; Modified ......: MonkeyHunter (04-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/SetLog.au3 b/COCBot/functions/Other/SetLog.au3 index 741b5a85e..1b5534b42 100644 --- a/COCBot/functions/Other/SetLog.au3 +++ b/COCBot/functions/Other/SetLog.au3 @@ -13,7 +13,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/StopWatch.au3 b/COCBot/functions/Other/StopWatch.au3 index ce89a55f7..b9f1d6ae6 100644 --- a/COCBot/functions/Other/StopWatch.au3 +++ b/COCBot/functions/Other/StopWatch.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Cosote, 12-2017 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/StringSize.au3 b/COCBot/functions/Other/StringSize.au3 index 815514918..522c59445 100644 --- a/COCBot/functions/Other/StringSize.au3 +++ b/COCBot/functions/Other/StringSize.au3 @@ -8,7 +8,7 @@ ; Author(s) .....: Melba23 - thanks to trancexx for the default DC code ; Link ..........: https://www.autoitscript.com/forum/topic/109096-extended-message-box-bugfix-version-9-aug-16/ ; -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/Synchronization.au3 b/COCBot/functions/Other/Synchronization.au3 index 781edf9c3..91ac5c2ad 100644 --- a/COCBot/functions/Other/Synchronization.au3 +++ b/COCBot/functions/Other/Synchronization.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: Cosote (2016-08) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/Tab.au3 b/COCBot/functions/Other/Tab.au3 index a6febe775..8526e0512 100644 --- a/COCBot/functions/Other/Tab.au3 +++ b/COCBot/functions/Other/Tab.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/TestLanguage.au3 b/COCBot/functions/Other/TestLanguage.au3 index 6586df398..b9de4a465 100644 --- a/COCBot/functions/Other/TestLanguage.au3 +++ b/COCBot/functions/Other/TestLanguage.au3 @@ -7,7 +7,7 @@ ; Author ........: Sardo (2015-06) , MHK2012 (2018-02) ; Modified ......: Hervidero(2015) ; -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/Time.au3 b/COCBot/functions/Other/Time.au3 index 605ce7804..cc95003ec 100644 --- a/COCBot/functions/Other/Time.au3 +++ b/COCBot/functions/Other/Time.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -30,7 +30,7 @@ EndFunc ;==>TimeDebug ; Return values .: Returns number of milliseconds since PC was started ; Author ........: MonkeyHunter (2017-3) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -54,7 +54,7 @@ EndFunc ;==>__TimerInit ; Return values .: None ; Author ........: MonkeyHunter (2017-3) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -84,7 +84,7 @@ EndFunc ;==>__TimerDiff ; Return values .: Returns performance counter value based on system clock ; Author ........: MonkeyHunter (2017-3) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -122,7 +122,7 @@ EndFunc ;==>_HPTimerInit ; Return values .: integer time in milliseconds ; Author ........: MonkeyHunter (2017-3) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/TogglePause.au3 b/COCBot/functions/Other/TogglePause.au3 index 2072b09ed..32e871ae2 100644 --- a/COCBot/functions/Other/TogglePause.au3 +++ b/COCBot/functions/Other/TogglePause.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (01-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/UpdateStats.Mini.au3 b/COCBot/functions/Other/UpdateStats.Mini.au3 index 24b2285a2..2fa5f9414 100644 --- a/COCBot/functions/Other/UpdateStats.Mini.au3 +++ b/COCBot/functions/Other/UpdateStats.Mini.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: kaganus (06-2015) ; Modified ......: CodeSlinger69 (01-2017), Fliegerfaust (02-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/UpdateStats.au3 b/COCBot/functions/Other/UpdateStats.au3 index 605f65edb..47307453f 100644 --- a/COCBot/functions/Other/UpdateStats.au3 +++ b/COCBot/functions/Other/UpdateStats.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: kaganus (06-2015) ; Modified ......: CodeSlinger69 (01-2017), Fliegerfaust (02-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -636,6 +636,8 @@ Func UpdateStats($bForceUpdate = False) EndIf Next + If Not _DateIsValid($g_sLabUpgradeTime) Then GUICtrlSetData($g_hLbLLabTime, "") + If ProfileSwitchAccountEnabled() Then ;village report GUICtrlSetData($g_ahLblResultGoldNowAcc[$g_iCurAccount], _NumberFormat($g_aiCurrentLoot[$eLootGold], True)) @@ -746,6 +748,7 @@ Func ResetStats() For $i = 0 To 7 GUICtrlSetData($g_ahLblResultRuntimeNowAcc[$i], "00:00:00") $g_aiRunTime[$i] = 0 + GUICtrlSetData($g_hLbLLabTime, "") Next EndIf UpdateStats() diff --git a/COCBot/functions/Other/WerFaultClose.au3 b/COCBot/functions/Other/WerFaultClose.au3 index b79382aae..9ea4573a9 100644 --- a/COCBot/functions/Other/WerFaultClose.au3 +++ b/COCBot/functions/Other/WerFaultClose.au3 @@ -7,7 +7,7 @@ ; Return values .: Number of windows closed ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkMainscreen, isProblemAffect ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/WindowsArrange.au3 b/COCBot/functions/Other/WindowsArrange.au3 index 3d52c626c..f3d593071 100644 --- a/COCBot/functions/Other/WindowsArrange.au3 +++ b/COCBot/functions/Other/WindowsArrange.au3 @@ -7,7 +7,7 @@ ; Author ........: Sardo (2015-06) (2015-09) ; Modified ......: ; -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -339,7 +339,7 @@ EndFunc ;==>WinIsChildOf ; Return values .: True if window was moved, False otherwise ; Author ........: CodeSlinger69 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/WmiAPI.au3 b/COCBot/functions/Other/WmiAPI.au3 index d149f483b..ccec3500f 100644 --- a/COCBot/functions/Other/WmiAPI.au3 +++ b/COCBot/functions/Other/WmiAPI.au3 @@ -6,7 +6,7 @@ ; Return values .: Array containing array of fields ; Author ........: cosote ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/_NumberFormat.au3 b/COCBot/functions/Other/_NumberFormat.au3 index 2260330ca..a4eb0f0bc 100644 --- a/COCBot/functions/Other/_NumberFormat.au3 +++ b/COCBot/functions/Other/_NumberFormat.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: ; Modified ......: kaganus (August 2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/_PadStringCenter.au3 b/COCBot/functions/Other/_PadStringCenter.au3 index c435cb22f..c9b2a9900 100644 --- a/COCBot/functions/Other/_PadStringCenter.au3 +++ b/COCBot/functions/Other/_PadStringCenter.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/_Sleep.au3 b/COCBot/functions/Other/_Sleep.au3 index e24e4b575..cc1ee76f6 100644 --- a/COCBot/functions/Other/_Sleep.au3 +++ b/COCBot/functions/Other/_Sleep.au3 @@ -8,7 +8,7 @@ ; Return values .: True when $g_bRunState is False otherwise True (also True if $CheckRunState=False) ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/_SleepStatus.au3 b/COCBot/functions/Other/_SleepStatus.au3 index 9dc92a9e7..b7105e2fd 100644 --- a/COCBot/functions/Other/_SleepStatus.au3 +++ b/COCBot/functions/Other/_SleepStatus.au3 @@ -12,7 +12,7 @@ ; True: check for run state and bot's stopped ; Author ........: KnowJack (June-2015) ; Modified ......: MMHK (Dec-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/_StatusUpdateTime.au3 b/COCBot/functions/Other/_StatusUpdateTime.au3 index 34b4d39d8..780575ede 100644 --- a/COCBot/functions/Other/_StatusUpdateTime.au3 +++ b/COCBot/functions/Other/_StatusUpdateTime.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: KnowJack (Aug2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/_TicksToDay.au3 b/COCBot/functions/Other/_TicksToDay.au3 index c26cdb9dd..e81ad3cb8 100644 --- a/COCBot/functions/Other/_TicksToDay.au3 +++ b/COCBot/functions/Other/_TicksToDay.au3 @@ -12,7 +12,7 @@ ; @error: 1 - $iTicks < 0 ; Author ........: MMHK (May-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: _TicksToTime ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Other/image_get_info.au3 b/COCBot/functions/Other/image_get_info.au3 index 392a8a3a1..c6666a820 100644 --- a/COCBot/functions/Other/image_get_info.au3 +++ b/COCBot/functions/Other/image_get_info.au3 @@ -488,7 +488,7 @@ Func _AddTiffTag(ByRef $sInfo, $nID, $vTag) _Add($sInfo, "Model", $vTag) ; 0x0111 StripOffsets Case 0x0112 - _AddArray($sInfo, "Orientation", $vTag, ";Normal;Mirrored;180°;180° and mirrored;90° left and mirrored;90° right;90° right and mirrored;90° left") + _AddArray($sInfo, "Orientation", $vTag, ";Normal;Mirrored;180°;180° and mirrored;90° left and mirrored;90° right;90° right and mirrored;90° left") Case 0x0115 _Add($sInfo, "SamplesPerPixel", $vTag) ; 0x0116 RowsPerStrip diff --git a/COCBot/functions/Pixels/GetListPixel.au3 b/COCBot/functions/Pixels/GetListPixel.au3 index 4036372f8..1e9c006e9 100644 --- a/COCBot/functions/Pixels/GetListPixel.au3 +++ b/COCBot/functions/Pixels/GetListPixel.au3 @@ -3,7 +3,7 @@ ; Description ...: Pixel and Locate Image functions ; Author ........: HungLe (april-2015) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/_CaptureRegion.au3 b/COCBot/functions/Pixels/_CaptureRegion.au3 index cdd117fcc..1739145d7 100644 --- a/COCBot/functions/Pixels/_CaptureRegion.au3 +++ b/COCBot/functions/Pixels/_CaptureRegion.au3 @@ -13,7 +13,7 @@ ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -53,7 +53,7 @@ EndFunc ;==>_CaptureRegion ; Return values .: None ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -80,7 +80,7 @@ EndFunc ;==>_CaptureRegion2 ; Return values .: None ; Author ........: cosote 2017-Feb ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -175,7 +175,7 @@ EndFunc ;==>_CaptureGameScreen ; Return values .: None ; Author ........: cosote (Feb-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -200,7 +200,7 @@ EndFunc ;==>_CaptureDispose ; Return values .: None ; Author ........: cosote ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -222,7 +222,7 @@ EndFunc ;==>_CaptureRegion2Sync ; Return values .: None ; Author ........: cosote ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -246,7 +246,7 @@ EndFunc ;==>_CaptureRegions ; Return values .: new hHBitmap Object of requested size ; Author ........: ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -282,7 +282,7 @@ EndFunc ;==>GetHHBitmapArea ; Return values .: Boolean ; Author ........: Cosote (2016-Aug) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -300,7 +300,7 @@ EndFunc ;==>FastCaptureRegion ; Return values .: Boolean ; Author ........: Cosote (2016-Aug) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -319,7 +319,7 @@ EndFunc ;==>NeedCaptureRegion ; Return values .: None ; Author ........: Cosote (2016-Aug) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -337,7 +337,7 @@ EndFunc ;==>ForceCaptureRegion ; Return values .: True/False when checking for test image or configured test image when updated ; Author ........: Cosote (2016-Aug) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -359,7 +359,7 @@ EndFunc ;==>TestCapture ; Return values .: True/False when checking for test image or configured test image when updated ; Author ........: Cosote (2017-Feb) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/_CheckPixel.au3 b/COCBot/functions/Pixels/_CheckPixel.au3 index 2dbe4f99a..1199b6948 100644 --- a/COCBot/functions/Pixels/_CheckPixel.au3 +++ b/COCBot/functions/Pixels/_CheckPixel.au3 @@ -11,7 +11,7 @@ ; Return values .: True when the referenced pixel is found, False if not found ; Author ........: FastFrench (2015) ; Modified ......: Hervidero (2015), MonkeyHunter (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/_ColorCheck.au3 b/COCBot/functions/Pixels/_ColorCheck.au3 index b8234f3c8..e8d99161e 100644 --- a/COCBot/functions/Pixels/_ColorCheck.au3 +++ b/COCBot/functions/Pixels/_ColorCheck.au3 @@ -6,7 +6,7 @@ ; Return values .: True or False ; Author ........: ; Modified ......: Hervidero (2015), MonkeyHunter (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/_GetPixelColor.au3 b/COCBot/functions/Pixels/_GetPixelColor.au3 index 81bc5d703..06a3cfb96 100644 --- a/COCBot/functions/Pixels/_GetPixelColor.au3 +++ b/COCBot/functions/Pixels/_GetPixelColor.au3 @@ -12,7 +12,7 @@ ; Return values .: None ; Author ........: ; Modified ......: MonkeyHunter (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/_MultiPixelSearch.au3 b/COCBot/functions/Pixels/_MultiPixelSearch.au3 index ce552dd09..bf2500b3f 100644 --- a/COCBot/functions/Pixels/_MultiPixelSearch.au3 +++ b/COCBot/functions/Pixels/_MultiPixelSearch.au3 @@ -17,7 +17,7 @@ ; Return values .: None ; Author ........: Your Name ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/_PixelSearch.au3 b/COCBot/functions/Pixels/_PixelSearch.au3 index f4987019d..792c8112e 100644 --- a/COCBot/functions/Pixels/_PixelSearch.au3 +++ b/COCBot/functions/Pixels/_PixelSearch.au3 @@ -13,7 +13,7 @@ ; Return values .: None ; Author ........: Your Name ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Pixels/isInsideDiamond.au3 b/COCBot/functions/Pixels/isInsideDiamond.au3 index 38f825235..639874879 100644 --- a/COCBot/functions/Pixels/isInsideDiamond.au3 +++ b/COCBot/functions/Pixels/isInsideDiamond.au3 @@ -7,7 +7,7 @@ ; Return values .: True or False ; Author ........: Hervidero (2015-may-21) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Read Text/BuildingInfo.au3 b/COCBot/functions/Read Text/BuildingInfo.au3 index bd7c029ca..7fb505d33 100644 --- a/COCBot/functions/Read Text/BuildingInfo.au3 +++ b/COCBot/functions/Read Text/BuildingInfo.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: KnowJack ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -20,7 +20,7 @@ Func BuildingInfo($iXstart, $iYstart) $sBldgText = getNameBuilding($iXstart, $iYstart) ; Get Unit name and level with OCR If $sBldgText = "" Then ; try a 2nd time after a short delay if slow PC - If _Sleep($DELAYBUILDINGINFO1) Then Return + If _Sleep($DELAYBUILDINGINFO1) Then Return $aResult $sBldgText = getNameBuilding($iXstart, $iYstart) ; Get Unit name and level with OCR EndIf If $g_bDebugSetlog Then SetDebugLog("Read building Name String = " & $sBldgText, $COLOR_DEBUG) ;debug diff --git a/COCBot/functions/Read Text/getBuilderCount.au3 b/COCBot/functions/Read Text/getBuilderCount.au3 index 63f423114..11a94ca91 100644 --- a/COCBot/functions/Read Text/getBuilderCount.au3 +++ b/COCBot/functions/Read Text/getBuilderCount.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (06-2016) ; Modified ......: Fliegerfaust (06-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Read Text/getOcr.au3 b/COCBot/functions/Read Text/getOcr.au3 index ecb595267..e46584c54 100644 --- a/COCBot/functions/Read Text/getOcr.au3 +++ b/COCBot/functions/Read Text/getOcr.au3 @@ -3,7 +3,7 @@ ; Description ...: Gets complete value of gold/Elixir/DarkElixir/Trophy/Gem xxx,xxx ; Author ........: Didipe (2015) ; Modified ......: ProMac (2015), Hervidero (2015-12), MMHK (2016-12), MR.ViPER (2017-4) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -72,7 +72,7 @@ Func getResourcesLootT($x_start, $y_start) ; -> Gets complete value of Trophies EndFunc ;==>getResourcesLootT Func getResourcesBonus($x_start, $y_start) ; -> Gets complete value of Gold/Elixir bonus loot in "AttackReport.au3" - Return getOcrAndCapture("coc-bonus", $x_start, $y_start, 98, 16, True) + Return getOcrAndCapture("coc-bonus", $x_start, $y_start, 98, 20, True) EndFunc ;==>getResourcesBonus Func getResourcesBonusPerc($x_start, $y_start) ; -> Gets complete value of Bonus % in "AttackReport.au3" diff --git a/COCBot/functions/Read Text/getPBTInfo.au3 b/COCBot/functions/Read Text/getPBTInfo.au3 index 13da7a91d..b20d87e91 100644 --- a/COCBot/functions/Read Text/getPBTInfo.au3 +++ b/COCBot/functions/Read Text/getPBTInfo.au3 @@ -8,7 +8,7 @@ ; ...............: Sets @error if buttons not found properly or problem with OCR of PBT time, and sets @extended with string error message ; Author ........: MonkeyHunter (2016-02) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Read Text/getPBTime.au3 b/COCBot/functions/Read Text/getPBTime.au3 index f1f18145f..bd8c3400f 100644 --- a/COCBot/functions/Read Text/getPBTime.au3 +++ b/COCBot/functions/Read Text/getPBTime.au3 @@ -8,7 +8,7 @@ ; ...............: Sets @error if problem, and sets @extended with string error message ; Author ........: MonkeyHunter (02-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Read Text/getShieldInfo.au3 b/COCBot/functions/Read Text/getShieldInfo.au3 index 09dc959f6..a2d029812 100644 --- a/COCBot/functions/Read Text/getShieldInfo.au3 +++ b/COCBot/functions/Read Text/getShieldInfo.au3 @@ -9,7 +9,7 @@ ; ...............: Sets @error if buttons not found properly or problem with OCR of shield time, and sets @extended with string error message ; Author ........: MonkeyHunter (01-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -51,7 +51,7 @@ Func getShieldInfo() $sTimeResult = getOcrGuardShield(484, 21) ; read Shield time If $g_bDebugSetlog Then SetDebugLog("OCR Shield Time= " & $sTimeResult, $COLOR_DEBUG) If $sTimeResult = "" Then ; try a 2nd time after a short delay if slow PC and null read - If _Sleep($DELAYPERSONALSHIELD2) Then Return ; pause for slow PC + If _Sleep($DELAYPERSONALSHIELD2) Then Return $aPBReturnResult ; pause for slow PC $sTimeResult = getOcrGuardShield(484, 21) ; read Shield time If $g_bDebugSetlog Then SetDebugLog("OCR2 Shield Time= " & $sTimeResult, $COLOR_DEBUG) If $sTimeResult = "" Then ; error if no read value @@ -62,7 +62,7 @@ Func getShieldInfo() EndIf EndIf - If _Sleep($DELAYPERSONALSHIELD3) Then Return ; improve pause/stop button response + If _Sleep($DELAYPERSONALSHIELD3) Then Return $aPBReturnResult ; improve pause/stop button response $aString = StringSplit($sTimeResult, " ") ; split hours/minutes or minutes/seconds Switch $aString[0] diff --git a/COCBot/functions/Search/CheckZoomOut.au3 b/COCBot/functions/Search/CheckZoomOut.au3 index 4fbe7790f..618061185 100644 --- a/COCBot/functions/Search/CheckZoomOut.au3 +++ b/COCBot/functions/Search/CheckZoomOut.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Code Monkey #12 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/CompareResources.au3 b/COCBot/functions/Search/CompareResources.au3 index 1f58489aa..c9cd3e464 100644 --- a/COCBot/functions/Search/CompareResources.au3 +++ b/COCBot/functions/Search/CompareResources.au3 @@ -6,7 +6,7 @@ ; Return values .: True if compaired resources match the search conditions, False if not ; Author ........: (2014) ; Modified ......: AtoZ, Hervidero (2015), kaganus (June 2015, August 2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: VillageSearch, GetResources ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/FindTownHall.au3 b/COCBot/functions/Search/FindTownHall.au3 index b6f4dcd90..789f48e65 100644 --- a/COCBot/functions/Search/FindTownHall.au3 +++ b/COCBot/functions/Search/FindTownHall.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: diff --git a/COCBot/functions/Search/GetResources.au3 b/COCBot/functions/Search/GetResources.au3 index a60aabb7c..2d0c1c0b2 100644 --- a/COCBot/functions/Search/GetResources.au3 +++ b/COCBot/functions/Search/GetResources.au3 @@ -3,7 +3,7 @@ ; Description ...: Uses the ColorCheck until the screen is clear from Clouds to Get Resources values. ; Author ........: HungLe (2015) ; Modified ......: ProMac (2015), Hervidero (2015), MonkeyHunter (08-2016)(05-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/IsSearchAttackEnabled.au3 b/COCBot/functions/Search/IsSearchAttackEnabled.au3 index 29802153f..587f54ad4 100644 --- a/COCBot/functions/Search/IsSearchAttackEnabled.au3 +++ b/COCBot/functions/Search/IsSearchAttackEnabled.au3 @@ -7,7 +7,7 @@ ; .; Will return error code if problem determining random no attack time. ; Author ........: MonkeyHunter (06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/IsSearchModeActive.au3 b/COCBot/functions/Search/IsSearchModeActive.au3 index ccd3bac87..b23cf965a 100644 --- a/COCBot/functions/Search/IsSearchModeActive.au3 +++ b/COCBot/functions/Search/IsSearchModeActive.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Sardo (2016-01) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -128,7 +128,7 @@ EndFunc ;==>IsSearchModeActiveMini ; Return values .: Returns True if Wait for spells is enabled for any enabled attack mode, false if not ; Author ........: MonkeyHunter (06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -153,7 +153,7 @@ EndFunc ;==>IsWaitforSpellsActive ; Return values .: Returns True if Wait for any Hero is enabled for any enabled attack mode, false if not ; Author ........: MonkeyHunter (06-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -178,7 +178,7 @@ EndFunc ;==>IsWaitforHeroesActive ; Return values .: Returns True if Wait for any Siege is enabled for any enabled attack mode, false if not ; Author ........: ProMac (07-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/PrepareSearch.au3 b/COCBot/functions/Search/PrepareSearch.au3 index cc7e8cebb..4c807f8ec 100644 --- a/COCBot/functions/Search/PrepareSearch.au3 +++ b/COCBot/functions/Search/PrepareSearch.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Code Monkey #4 ; Modified ......: KnowJack (Aug 2015), MonkeyHunter(2015-12) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -21,7 +21,7 @@ Func PrepareSearch($Mode = $DB) ;Click attack button and find match button, will If $g_bSearchRestartPickupHero And $Mode <> $DT Then For $pTroopType = $eKing To $eWarden ; check all 3 hero For $pMatchMode = $DB To $g_iModeCount - 1 ; check all attack modes - If IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) Then + If IsUnitUsed($pMatchMode, $pTroopType) Then If Not _DateIsValid($g_asHeroHealTime[$pTroopType - $eKing]) Then getArmyHeroTime("All", True, True) ExitLoop 2 diff --git a/COCBot/functions/Search/SearchTownHallLoc.au3 b/COCBot/functions/Search/SearchTownHallLoc.au3 index 6fc7af95a..c80a10617 100644 --- a/COCBot/functions/Search/SearchTownHallLoc.au3 +++ b/COCBot/functions/Search/SearchTownHallLoc.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Code Monkey #5 ; Modified ......: Sardo 2016-02 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/VillageSearch.au3 b/COCBot/functions/Search/VillageSearch.au3 index 270fc64ab..ca4aef5ab 100644 --- a/COCBot/functions/Search/VillageSearch.au3 +++ b/COCBot/functions/Search/VillageSearch.au3 @@ -7,7 +7,7 @@ ; Author ........: Code Monkey #6 ; Modified ......: kaganus (Jun/Aug 2015), Sardo 2015-07, KnowJack(Aug 2015) , The Master (2015), MonkeyHunter (02/08-2016), ; CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -44,8 +44,8 @@ Func _VillageSearch() ;Control for searching a village that meets conditions Local $bReturnToPickupHero = False Local $abHeroUse[3] = [False, False, False] For $i = 0 to 2 - $abHeroUse[$i] = ($g_abSearchSearchesEnable[$DB] ? IsSpecialTroopToBeUsed($DB, $eKing + $i) : False) _ - Or ($g_abSearchSearchesEnable[$LB] ? IsSpecialTroopToBeUsed($LB, $eKing + $i) : False) + $abHeroUse[$i] = ($g_abSearchSearchesEnable[$DB] ? IsUnitUsed($DB, $eKing + $i) : False) _ + Or ($g_abSearchSearchesEnable[$LB] ? IsUnitUsed($LB, $eKing + $i) : False) Next If $g_bDebugDeadBaseImage Or $g_aiSearchEnableDebugDeadBaseImage > 0 Then @@ -147,14 +147,21 @@ Func _VillageSearch() ;Control for searching a village that meets conditions EndIf Next + ; reset village measures + setVillageOffset(0, 0, 1) + ConvertInternalExternArea() + ; only one capture here, very important for consistent debug images, zombies, redline calc etc. ForceCaptureRegion() _CaptureRegion2() ; measure enemy village (only if resources match) + Local $bAlwaysMeasure = True For $i = 0 To $g_iModeCount - 1 - If $match[$i] Then + If $match[$i] Or $bAlwaysMeasure Then If CheckZoomOut("VillageSearch", True, False) = False Then + DebugImageSave("VillageSearchMeasureFailed", False, Default, Default) ; make clean snapshot as well + ExitLoop ; disable exiting search for December 2018 update due to zoomout issues ; check two more times, only required for snow theme (snow fall can make it easily fail), but don't hurt to keep it $i = 0 Local $bMeasured @@ -221,22 +228,39 @@ Func _VillageSearch() ;Control for searching a village that meets conditions ; ----------------- CHECK WEAK BASE ------------------------------------------------- If (IsWeakBaseActive($DB) And $dbBase And ($match[$DB] Or $g_abFilterMeetOneConditionEnable[$DB])) Or _ (IsWeakBaseActive($LB) And ($match[$LB] Or $g_abFilterMeetOneConditionEnable[$LB])) Then - - ;let try to reduce weekbase time - If ($g_iSearchTH <> "-") Then - $weakBaseValues = IsWeakBase($g_iImglocTHLevel, $g_sImglocRedline, False) - Else - $weakBaseValues = IsWeakBase(11, "", False) - EndIf - + ; check twice if Eagle is active + Local $maxTry = 1 For $i = 0 To $g_iModeCount - 2 - If IsWeakBaseActive($i) And (($i = $DB And $dbBase) Or $i <> $DB) And ($match[$i] Or $g_abFilterMeetOneConditionEnable[$i]) Then - If getIsWeak($weakBaseValues, $i) Then - $match[$i] = True - Else - $match[$i] = False - $noMatchTxt &= ", Not a Weak Base for " & $g_asModeText[$i] + If $g_abFilterMaxEagleEnable[$i] Then $maxTry = 2 + Next + For $try = 1 To $maxTry ; check twice to be sure due to walking heroes + ;let try to reduce weekbase time + If ($g_iSearchTH <> "-") Then + $weakBaseValues = IsWeakBase($g_iImglocTHLevel, $g_sImglocRedline, False) + Else + $weakBaseValues = IsWeakBase($g_iMaxTHLevel, "", False) + EndIf + Local $bIsWeak = False + For $i = 0 To $g_iModeCount - 2 + If IsWeakBaseActive($i) And (($i = $DB And $dbBase) Or $i <> $DB) And ($match[$i] Or $g_abFilterMeetOneConditionEnable[$i]) Then + If getIsWeak($weakBaseValues, $i) Then + $match[$i] = True + $bIsWeak = True + Else + $match[$i] = False + $noMatchTxt &= ", Not a Weak Base for " & $g_asModeText[$i] + ; don't check again + $try = 2 + EndIf EndIf + Next + + If $bIsWeak And $try = 1 Then + ResumeAndroid() + If _Sleep(3000) Then Return ; wait 5 Seconds to give heroes time to "walk away" + ForceCaptureRegion() + _CaptureRegion2() + SuspendAndroid() EndIf Next EndIf @@ -439,7 +463,7 @@ Func _VillageSearch() ;Control for searching a village that meets conditions ;--- write in log match found ---- If $g_bSearchAlertMe Then - TrayTip($g_asModeText[$g_iMatchMode] & " Match Found!", "Gold: " & $g_iSearchGold & "; Elixir: " & $g_iSearchElixir & "; Dark: " & $g_iSearchDark & "; Trophy: " & $g_iSearchTrophy, "", 0) + TrayTip($g_sProfileCurrentName & ": " & $g_asModeText[$g_iMatchMode] & " Match Found!", "Gold: " & $g_iSearchGold & "; Elixir: " & $g_iSearchElixir & "; Dark: " & $g_iSearchDark & "; Trophy: " & $g_iSearchTrophy, "", 0) If FileExists(@WindowsDir & "\media\Festival\Windows Exclamation.wav") Then SoundPlay(@WindowsDir & "\media\Festival\Windows Exclamation.wav", 1) ElseIf FileExists(@WindowsDir & "\media\Windows Exclamation.wav") Then diff --git a/COCBot/functions/Search/WaitForClouds.au3 b/COCBot/functions/Search/WaitForClouds.au3 index e1aeb4f47..d780ad098 100644 --- a/COCBot/functions/Search/WaitForClouds.au3 +++ b/COCBot/functions/Search/WaitForClouds.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (08-2016) ; Modified ......: MonkeyHunter (05-2017) MMHK (07-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -208,8 +208,9 @@ Func chkAttackSearchPersonalBreak() EndFunc ;==>chkAttackSearchPersonalBreak Func btnSearchFailRetry() - If QuickMIS("BC1", @ScriptDir & "\imgxml\Resources\Clouds", 270, 400, 600, 500) Then - Click($g_iQuickMISX + 270, $g_iQuickMISY + 400, 1, 0, "#0512") + Local $aRetrySearchButton = decodeSingleCoord(findImage("Retry Search", $g_sImgRetrySearchButton, GetDiamondFromRect("270,400,600,500"), 1, True)) + If IsArray($aRetrySearchButton) And UBound($aRetrySearchButton) = 2 Then + Click($aRetrySearchButton[0], $aRetrySearchButton[1], 1, 0, "#0512") Return True EndIf Return False diff --git a/COCBot/functions/Search/WeakBase.au3 b/COCBot/functions/Search/WeakBase.au3 index c12c04930..6767149d1 100644 --- a/COCBot/functions/Search/WeakBase.au3 +++ b/COCBot/functions/Search/WeakBase.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: LunaEclipse(April 2016) ; Modified ......: MonkeyHunter (04-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -274,7 +274,7 @@ Func weakBaseCheck($townHallLevel = 11, $redlines = "", $bForceCaptureRegion = T Return $aResult EndFunc ;==>weakBaseCheck -Func IsWeakBase($townHallLevel = 11, $redlines = "", $bForceCaptureRegion = True) +Func IsWeakBase($townHallLevel = $g_iMaxTHLevel, $redlines = "", $bForceCaptureRegion = True) Local $aResult = weakBaseCheck($townHallLevel, $redlines, $bForceCaptureRegion) ; Forces the display of the various statistical displays, if set to true @@ -335,7 +335,7 @@ EndFunc ;==>IsWeakBase ; Return values .: 1D array with highest level matched data found ; Author ........: MonkeyHunter (04-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Search/multiSearch.au3 b/COCBot/functions/Search/multiSearch.au3 index 8a687f9ac..4eaf0e73f 100644 --- a/COCBot/functions/Search/multiSearch.au3 +++ b/COCBot/functions/Search/multiSearch.au3 @@ -6,7 +6,7 @@ ; Return values .: An array of values of detected defense levels and information ; Author ........: LunaEclipse(April 2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/AddIdleTime.au3 b/COCBot/functions/Village/AddIdleTime.au3 index c789ce793..c478c6208 100644 --- a/COCBot/functions/Village/AddIdleTime.au3 +++ b/COCBot/functions/Village/AddIdleTime.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2916-09) ; Modified ......: Boju (2016-11), MMHK (2017-02) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/Auto Upgrade.au3 b/COCBot/functions/Village/Auto Upgrade.au3 index 246060d36..6291b0ee3 100644 --- a/COCBot/functions/Village/Auto Upgrade.au3 +++ b/COCBot/functions/Village/Auto Upgrade.au3 @@ -147,8 +147,8 @@ Func _AutoUpgrade() Switch $g_aUpgradeNameLevel[1] Case "Barbarian King", "Archer Queen", "Grand Warden" $g_aUpgradeResourceCostDuration[0] = QuickMIS("N1", $g_sImgAUpgradeRes, 690, 540, 730, 580) ; get resource - $g_aUpgradeResourceCostDuration[1] = getResourcesBonus(598, 519 + $g_iMidOffsetY) ; get cost - $g_aUpgradeResourceCostDuration[2] = getHeroUpgradeTime(464, 527 + $g_iMidOffsetY) ; get duration + $g_aUpgradeResourceCostDuration[1] = getResourcesBonus(598, 522 + $g_iMidOffsetY) ; get cost + $g_aUpgradeResourceCostDuration[2] = getHeroUpgradeTime(578, 465 + $g_iMidOffsetY) ; get duration Case Else $g_aUpgradeResourceCostDuration[0] = QuickMIS("N1", $g_sImgAUpgradeRes, 460, 510, 500, 550) ; get resource $g_aUpgradeResourceCostDuration[1] = getResourcesBonus(366, 487 + $g_iMidOffsetY) ; get cost diff --git a/COCBot/functions/Village/BoostBarracks.au3 b/COCBot/functions/Village/BoostBarracks.au3 index ccb6d599b..affbe0a4b 100644 --- a/COCBot/functions/Village/BoostBarracks.au3 +++ b/COCBot/functions/Village/BoostBarracks.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MR.ViPER (9/9/2016) ; Modified ......: MR.ViPER (17/10/2016), Fliegerfaust (21/12/2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BoostHeroes.au3 b/COCBot/functions/Village/BoostHeroes.au3 index 60dc3b1b0..ec95637f3 100644 --- a/COCBot/functions/Village/BoostHeroes.au3 +++ b/COCBot/functions/Village/BoostHeroes.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac 2015 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BoostStructure.au3 b/COCBot/functions/Village/BoostStructure.au3 index f2fdf9973..78db969b1 100644 --- a/COCBot/functions/Village/BoostStructure.au3 +++ b/COCBot/functions/Village/BoostStructure.au3 @@ -6,7 +6,7 @@ ; Return values .: True if boosted, False if not ; Author ........: Cosote Oct. 2016 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BotCommand.au3 b/COCBot/functions/Village/BotCommand.au3 index 0ff3e4561..4af798f09 100644 --- a/COCBot/functions/Village/BotCommand.au3 +++ b/COCBot/functions/Village/BotCommand.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Code Monkey #17 ; Modified ......: MonkeyHunter (2016-2), CodeSlinger69 (2017), MonkeyHunter (2017-3) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -155,7 +155,7 @@ EndFunc ;==>BotCommand ; Return values .: None ; Author ........: MonkeyHunter (2017-3) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BotDetectFirstTime.au3 b/COCBot/functions/Village/BotDetectFirstTime.au3 index 8b591ebd6..edb2ce51a 100644 --- a/COCBot/functions/Village/BotDetectFirstTime.au3 +++ b/COCBot/functions/Village/BotDetectFirstTime.au3 @@ -3,7 +3,7 @@ ; Description ...: This script detects your builings on the first run ; Author ........: HungLe (april-2015) ; Modified ......: Hervidero (april-2015),(may-2015), HungLe (may-2015), KnowJack(July 2015), Sardo 2015-08, CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BreakPersonalShield.au3 b/COCBot/functions/Village/BreakPersonalShield.au3 index 60dcf0239..48c622243 100644 --- a/COCBot/functions/Village/BreakPersonalShield.au3 +++ b/COCBot/functions/Village/BreakPersonalShield.au3 @@ -8,7 +8,7 @@ ; ...............: Sets @error if buttons not found properly and sets @extended with string error message ; Author ........: MonkeyHunter (2016-01)(2017-06) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BuilderBase/BuilderBaseReport.au3 b/COCBot/functions/Village/BuilderBase/BuilderBaseReport.au3 index be52a4077..924c416ab 100644 --- a/COCBot/functions/Village/BuilderBase/BuilderBaseReport.au3 +++ b/COCBot/functions/Village/BuilderBase/BuilderBaseReport.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BuilderBase/Collect.au3 b/COCBot/functions/Village/BuilderBase/Collect.au3 index 073240378..66123f78f 100644 --- a/COCBot/functions/Village/BuilderBase/Collect.au3 +++ b/COCBot/functions/Village/BuilderBase/Collect.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Fliegerfaust (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BuilderBase/StartClockTowerBoost.au3 b/COCBot/functions/Village/BuilderBase/StartClockTowerBoost.au3 index 7b39b7714..db6339f78 100644 --- a/COCBot/functions/Village/BuilderBase/StartClockTowerBoost.au3 +++ b/COCBot/functions/Village/BuilderBase/StartClockTowerBoost.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Fliegerfaust (06-2017), MMHK (07-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/BuilderBase/SuggestedUpgrades.au3 b/COCBot/functions/Village/BuilderBase/SuggestedUpgrades.au3 index 3010db232..8c82b69f1 100644 --- a/COCBot/functions/Village/BuilderBase/SuggestedUpgrades.au3 +++ b/COCBot/functions/Village/BuilderBase/SuggestedUpgrades.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/CheckBaseQuick.au3 b/COCBot/functions/Village/CheckBaseQuick.au3 index 5b0000bd5..b0cc56c26 100644 --- a/COCBot/functions/Village/CheckBaseQuick.au3 +++ b/COCBot/functions/Village/CheckBaseQuick.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (12-2015, 09-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/CheckImageType.au3 b/COCBot/functions/Village/CheckImageType.au3 index 877aec841..707bf54dc 100644 --- a/COCBot/functions/Village/CheckImageType.au3 +++ b/COCBot/functions/Village/CheckImageType.au3 @@ -3,7 +3,7 @@ ; Description ...: Detects what Image Type (Normal/Snow)Theme is on your village and sets the $g_iDetectedImageType used for deadbase and Townhall detection. ; Author ........: Hervidero (2015-12) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot Copyright 2015-2018 +; Remarks .......: This file is part of MyBot Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Assign the Village Theme detected to $g_iDetectedImageType ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/CheckNeedOpenTrain.au3 b/COCBot/functions/Village/CheckNeedOpenTrain.au3 index 101636c6d..3579bfc58 100644 --- a/COCBot/functions/Village/CheckNeedOpenTrain.au3 +++ b/COCBot/functions/Village/CheckNeedOpenTrain.au3 @@ -6,7 +6,7 @@ ; Return values .: True/False ; Author ........: Boju (01-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/Clan Games/ClanGames.au3 b/COCBot/functions/Village/Clan Games/ClanGames.au3 index ad357433b..27dae7c2f 100644 --- a/COCBot/functions/Village/Clan Games/ClanGames.au3 +++ b/COCBot/functions/Village/Clan Games/ClanGames.au3 @@ -95,7 +95,7 @@ Func _ClanGames($test = False) ; Check for BS/CoC errors just in case If isProblemAffect(True) Then checkMainScreen(False) - Local $Rows = ["300,155,760,245", "300,315,760,405", "300,475,760,550"] + Local $FullArea = "300,155,765,550" ; Let's selected only the necessary images [Total=71] Local $pathImages = @ScriptDir & "\imgxml\Resources\ClanGamesImages\Challenges" @@ -119,62 +119,57 @@ Func _ClanGames($test = False) ; [0]=ChallengeName [1]=EventName [2]=Xaxis [3]=Yaxis Local $aAllDetectionsOnScreen[0][4] - ; we can make an image detection by row !!! can be faster?!!! - For $x = 0 To UBound($Rows) - 1 + Local $sClanGamesWindow = GetDiamondFromRect($FullArea) ; Contains iXStart, $iYStart, $iXEnd, $iYEnd + Local $aCurrentDetection = findMultiple($pathTemp, $sClanGamesWindow, $sClanGamesWindow, 0, 1000, 0, "objectname,objectpoints", True) + Local $aEachDetection - Setlog("Detecting the row number " & $x + 1) - Local $sClanGamesWindow = GetDiamondFromRect($Rows[$x]) ; Contains iXStart, $iYStart, $iXEnd, $iYEnd - Local $aCurrentDetection = findMultiple($pathTemp, $sClanGamesWindow, "", 0, 1000, 0, "objectname,objectpoints", True) - Local $aEachDetection - - If $g_bChkClanGamesDebug Then Setlog("_ClanGames findMultiple (in " & Round(TimerDiff($hTimer) / 1000, 2) & " seconds)", $COLOR_INFO) - $hTimer = TimerInit() + If $g_bChkClanGamesDebug Then Setlog("_ClanGames findMultiple (in " & Round(TimerDiff($hTimer) / 1000, 2) & " seconds)", $COLOR_INFO) + $hTimer = TimerInit() - ; Let's split Names and Coordinates and populate a new array - If UBound($aCurrentDetection) > 0 Then + ; Let's split Names and Coordinates and populate a new array + If UBound($aCurrentDetection) > 0 Then - ; Temp Variables - Local $FullImageName, $StringCoordinates, $sString, $tempObbj, $tempObbjs, $aNames + ; Temp Variables + Local $FullImageName, $StringCoordinates, $sString, $tempObbj, $tempObbjs, $aNames - For $i = 0 To UBound($aCurrentDetection) - 1 - If _Sleep(50) Then Return ; just in case of PAUSE - If Not $g_bRunState Then Return ; Stop Button + For $i = 0 To UBound($aCurrentDetection) - 1 + If _Sleep(50) Then Return ; just in case of PAUSE + If Not $g_bRunState Then Return ; Stop Button - $aEachDetection = $aCurrentDetection[$i] - ; Justto debug - SetDebugLog(_ArrayToString($aEachDetection)) + $aEachDetection = $aCurrentDetection[$i] + ; Justto debug + SetDebugLog(_ArrayToString($aEachDetection)) - $FullImageName = String($aEachDetection[0]) - $StringCoordinates = $aEachDetection[1] + $FullImageName = String($aEachDetection[0]) + $StringCoordinates = $aEachDetection[1] - If $FullImageName = "" Or $StringCoordinates = "" Then ContinueLoop + If $FullImageName = "" Or $StringCoordinates = "" Then ContinueLoop - ; Exist more than One coordinate!? - If StringInStr($StringCoordinates, "|") Then - ; Code to test the string if exist anomalies on string - $StringCoordinates = StringReplace($StringCoordinates, "||", "|") - $sString = StringRight($StringCoordinates, 1) - If $sString = "|" Then $StringCoordinates = StringTrimRight($StringCoordinates, 1) - ; Split the coordinates - $tempObbjs = StringSplit($StringCoordinates, "|", $STR_NOCOUNT) - ; Just get the first [0] - $tempObbj = StringSplit($tempObbjs[0], ",", $STR_NOCOUNT) ; will be a string : 708,360 - If UBound($tempObbj) <> 2 Then ContinueLoop - Else - $tempObbj = StringSplit($StringCoordinates, ",", $STR_NOCOUNT) ; will be a string : 708,360 - If UBound($tempObbj) <> 2 Then ContinueLoop - EndIf + ; Exist more than One coordinate!? + If StringInStr($StringCoordinates, "|") Then + ; Code to test the string if exist anomalies on string + $StringCoordinates = StringReplace($StringCoordinates, "||", "|") + $sString = StringRight($StringCoordinates, 1) + If $sString = "|" Then $StringCoordinates = StringTrimRight($StringCoordinates, 1) + ; Split the coordinates + $tempObbjs = StringSplit($StringCoordinates, "|", $STR_NOCOUNT) + ; Just get the first [0] + $tempObbj = StringSplit($tempObbjs[0], ",", $STR_NOCOUNT) ; will be a string : 708,360 + If UBound($tempObbj) <> 2 Then ContinueLoop + Else + $tempObbj = StringSplit($StringCoordinates, ",", $STR_NOCOUNT) ; will be a string : 708,360 + If UBound($tempObbj) <> 2 Then ContinueLoop + EndIf - $aNames = StringSplit($FullImageName, "-", $STR_NOCOUNT) + $aNames = StringSplit($FullImageName, "-", $STR_NOCOUNT) - ReDim $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) + 1][4] - $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][0] = $aNames[0] ; Challenge Name - $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][1] = $aNames[1] ; Event Name - $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][2] = $tempObbj[0] ; Xaxis - $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][3] = $tempObbj[1] ; Yaxis - Next - EndIf - Next + ReDim $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) + 1][4] + $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][0] = $aNames[0] ; Challenge Name + $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][1] = $aNames[1] ; Event Name + $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][2] = $tempObbj[0] ; Xaxis + $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][3] = $tempObbj[1] ; Yaxis + Next + EndIf Local $aSelectChallenges[0][5] diff --git a/COCBot/functions/Village/Collect.au3 b/COCBot/functions/Village/Collect.au3 index 85c9131ce..c6a35850d 100644 --- a/COCBot/functions/Village/Collect.au3 +++ b/COCBot/functions/Village/Collect.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Sardo (08-2015), KnowJack(10-2015), kaganus (10-2015), ProMac (04-2016), Codeslinger69 (01-2017), Fliegerfaust (11-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/ConvertOCRTime.au3 b/COCBot/functions/Village/ConvertOCRTime.au3 index 0e6338dfa..b25d29e92 100644 --- a/COCBot/functions/Village/ConvertOCRTime.au3 +++ b/COCBot/functions/Village/ConvertOCRTime.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Boju (11-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/DonateCC.au3 b/COCBot/functions/Village/DonateCC.au3 index 1aa28aac0..b0c860adb 100644 --- a/COCBot/functions/Village/DonateCC.au3 +++ b/COCBot/functions/Village/DonateCC.au3 @@ -7,14 +7,14 @@ ; Author ........: Zax (2015) ; Modified ......: Safar46 (2015), Hervidero (2015-04), HungLe (2015-04), Sardo (2015-08), Promac (2015-12), Hervidero (2016-01), MonkeyHunter (2016-07), ; CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Global $g_aiPrepDon[5] = [0, 0, 0, 0, 0] +Global $g_aiPrepDon[6] = [0, 0, 0, 0, 0, 0] Global $g_iTotalDonateTroopCapacity, $g_iTotalDonateSpellCapacity, $g_iTotalDonateSiegeMachineCapacity Global $g_iDonTroopsLimit = 8, $iDonSpellsLimit = 1, $g_iDonTroopsAv = 0, $g_iDonSpellsAv = 0 Global $g_iDonTroopsQuantityAv = 0, $g_iDonTroopsQuantity = 0, $g_iDonSpellsQuantityAv = 0, $g_iDonSpellsQuantity = 0 @@ -40,11 +40,14 @@ Func PrepareDonateCC() EndIf Next ; Siege + $g_aiPrepDon[4] = 0 + $g_aiPrepDon[5] = 0 For $i = $eSiegeWallWrecker To $eSiegeMachineCount - 1 $g_aiPrepDon[4] = BitOR($g_aiPrepDon[4], ($g_abChkDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $i] ? 1 : 0)) + $g_aiPrepDon[5] = BitOR($g_aiPrepDon[5], ($g_abChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $i] ? 1 : 0)) Next - $g_iActiveDonate = BitOR($g_aiPrepDon[0], $g_aiPrepDon[1], $g_aiPrepDon[2], $g_aiPrepDon[3], $g_aiPrepDon[4]) + $g_iActiveDonate = BitOR($g_aiPrepDon[0], $g_aiPrepDon[1], $g_aiPrepDon[2], $g_aiPrepDon[3], $g_aiPrepDon[4], $g_aiPrepDon[5]) EndFunc ;==>PrepareDonateCC Func IsDonateQueueOnly(ByRef $abDonateQueueOnly) @@ -129,13 +132,13 @@ EndFunc ;==>IsDonateQueueOnly Func DonateCC($bCheckForNewMsg = False) Local $bDonateTroop = ($g_aiPrepDon[0] = 1) - Local $bDonateAllTroop = ($g_aiPrepDon[1] = 1) Local $bDonateSpell = ($g_aiPrepDon[2] = 1) Local $bDonateAllSpell = ($g_aiPrepDon[3] = 1) Local $bDonateSiege = ($g_aiPrepDon[4] = 1) + Local $bDonateAllSiege = ($g_aiPrepDon[5] = 1) Local $bDonate = ($g_iActiveDonate = 1) @@ -177,7 +180,7 @@ Func DonateCC($bCheckForNewMsg = False) $bDonateSpell = False $bDonateAllSpell = False EndIf - $bDonate = BitOR($bDonateTroop, $bDonateAllTroop, $bDonateSpell, $bDonateAllSpell, $bDonateSiege) + $bDonate = BitOR($bDonateTroop, $bDonateAllTroop, $bDonateSpell, $bDonateAllSpell, $bDonateSiege, $bDonateAllSiege) If Not $bDonate Then Return ;Opens clan tab and verbose in log @@ -335,7 +338,7 @@ Func DonateCC($bCheckForNewMsg = False) EndIf ; checking if Chat Request matches any donate keyword. If match, proceed with further steps. - If Not $bDonateAllTroop And Not $bDonateAllSpell Then + If Not $bDonateAllTroop And Not $bDonateAllSpell And Not $bDonateAllSiege Then Local $Checked = False For $i = 0 To UBound($g_abChkDonateTroop) - 1 ; $eTroopCount (20) + $g_iCustomDonateConfigs (4) + $eSiegeMachineCount (2) - 1 = 26 - 1 = 25 If $g_abChkDonateTroop[$i] Then ; checking Troops, Custom & SiegeMachine @@ -359,7 +362,7 @@ Func DonateCC($bCheckForNewMsg = False) SetDebugLog("Chat Request matches a donate keyword, proceed with donating") EndIf EndIf - ElseIf (($bDonateAllTroop And $bDonateAllSpell And Not $bDonateSiege) Or ($bDonateAllTroop And (Not $bDonateSpell Or Not $bDonateSiege)) Or ((Not $bDonateTroop Or Not $bDonateSiege) And $bDonateAllSpell)) Then + ElseIf $bDonateAllTroop Or $bDonateAllSpell Or $bDonateAllSiege Then SetLog("Skip reading chat requests. Donate all is enabled!", $COLOR_ACTION) EndIf @@ -385,7 +388,7 @@ Func DonateCC($bCheckForNewMsg = False) If $g_bDebugSetlog Then SetDebugLog("This CC cannot accept spells, skip spell donation...", $COLOR_DEBUG) $g_bSkipDonSpells = True EndIf - If Not $bDonateSiege Then + If Not $bDonateSiege And Not $bDonateAllSiege Then SetLog("Siege donation is not enabled, skip siege donation...", $COLOR_ACTION) $g_bSkipDonSiege = True ElseIf $g_aiCurrentSiegeMachines[$eSiegeWallWrecker] = 0 And $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] = 0 And $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] = 0 Then @@ -515,8 +518,8 @@ Func DonateCC($bCheckForNewMsg = False) EndIf ;;; Donate to All Zone - If $bDonateAllTroop Or $bDonateAllSpell Then - If $g_bDebugSetlog Then SetDebugLog("Troop/Spell All checkpoint.", $COLOR_DEBUG) ;Debug + If $bDonateAllTroop Or $bDonateAllSpell Or $bDonateAllSiege Then + If $g_bDebugSetlog Then SetDebugLog("Troop/Spell/Siege All checkpoint.", $COLOR_DEBUG) ;Debug $g_bDonateAllRespectBlk = True If $bDonateAllTroop And Not $g_bSkipDonTroops Then @@ -595,6 +598,25 @@ Func DonateCC($bCheckForNewMsg = False) If $g_bDebugSetlog Then SetDebugLog("Get Donated Spells (to all) in " & StringFormat("%.2f", $iBenchmark) & "'ms", $COLOR_DEBUG) $itime = TimerInit() EndIf + + ;Siege + If $bDonateAllSiege And Not $g_bSkipDonSiege Then + If $g_bDebugSetlog Then SetDebugLog("Siege All checkpoint.", $COLOR_DEBUG) + + For $SiegeIndex = $eSiegeWallWrecker To $eSiegeMachineCount - 1 + Local $Index = $eTroopCount + $g_iCustomDonateConfigs + $SiegeIndex + If $g_abChkDonateAllTroop[$Index] Then + If CheckDonateSiege($SiegeIndex, $g_asTxtDonateTroop[$Index], $g_asTxtBlacklistTroop[$Index], $ClanString) Then + DonateSiegeType($SiegeIndex, True) + EndIf + ExitLoop + EndIf + Next + $iBenchmark = TimerDiff($itime) + If $g_bDebugSetlog Then SetDebugLog("Get Donated Sieges (to all) in " & StringFormat("%.2f", $iBenchmark) & "'ms", $COLOR_DEBUG) + $itime = TimerInit() + EndIf + $g_bDonateAllRespectBlk = False EndIf @@ -951,7 +973,7 @@ Func DonateSpellType(Const $iSpellIndex, Const $bDonateQueueOnly = False, Const EndFunc ;==>DonateSpellType -Func DonateSiegeType(Const $iSiegeIndex) +Func DonateSiegeType(Const $iSiegeIndex, $bDonateAll = False) Local $Slot = -1, $detectedSlot = -1 Local $YComp = 0, $donaterow = -1 @@ -1002,7 +1024,7 @@ Func DonateSiegeType(Const $iSiegeIndex) $g_iCommandStop = 0 $g_bFullArmy = False EndIf - SetLog("Donating 1 " & ($g_asSiegeMachineNames[$iSiegeIndex]), $COLOR_GREEN) + SetLog("Donating 1 " & ($g_asSiegeMachineNames[$iSiegeIndex]) & ($bDonateAll ? " (to all requests)" : ""), $COLOR_GREEN) $g_aiDonateSiegeMachines[$iSiegeIndex] += 1 $g_aiDonateStatsSieges[$iSiegeIndex][0] += 1 Else @@ -1153,9 +1175,9 @@ Func RemainingCCcapacity() ; Skip reading unnecessary items Local $bDonateSpell = ($g_aiPrepDon[2] = 1 Or $g_aiPrepDon[3] = 1) And ($g_iCurrentSpells > 0 Or $g_iCurrentSpells = "") - Local $bDonateSiege = ($g_aiPrepDon[4] = 1) And ($g_aiCurrentSiegeMachines[$eSiegeWallWrecker] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] > 0) + Local $bDonateSiege = ($g_aiPrepDon[4] = 1 Or $g_aiPrepDon[5] = 1) And ($g_aiCurrentSiegeMachines[$eSiegeWallWrecker] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] > 0) SetDebugLog("$g_aiPrepDon[2]: " & $g_aiPrepDon[2] & ", $g_aiPrepDon[3]: " & $g_aiPrepDon[3] & ", $g_iCurrentSpells: " & $g_iCurrentSpells & ", $bDonateSpell: " & $bDonateSpell) - SetDebugLog("$g_aiPrepDon[4]: " & $g_aiPrepDon[4] & ", $bDonateSiege: " & $bDonateSiege) + SetDebugLog("$g_aiPrepDon[4]: " & $g_aiPrepDon[4] & "$g_aiPrepDon[5]: " & $g_aiPrepDon[5] & ", $bDonateSiege: " & $bDonateSiege) ; Verify with OCR the Donation Clan Castle capacity If $g_bDebugSetLog Then SetDebugLog("Start dual getOcrSpaceCastleDonate", $COLOR_DEBUG) @@ -1455,7 +1477,7 @@ Func SkipDonateNearFullTroops($bSetLog = False, $aHeroResult = Default) For $pTroopType = $eKing To $eWarden ; check all 3 hero For $pMatchMode = $DB To $g_iModeCount - 1 ; check all attack modes $iActiveHero = -1 - If IsSearchModeActiveMini($pMatchMode) And IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$pTroopType - $eKing] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$pTroopType - $eKing] = 1 Then + If IsSearchModeActiveMini($pMatchMode) And IsUnitUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$pTroopType - $eKing] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$pTroopType - $eKing] = 1 Then $iActiveHero = $pTroopType - $eKing ; compute array offset to active hero EndIf ;SetLog("$iActiveHero = " & $iActiveHero, $COLOR_DEBUG) diff --git a/COCBot/functions/Village/DonateCCWBL.au3 b/COCBot/functions/Village/DonateCCWBL.au3 index 2dbdcf3d6..2a45321ec 100644 --- a/COCBot/functions/Village/DonateCCWBL.au3 +++ b/COCBot/functions/Village/DonateCCWBL.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Sardo (2016-09) ; Modified ......: MR.ViPER (27-12-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/DropTrophy.au3 b/COCBot/functions/Village/DropTrophy.au3 index b7c3e5b4c..2961ce143 100644 --- a/COCBot/functions/Village/DropTrophy.au3 +++ b/COCBot/functions/Village/DropTrophy.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ; Modified ......: Promac (2015-04), KnowJack(2015-08), Hervidero (2016-01), MonkeyHunter (2016-01,05) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -196,7 +196,7 @@ Func DropTrophy() If $g_iQueenSlot <> -1 Then SetTrophyLoss() SetLog("Deploying Queen", $COLOR_INFO) - Click(GetXPosOfArmySlot($g_iQueenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0179") ;Select Queen + SelectDropTroop($g_iQueenSlot) If _Sleep($DELAYDROPTROPHY1) Then ExitLoop Click($aRandomEdge[$iRandomXY][0], $aRandomEdge[$iRandomXY][1], 1, 0, "#0180") ;Drop Queen If _Sleep($DELAYDROPTROPHY4) Then ExitLoop @@ -209,7 +209,7 @@ Func DropTrophy() If $g_iKingSlot <> -1 Then SetTrophyLoss() SetLog("Deploying King", $COLOR_INFO) - Click(GetXPosOfArmySlot($g_iKingSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0177") ;Select King + SelectDropTroop($g_iKingSlot) If _Sleep($DELAYDROPTROPHY1) Then ExitLoop Click($aRandomEdge[$iRandomXY][0], $aRandomEdge[$iRandomXY][1], 1, 0, "#0178") ;Drop King If _Sleep($DELAYDROPTROPHY4) Then ExitLoop @@ -222,7 +222,7 @@ Func DropTrophy() If $g_iWardenSlot <> -1 Then SetTrophyLoss() SetLog("Deploying Warden", $COLOR_INFO) - Click(GetXPosOfArmySlot($g_iWardenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0000") ;Select Warden + SelectDropTroop($g_iWardenSlot) If _Sleep($DELAYDROPTROPHY1) Then ExitLoop Click($aRandomEdge[$iRandomXY][0], $aRandomEdge[$iRandomXY][1], 1, 0, "#0000") ;Drop Warden If _Sleep($DELAYDROPTROPHY4) Then ExitLoop diff --git a/COCBot/functions/Village/FreeMagicItems.au3 b/COCBot/functions/Village/FreeMagicItems.au3 index c220d364b..b226566ce 100644 --- a/COCBot/functions/Village/FreeMagicItems.au3 +++ b/COCBot/functions/Village/FreeMagicItems.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac (03-2018) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/GainCost.au3 b/COCBot/functions/Village/GainCost.au3 index e3263ec11..30d5f685a 100644 --- a/COCBot/functions/Village/GainCost.au3 +++ b/COCBot/functions/Village/GainCost.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Boju (11-2016) ; Modified ......: CodeSlinger69 (2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/GetTownHallLevel.au3 b/COCBot/functions/Village/GetTownHallLevel.au3 index 8f63ed79c..54ee9b6b6 100644 --- a/COCBot/functions/Village/GetTownHallLevel.au3 +++ b/COCBot/functions/Village/GetTownHallLevel.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: KNowJack (July 2015) ; Modified ......: Sardo 2015-08 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/GetVillageSize.au3 b/COCBot/functions/Village/GetVillageSize.au3 index 3053c683c..b7bfc73de 100644 --- a/COCBot/functions/Village/GetVillageSize.au3 +++ b/COCBot/functions/Village/GetVillageSize.au3 @@ -17,7 +17,7 @@ ; 9 = tree image file name ; Author ........: Cosote (Oct 17th 2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -149,7 +149,8 @@ Func GetVillageSize($DebugLog = False, $sStonePrefix = Default, $sTreePrefix = D ; initial reference village had a width of 473.60282919315 (and not 440) and stone located at 226, 567, so center on that reference and used zoom factor on that size - Local $z = $c / 473.60282919315 ; don't use size of 440, as beta already using reference village + ;Local $z = $c / 473.60282919315 ; don't use size of 440, as beta already using reference village + Local $z = $c / 458 ; 2019-01-02 Update village measuring as outer edges didn't align anymore Local $stone_x_exp = $stone[2] Local $stone_y_exp = $stone[3] diff --git a/COCBot/functions/Village/Laboratory.au3 b/COCBot/functions/Village/Laboratory.au3 index 78067a2c0..d26fbd678 100644 --- a/COCBot/functions/Village/Laboratory.au3 +++ b/COCBot/functions/Village/Laboratory.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: summoner ; Modified ......: KnowJack (2015-06), Sardo (2015-08), Monkeyhunter(2016-02,2016-04), MMHK(2018-06) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -77,7 +77,7 @@ Func Laboratory() ;Create local array to hold upgrade values ;Was static, but makes no sense in switch account context Local $aUpgradeValue[36] = [-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Local $iAvailElixir, $iAvailDark, $sElixirCount, $sDarkCount, $TimeDiff, $aArray, $Result, $iCheapestCost = 0 + Local $iAvailElixir, $iAvailDark, $sElixirCount, $sDarkCount, $TimeDiff, $aArray, $Result Local $iXMoved = 0, $iYMoved = 0, $iFirstPageOffset = 0, $iLastPageOffset = 0 Local $iSelectedUpgrade = $g_iCmbLaboratory @@ -308,26 +308,81 @@ Func Laboratory() Next If $aUpgradeValue[$g_iCmbLaboratory] = -1 Then + Local $bPreferTraining = False, $iCheapestCost = 0 If $g_iCmbLaboratory = 0 Then - SetLog("No dedicated troop for upgrade selected, doing cheapest upgrade", $COLOR_ACTION) + SetLog("No dedicated troop for upgrade selected.", $COLOR_INFO) Else - SetLog("No upgrade for " & $g_avLabTroops[$g_iCmbLaboratory][3] & " available, doing cheapest upgrade", $COLOR_ACTION) + SetLog("No upgrade for " & $g_avLabTroops[$g_iCmbLaboratory][3] & " available.", $COLOR_INFO) EndIf For $i = 1 To 35 - Switch $i - Case 1 To 19 ; regular elixir - ContinueCase - Case 33 To 35 - If $aUpgradeValue[$i] > 0 And ($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then - $iSelectedUpgrade = $i - $iCheapestCost = $aUpgradeValue[$i] - EndIf - Case 20 To 32; Dark Elixir, multiply value with 50 - If $aUpgradeValue[$i] > 0 And ($iCheapestCost = 0 Or $aUpgradeValue[$i] * 50 < $iCheapestCost) Then - $iSelectedUpgrade = $i - $iCheapestCost = $aUpgradeValue[$i] * 50 - EndIf - EndSwitch + If $aUpgradeValue[$i] > 0 Then ; is upgradeable + Switch $i + Case 1 To 13 ; regular elixir troop + If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompTroops[$i - 1] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) + If $g_aiArmyCompTroops[$i - 1] > 0 Then ; is part of army composition + If Not $bPreferTraining Or $aUpgradeValue[$i] < $iCheapestCost Then ; if army composition was not prefered or is cheapest + $bPreferTraining = True + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] + EndIf + ElseIf Not $bPreferTraining And ($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then ; army composition is not prefered but cheapest + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] + EndIf + Case 14 To 19 ; regular elixir spell + If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompSpells[$i - 14] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) + If $g_aiArmyCompSpells[$i - 14] > 0 Then ; is part of army composition + If Not $bPreferTraining Or $aUpgradeValue[$i] < $iCheapestCost Then ; if army composition was not prefered or is cheapest + $bPreferTraining = True + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] + EndIf + ElseIf Not $bPreferTraining And ($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then ; army composition is not prefered but cheapest + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] + EndIf + Case 20 To 24 ; dark elixir spell + If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompSpells[$i - 14] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) + If $g_aiArmyCompSpells[$i - 14] > 0 Then ; is part of army composition + If Not $bPreferTraining Or $aUpgradeValue[$i] * 50 < $iCheapestCost Then ; if army composition was not prefered or is cheapest + $bPreferTraining = True + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] * 50 + EndIf + ElseIf Not $bPreferTraining And ($iCheapestCost = 0 Or $aUpgradeValue[$i] * 50 < $iCheapestCost) Then ; army composition is not prefered but cheapest + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] * 50 + EndIf + Case 25 To 32 ; dark elixir troop + If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompTroops[$i - 12] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) + If $g_aiArmyCompTroops[$i - 12] > 0 Then ; is part of army composition + If Not $bPreferTraining Or $aUpgradeValue[$i] * 50 < $iCheapestCost Then ; if army composition was not prefered or is cheapest + $bPreferTraining = True + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] * 50 + EndIf + ElseIf Not $bPreferTraining And ($iCheapestCost = 0 Or $aUpgradeValue[$i] * 50 < $iCheapestCost) Then ; army composition is not prefered but cheapest + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] * 50 + EndIf + Case 33 To 35 ; siege machine + If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompSiegeMachine[$i - 33] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) + If $g_aiArmyCompTroops[$i - 33] > 0 Then ; is part of army composition + If Not $bPreferTraining Or $aUpgradeValue[$i] < $iCheapestCost Then ; if army composition was not prefered or is cheapest + $bPreferTraining = True + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] + EndIf + ElseIf Not $bPreferTraining And ($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then ; army composition is not prefered but cheapest + $iSelectedUpgrade = $i + $iCheapestCost = $aUpgradeValue[$i] + EndIf + Case Else ; should never come here + ClickP($aAway, 2, $DELAYLABORATORY4, "#0353") + Return False + EndSwitch + If $g_bDebugSetlog Then SetLog("Army Comp is" & ($bPreferTraining ? " " : " not ") & "prefered. " & $g_avLabTroops[$iSelectedUpgrade][3] & " is currently selected. Cost = " & $iCheapestCost, $COLOR_DEBUG) + EndIf Next If $g_iCmbLaboratory = $iSelectedUpgrade Then SetLog("No alternate troop for upgrade found", $COLOR_WARNING) diff --git a/COCBot/functions/Village/LocateClanCastle.au3 b/COCBot/functions/Village/LocateClanCastle.au3 index 8da3af724..b40508892 100644 --- a/COCBot/functions/Village/LocateClanCastle.au3 +++ b/COCBot/functions/Village/LocateClanCastle.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Code Monkey #69 ; Modified ......: KnowJack (June 2015) Sardo 2015-08 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/LocateHeroesAltar.au3 b/COCBot/functions/Village/LocateHeroesAltar.au3 index 3ab6d4422..5895776dd 100644 --- a/COCBot/functions/Village/LocateHeroesAltar.au3 +++ b/COCBot/functions/Village/LocateHeroesAltar.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ProMac 2015 ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/LocateLab.au3 b/COCBot/functions/Village/LocateLab.au3 index debc1a639..cb9e7fff7 100644 --- a/COCBot/functions/Village/LocateLab.au3 +++ b/COCBot/functions/Village/LocateLab.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: KnowJack (June 2015) ; Modified ......: Sardo 2015-08 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/LocateTownHall.au3 b/COCBot/functions/Village/LocateTownHall.au3 index 5991d5998..c7bcbd6b2 100644 --- a/COCBot/functions/Village/LocateTownHall.au3 +++ b/COCBot/functions/Village/LocateTownHall.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: ; Modified ......: KnowJack (July 2015) Sardo 2015-08 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/LocateUpgrade.au3 b/COCBot/functions/Village/LocateUpgrade.au3 index 58e91c35d..235f5ff78 100644 --- a/COCBot/functions/Village/LocateUpgrade.au3 +++ b/COCBot/functions/Village/LocateUpgrade.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: KnowJack (April-2015) ; Modified ......: KnowJack (Jun/Aug-2015),Sardo 2015-08,Monkeyhunter(2106-2) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/Notify.au3 b/COCBot/functions/Village/Notify.au3 index 5e1b24415..c88d6c07e 100644 --- a/COCBot/functions/Village/Notify.au3 +++ b/COCBot/functions/Village/Notify.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: Full revamp of Notify by IceCube (2016-09) ; Modified ......: IceCube (2016-12) v1.5.1, CodeSLinger69 (2017), ProMac 2018-08 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/ProfileReport.au3 b/COCBot/functions/Village/ProfileReport.au3 index 61da1d964..cb8e25148 100644 --- a/COCBot/functions/Village/ProfileReport.au3 +++ b/COCBot/functions/Village/ProfileReport.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Sardo ; Modified ......: KnowJack (07-2015), Sardo (08-2015), CodeSlinger69 (01-2017), Fliegerfaust (09-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -35,10 +35,11 @@ Func ProfileReport() If $iCount >= 25 Then SetDebugLog("Profile Page did not open after " & $iCount & " Loops", $COLOR_DEBUG) ; Check If exist 'Claim Reward' button , click and return to Top of the Profile Page - + Local $aSearchResult For $i = 0 to 1 ; Check twice, because the button is animated - If QuickMIS("BC1", $g_sImgCollectReward, 680, 165, 855, 680) Then - Click($g_iQuickMISX + 680, $g_iQuickMISY + 165) + $aSearchResult = decodeSingleCoord(findImage("CollectReward", $g_sImgCollectReward, GetDiamondFromRect("680,165,855,680"), 1, True)) + If IsArray($aSearchResult) And UBound($aSearchResult) = 2 Then + Click($aSearchResult[0], $aSearchResult[1]) SetLog("Reward collected", $COLOR_SUCCESS) For $i = 0 To 9 ClickDrag(421, 200, 421, 630, 2000) diff --git a/COCBot/functions/Village/ReArm.au3 b/COCBot/functions/Village/ReArm.au3 index 141e5a5ae..9fc3bace7 100644 --- a/COCBot/functions/Village/ReArm.au3 +++ b/COCBot/functions/Village/ReArm.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Authors .......: Saviart, Hervidero ; Modified ......: Hervidero, ProMac, KnowJack (05-2015), Sardo (08-2015) , ProMac (01-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: Click ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -54,7 +54,7 @@ Func ReArm() Click(515, 400, 1, 0, "#0226") If _Sleep($DELAYREARM4) Then Return If isGemOpen(True) Then - SetLog("Not enough loot to rearm traps.....", $COLOR_ERROR) + SetLog("Not enough loot to rearm traps!", $COLOR_ERROR) Click(585, 252, 1, 0, "#0227") ; Click close gem window "X" If _Sleep($DELAYREARM1) Then Return Else diff --git a/COCBot/functions/Village/RequestCC.au3 b/COCBot/functions/Village/RequestCC.au3 index 29627af05..ce6025b25 100644 --- a/COCBot/functions/Village/RequestCC.au3 +++ b/COCBot/functions/Village/RequestCC.au3 @@ -6,16 +6,16 @@ ; Return values .: None ; Author ........: ; Modified ......: Sardo(06-2015), KnowJack(10-2015), Sardo (08-2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki ; Example .......: No ; =============================================================================================================================== -Func RequestCC($ClickPAtEnd = True, $specifyText = "") +Func RequestCC($bClickPAtEnd = True, $sText = "") - If Not $g_bRequestTroopsEnable Or Not $g_bCanRequestCC Or Not $g_bDonationEnabled Then + If Not $g_bRequestTroopsEnable Or Not $g_bDonationEnabled Then Return EndIf @@ -28,31 +28,36 @@ Func RequestCC($ClickPAtEnd = True, $specifyText = "") EndIf ;open army overview - If $specifyText <> "IsFullClanCastle" And Not OpenArmyOverview(True, "RequestCC()") Then Return + If $sText <> "IsFullClanCastle" And Not OpenArmyOverview(True, "RequestCC()") Then Return If _Sleep($DELAYREQUESTCC1) Then Return - SetLog("Requesting Clan Castle reinforcements", $COLOR_INFO) - checkAttackDisable($g_iTaBChkIdle) ; Early Take-A-Break detection + If $bClickPAtEnd Then CheckCCArmy() - If $ClickPAtEnd Then CheckCCArmy() + Local $sSearchDiamond = GetDiamondFromRect("600,430,850,620") + Local Static $aRequestButtonPos[2] = [-1, -1] + + Local $aRequestButton = findMultiple($g_sImgRequestCCButton, $sSearchDiamond, $sSearchDiamond, 0, 1000, 1, "objectname,objectpoints", True) + If Not IsArray($aRequestButton) Then + SetLog("Error in RequestCC(): $aRequestButton is no Array") + Return + EndIf - Local $color1 = _GetPixelColor($aRequestTroopsAO[0], $aRequestTroopsAO[1] + 20, True) ; Gray/Green color at 20px below Letter "R" - Local $color2 = _GetPixelColor($aRequestTroopsAO[0], $aRequestTroopsAO[1], True) ; White/Green color at Letter "R" + If UBound($aRequestButton, 1) >= 1 Then + Local $sButtonState + Local $aRequestButtonSubResult = $aRequestButton[0] + $sButtonState = $aRequestButtonSubResult[0] + If $aRequestButtonPos[0] = -1 Then + $aRequestButtonPos = StringSplit($aRequestButtonSubResult[1], ",", $STR_NOCOUNT) + EndIf - If _ColorCheck($color1, Hex($aRequestTroopsAO[2], 6), $aRequestTroopsAO[5]) Then - ;clan full or not in clan - SetLog("Your Clan Castle is already full or you are not in a clan.") - $g_bCanRequestCC = False - ElseIf _ColorCheck($color1, Hex($aRequestTroopsAO[3], 6), $aRequestTroopsAO[5]) Then - If _ColorCheck($color2, Hex($aRequestTroopsAO[4], 6), $aRequestTroopsAO[5]) Then - ;can make a request + If StringInStr($sButtonState, "Available", 0) > 0 Then Local $bNeedRequest = False If Not $g_abRequestType[0] And Not $g_abRequestType[1] And Not $g_abRequestType[2] Then SetDebugLog("Request for Specific CC is not enable") $bNeedRequest = True - ElseIf Not $ClickPAtEnd Then + ElseIf Not $bClickPAtEnd Then $bNeedRequest = True Else For $i = 0 To 2 @@ -64,28 +69,28 @@ Func RequestCC($ClickPAtEnd = True, $specifyText = "") EndIf If $bNeedRequest Then - Local $x = _makerequest() + Local $x = _makerequest($aRequestButtonPos) EndIf - + ElseIf StringInStr($sButtonState, "Already", 0) > 0 Then + SetLog("Clan Castle Request has already been made", $COLOR_INFO) + ElseIf StringInStr($sButtonState, "Full", 0) > 0 Then + SetLog("Clan Castle is full or not available", $COLOR_INFO) Else - ;request has already been made - SetLog("Request has already been made") + SetLog("Error in RequestCC(): Couldn't detect Request Button State", $COLOR_ERROR) EndIf Else - ;no button request found - SetLog("Cannot detect button request troops.") - SetLog("The Pixel on " & $aRequestTroopsAO[0] & "-" & $aRequestTroopsAO[1] & " was: " & $color1, $COLOR_ERROR) + SetLog("Error in RequestCC(): $aRequestButton did not return a Button State", $COLOR_ERROR) EndIf ;exit from army overview If _Sleep($DELAYREQUESTCC1) Then Return - If $ClickPAtEnd Then ClickP($aAway, 2, 0, "#0335") + If $bClickPAtEnd Then ClickP($aAway, 2, 0, "#0335") EndFunc ;==>RequestCC -Func _makerequest() +Func _makerequest($aButtonPosition) ;click button request troops - Click($aRequestTroopsAO[0], $aRequestTroopsAO[1], 1, 0, "0336") ;Select text for request + ClickP($aButtonPosition, 1, 0, "0336") ;Select text for request ;wait window Local $iCount = 0 @@ -101,7 +106,7 @@ Func _makerequest() If _Sleep($DELAYMAKEREQUEST2) Then Return Else If $g_sRequestTroopsText <> "" Then - If $g_bChkBackgroundMode = False And $g_bNoFocusTampering = False Then ControlFocus($g_hAndroidWindow, "", "") + If Not $g_bChkBackgroundMode And Not $g_bNoFocusTampering Then ControlFocus($g_hAndroidWindow, "", "") ; fix for Android send text bug sending symbols like ``" AndroidSendText($g_sRequestTroopsText, True) Click($atxtRequestCCBtn[0], $atxtRequestCCBtn[1], 1, 0, "#0254") ;Select text for request $atxtRequestCCBtn[2] = [430, 140] @@ -133,11 +138,12 @@ EndFunc ;==>_makerequest Func IsFullClanCastleType($CCType = 0) ; Troops = 0, Spells = 1, Siege Machine = 2 Local $aCheckCCNotFull[3] = [24, 455, 631], $sLog[3] = ["Troop", "Spell", "Siege Machine"] Local $aiRequestCountCC[3] = [Number($g_iRequestCountCCTroop), Number($g_iRequestCountCCSpell), 0] - If Not $g_abRequestType[$CCType] And ($g_abRequestType[0] Or $g_abRequestType[1] Or $g_abRequestType[2]) Then + Local $bCheckOnlyTroop = $g_abRequestType[0] = False And $g_abRequestType[1] = False And $g_abRequestType[2] = False + If Not $g_abRequestType[$CCType] And ($g_abRequestType[0] Or $g_abRequestType[1] Or $g_abRequestType[2] Or ($bCheckOnlyTroop And $CCType <> 0)) Then If $g_bDebugSetlog Then SetLog($sLog[$CCType] & " not cared about.") Return True Else - If _ColorCheck(_GetPixelColor($aCheckCCNotFull[$CCType], 470, True), Hex(0xDC363A , 6), 30) Then ; red symbol + If _ColorCheck(_GetPixelColor($aCheckCCNotFull[$CCType], 470, True), Hex(0xDC363A, 6), 30) Then ; red symbol SetDebugLog("Found CC " & $sLog[$CCType] & " not full") ; avoid total expected troops / spells is less than expected CC q'ty. @@ -149,7 +155,7 @@ Func IsFullClanCastleType($CCType = 0) ; Troops = 0, Spells = 1, Siege Machine = If $aiRequestCountCC[0] > $iTotalExpectedTroop And $iTotalExpectedTroop > 0 Then $aiRequestCountCC[0] = $iTotalExpectedTroop If $aiRequestCountCC[1] > $iTotalExpectedSpell And $iTotalExpectedSpell > 0 Then $aiRequestCountCC[1] = $iTotalExpectedSpell - If $aiRequestCountCC[$CCType] = 0 or $aiRequestCountCC[$CCType] >= 40 - $CCType * 38 Then + If $aiRequestCountCC[$CCType] = 0 Or $aiRequestCountCC[$CCType] >= 40 - $CCType * 38 Then Return False Else Local $sCCReceived = getOcrAndCapture("coc-ms", 289 + $CCType * 183, 468, 60, 16, True, False, True) ; read CC (troops 0/40 or spells 0/2) @@ -198,22 +204,23 @@ EndFunc ;==>IsFullClanCastle Func CheckCCArmy() Local $bSkipTroop = Not $g_abRequestType[0] Or _ArrayMin($g_aiClanCastleTroopWaitType) = $eTroopCount ; All 3 troop comboboxes are set = "any" - Local $bSkipSpell = Not $g_abRequestType[1] Or _ArrayMin($g_aiClanCastleSpellWaitType) = $eSpellCount ; All 2 spell comboboxes are set = "any" + Local $bSkipSpell = Not $g_abRequestType[1] Or _ArrayMin($g_aiClanCastleSpellWaitType) = $eSpellCount ; All 3 spell comboboxes are set = "any" + Local $bSkipSiege = Not $g_abRequestType[2] Or _ArrayMin($g_aiClanCastleSiegeWaitType) = $eSiegeMachineCount ; All 2 siege comboboxes are set = "any" - If $bSkipTroop And $bSkipSpell Then Return + If $bSkipTroop And $bSkipSpell And $bSkipSiege Then Return - Local $bNeedRemove = False, $aToRemove[7][2] ; 5 troop slots and 2 spell slots [X_Coord, Q'ty] + Local $bNeedRemove = False, $aToRemove[8][2] ; 5 troop slots + 2 spell slots + 1 siege slot [X_Coord, Q'ty] Local $aTroopWSlot, $aSpellWSlot For $i = 0 To 2 If $g_aiClanCastleTroopWaitQty[$i] = 0 And $g_aiClanCastleTroopWaitType[$i] < $eTroopCount Then $g_aiCCTroopsExpected[$g_aiClanCastleTroopWaitType[$i]] = 40 ; expect troop type only. Do not care about qty - If $i <= 1 And $g_aiClanCastleSpellWaitQty[$i] = 0 And $g_aiClanCastleSpellWaitType[$i] < $eSpellCount Then $g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] = 2 ; expect spell type only. Do not care about qty Next - SetLog("Getting current available " & ($bSkipTroop ? "spells " : ($bSkipSpell ? "troops " : "troops and spells ")) & "in Clan Castle...") + SetLog("Getting current army in Clan Castle...") If Not $bSkipTroop Then $aTroopWSlot = getArmyCCTroops(False, False, False, True, True, True) ; X-Coord, Troop name index, Quantity If Not $bSkipSpell Then $aSpellWSlot = getArmyCCSpells(False, False, False, True, True, True) ; X-Coord, Spell name index, Quantity + If Not $bSkipSiege Then getArmyCCSiegeMachines() ; getting value of $g_aiCurrentCCSiegeMachines ; CC troops If IsArray($aTroopWSlot) Then @@ -222,7 +229,7 @@ Func CheckCCArmy() If $g_aiCurrentCCTroops[$i] > 0 Then SetDebugLog("Expecting " & $g_asTroopNames[$i] & ": " & $g_aiCCTroopsExpected[$i] & "x. Received: " & $g_aiCurrentCCTroops[$i]) If $iUnwanted > 0 Then If Not $bNeedRemove Then - SetLog("Removing unexpected troops/spells:") + SetLog("Removing unexpected CC army:") $bNeedRemove = True EndIf For $j = 0 To UBound($aTroopWSlot) - 1 @@ -245,7 +252,7 @@ Func CheckCCArmy() If $g_aiCurrentCCSpells[$i] > 0 Then SetDebugLog("Expecting " & $g_asSpellNames[$i] & ": " & $g_aiCCSpellsExpected[$i] & "x. Received: " & $g_aiCurrentCCSpells[$i]) If $iUnwanted > 0 Then If Not $bNeedRemove Then - SetLog("Removing unexpected spells:") + SetLog("Removing unexpected CC spells/siege machine:") $bNeedRemove = True EndIf For $j = 0 To UBound($aSpellWSlot) - 1 @@ -254,14 +261,30 @@ Func CheckCCArmy() $aToRemove[$j + 5][0] = $aSpellWSlot[$j][0] $aToRemove[$j + 5][1] = _Min($aSpellWSlot[$j][2], $iUnwanted) $iUnwanted -= $aToRemove[$j + 5][1] - SetLog(" - " & $aToRemove[$j + 5][1] & "x " & $g_asSpellNames[$i] & ($aToRemove[$j + 5][1] > 1 ? " spells" : " spell") & ($g_bDebugSetlog ? (", at slot " & $j + 5 & ", x" & $aToRemove[$j + 5][0] + 35) : "")) + SetLog(" - " & $aToRemove[$j + 5][1] & "x " & $g_asSpellNames[$i] & ($aToRemove[$j + 5][1] > 1 ? " spells" : " spell") & ($g_bDebugSetlog ? (", at slot " & $j + 5 & ", x" & $aToRemove[$j + 5][0] + 35) : "")) EndIf Next EndIf Next EndIf - ; Removing CC Troops & Spells + ; CC siege machine + If Not $bSkipSiege Then + For $i = 0 To $eSiegeMachineCount - 1 + If $g_aiCurrentCCSiegeMachines[$i] > 0 Then SetDebugLog("Expecting " & $g_asSiegeMachineNames[$i] & ": " & $g_aiCCSiegeExpected[$i] & "x. Received: " & $g_aiCurrentCCSiegeMachines[$i]) + If $g_aiCurrentCCSiegeMachines[$i] > $g_aiCCSiegeExpected[$i] Then + If Not $bNeedRemove Then + SetLog("Removing unexpected CC siege machine:") + $bNeedRemove = True + EndIf + $aToRemove[7][1] = 1 + SetLog(" - " & $aToRemove[7][1] & "x " & $g_asSiegeMachineNames[$i]) + ExitLoop + EndIf + Next + EndIf + + ; Removing CC Troops, Spells & Siege Machine If $bNeedRemove Then RemoveCastleArmy($aToRemove) If _Sleep(1000) Then Return @@ -270,7 +293,7 @@ EndFunc ;==>CheckCCArmy Func RemoveCastleArmy($aToRemove) - If _ArrayMax($aToRemove) = 0 Then Return + If _ArrayMax($aToRemove, 0, -1, -1, 1) = 0 Then Return ; Click 'Edit Army' If Not _CheckPixel($aButtonEditArmy, True) Then ; If no 'Edit Army' Button found in army tab to edit troops @@ -284,10 +307,11 @@ Func RemoveCastleArmy($aToRemove) If _Sleep(500) Then Return ; Click remove Troops & Spells - Local $aPos[2] = [72, 575] + Local $aPos[2] = [35, 575] For $i = 0 To UBound($aToRemove) - 1 If $aToRemove[$i][1] > 0 Then $aPos[0] = $aToRemove[$i][0] + 35 + If $i = 7 Then $aPos[0] = 685 ; x-coordinate of Siege machine slot SetDebugLog(" - Click at slot " & $i & ". (" & $aPos[0] & ") x " & $aToRemove[$i][1]) ClickRemoveTroop($aPos, $aToRemove[$i][1], $g_iTrainClickDelay) ; Click on Remove button as much as needed EndIf @@ -312,7 +336,7 @@ Func RemoveCastleArmy($aToRemove) If _Sleep(400) Then Return $counter = 0 - While Not _CheckPixel($aButtonRemoveTroopsOK2, True) ; If no 'Okay' button found to verify that we accept the changes + While Not _CheckPixel($aButtonRemoveTroopsOK2, True) ; If no 'Okay' button found to verify that we accept the changes If _Sleep(200) Then Return $counter += 1 If $counter <= 5 Then ContinueLoop @@ -323,7 +347,7 @@ Func RemoveCastleArmy($aToRemove) ClickP($aButtonRemoveTroopsOK2, 1) ; Click on 'Okay' button to Save changes... Last button - SetLog("Clan Castle Troops/Spells Removed", $COLOR_SUCCESS) + SetLog("Clan Castle army removed", $COLOR_SUCCESS) If _Sleep(200) Then Return Return True EndFunc ;==>RemoveCastleArmy diff --git a/COCBot/functions/Village/StarBonus.au3 b/COCBot/functions/Village/StarBonus.au3 index 509311c99..bfb742831 100644 --- a/COCBot/functions/Village/StarBonus.au3 +++ b/COCBot/functions/Village/StarBonus.au3 @@ -6,7 +6,7 @@ ; Parameters ....: ; Return values .: MonkeyHunter(2016-1) ; Modified ......: MonkeyHunter (05-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/SwitchAccount.au3 b/COCBot/functions/Village/SwitchAccount.au3 index 518062875..2546c290e 100644 --- a/COCBot/functions/Village/SwitchAccount.au3 +++ b/COCBot/functions/Village/SwitchAccount.au3 @@ -63,10 +63,10 @@ Func InitiateSwitchAcc() ; Checking profiles setup in Mybot, First matching CoC For $i = 0 To $g_iTotalAcc ; listing all accounts Local $sBotType = "Idle" - If $g_abAccountNo[$i] = True Then + If $g_abAccountNo[$i] Then If SwitchAccountEnabled($i) Then $sBotType = "Active" - If $g_abDonateOnly[$i] = True Then $sBotType = "Donate" + If $g_abDonateOnly[$i] Then $sBotType = "Donate" If $g_iNextAccount = -1 Then $g_iNextAccount = $i If $g_asProfileName[$i] = $g_sProfileCurrentName Then $g_iNextAccount = $i Else @@ -320,6 +320,7 @@ Func SwitchCOCAcc($NextAccount) EndIf $g_iCurAccount = $NextAccount + SwitchAccountVariablesReload() $g_ahTimerSinceSwitched[$g_iCurAccount] = __TimerInit() $g_bInitiateSwitchAcc = False @@ -343,7 +344,6 @@ Func SwitchCOCAcc($NextAccount) waitMainScreen() EndIf - SwitchAccountVariablesReload() SetSwitchAccLog("Switched to Acc [" & $NextAccount + 1 & "]", $COLOR_SUCCESS) If $g_bChkSharedPrefs Then @@ -447,10 +447,10 @@ Func SwitchCOCAcc_ClickAccount(ByRef $bResult, $NextAccount, $bStayDisconnected Local $XCoordinates = QuickMIS("CX", $sGPlayAccount, 155, 100, 705, 710, True, $g_bDebugImageSave) If UBound($XCoordinates) <= 0 Then - SetLog("No GooglePlay accounts detected!!", $COLOR_ERROR) + SetLog("No GooglePlay accounts detected!", $COLOR_ERROR) Return FuncReturn("Error") ElseIf UBound($XCoordinates) < $g_iTotalAcc + 1 Then - SetLog("Less GooglePlay accounts detected than configured!!", $COLOR_ERROR) + SetLog("Less GooglePlay accounts detected than configured!", $COLOR_ERROR) SetDebugLog("Detected: " & UBound($XCoordinates) & ", Configured: " & ($g_iTotalAcc + 1), $COLOR_DEBUG) Return FuncReturn("Error") ElseIf UBound($XCoordinates) > $g_iTotalAcc + 1 Then @@ -786,7 +786,7 @@ Func CheckWaitHero() ; get hero regen time remaining if enabled For $pTroopType = $eKing To $eWarden ; check all 3 hero For $pMatchMode = $DB To $g_iModeCount - 1 ; check all attack modes $iActiveHero = -1 - If IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And _ + If IsUnitUsed($pMatchMode, $pTroopType) And _ BitOR($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiAttackUseHeroes[$pMatchMode] Then ; check if Hero enabled to wait $iActiveHero = $pTroopType - $eKing ; compute array offset to active hero EndIf diff --git a/COCBot/functions/Village/SwitchAccountVariablesReload.au3 b/COCBot/functions/Village/SwitchAccountVariablesReload.au3 index 2e66f31f2..11154ca03 100644 --- a/COCBot/functions/Village/SwitchAccountVariablesReload.au3 +++ b/COCBot/functions/Village/SwitchAccountVariablesReload.au3 @@ -233,6 +233,7 @@ Func SwitchAccountVariablesReload($sType = "Load") ; Lab time $g_sLabUpgradeTime = $asLabUpgradeTime[$g_iCurAccount] + GUICtrlSetData($g_hLbLLabTime, "") $g_iLaboratoryElixirCost = $aiLabElixirCost[$g_iCurAccount] $g_iLaboratoryDElixirCost = $aiLabDElixirCost[$g_iCurAccount] Local $Counter = 0 @@ -266,6 +267,24 @@ Func SwitchAccountVariablesReload($sType = "Load") GUICtrlSetData($g_ahLblHourlyStatsDarkAcc[$i], _NumberFormat(Round($aiStatsTotalGain[$i][$eLootDarkElixir] / (Int(__TimerDiff($g_hTimerSinceStarted) + $g_iTimePassed)) * 3600 * 1000)) & " / h") Next + Case "SetTime" + Local $day, $hour, $min, $sec + For $i = 0 To $g_iTotalAcc + If _DateIsValid($asLabUpgradeTime[$i]) Then + Local $iLabTime = _DateDiff("s", _NowCalc(), $asLabUpgradeTime[$i]) * 1000 + If $iLabTime > 0 Then + _TicksToDay($iLabTime, $day, $hour, $min, $sec) + GUICtrlSetData($g_ahLblLabTime[$i], $day > 0 ? StringFormat("%2ud %02i:%02i'", $day, $hour, $min) : StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) + GUICtrlSetColor($g_ahLblLabTime[$i], $day > 0 ? $COLOR_GREEN : $COLOR_ORANGE) + Else + GUICtrlSetData($g_ahLblLabTime[$i], "") + $asLabUpgradeTime[$i] = "" + EndIf + Else + GUICtrlSetData($g_ahLblLabTime[$i], "") + EndIf + Next + EndSwitch EndFunc ;==>ResetSwitchAccVariable diff --git a/COCBot/functions/Village/SwitchBetweenBases.au3 b/COCBot/functions/Village/SwitchBetweenBases.au3 index 4713787b8..539e4b8d5 100644 --- a/COCBot/functions/Village/SwitchBetweenBases.au3 +++ b/COCBot/functions/Village/SwitchBetweenBases.au3 @@ -6,7 +6,7 @@ ; Return values .: True: Successfully switched Bases - False: Failed to switch Bases ; Author ........: Fliegerfaust (05-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/TreasuryCollect.au3 b/COCBot/functions/Village/TreasuryCollect.au3 index 20b328d18..ffd322719 100644 --- a/COCBot/functions/Village/TreasuryCollect.au3 +++ b/COCBot/functions/Village/TreasuryCollect.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (09-2016) ; Modified ......: Boju (02-2017), Fliegerfaust(11-2017) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/UpgradeBuilding.au3 b/COCBot/functions/Village/UpgradeBuilding.au3 index 1102620b2..75b276fea 100644 --- a/COCBot/functions/Village/UpgradeBuilding.au3 +++ b/COCBot/functions/Village/UpgradeBuilding.au3 @@ -6,7 +6,7 @@ ; Return values .: ; Author ........: KnowJack (April-2015) ; Modified ......: KnowJack (Jun/Aug-2015),Sardo 2015-08,Monkeyhunter(2106-2) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/UpgradeHeroes.au3 b/COCBot/functions/Village/UpgradeHeroes.au3 index 30c0afbdd..0e64d662d 100644 --- a/COCBot/functions/Village/UpgradeHeroes.au3 +++ b/COCBot/functions/Village/UpgradeHeroes.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: z0mbie (2015) ; Modified ......: Master1st (09-2015), ProMac (10-2015), MonkeyHunter (06-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/UpgradeWall.au3 b/COCBot/functions/Village/UpgradeWall.au3 index e7c363534..d81fdee31 100644 --- a/COCBot/functions/Village/UpgradeWall.au3 +++ b/COCBot/functions/Village/UpgradeWall.au3 @@ -6,7 +6,7 @@ ; Return values .: None ; Author ........: ProMac (2015), HungLe (2015) ; Modified ......: Sardo (08-2015), KnowJack (08-2015), MonkeyHunter(06-2016) , trlopes (07-2016) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: checkwall.au3 ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/VillageReport.au3 b/COCBot/functions/Village/VillageReport.au3 index c62b259bc..f58bf6a0f 100644 --- a/COCBot/functions/Village/VillageReport.au3 +++ b/COCBot/functions/Village/VillageReport.au3 @@ -7,7 +7,7 @@ ; Return values .: None ; Author ........: Hervidero (2015-feb-10) ; Modified ......: Safar46 (2015), Hervidero (2015), KnowJack (June-2015) , ProMac (2015), Sardo 2015-08, MonkeyHunter(6-2106) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/chkShieldStatus.au3 b/COCBot/functions/Village/chkShieldStatus.au3 index 605d13248..b0edfc125 100644 --- a/COCBot/functions/Village/chkShieldStatus.au3 +++ b/COCBot/functions/Village/chkShieldStatus.au3 @@ -8,7 +8,7 @@ ; Return values .: None ; Author ........: MonkeyHunter (2016-02) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/isAtkDarkElixirFull.au3 b/COCBot/functions/Village/isAtkDarkElixirFull.au3 index 77675a18c..a44fb6db7 100644 --- a/COCBot/functions/Village/isAtkDarkElixirFull.au3 +++ b/COCBot/functions/Village/isAtkDarkElixirFull.au3 @@ -6,7 +6,7 @@ ; Return values .: True or False ; Author ........: Code Monkey #57 (send more bananas please!) ; Modified ......: MonkeyHunter (2015-12), Boju 04-2017 -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/isDarkElixirFull.au3 b/COCBot/functions/Village/isDarkElixirFull.au3 index de76935cb..6aaf97873 100644 --- a/COCBot/functions/Village/isDarkElixirFull.au3 +++ b/COCBot/functions/Village/isDarkElixirFull.au3 @@ -6,7 +6,7 @@ ; Return values .: True or False ; Author ........: Code Monkey #57 (send more bananas please!) ; Modified ......: MonkeyHunter (2015-12) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/isElixirFull.au3 b/COCBot/functions/Village/isElixirFull.au3 index 4c2dacc93..91b0ccc6d 100644 --- a/COCBot/functions/Village/isElixirFull.au3 +++ b/COCBot/functions/Village/isElixirFull.au3 @@ -6,7 +6,7 @@ ; Return values .: True or False ; Author ........: Code Monkey #34 (yes, the good looking one!) ; Modified ......: Hervidero (2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/COCBot/functions/Village/isGoldFull.au3 b/COCBot/functions/Village/isGoldFull.au3 index deb2fef64..65a46a6cf 100644 --- a/COCBot/functions/Village/isGoldFull.au3 +++ b/COCBot/functions/Village/isGoldFull.au3 @@ -6,7 +6,7 @@ ; Return values .: True or False ; Author ........: Code Monkey #57 (send more bananas please!) ; Modified ......: Hervidero (2015) -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/Languages/English.ini b/Languages/English.ini index f9a0f84de..f7cbf38d5 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -688,24 +688,30 @@ ChkRequestType_Sieges=Siege Machine ChkRequestType_Sieges_Info_01=Send request when CC Siege Machine is not received ChkRequestType_Spells=Spells ChkRequestType_Spells_Info_01=Send request when CC Spell is not full -ChkWaitForClanCastleSpell_Info_01=Pick a spell type allow to stay in your Clan Castle +ChkWaitForClanCastleSpell_Info_01=Only keep this siege machine in Clan Castle. \r\nSiege machine of other types shall be removed ChkWaitForClanCastleSpell_Info_02=Set the maximum quantity to stay. -ChkWaitForClanCastleTroop_Info_01=Pick a troop type allow to stay in your Clan Castle -ChkWaitForClanCastleTroop_Info_02=Set the maximum quantity to stay. +ChkWaitForClanCastleTroop_Info_01=Pick a troop type allowed to stay in your Clan Castle. \r\nTroops of other type shall be removed +ChkWaitForClanCastleTroop_Info_02=Set the maximum quantity to stay. \r\nExcessive quantity shall be removed Group_01=Clan Castle Troops -lblIfLessThan=If less than +lblIfLessThan=If less than lblIfLessThan_Info_01=Do not request when already received that many CC Troops lblIfLessThan_Info_02=Set to either "0" or "40+" when full CC Troop wanted +lblIfLessThan_Info_03=Do not request when already received that many CC Spells +lblIfLessThan_Info_04=Set to either "0" or "2+" when full CC Spell wanted +lblOnlyTake=Only take LblRequestType=When lacking LblRequestType_Info_01=Not send request when all the checked items are full +Onlytake_Info_01=Pick a troop type allowed to stay in your Clan Castle. \r\nTroops of other type shall be removed +Onlytake_Info_02=Set the maximum quantity to stay. \r\nExcessive quantity shall be removed +Onlytake_Info_03=Set to "0" or "40+" means unlimited +Onlytake_Info_04=Only keep this spell (1 unit) in Clan Castle. \r\nOther spells or excessive quantity shall be removed +Onlytake_Info_05=Only keep this siege machine in Clan Castle. \r\nSiege machine of other types shall be removed TxtRequestCC=Anything please TxtRequestCC_Info_01=This text is used on your request for troops in the Clan chat. -TxtRequestCountCCSpell_Info_01=Do not request when already received that many CC Spells -TxtRequestCountCCSpell_Info_02=Set to either "0" or "2+" when full CC Spell wanted -TxtRequestCountCCSpell_Info_03=Set to "0" or "2+" means unlimit [MBR GUI Design Child Bot - Debug] +BtnTestArmyWindow=Army Window BtnTestAttackBar=Test Attack Bar -BtnTestAttackCSV=Army Window +BtnTestAttackCSV=Test Attack CSV BtnTestBuildingLocation=Find Building BtnTestCleanYard=Test Clean Yard BtnTestClickDrag=Test Click Drag @@ -2044,3 +2050,5 @@ txt-TxtOutsidePercentage=Percentage to force attack in 4 sides TxtBattleBlimp=Battle Blimp TxtStoneSlammer=Stone Slammer TxtWallWrecker=Wall Wrecker +[MBR Global GUI Design Names Sieges] +TxtListOfSieges=Wall Wrecker|Battle Blimp|Stone Slammer|Any diff --git a/MyBot.run.MiniGui.au3 b/MyBot.run.MiniGui.au3 index e7cea10ad..349d66128 100644 --- a/MyBot.run.MiniGui.au3 +++ b/MyBot.run.MiniGui.au3 @@ -3,7 +3,7 @@ ; Description ...: This file contains the initialization and main loop sequences f0r the MBR Bot ; Author ........: (2014) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/MyBot.run.MiniGui.exe b/MyBot.run.MiniGui.exe index b566d0723..b253d9da1 100644 Binary files a/MyBot.run.MiniGui.exe and b/MyBot.run.MiniGui.exe differ diff --git a/MyBot.run.MiniGui_stripped.au3 b/MyBot.run.MiniGui_stripped.au3 index 1fea0f7b0..6a22f25b6 100644 --- a/MyBot.run.MiniGui_stripped.au3 +++ b/MyBot.run.MiniGui_stripped.au3 @@ -5,11 +5,11 @@ #pragma compile(Icon, "Images\MyBot.ico") #pragma compile(FileDescription, Clash of Clans Bot - A Free Clash of Clans bot - https://mybot.run) #pragma compile(ProductVersion, 7.6) -#pragma compile(FileVersion, 7.6.5) +#pragma compile(FileVersion, 7.6.6) #pragma compile(LegalCopyright, © https://mybot.run) #Au3Stripper_Off #Au3Stripper_On -Global $g_sBotVersion = "v7.6.5" +Global $g_sBotVersion = "v7.6.6" Opt("MustDeclareVars", 1) Global $g_sBotTitle = "" Global $g_hFrmBot = 0 @@ -2739,7 +2739,7 @@ Func GetTroopName(Const $iIndex, $iQuantity = 1) If $iIndex >= $eBarb And $iIndex <= $eIceG Then Return $iQuantity > 1 ? $g_asTroopNamesPlural[$iIndex] : $g_asTroopNames[$iIndex] ElseIf $iIndex >= $eLSpell And $iIndex <= $eBtSpell Then -Return $iQuantity > 1 ? $g_asSpellNames[$iIndex - $eLSpell] & "Spells" : $g_asSpellNames[$iIndex - $eLSpell] & "Spell" +Return $iQuantity > 1 ? $g_asSpellNames[$iIndex - $eLSpell] & " Spells" : $g_asSpellNames[$iIndex - $eLSpell] & " Spell" ElseIf $iIndex >= $eKing And $iIndex <= $eWarden Then Return $g_asHeroNames[$iIndex - $eKing] ElseIf $iIndex >= $eWallW And $iIndex <= $eStoneS Then @@ -2769,8 +2769,10 @@ Global $g_abRequestType[3] = [True, True, False] Global $g_iRequestCountCCTroop = 0, $g_iRequestCountCCSpell = 0 Global $g_aiCCTroopsExpected[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_aiCCSpellsExpected[$eSpellCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_aiCCSiegeExpected[$eSiegeMachineCount] = [0, 0, 0] Global $g_aiClanCastleTroopWaitType[3], $g_aiClanCastleTroopWaitQty[3] -Global $g_aiClanCastleSpellWaitType[2], $g_aiClanCastleSpellWaitQty[2] +Global $g_aiClanCastleSpellWaitType[3] +Global $g_aiClanCastleSiegeWaitType[2] Global $g_bChkDonate = True Global $g_abChkDonateQueueOnly[2] Global Enum $eCustomA = $eTroopCount, $eCustomB = $eTroopCount + 1 @@ -2966,7 +2968,6 @@ Global $g_aiLaboratoryPos[2] = [-1, -1] Global $g_aiClanCastlePos[2] = [-1, -1] Global $g_CurrentCampUtilization = 0, $g_iTotalCampSpace = 0 Global $g_iLaboratoryElixirCost = 0, $g_iLaboratoryDElixirCost = 0 -Global $g_sLabUpgradeTime = "" Global $g_iWallCost = 0 Global $g_iHeroWaitAttackNoBit[$g_iModeCount][3] Global Enum $eBldgRedLine, $eBldgTownHall, $eBldgGoldM, $eBldgElixirC, $eBldgDrill, $eBldgGoldS, $eBldgElixirS, $eBldgDarkS, $eBldgEagle, $eBldgInferno, $eBldgXBow, $eBldgWizTower, $eBldgMortar, $eBldgAirDefense @@ -4134,7 +4135,7 @@ Global $g_hLblVillageReportTemp = 0 Global $g_hlblKing = 0, $g_hPicKingGray = 0, $g_hPicKingBlue = 0, $g_hPicKingRed = 0, $g_hPicKingGreen = 0 Global $g_hlblQueen = 0, $g_hPicQueenGray = 0, $g_hPicQueenBlue = 0, $g_hPicQueenRed = 0, $g_hPicQueenGreen = 0 Global $g_hlblWarden = 0, $g_hPicWardenGray = 0, $g_hPicWardenBlue = 0, $g_hPicWardenRed = 0, $g_hPicWardenGreen = 0 -Global $g_hlblLab = 0, $g_hPicLabGray = 0, $g_hPicLabRed = 0, $g_hPicLabGreen = 0 +Global $g_hlblLab = 0, $g_hPicLabGray = 0, $g_hPicLabRed = 0, $g_hPicLabGreen = 0, $g_hLbLLabTime = 0 Func CreateBottomPanel() Local $sTxtTip = "" Local $y_bottom = 0 @@ -4255,6 +4256,7 @@ GUICtrlSetState(-1, $GUI_HIDE) $g_hPicLabRed = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnRedShield, $x + 53, $y, 16, 16 ) _GUICtrlSetTip(-1, $sTxtTip) GUICtrlSetState(-1, $GUI_HIDE) +$g_hLbLLabTime = GUICtrlCreateLabel("", $x, $y + 15, 50, 16, $SS_LEFT) Local $x = 295, $y = $y_bottom + 20 $g_hGrpVillage = GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Bottom", "GrpVillage", "Village"), $x - 0, $y - 20, 160, 85) $g_hLblResultGoldNow = GUICtrlCreateLabel("", $x + 10, $y + 2, 60, 15, $SS_RIGHT) @@ -4766,20 +4768,21 @@ $g_iRequestCountCCSpell = Int(IniRead($g_sProfileConfigPath, "donate", "RequestC For $i = 0 To $eTroopCount - 1 $g_aiCCTroopsExpected[$i] = 0 If $i < $eSpellCount Then $g_aiCCSpellsExpected[$i] = 0 +If $i < $eSiegeMachineCount Then $g_aiCCSiegeExpected[$i] = 0 Next For $i = 0 To 2 -$g_aiClanCastleTroopWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleTroop" & $i, "20")) +$g_aiClanCastleTroopWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleTroop" & $i, $eTroopCount)) $g_aiClanCastleTroopWaitQty[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "txtClanCastleTroop" & $i, "0")) If $g_aiClanCastleTroopWaitType[$i] < $eTroopCount Then $g_aiCCTroopsExpected[$g_aiClanCastleTroopWaitType[$i]] += $g_aiClanCastleTroopWaitQty[$i] EndIf -Next -For $i = 0 To 1 -$g_aiClanCastleSpellWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSpell" & $i, "10")) -$g_aiClanCastleSpellWaitQty[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "txtClanCastleSpell" & $i, "0")) +$g_aiClanCastleSpellWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSpell" & $i, $eSpellCount)) If $g_aiClanCastleSpellWaitType[$i] < $eSpellCount Then -$g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] += $g_aiClanCastleSpellWaitQty[$i] +$g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] += 1 EndIf +If $i > 1 Then ContinueLoop +$g_aiClanCastleSiegeWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSiege" & $i, $eSiegeMachineCount)) +If $g_aiClanCastleSiegeWaitType[$i] < $eSiegeMachineCount Then $g_aiCCSiegeExpected[$g_aiClanCastleSiegeWaitType[$i]] = 1 Next $g_abRequestCCHours = StringSplit(IniRead($g_sProfileConfigPath, "planned", "RequestHours", "1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1"), "|", $STR_NOCOUNT) For $i = 0 To 23 @@ -4887,6 +4890,7 @@ For $i = $eSiegeWallWrecker to $eSiegeMachineCount - 1 Local $index = $eTroopCount + $g_iCustomDonateConfigs Local $sIniName = $g_asSiegeMachineShortNames[$i] $g_abChkDonateTroop[$index + $i] =(IniRead($g_sProfileConfigPath, "donate", "chkDonate" & $sIniName, "0") = "1") +$g_abChkDonateAllTroop[$index + $i] =(IniRead($g_sProfileConfigPath, "donate", "chkDonateAll" & $sIniName, "0") = "1") Next $g_asTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateWallW", "Wrecker|siege"), "|", @CRLF) $g_asTxtBlacklistTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistWallW", "no WallW|no Wrecker|siege no"), "|", @CRLF) @@ -4937,7 +4941,6 @@ EndFunc Func ReadConfig_600_14() IniReadS($g_bAutoLabUpgradeEnable, $g_sProfileBuildingPath, "upgrade", "upgradetroops", False, "Bool") IniReadS($g_iCmbLaboratory, $g_sProfileBuildingPath, "upgrade", "upgradetroopname", 0, "int") -$g_sLabUpgradeTime = IniRead($g_sProfileBuildingPath, "upgrade", "upgradelabtime", "") IniReadS($g_iLaboratoryElixirCost, $g_sProfileBuildingPath, "upgrade", "upgradelabelexircost", 0, "int") IniReadS($g_iLaboratoryDElixirCost, $g_sProfileBuildingPath, "upgrade", "upgradelabdelexircost", 0, "int") EndFunc diff --git a/MyBot.run.Watchdog.au3 b/MyBot.run.Watchdog.au3 index 8e18238e8..2e472d218 100644 --- a/MyBot.run.Watchdog.au3 +++ b/MyBot.run.Watchdog.au3 @@ -3,7 +3,7 @@ ; Description ...: This file contens the Sequence that runs all MBR Bot ; Author ........: cosote (12-2016) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/MyBot.run.Watchdog.exe b/MyBot.run.Watchdog.exe index 106770bf5..18bfc3c46 100644 Binary files a/MyBot.run.Watchdog.exe and b/MyBot.run.Watchdog.exe differ diff --git a/MyBot.run.Watchdog_stripped.au3 b/MyBot.run.Watchdog_stripped.au3 index 61e503115..aa62ae912 100644 --- a/MyBot.run.Watchdog_stripped.au3 +++ b/MyBot.run.Watchdog_stripped.au3 @@ -5,11 +5,11 @@ #pragma compile(Icon, "Images\MyBot.ico") #pragma compile(FileDescription, Clash of Clans Bot - A Free Clash of Clans bot - https://mybot.run) #pragma compile(ProductVersion, 7.6) -#pragma compile(FileVersion, 7.6.5) +#pragma compile(FileVersion, 7.6.6) #pragma compile(LegalCopyright, © https://mybot.run) #Au3Stripper_Off #Au3Stripper_On -Global $g_sBotVersion = "v7.6.5" +Global $g_sBotVersion = "v7.6.6" Opt("MustDeclareVars", 1) Global Const $WAIT_TIMEOUT = 258 Global Const $STDERR_MERGED = 8 diff --git a/MyBot.run.Wmi.au3 b/MyBot.run.Wmi.au3 index 95559fc45..d74e98c48 100644 --- a/MyBot.run.Wmi.au3 +++ b/MyBot.run.Wmi.au3 @@ -3,7 +3,7 @@ ; Description ...: This file contens the Sequence that runs all MBR Bot ; Author ........: cosote (03-2017) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/MyBot.run.Wmi.exe b/MyBot.run.Wmi.exe index 9491ad0a1..d820cda92 100644 Binary files a/MyBot.run.Wmi.exe and b/MyBot.run.Wmi.exe differ diff --git a/MyBot.run.Wmi_stripped.au3 b/MyBot.run.Wmi_stripped.au3 index 3f303e198..b3e67794f 100644 --- a/MyBot.run.Wmi_stripped.au3 +++ b/MyBot.run.Wmi_stripped.au3 @@ -6,7 +6,7 @@ #pragma compile(Icon, "Images\MyBot.ico") #pragma compile(FileDescription, Clash of Clans Bot - A Free Clash of Clans bot - https://mybot.run) #pragma compile(ProductVersion, 7.6) -#pragma compile(FileVersion, 7.6.5) +#pragma compile(FileVersion, 7.6.6) #pragma compile(LegalCopyright, © https://mybot.run) #Au3Stripper_Off #Au3Stripper_On diff --git a/MyBot.run.au3 b/MyBot.run.au3 index a49bafa70..01ff62976 100644 --- a/MyBot.run.au3 +++ b/MyBot.run.au3 @@ -3,7 +3,7 @@ ; Description ...: This file contains the initialization and main loop sequences f0r the MBR Bot ; Author ........: (2014) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki diff --git a/MyBot.run.exe b/MyBot.run.exe index 612374524..8e3d1bda9 100644 Binary files a/MyBot.run.exe and b/MyBot.run.exe differ diff --git a/MyBot.run.version.au3 b/MyBot.run.version.au3 index a3fb52f6a..05f2c86cb 100644 --- a/MyBot.run.version.au3 +++ b/MyBot.run.version.au3 @@ -3,7 +3,7 @@ ; Description ...: This file contains the initialization and main loop sequences f0r the MBR Bot ; Author ........: (2014) ; Modified ......: -; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2018 +; Remarks .......: This file is part of MyBot, previously known as ClashGameBot. Copyright 2015-2019 ; MyBot is distributed under the terms of the GNU GPL ; Related .......: ; Link ..........: https://github.com/MyBotRun/MyBot/wiki @@ -15,8 +15,8 @@ #pragma compile(Icon, "Images\MyBot.ico") #pragma compile(FileDescription, Clash of Clans Bot - A Free Clash of Clans bot - https://mybot.run) #pragma compile(ProductVersion, 7.6) -#pragma compile(FileVersion, 7.6.5) +#pragma compile(FileVersion, 7.6.6) #pragma compile(LegalCopyright, © https://mybot.run) #Au3Stripper_On -Global $g_sBotVersion = "v7.6.5" ;~ Don't add more here, but below. Version can't be longer than vX.y.z because it is also use on Checkversion() \ No newline at end of file +Global $g_sBotVersion = "v7.6.6" ;~ Don't add more here, but below. Version can't be longer than vX.y.z because it is also use on Checkversion() \ No newline at end of file diff --git a/MyBot.run_stripped.au3 b/MyBot.run_stripped.au3 index 8f2fdd4e2..62bcbedaa 100644 --- a/MyBot.run_stripped.au3 +++ b/MyBot.run_stripped.au3 @@ -5,11 +5,11 @@ #pragma compile(Icon, "Images\MyBot.ico") #pragma compile(FileDescription, Clash of Clans Bot - A Free Clash of Clans bot - https://mybot.run) #pragma compile(ProductVersion, 7.6) -#pragma compile(FileVersion, 7.6.5) +#pragma compile(FileVersion, 7.6.6) #pragma compile(LegalCopyright, © https://mybot.run) #Au3Stripper_Off #Au3Stripper_On -Global $g_sBotVersion = "v7.6.5" +Global $g_sBotVersion = "v7.6.6" Opt("MustDeclareVars", 1) Global $g_sBotTitle = "" Global $g_hFrmBot = 0 @@ -3191,6 +3191,52 @@ Return SetError(2, 0, False) EndSwitch Return UBound($aArray, $UBOUND_ROWS) EndFunc +Func _ArrayExtract(Const ByRef $aArray, $iStart_Row = -1, $iEnd_Row = -1, $iStart_Col = -1, $iEnd_Col = -1) +If $iStart_Row = Default Then $iStart_Row = -1 +If $iEnd_Row = Default Then $iEnd_Row = -1 +If $iStart_Col = Default Then $iStart_Col = -1 +If $iEnd_Col = Default Then $iEnd_Col = -1 +If Not IsArray($aArray) Then Return SetError(1, 0, -1) +Local $iDim_1 = UBound($aArray, $UBOUND_ROWS) - 1 +If $iEnd_Row = -1 Then $iEnd_Row = $iDim_1 +If $iStart_Row = -1 Then $iStart_Row = 0 +If $iStart_Row < -1 Or $iEnd_Row < -1 Then Return SetError(3, 0, -1) +If $iStart_Row > $iDim_1 Or $iEnd_Row > $iDim_1 Then Return SetError(3, 0, -1) +If $iStart_Row > $iEnd_Row Then Return SetError(4, 0, -1) +Switch UBound($aArray, $UBOUND_DIMENSIONS) +Case 1 +Local $aRetArray[$iEnd_Row - $iStart_Row + 1] +For $i = 0 To $iEnd_Row - $iStart_Row +$aRetArray[$i] = $aArray[$i + $iStart_Row] +Next +Return $aRetArray +Case 2 +Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS) - 1 +If $iEnd_Col = -1 Then $iEnd_Col = $iDim_2 +If $iStart_Col = -1 Then $iStart_Col = 0 +If $iStart_Col < -1 Or $iEnd_Col < -1 Then Return SetError(5, 0, -1) +If $iStart_Col > $iDim_2 Or $iEnd_Col > $iDim_2 Then Return SetError(5, 0, -1) +If $iStart_Col > $iEnd_Col Then Return SetError(6, 0, -1) +If $iStart_Col = $iEnd_Col Then +Local $aRetArray[$iEnd_Row - $iStart_Row + 1] +Else +Local $aRetArray[$iEnd_Row - $iStart_Row + 1][$iEnd_Col - $iStart_Col + 1] +EndIf +For $i = 0 To $iEnd_Row - $iStart_Row +For $j = 0 To $iEnd_Col - $iStart_Col +If $iStart_Col = $iEnd_Col Then +$aRetArray[$i] = $aArray[$i + $iStart_Row][$j + $iStart_Col] +Else +$aRetArray[$i][$j] = $aArray[$i + $iStart_Row][$j + $iStart_Col] +EndIf +Next +Next +Return $aRetArray +Case Else +Return SetError(2, 0, -1) +EndSwitch +Return 1 +EndFunc Func _ArrayFindAll(Const ByRef $aArray, $vValue, $iStart = 0, $iEnd = 0, $iCase = 0, $iCompare = 0, $iSubItem = 0, $bRow = False) If $iStart = Default Then $iStart = 0 If $iEnd = Default Then $iEnd = 0 @@ -5824,6 +5870,7 @@ Global $b_sAndroidProgramWerFaultExcluded = True Global $g_avAndroidProgramFileVersionInfo = 0 Global $g_bAndroidHasSystemBar = False Global $g_iAndroidLaunchWaitSec = 600 +Global $g_sAndroidPicturesPathAvailable = False Global $g_sAndroidPicturesPath = "" Global $g_sAndroidPicturesHostPath = "" Global $g_bAndroidSharedFolderAvailable = True @@ -6050,7 +6097,7 @@ Func GetTroopName(Const $iIndex, $iQuantity = 1) If $iIndex >= $eBarb And $iIndex <= $eIceG Then Return $iQuantity > 1 ? $g_asTroopNamesPlural[$iIndex] : $g_asTroopNames[$iIndex] ElseIf $iIndex >= $eLSpell And $iIndex <= $eBtSpell Then -Return $iQuantity > 1 ? $g_asSpellNames[$iIndex - $eLSpell] & "Spells" : $g_asSpellNames[$iIndex - $eLSpell] & "Spell" +Return $iQuantity > 1 ? $g_asSpellNames[$iIndex - $eLSpell] & " Spells" : $g_asSpellNames[$iIndex - $eLSpell] & " Spell" ElseIf $iIndex >= $eKing And $iIndex <= $eWarden Then Return $g_asHeroNames[$iIndex - $eKing] ElseIf $iIndex >= $eWallW And $iIndex <= $eStoneS Then @@ -6082,8 +6129,10 @@ Global $g_abRequestType[3] = [True, True, False] Global $g_iRequestCountCCTroop = 0, $g_iRequestCountCCSpell = 0 Global $g_aiCCTroopsExpected[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_aiCCSpellsExpected[$eSpellCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_aiCCSiegeExpected[$eSiegeMachineCount] = [0, 0, 0] Global $g_aiClanCastleTroopWaitType[3], $g_aiClanCastleTroopWaitQty[3] -Global $g_aiClanCastleSpellWaitType[2], $g_aiClanCastleSpellWaitQty[2] +Global $g_aiClanCastleSpellWaitType[3] +Global $g_aiClanCastleSiegeWaitType[2] Global $g_bChkDonate = True Global $g_abChkDonateQueueOnly[2] Global Enum $eCustomA = $eTroopCount, $eCustomB = $eTroopCount + 1 @@ -6348,7 +6397,6 @@ Global $g_iCurrentCCSpells = 0, $g_iTotalCCSpells = 0 Global $g_bFullArmySpells = False Global $g_CurrentCampUtilization = 0, $g_iTotalCampSpace = 0 Global $g_iLaboratoryElixirCost = 0, $g_iLaboratoryDElixirCost = 0 -Global $g_iFirstTimeLab = 0 Global $g_sLabUpgradeTime = "" Global Const $g_aiWallCost[9] = [25000, 50000, 100000, 250000, 500000, 1000000, 2000000, 4000000, 5000000] Global $g_iWallCost = 0 @@ -6362,6 +6410,7 @@ Global Const $g_afWardenUpgCost[30] = [6, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7 Global $g_bVillageSearchActive = False Global $g_bCloudsActive = False Global $g_bAttackActive = False +Global Const $g_iMaxTHLevel = 12 Global Const $g_asTHText[7] = ["4-6", "7", "8", "9", "10", "11", "12"] Global Const $g_aiSearchCost[12] = [10, 50, 75, 110, 170, 250, 380, 580, 750, 900, 1000, 1100] Global $g_bSearchMode = False @@ -6398,7 +6447,7 @@ Global Const $g_aaiTroopsToBeUsed[12] = [$g_aiUseAllTroops, $g_aiUseBarracks, $g Global $g_bTHSnipeUsedKing = False Global $g_bTHSnipeUsedQueen = False Global $g_bTHSnipeUsedWarden = False -Global $g_avAttackTroops[22][3] +Global $g_avAttackTroops[22][6] Global $g_bFullArmy = False Global $g_iKingSlot = -1, $g_iQueenSlot = -1, $g_iWardenSlot = -1, $g_iClanCastleSlot = -1 Global $g_iTotalAttackSlot = 10, $g_bDraggedAttackBar = False @@ -6666,9 +6715,9 @@ Global Const $DELAYALGORITHM_ALLTROOPS5 = 250 Global Const $DELAYATTACKREPORT1 = 500 Global Const $DELAYATTACKREPORT2 = 150 Global Const $DELAYDROPCC1 = 500 -Global Const $DELAYDROPCC2 = 500 Global Const $DELAYDROPHEROES1 = 300 Global Const $DELAYDROPHEROES2 = 500 +Global Const $DELAYCHECKHEROESHEALTH = 4000 Global Const $DELAYGOLDELIXIRCHANGE1 = 500 Global Const $DELAYGOLDELIXIRCHANGE2 = 1000 Global Const $DELAYGOLDELIXIRCHANGEEBO1 = 500 @@ -6756,7 +6805,7 @@ Global Const $DELAYDROPTROPHY4 = 250 Global Const $DELAYGETTHLEVEL1 = 1000 Global Const $DELAYGETTHLEVEL2 = 1500 Global Const $DELAYGETTHLEVEL3 = 200 -Global Const $DELAYLABORATORY1 = 750 +Global Const $DELAYLABORATORY1 = 1000 Global Const $DELAYLABORATORY2 = 200 Global Const $DELAYLABORATORY3 = 1000 Global Const $DELAYLABORATORY4 = 200 @@ -6823,6 +6872,7 @@ Global Const $DELAYATTACKDISABLE100 = 100 Global Const $DELAYATTACKDISABLE500 = 500 Global Const $DELAYWAITATTACK1 = 60000 Global Const $DELAYWAITATTACK2 = 300000 +Global Const $DELAYCLOSEOPEN500 = 500 Global Const $DELAYCLOSEOPEN1000 = 1000 Global Const $DELAYCLOSEOPEN2000 = 2000 Global Const $DELAYCLOSEOPEN3000 = 3000 @@ -7006,8 +7056,11 @@ Global $aWonOneStarAtkRprt[4] = [325, 180 + $g_iMidOffsetY, 0xC8CaC4, 30] Global $aWonTwoStarAtkRprt[4] = [398, 180 + $g_iMidOffsetY, 0xD0D6D0, 30] Global $aWonThreeStarAtkRprt[4] = [534, 180 + $g_iMidOffsetY, 0xC8CAC7, 30] Global $NextBtn[4] = [780, 546 + $g_iBottomOffsetY, 0xD34300, 20] -Global $a12OrMoreSlots[4] = [16, 670, 0x5C93C8, 25] -Global $aRequestTroopsAO[6] = [761, 592, 0x565656, 0x3C6C27, 0xFFFFFE, 25] +Global $a12OrMoreSlots[4] = [16, 648, 0x4583B9, 25] +Global $aDoubRowAttackBar[4] = [68, 486, 0xFC5D64, 20] +Global $aTroopIsDeployed[4] = [0, 0, 0x404040, 20] +Global Const $aIsAttackPage[4] = [56, 548 + $g_iBottomOffsetY, 0xcf0d0e, 20] +Global $aRequestTroopsAO[6] = [761, 592, 0x565656, 0x71BA2F, 0xFFFFFE, 25] Global Const $aCloseChat[4] = [331, 330 + $g_iMidOffsetY, 0xF0951D, 20] Global Const $aChatDonateBtnColors[4][4] = [[0x0d0d0d, 0, -4, 20], [0xdaf582, 10, 0, 20], [0xcdef75, 10, 5, 20], [0xFFFFFF, 24, 9, 10]] Global Const $aAtkRprtDECheck[4] = [459, 372 + $g_iMidOffsetY, 0x433350, 20] @@ -7015,7 +7068,6 @@ Global Const $aAtkRprtTrophyCheck[4] = [327, 189 + $g_iMidOffsetY, 0x3B321C, 30] Global Const $aAtkRprtDECheck2[4] = [678, 418 + $g_iMidOffsetY, 0x030000, 30] Global Const $aRtnHomeCheck1[4] = [363, 548 + $g_iMidOffsetY, 0x78C11C, 20] Global Const $aRtnHomeCheck2[4] = [497, 548 + $g_iMidOffsetY, 0x79C326, 20] -Global Const $aIsAttackPage[4] = [56, 548 + $g_iBottomOffsetY, 0xcf0d0e, 20] Global Const $aAttackLogPage[4] = [775, 125, 0xEB1115, 40] Global Const $aAttackLogAttackTab[4] = [437, 114, 0xF0F4F0, 30] Global Const $aBlueShareReplayButton[4] = [500, 156 + $g_iMidOffsetY, 0x70D4E8, 30] @@ -7108,6 +7160,7 @@ Global $g_sImgBoatBB = @ScriptDir & "\imgxml\Boat\BoatBuilderBase_0_89.xml" Global $g_sImgZoomOutDirBB = @ScriptDir & "\imgxml\village\BuilderBase\" Global $g_sImgStartCTBoost = @ScriptDir & "\imgxml\Resources\BuildersBase\ClockTower\ClockTowerAvailable*.xml" Global $g_sImgCleanBBYard = @ScriptDir & "\imgxml\Resources\ObstaclesBB" +Global $g_sImgIsOnBB = @ScriptDir & "\imgxml\village\Page\BuilderBase*" Global $g_sImgDonateTroops = @ScriptDir & "\imgxml\DonateCC\Troops\" Global $g_sImgDonateSpells = @ScriptDir & "\imgxml\DonateCC\Spells\" Global $g_sImgDonateSiege = @ScriptDir & "\imgxml\DonateCC\SiegeMachines\" @@ -7133,6 +7186,7 @@ Global $g_sImgAutoUpgradeNewBldgYes = @ScriptDir & "\imgxml\Resources\BuildersBa Global $g_sImgAutoUpgradeNewBldgNo = @ScriptDir & "\imgxml\Resources\BuildersBase\AutoUpgrade\NewBuildings\No" Global $g_sImgTrainTroops = @ScriptDir & "\imgxml\Train\Train_Train\" Global $g_sImgTrainSpells = @ScriptDir & "\imgxml\Train\Spell_Train\" +Global $g_sImgRequestCCButton = @ScriptDir & "\imgxml\ArmyOverview\RequestCC" Global $g_sImgAttackBarDir = @ScriptDir & "\imgxml\AttackBar" Global $g_sImgSwitchSiegeMachine = @ScriptDir & "\imgxml\SwitchSiegeMachines\Siege" Global $g_sImgSwitchSiegeCastle = @ScriptDir & "\imgxml\SwitchSiegeMachines\Castle" @@ -7151,6 +7205,7 @@ Global $g_sImgWeakBaseBuildingsAirDefenseDir = @ScriptDir & "\imgxml\Buildings\A Global $g_sImgSearchDrill = @ScriptDir & "\imgxml\Storages\Drills" Global $g_sImgSearchDrillLevel = @ScriptDir & "\imgxml\Storages\Drills\Level" Global $g_sImgEasyBuildings = @ScriptDir & "\imgxml\easybuildings" +Global $g_sImgRetrySearchButton = @ScriptDir & "\imgxml\Resources\Clouds\RetryButton*" Global Const $g_sImgLoginWithSupercellID = @ScriptDir & "\imgxml\other\LoginWithSupercellID*" Global Const $g_sImgGoogleSelectAccount = @ScriptDir & "\imgxml\other\GoogleSelectAccount*" Global Const $g_sImgGoogleSelectEmail = @ScriptDir & "\imgxml\other\GoogleSelectEmail*" @@ -7907,7 +7962,9 @@ If $g_iEmptyWorkingSetBot > 0 Then _WinAPI_EmptyWorkingSet(@AutoItPID) EndFunc Global Const $g_sAdbScriptsPath = $g_sLibPath & "\adb.scripts" Global $g_sAndroidAdbPrompt = "mybot.run:" -Global $g_bAndroidAdbPromptUseGiven = True +Global $g_sAndroidAdbInstanceShellOptions = "" +Global $g_sAndroidAdbShellOptions = "" +Global $g_bAndroidAdbPromptUseGiven = False Global $g_iAndroidCoCPid = 0 Global $g_iAndroidAdbProcess = [0, 0, 0, 0, 0] Global $g_aiAndroidAdbClicks[1] = [-1] @@ -7959,6 +8016,10 @@ $g_bAndroidBackgroundLaunch = $g_bAndroidBackgroundLaunchEnabled = True $g_bAndroidBackgroundLaunched = False $g_bUpdateAndroidWindowTitle = False $g_bAndroidControlUseParentPos = False +$g_sAndroidAdbInstanceShellOptions = "" +$g_sAndroidAdbShellOptions = "" +$g_PushedSharedPrefsProfile = "" +$g_PushedSharedPrefsProfile_Timer = 0 If $g_bAndroidAdbScreencap Then UpdateChkBackground() EndIf @@ -8720,7 +8781,7 @@ EndIf ConnectAndroidAdb() If Not $g_bRunState Then Return False If Not $g_bRunState Then Return False -If $g_bChkSharedPrefs And HaveSharedPrefs() And $g_PushedSharedPrefsProfile <> $g_sProfileCurrentName And($g_PushedSharedPrefsProfile_Timer = 0 Or __TimerDiff($g_PushedSharedPrefsProfile_Timer) > 120000) Then PushSharedPrefs() +If $g_bChkSharedPrefs And HaveSharedPrefs() And($g_PushedSharedPrefsProfile <> $g_sProfileCurrentName Or($g_PushedSharedPrefsProfile_Timer = 0 Or __TimerDiff($g_PushedSharedPrefsProfile_Timer) > 120000)) Then PushSharedPrefs() $cmdOutput = AndroidAdbSendShellCommand("set export=$(am start " & $sRestart & "-n " & $g_sAndroidGamePackage & "/" & $g_sAndroidGameClass & " >&2)", 60000) If StringInStr($cmdOutput, "Error:") > 0 And StringInStr($cmdOutput, $g_sAndroidGamePackage) > 0 Then SetLog("Unable to load Clash of Clans, install/reinstall the game.", $COLOR_ERROR) @@ -8891,7 +8952,10 @@ Local $cmdOutput, $connected_to, $booted, $process_killed, $hMyTimer $hMyTimer =($hTimer = 0 ? __TimerInit() : $hTimer) While True If Not $g_bRunState Then Return True -$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell getprop sys.boot_completed", $process_killed) +$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " getprop sys.boot_completed", $process_killed) +If InvalidAdbShellOptions($cmdOutput, "WaitForAndroidBootCompleted") Then +$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " getprop sys.boot_completed", $process_killed) +EndIf If Not $g_bRunState Then Return True $connected_to = IsAdbConnected($cmdOutput) If Not $g_bRunState Then Return True @@ -8919,13 +8983,16 @@ If IsAdbTCP() Then $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "connect " & $g_sAndroidAdbDevice, $process_killed) $connected_to = StringInStr($cmdOutput, "connected to") > 0 If $connected_to Then -$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell echo $USER:$USER_ID", $process_killed) +$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " echo $USER:$USER_ID", $process_killed) $connected_to = StringInStr($cmdOutput, " not ") = 0 And StringInStr($cmdOutput, "unable") = 0 And StringInStr($cmdOutput, "error: ") = 0 And StringInStr($cmdOutput, "device ") = 0 And $process_killed = False EndIf Else -$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell echo $USER:$USER_ID", $process_killed) +$cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbShellOptions & " echo $USER:$USER_ID", $process_killed) $connected_to = StringInStr($cmdOutput, " not ") = 0 And StringInStr($cmdOutput, "unable") = 0 And StringInStr($cmdOutput, "error: ") = 0 And $process_killed = False EndIf +If Not $connected_to And InvalidAdbShellOptions($cmdOutput, "IsAdbConnected") Then +Return IsAdbConnected() +EndIf Else $connected_to = StringInStr($cmdOutput, " not ") = 0 And StringInStr($cmdOutput, "unable") = 0 And StringInStr($cmdOutput, "error: ") = 0 EndIf @@ -9113,8 +9180,9 @@ If Not $g_bAndroidAdbInstance Then Return Local $bIdentified = False Local $s Sleep(250) -If $g_bAndroidAdbPromptUseGiven Then AndroidAdbSendShellCommand("", -250, Default, False, False) +AndroidAdbSendShellCommand("", -250, Default, False, False) +If $g_bAndroidAdbPromptUseGiven Then $s = AndroidAdbSendShellCommand("", -500, Default, False, False) If $s Then $g_sAndroidAdbPrompt = StringStripWS($s, $STR_STRIPLEADING) @@ -9127,7 +9195,7 @@ EndIf EndIf If Not $bIdentified Then SetDebugLog("Initialize shell prompt with '" & $g_sAndroidAdbPrompt & "'") -$s = AndroidAdbSendShellCommand(@LF & "PS1=" & $g_sAndroidAdbPrompt, -500, Default, False) +$s = AndroidAdbSendShellCommand("export PS1=" & $g_sAndroidAdbPrompt, -500, Default, False) EndIf Return $s EndFunc @@ -9168,7 +9236,19 @@ ElseIf $iConnected = 2 And $g_iAndroidAdbProcess[0] Then Return SetError(0, 0) EndIf AndroidAdbTerminateShellInstance() -$g_iAndroidAdbProcess[0] = RunPipe($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell", "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED), $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) +$g_iAndroidAdbProcess[0] = RunPipe($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbInstanceShellOptions, "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED), $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) +Sleep(500) +If $g_sAndroidAdbInstanceShellOptions And $g_iAndroidAdbProcess[0] <> 0 And ProcessExists2($g_iAndroidAdbProcess[0]) <> $g_iAndroidAdbProcess[0] Then +Local $aReadPipe = $g_iAndroidAdbProcess[2] +Local $output = ReadPipe($aReadPipe[0]) +If StringInStr($output, "error: target doesn't support PTY") > 0 Or StringInStr($output, ": unknown option") Then +SetDebugLog("Shell instance option '" & $g_sAndroidAdbInstanceShellOptions & "' not supported and now disabled") +$g_sAndroidAdbInstanceShellOptions = "" +ClosePipe($g_iAndroidAdbProcess[0], $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) +$g_iAndroidAdbProcess[0] = RunPipe($g_sAndroidAdbPath & " -s " & $g_sAndroidAdbDevice & " shell" & $g_sAndroidAdbInstanceShellOptions, "", @SW_HIDE, BitOR($STDIN_CHILD, $STDERR_MERGED), $g_iAndroidAdbProcess[1], $g_iAndroidAdbProcess[2], $g_iAndroidAdbProcess[3], $g_iAndroidAdbProcess[4]) +Sleep(500) +EndIf +EndIf If $g_iAndroidAdbProcess[0] = 0 Or ProcessExists2($g_iAndroidAdbProcess[0]) <> $g_iAndroidAdbProcess[0] Then SetLog($g_sAndroidEmulator & " error launching ADB for background mode, zoom-out, mouse click and input", $COLOR_ERROR) $g_iAndroidAdbProcess[0] = 0 @@ -9181,6 +9261,20 @@ Else AndroidInitPrompt() EndIf EndIf +If $g_bAndroidAdbInstance = True Then +$s = "" +Local $scriptFile = "" +If $scriptFile = "" And FileExists($g_sAdbScriptsPath & "\shell.init." & $g_sAndroidEmulator & ".script") = 1 Then $scriptFile = "shell.init." & $g_sAndroidEmulator & ".script" +If $scriptFile = "" Then $scriptFile = "shell.init.script" +$s &= AndroidAdbSendShellCommandScript($scriptFile, Default, True, 3000, $wasRunState, False) +$s &= AndroidInitPrompt() +Local $error = @error +SetDebugLog("ADB shell launched, PID = " & $g_iAndroidAdbProcess[0] & ": " & $s) +If $error <> 0 Then +SuspendAndroid($SuspendMode) +Return +EndIf +EndIf If True Then $iConnected = ConnectAndroidAdb($rebootAndroidIfNeccessary) If $iConnected = 0 Or($iConnected = 2 And $g_iAndroidAdbProcess[0] = 0) Then @@ -9191,25 +9285,22 @@ EndIf Local $pathFound = False Local $iMount For $iMount = 0 To 9 -If $g_sAndroidPicturesPath = "" Then -SetDebugLog("Problem in configuration, $g_sAndroidPicturesPath is empty", $COLOR_ERROR) -ExitLoop -EndIf $s = AndroidAdbSendShellCommand("mount", Default, $wasRunState, False) Local $path = $g_sAndroidPicturesPath If StringRight($path, 1) = "/" Then $path = StringLeft($path, StringLen($path) - 1) -Local $aRegExResult = StringRegExp($s, $path, $STR_REGEXPARRAYMATCH) +Local $aRegExResult = StringRegExp($s, "[^ ]+ ([^ ]+).+", $STR_REGEXPARRAYGLOBALMATCH) SetError(0) -If UBound($aRegExResult) = 0 Then Local $aRegExResult = [] -_ArrayConcatenate($aRegExResult, StringSplit(((StringLeft($path, 1) = "(" And StringRight($path, 1) = ")") ? StringMid($path, 2, StringLen($path) - 2) : $path), "|", $STR_NOCOUNT)) +Local $aMounts[0] +If $path Then _ArrayConcatenate($aMounts, StringSplit(((StringLeft($path, 1) = "(" And StringRight($path, 1) = ")") ? StringMid($path, 2, StringLen($path) - 2) : $path), "|", $STR_NOCOUNT)) +If UBound($aRegExResult) > 0 Then _ArrayConcatenate($aMounts, $aRegExResult) Local $dummyFile = StringMid(_Crypt_HashData($g_sBotTitle & _Now(), $CALG_SHA1), 3) FileWriteLine($g_sAndroidPicturesHostPath & $dummyFile, _Now()) -For $i = 0 To UBound($aRegExResult) - 1 -$path = $aRegExResult[$i] +For $i = 0 To UBound($aMounts) - 1 +$path = $aMounts[$i] If $path = "" Then ContinueLoop If StringRight($path, 1) <> "/" Then $path &= "/" -$s = AndroidAdbSendShellCommand("set result=$(ls '" & $path & $dummyFile & "' >&2)", Default, $wasRunState, False) -If StringInStr($s, "No such file or directory") = 0 And StringInStr($s, "syntax error:") = 0 Then +$s = AndroidAdbSendShellCommand("set result=$(ls '" & $path & $dummyFile & "' >&2)", 10000, $wasRunState, False) +If StringInStr($s, $dummyFile) > 0 And StringInStr($s, "No such file or directory") = 0 And StringInStr($s, "syntax error:") = 0 Then $pathFound = True $g_sAndroidPicturesPath = $path SetDebugLog("Using " & $g_sAndroidPicturesPath & " for Android shared folder") @@ -9225,26 +9316,14 @@ SetDebugLog("Still waiting for shared folder to get mounted...") EndIf If _Sleep(6000) Then Return Next +$g_sAndroidPicturesPathAvailable = $pathFound If $pathFound = False Then SetLog($g_sAndroidEmulator & " cannot use ADB on shared folder, """ & $g_sAndroidPicturesPath & """ not found", $COLOR_ERROR) EndIf +AndroidAdbSendShellCommand("", Default, $wasRunState, False) $g_iAndroidVersionAPI = Int(AndroidAdbSendShellCommand("getprop ro.build.version.sdk", Default, $wasRunState, False)) SetDebugLog("Android Version API = " & $g_iAndroidVersionAPI) EndIf -If $g_bAndroidAdbInstance = True Then -$s = "" -Local $scriptFile = "" -If $scriptFile = "" And FileExists($g_sAdbScriptsPath & "\shell.init." & $g_sAndroidEmulator & ".script") = 1 Then $scriptFile = "shell.init." & $g_sAndroidEmulator & ".script" -If $scriptFile = "" Then $scriptFile = "shell.init.script" -$s &= AndroidAdbSendShellCommandScript($scriptFile, Default, Default, 3000, $wasRunState, False) -$s &= AndroidInitPrompt() -Local $error = @error -SetDebugLog("ADB shell launched, PID = " & $g_iAndroidAdbProcess[0] & ": " & $s) -If $error <> 0 Then -SuspendAndroid($SuspendMode) -Return -EndIf -EndIf If StringLen($g_sAndroidMouseDevice) > 0 And $g_sAndroidMouseDevice = $g_avAndroidAppConfig[$g_iAndroidConfig][13] Then $iConnected = ConnectAndroidAdb($rebootAndroidIfNeccessary) If $iConnected = 0 Or($iConnected = 2 And $g_iAndroidAdbProcess[0] = 0) Then @@ -9387,7 +9466,7 @@ $iCommandErrors = 0 If $bNoShellTerminate = False Then AndroidAdbTerminateShellInstance() EndIf EndIf -Return SetError($error, Int(__TimerDiff($hTimer)) & "ms,#" & $loopCount, $s) +Return SetError($error, Int(__TimerDiff($hTimer)), $s) EndFunc Func GetBinaryEvent($type, $code, $value) Local $h, $hType, $hCode, $hValue @@ -10537,6 +10616,8 @@ If $hWnd <> 0 And $g_iAndroidAdbSuCommand <> "" Then ControlSend($hWnd, "", "", "{ENTER}") SetLog("Send Shell command: " & $g_iAndroidAdbSuCommand) ControlSend($hWnd, "", "", $g_iAndroidAdbSuCommand & "{ENTER}") +ControlSend($hWnd, "", "", "{ENTER}") +ControlSend($hWnd, "", "", "{ENTER}") EndIf Return $iPid EndFunc @@ -10679,6 +10760,10 @@ Local $cmdOutput Local $Result = False Local $iFiles = 5 Local $iFilesPulled = 0 +If Not $g_sAndroidPicturesPathAvailable Then +SetLog("Shard folder in Android not availble, cannot pull shared_prefs", $COLOR_RED) +Return SetError(0, 0, $Result) +EndIf SetDebugLog("Pulling shared_pref of profile " & $sProfile) DirRemove($g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs_tmp", 1) DirMove($g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs", $g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs_tmp") @@ -10758,6 +10843,10 @@ Local $Result = False Local $bWasRunState = $g_bRunState Local $process_killed Local $cmdOutput +If Not $g_sAndroidPicturesPathAvailable Then +SetLog("Shard folder in Android not availble, cannot push shared_prefs", $COLOR_RED) +Return SetError(0, 0, $Result) +EndIf Local $aNewFiles = HaveSharedPrefs($sProfile, True, True) Local $bHaveNew = UBound($aNewFiles) > 1 Local $bHaveOld = HaveSharedPrefs($sProfile, False, True) @@ -10785,6 +10874,7 @@ EndIf EndIf Local $iFiles = UBound($aNewFiles) - 1 Local $iFilesPushed = 0 +_Sleep(1000) If $g_bPullPushSharedPrefsAbdCommand Then $cmdOutput = LaunchConsole($g_sAndroidAdbPath, "-s " & $g_sAndroidAdbDevice & " push """ & $g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs"" /data/data/" & $g_sAndroidGamePackage & "/shared_prefs", $process_killed) Else @@ -10813,8 +10903,9 @@ If FileExists($hostFolder & "\shared_prefs") And $iFilesInShared < 1 Then If FileCopy($g_sPrivateProfilePath & "\" & $sProfile & "\shared_prefs\*", $hostFolder & "\shared_prefs", $FC_OVERWRITE) And UBound(_FileListToArray($hostFolder & "\shared_prefs", "*", $FLTA_FILES)) - 1 >= $iFiles Then AndroidAdbSendShellCommand("set result=$(rm /data/data/" & $g_sAndroidGamePackage & "/shared_prefs/* >&2)") AndroidAdbSendShellCommand("set result=$(cp " & $androidFolder & "/shared_prefs/* /data/data/" & $g_sAndroidGamePackage & "/shared_prefs >&2)") -$cmdOutput = AndroidAdbSendShellCommand("set result=$(ls -l " & $androidFolder & "/shared_prefs/ >&2)") +$cmdOutput = AndroidAdbSendShellCommand("set result=$(ls -l /data/data/" & $g_sAndroidGamePackage & "/shared_prefs/ >&2)") $iFilesPushed = UBound(Ls_l_FilesOnly(StringSplit($cmdOutput, @LF, $STR_NOCOUNT))) +$cmdOutput += AndroidAdbSendShellCommand("set result=$(ls -l " & $androidFolder & "/shared_prefs/ >&2)") If $iFilesPushed >= $iFiles And StringInStr($cmdOutput, "Permission denied") = 0 And StringInStr($cmdOutput, "No such file or directory") = 0 Then AndroidAdbSendShellCommand("set result=$(rm -r " & $androidFolder & " >&2)") Local $sPerm = Ls_l_PermissionsToNumber($aLs[$iSharedPrefs][0]) @@ -10841,6 +10932,7 @@ AndroidAdbSendShellCommand("set result=$(ls -l /data/data/" & $g_sAndroidGamePac SetLog("Pushed shared_prefs of profile " & $sProfile & " (" & $iFilesPushed & " files)") $g_PushedSharedPrefsProfile = $sProfile $g_PushedSharedPrefsProfile_Timer = __TimerInit() +_Sleep(3000) Else SetLog("Error pushing shared_prefs of profile " & $sProfile, $COLOR_ERROR) EndIf @@ -10889,18 +10981,26 @@ Local $NewVersion = "" Local $HelpLink = "Please visit MyBot Forum!" Switch $g_sAndroidEmulator Case "BlueStacks2" -$NewVersion = GetVersionNormalized("4.0.0.0") +$NewVersion = GetVersionNormalized("4.33.0.0") Case "MEmu" -$NewVersion = GetVersionNormalized("5.2.3.0") +$NewVersion = GetVersionNormalized("6.1.0.0") Case "Nox" -$NewVersion = GetVersionNormalized("6.2.1.1") +$NewVersion = GetVersionNormalized("6.3.0.0") Case Else -$NewVersion = GetVersionNormalized("1.1.0.0") +$NewVersion = GetVersionNormalized("99.0.0.0") EndSwitch If $Version > $NewVersion Then -Setlog("You are using an unsupported " & $g_sAndroidEmulator & " version (" & $g_sAndroidVersion & ")!", $COLOR_ERROR) -Setlog($HelpLink, $COLOR_INFO) +SetLog("You are using an unsupported " & $g_sAndroidEmulator & " version (" & $g_sAndroidVersion & ")!", $COLOR_ERROR) +SetLog($HelpLink, $COLOR_INFO) +EndIf +EndFunc +Func InvalidAdbShellOptions($cmdOutput, $source) +If $g_sAndroidAdbShellOptions And StringInStr($cmdOutput, ": not found") > 0 Then +SetDebugLog($source & ": Shell option '" & $g_sAndroidAdbShellOptions & "' not supported and now disabled") +$g_sAndroidAdbShellOptions = "" +Return True EndIf +Return False EndFunc Global $g_sNO_COC, $g_sUNKNOWN_COC Global $_g_asDISTRIBUTORS[24][4] @@ -11196,7 +11296,7 @@ Global $g_hLblVillageReportTemp = 0 Global $g_hlblKing = 0, $g_hPicKingGray = 0, $g_hPicKingBlue = 0, $g_hPicKingRed = 0, $g_hPicKingGreen = 0 Global $g_hlblQueen = 0, $g_hPicQueenGray = 0, $g_hPicQueenBlue = 0, $g_hPicQueenRed = 0, $g_hPicQueenGreen = 0 Global $g_hlblWarden = 0, $g_hPicWardenGray = 0, $g_hPicWardenBlue = 0, $g_hPicWardenRed = 0, $g_hPicWardenGreen = 0 -Global $g_hlblLab = 0, $g_hPicLabGray = 0, $g_hPicLabRed = 0, $g_hPicLabGreen = 0 +Global $g_hlblLab = 0, $g_hPicLabGray = 0, $g_hPicLabRed = 0, $g_hPicLabGreen = 0, $g_hLbLLabTime = 0 Func CreateBottomPanel() Local $sTxtTip = "" Local $y_bottom = 0 @@ -11317,6 +11417,7 @@ GUICtrlSetState(-1, $GUI_HIDE) $g_hPicLabRed = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnRedShield, $x + 53, $y, 16, 16 ) _GUICtrlSetTip(-1, $sTxtTip) GUICtrlSetState(-1, $GUI_HIDE) +$g_hLbLLabTime = GUICtrlCreateLabel("", $x, $y + 15, 50, 16, $SS_LEFT) Local $x = 295, $y = $y_bottom + 20 $g_hGrpVillage = GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Bottom", "GrpVillage", "Village"), $x - 0, $y - 20, 160, 85) $g_hLblResultGoldNow = GUICtrlCreateLabel("", $x + 10, $y + 2, 60, 15, $SS_RIGHT) @@ -11726,7 +11827,7 @@ Global $g_hLblRequestCChours[12] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_hLblRequestType, $g_hChkRequestType_Troops, $g_hChkRequestType_Spells, $g_hChkRequestType_Siege Global $g_hTxtRequestCountCCTroop, $g_hTxtRequestCountCCSpell, $g_hChkClanCastleSpell = 0 Global $g_ahCmbClanCastleTroop[3], $g_ahTxtClanCastleTroop[3] -Global $g_ahCmbClanCastleSpell[2], $g_ahTxtClanCastleSpell[2] +Global $g_ahCmbClanCastleSpell[3], $g_ahCmbClanCastleSiege[2] Global $g_hChkExtraAlphabets = 0, $g_hChkExtraChinese = 0, $g_hChkExtraKorean = 0, $g_hChkExtraPersian = 0 Global $g_ahChkDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeMachineCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Global $g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeMachineCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] @@ -11789,7 +11890,7 @@ Local $x = $xStart Local $y = $yStart $g_hGrpRequestCC = GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Group_01", "Clan Castle Troops"), $x - 20, $y - 20, $g_iSizeWGrpTab3, $g_iSizeHGrpTab3) $y += 10 -$x += 10 +$x += 5 _GUICtrlCreateIcon($g_sLibIconPath, $eIcnCCRequest, $x - 5, $y, 64, 64, $BS_ICON) $g_hChkRequestTroopsEnable = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestTroopsEnable", "Request Troops / Spells"), $x + 40 + 30, $y - 6) GUICtrlSetOnEvent(-1, "chkRequestCCHours") @@ -11803,13 +11904,14 @@ $g_hChkRequestType_Troops = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Info_01", "Send request when CC Troop is not full")) GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetOnEvent(-1, "chkRequestCountCC") -$g_hChkRequestType_Spells = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Spells", "Spells"), $x + 195, $y + 20) +$g_hChkRequestType_Spells = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Spells", "Spells"), $x + 240, $y + 20) _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkRequestType_Spells_Info_01", "Send request when CC Spell is not full")) GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetOnEvent(-1, "chkRequestCountCC") -$g_hChkRequestType_Siege = GUICtrlCreateCheckbox( GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC","ChkRequestType_Sieges", "Siege Machine"), $x + 250, $y + 20) +$g_hChkRequestType_Siege = GUICtrlCreateCheckbox( GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC","ChkRequestType_Sieges", "Siege Machine"), $x + 315, $y + 20) _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC","ChkRequestType_Sieges_Info_01", "Send request when CC Siege Machine is not received")) GUICtrlSetState(-1, $GUI_UNCHECKED) +GUICtrlSetOnEvent(-1, "chkRequestCountCC") $y += 25 GUICtrlCreateLabel(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblIfLessThan", "If less than "), $x + 70, $y + 23) $g_hTxtRequestCountCCTroop = GUICtrlCreateInput("0", $x + 140, $y + 20, 25, 16, BitOR($SS_RIGHT, $ES_NUMBER)) @@ -11820,40 +11922,44 @@ GUICtrlSetState(-1, $GUI_ENABLE) Else GUICtrlSetState(-1, $GUI_DISABLE) EndIf -$g_hTxtRequestCountCCSpell = GUICtrlCreateInput("0", $x + 195, $y + 20, 25, 16, BitOR($SS_RIGHT, $ES_NUMBER)) +$g_hTxtRequestCountCCSpell = GUICtrlCreateInput("0", $x + 240, $y + 20, 25, 16, BitOR($SS_RIGHT, $ES_NUMBER)) GUICtrlSetLimit(-1, 1) -_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_01", "Do not request when already received that many CC Spells") & @CRLF & GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_02", "Set to either ""0"" or ""2+"" when full CC Spell wanted")) +_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblIfLessThan_Info_03", "Do not request when already received that many CC Spells") & @CRLF & GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblIfLessThan_Info_04", "Set to either ""0"" or ""2+"" when full CC Spell wanted")) If GUICtrlRead($g_hChkRequestType_Spells) = $GUI_CHECKED Then GUICtrlSetState(-1, $GUI_ENABLE) Else GUICtrlSetState(-1, $GUI_DISABLE) EndIf $y += 45 +GUICtrlCreateLabel(GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "lblOnlyTake", "Only take"), $x + 70, $y + 3) Local $sCmbTroopList = GetTranslatedFileIni("MBR Global GUI Design Names Troops", "TxtListOfTroops", _ArrayToString($g_asTroopNames) & "|Any") For $i = 0 To 2 -$g_ahCmbClanCastleTroop[$i] = GUICtrlCreateCombo("", $x + 70, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) +$g_ahCmbClanCastleTroop[$i] = GUICtrlCreateCombo("", $x + 140, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) GUICtrlSetData(-1, $sCmbTroopList, "Any") GUICtrlSetOnEvent(-1, "CmbClanCastleTroop") -_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleTroop_Info_01", "Pick a troop type allow to stay in your Clan Castle")) -$g_ahTxtClanCastleTroop[$i] = GUICtrlCreateInput("0", $x + 140, $y + $i * 25, 25, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_RIGHT, $ES_NUMBER)) +_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_01", "Pick a troop type allowed to stay in your Clan Castle. \r\nTroops of other type shall be removed")) +$g_ahTxtClanCastleTroop[$i] = GUICtrlCreateInput("0", $x + 210, $y + $i * 25, 20, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_RIGHT, $ES_NUMBER)) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetLimit(-1, 2) -_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleTroop_Info_02", "Set the maximum quantity to stay.") & @CRLF & GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_03", "Set to ""0"" or ""40+"" means unlimit")) +_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_02", "Set the maximum quantity to stay. \r\nExcessive quantity shall be removed") & @CRLF & GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_03", "Set to ""0"" or ""40+"" means unlimited")) Next Local $sCmbSpellList = GetTranslatedFileIni("MBR Global GUI Design Names Spells", "TxtListOfSpells", _ArrayToString($g_asSpellNames) & "|Any") -For $i = 0 To 1 -$g_ahCmbClanCastleSpell[$i] = GUICtrlCreateCombo("", $x + 195, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) +For $i = 0 To 2 +$g_ahCmbClanCastleSpell[$i] = GUICtrlCreateCombo("", $x + 240, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) GUICtrlSetData(-1, $sCmbSpellList, "Any") GUICtrlSetOnEvent(-1, "CmbClanCastleSpell") -_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleSpell_Info_01", "Pick a spell type allow to stay in your Clan Castle")) -$g_ahTxtClanCastleSpell[$i] = GUICtrlCreateInput("0", $x + 265, $y + $i * 25, 25, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_RIGHT, $ES_NUMBER)) -GUICtrlSetState(-1, $GUI_DISABLE) -GUICtrlSetLimit(-1, 1) -_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "ChkWaitForClanCastleSpell_Info_02", "Set the maximum quantity to stay.") & @CRLF & GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "TxtRequestCountCCSpell_Info_03", "Set to ""0"" or ""2+"" means unlimit")) +_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_04", "Only keep this spell (1 unit) in Clan Castle. \r\nOther spells or excessive quantity shall be removed")) +Next +Local $sCmbSiegeList = GetTranslatedFileIni("MBR Global GUI Design Names Sieges", "TxtListOfSieges", _ArrayToString($g_asSiegeMachineNames) & "|Any") +For $i = 0 To 1 +$g_ahCmbClanCastleSiege[$i] = GUICtrlCreateCombo("", $x + 315, $y + $i * 25, 65, -1, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) +GUICtrlSetData(-1, $sCmbSiegeList, "Any") +_GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Village - Donate-CC", "Onlytake_Info_05", "Only keep this siege machine in Clan Castle. \r\nSiege machine of other types shall be removed")) Next $x += 70 $y += 90 GUICtrlCreateLabel(GetTranslatedFileIni("MBR Global GUI Design", "Only_during_hours", "Only during these hours of each day"), $x, $y, 300, 20, $BS_MULTILINE) +$x += 40 $y += 20 $g_hLblRequestCChour = GUICtrlCreateLabel(GetTranslatedFileIni("MBR Global GUI Design", "Hour", "Hour") & ":", $x, $y, -1, 15) Local $sTxtTip = GetTranslatedFileIni("MBR Global GUI Design", "Only_during_hours", -1) @@ -13142,6 +13248,10 @@ $g_ahChkDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] GUICtrlSetState(-1, $GUI_HIDE) _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtWallWreckers & " " & $sTxtDonateTipTroop) GUICtrlSetOnEvent(-1, "chkDonateTroop") +$g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) +GUICtrlSetState(-1, $GUI_HIDE) +_GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtWallWreckers & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) +GUICtrlSetOnEvent(-1, "chkDonateAllTroop") GUICtrlCreateLabel($sTxtKeywords & " " & $sTxtWallWreckers & ":" , $x - 5, $y + 5, -1, -1) GUICtrlSetState(-1, $GUI_HIDE) $g_ahTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = GUICtrlCreateEdit("", $x - 5, $y + 20, 205, 125, BitOR($ES_WANTRETURN, $ES_CENTER, $ES_AUTOVSCROLL)) @@ -13169,6 +13279,10 @@ $g_ahChkDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] GUICtrlSetState(-1, $GUI_HIDE) _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtBattleBlimps & " " & $sTxtDonateTipTroop) GUICtrlSetOnEvent(-1, "chkDonateTroop") +$g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) +GUICtrlSetState(-1, $GUI_HIDE) +_GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtBattleBlimps & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) +GUICtrlSetOnEvent(-1, "chkDonateAllTroop") GUICtrlCreateLabel($sTxtKeywords & " " & $sTxtBattleBlimps & ":" , $x - 5, $y + 5, -1, -1) GUICtrlSetState(-1, $GUI_HIDE) $g_ahTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeBattleBlimp] = GUICtrlCreateEdit("", $x - 5, $y + 20, 205, 125, BitOR($ES_WANTRETURN, $ES_CENTER, $ES_AUTOVSCROLL)) @@ -13196,6 +13310,10 @@ $g_ahChkDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer GUICtrlSetState(-1, $GUI_HIDE) _GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtStoneSlammers & " " & $sTxtDonateTipTroop) GUICtrlSetOnEvent(-1, "chkDonateTroop") +$g_ahChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = GUICtrlCreateCheckbox($sTxtDonateAll, $x + 285, $y + 30, -1, -1) +GUICtrlSetState(-1, $GUI_HIDE) +_GUICtrlSetTip(-1, $sTxtDonateTip & " " & $sTxtStoneSlammers & " " & $sTxtDonateTipAll & @CRLF & $sTxtIgnoreAll) +GUICtrlSetOnEvent(-1, "chkDonateAllTroop") GUICtrlCreateLabel($sTxtKeywords & " " & $sTxtStoneSlammers & ":" , $x - 5, $y + 5, -1, -1) GUICtrlSetState(-1, $GUI_HIDE) $g_ahTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeStoneSlammer] = GUICtrlCreateEdit("", $x - 5, $y + 20, 205, 125, BitOR($ES_WANTRETURN, $ES_CENTER, $ES_AUTOVSCROLL)) @@ -18432,11 +18550,11 @@ GUICtrlSetOnEvent(-1, "PresetSaveConf") GUICtrlCreateTabItem("") EndFunc Func LoadTranslatedDropOrderList() -Global $g_asDropOrderList = ["", "Barbarians", "Archers", "Giants", "Goblins", "Wall Breakers", "Balloons", "Wizards", "Healers", "Dragons", "Pekkas", "Baby Dragons", "Miners", "Electro Dragons", "Minions", "Hog Riders", "Valkyries", "Golems", "Witches", "Lava Hounds", "Bowlers", "Clan Castle", "Heroes"] +Global $g_asDropOrderList = ["", "Barbarians", "Archers", "Giants", "Goblins", "Wall Breakers", "Balloons", "Wizards", "Healers", "Dragons", "Pekkas", "Baby Dragons", "Miners", "Electro Dragons", "Minions", "Hog Riders", "Valkyries", "Golems", "Witches", "Lava Hounds", "Bowlers", "Ice Golems", "Clan Castle", "Heroes"] EndFunc Global $g_hChkCustomDropOrderEnable = 0 -Global $g_ahCmbDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -Global $g_ahImgDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_ahCmbDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +Global $g_ahImgDropOrder[$eDropOrderCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Global $g_hBtnDropOrderSet = 0, $g_ahImgDropOrderSet = 0 Global $g_hBtnRemoveDropOrder = 0 Func CreateAttackTab() @@ -18453,11 +18571,11 @@ CreateDropOrderGUI() GUICtrlCreateTabItem("") EndFunc Func CreateDropOrderGUI() -$g_hGUI_DropOrder = _GUICreate(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "GUI_DropOrder", "Attack Custom Dropping Order"), 322, 428, -1, -1, $WS_BORDER, $WS_EX_CONTROLPARENT) +$g_hGUI_DropOrder = _GUICreate(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "GUI_DropOrder", "Attack Custom Dropping Order"), 322, 438, -1, -1, $WS_BORDER, $WS_EX_CONTROLPARENT) SetDefaultDropOrderGroup(False) LoadTranslatedDropOrderList() Local $x = 25, $y = 25 -GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "Group_03", "Custom Dropping Order"), $x - 20, $y - 20, 308, 365) +GUICtrlCreateGroup(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "Group_03", "Custom Dropping Order"), $x - 20, $y - 20, 308, 375) $x += 10 $y += 20 $g_hChkCustomDropOrderEnable = GUICtrlCreateCheckbox(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "ChkCustomDropOrderEnable", "Enable Custom Dropping Order"), $x - 13, $y - 22, -1, -1) @@ -18471,7 +18589,7 @@ Next Local $g_hTxtDropOrder = GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "TxtDropOrder", "Enter sequence order for drop of troop #") $y += 5 For $p = 0 To $eDropOrderCount - 1 -If $p < 11 Then +If $p < 12 Then GUICtrlCreateLabel($p + 1 & ":", $x - 19, $y + 3, -1, 18) $g_ahCmbDropOrder[$p] = GUICtrlCreateCombo("", $x, $y, 94, 18, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) GUICtrlSetOnEvent(-1, "GUIDropOrder") @@ -18481,7 +18599,7 @@ GUICtrlSetState(-1, $GUI_DISABLE) $g_ahImgDropOrder[$p] = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnOptions, $x + 96, $y + 1, 18, 18) $y += 25 Else -If $p = 11 Then +If $p = 12 Then $x += 128 $y = 49 EndIf @@ -18496,7 +18614,7 @@ $y += 25 EndIf Next $x = 25 -$y = 335 +$y = 350 $g_hBtnDropOrderSet = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnDropOrderSet", "Apply New Order"), $x, $y, 100, 25) GUICtrlSetState(-1, BitOR($GUI_UNCHECKED, $GUI_ENABLE)) _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnDropOrderSet_Info_01", "Push button when finished selecting custom troops dropping order") & @CRLF & GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnDropOrderSet_Info_02", "When not all troop slots are filled, will use random troop order in empty slots!")) @@ -18508,7 +18626,7 @@ GUICtrlSetState(-1, BitOR($GUI_UNCHECKED, $GUI_DISABLE)) _GUICtrlSetTip(-1, GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnRemoveDropOrder_Info_01", "Push button to remove all troops from list and start over")) GUICtrlSetOnEvent(-1, "BtnRemoveDropOrder") GUICtrlCreateGroup("", -99, -99, 1, 1) -Local $g_hBtnClose = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnClose", "Close"), 229, 373, 85, 25) +Local $g_hBtnClose = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnClose", "Close"), 229, 383, 85, 25) GUICtrlSetOnEvent(-1, "CloseCustomDropOrder") EndFunc Global $g_hGUI_BOT = 0, $g_hGUI_LOG_SA = 0 @@ -18810,7 +18928,7 @@ Global $g_hChkDebugSetlog = 0, $g_hChkDebugAndroid = 0, $g_hChkDebugClick = 0, $ Global $g_hChkdebugAttackCSV = 0, $g_hChkMakeIMGCSV = 0, $g_hChkDebugDisableZoomout = 0, $g_hChkDebugDisableVillageCentering = 0, $g_hChkDebugDeadbaseImage = 0, $g_hChkDebugFunc = 0 Global $g_hBtnTestTrain = 0, $g_hBtnTestDonateCC = 0, $g_hBtnTestRequestCC = 0, $g_hBtnTestSendText = 0, $g_hBtnTestAttackBar = 0, $g_hBtnTestClickDrag = 0, $g_hBtnTestImage = 0 Global $g_hBtnTestVillageSize = 0, $g_hBtnTestDeadBase = 0, $g_hBtnTestTHimgloc = 0, $g_hBtnTestTrainsimgloc = 0, $g_hBtnTestQuickTrainsimgloc = 0, $g_hTxtTestFindButton = 0 -Global $g_hBtnTestFindButton = 0, $g_hBtnTestDeadBaseFolder = 0, $g_hBtnTestCleanYard = 0, $g_hBtnTestAttackCSV = 0, $g_hBtnTestBuildingLocation = 0 +Global $g_hBtnTestFindButton = 0, $g_hBtnTestDeadBaseFolder = 0, $g_hBtnTestCleanYard = 0, $g_hBtnTestAttackCSV = 0, $g_hBtnTestBuildingLocation = 0, $g_hBtnTestArmyWindow = 0 Global $g_hBtnTestConfigSave = 0, $g_hBtnTestConfigApply = 0, $g_hBtnTestConfigRead = 0, $g_hBtnTestOcrMemory = 0, $g_hBtnTestWeakBase = 0, $g_hBtnTestClickAway = 0, $g_hBtnTestAutoUpgrade = 0 Global $g_hBtnTestUpgradeWindow = 0, $g_hBtnTestSmartWait = 0, $g_hBtnConsoleWindow = 0 Func CreateBotDebug() @@ -18919,7 +19037,7 @@ $y -= $yNext $g_hBtnTestDeadBaseFolder = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestDeadBaseFolder", "Test Dead Base Folder"), $x, $y, 140, 25) $g_hBtnTestCleanYard = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestCleanYard", "Test Clean Yard"), $x - 145, $y, 140, 25) $y -= $yNext -$g_hBtnTestAttackCSV = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestAttackCSV", "Army Window"), $x, $y, 140, 25) +$g_hBtnTestAttackCSV = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestAttackCSV", "Test Attack CSV"), $x, $y, 140, 25) $g_hBtnTestBuildingLocation = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestBuildingLocation", "Find Building"), $x - 145, $y, 140, 25) $y -= $yNext $g_hBtnTestConfigSave = GUICtrlCreateButton("Config Save", $x + 20, $y, 120, 25) @@ -18940,6 +19058,8 @@ $g_hBtnTestUpgradeWindow = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Des $y -= $yNext $g_hBtnConsoleWindow = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "ConsoleWindow", "Show/hide Console"), $x + 20, $y, 120, 25) $y -= $yNext +$g_hBtnTestArmyWindow = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Bot - Debug", "BtnTestArmyWindow", "Army Window"), $x + 20, $y, 120, 25) +$y -= $yNext GUICtrlCreateGroup("", -99, -99, 1, 1) EndFunc Global $g_hCmbProfile = 0, $g_hTxtVillageName = 0, $g_hBtnAddProfile = 0, $g_hBtnConfirmAddProfile = 0, $g_hBtnConfirmRenameProfile = 0, $g_hChkOnlySCIDAccounts = 0, $g_hCmbWhatSCIDAccount2Use = 0 , $g_hBtnDeleteProfile = 0, $g_hBtnCancelProfileChange = 0, $g_hBtnRenameProfile = 0, $g_hBtnPullSharedPrefs = 0, $g_hBtnPushSharedPrefs = 0 , $g_hBtnSaveprofile = 0 @@ -19133,6 +19253,7 @@ Global $g_ahLblHourlyStatsElixirAcc[8], $g_ahLblResultAttacked[8], $g_ahPicResul Global $g_ahLblHourlyStatsDarkAcc[8], $g_ahLblResultSkipped[8], $g_ahPicResultSkipped[8] Global $g_ahPicArrowLeft[8], $g_ahPicArrowRight[8] Global $g_ahLblTroopTime[8], $g_ahPicTroopTime[8] +Global $g_ahLblLabTime[8], $g_ahPicLabTime[8] Func CreateBotStats() GUISwitch($g_hGUI_STATS) $g_hGUI_STATS_TAB = GUICtrlCreateTab(0, 0, $g_iSizeWGrpTab2, $g_iSizeHGrpTab2, BitOR($TCS_MULTILINE, $TCS_RIGHTJUSTIFY)) @@ -20422,6 +20543,8 @@ $g_ahLblResultDENowAcc[$i] = GUICtrlCreateLabel("", $x + $i_X * $delX2, $y + $de $g_ahPicResultDENowAcc[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnDark, $x + 75 + $i_X * $delX2, $y + $delY * 3 + $i_Y * $delY2, 16, 16) $g_ahLblResultGemNowAcc[$i] = GUICtrlCreateLabel("", $x + $delX + $i_X * $delX2, $y + $delY * 3 + $i_Y * $delY2, 55, 17, $SS_RIGHT) $g_ahPicResultGemNowAcc[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnGem, $x + 60 + $delX + $i_X * $delX2, $y + $delY * 3 + $i_Y * $delY2, 16, 14) +$g_ahLblLabTime[$i] = GUICtrlCreateLabel("", $x + $i_X * $delX2, $y + $delY * 4 + $i_Y * $delY2, 70, 17, $SS_RIGHT) +$g_ahPicLabTime[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnLaboratory, $x + 75 + $i_X * $delX2, $y + $delY * 4 + $i_Y * $delY2, 15, 14) $g_ahPicArrowLeft[$i] = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnArrowLeft, $x - 20 + $i_X * $delX2, $y + $delY * 2 + $i_Y * $delY2, 16, 16) Local $sTxtTip = GetTranslatedFileIni("MBR GUI Design Bottom", "GrpVillage_Info_01", "Switch between village info and stats") _GUICtrlSetTip(-1, $sTxtTip) @@ -20440,7 +20563,7 @@ $g_ahLblResultSkipped[$i] = GUICtrlCreateLabel("", $x + $delX + $i_X * $delX2, $ $g_ahPicResultSkipped[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnBldgX, $x + 60 + $delX + $i_X * $delX2, $y + $delY * 3 + $i_Y * $delY2, 16, 14) $g_ahLblTroopTime[$i] = GUICtrlCreateLabel("", $x + $delX + $i_X * $delX2, $y + $delY * 4 + $i_Y * $delY2, 55, 17, $SS_RIGHT) $g_ahPicTroopTime[$i] = GUICtrlCreateIcon($g_sLibIconPath, $eIcnTrain, $x + 60 + $delX + $i_X * $delX2, $y + $delY * 4 + $i_Y * $delY2, 15, 14) -$g_ahGrpDefaultAcc[$i] = $g_ahGrpVillageAcc[$i] & "#" & $g_ahPicArrowLeft[$i] & "#" & $g_ahPicArrowRight[$i] & "#" & $g_ahPicResultGoldNowAcc[$i] & "#" & $g_ahPicResultElixirNowAcc[$i] & "#" & $g_ahPicResultDENowAcc[$i] & "#" & $g_ahLblTroopTime[$i] & "#" & $g_ahPicTroopTime[$i] +$g_ahGrpDefaultAcc[$i] = $g_ahGrpVillageAcc[$i] & "#" & $g_ahPicArrowLeft[$i] & "#" & $g_ahPicArrowRight[$i] & "#" & $g_ahPicResultGoldNowAcc[$i] & "#" & $g_ahPicResultElixirNowAcc[$i] & "#" & $g_ahPicResultDENowAcc[$i] & "#" & $g_ahLblTroopTime[$i] & "#" & $g_ahPicTroopTime[$i] & "#" & $g_ahLblLabTime[$i] & "#" & $g_ahPicLabTime[$i] $g_ahGrpReportAcc[$i] = $g_ahLblResultGoldNowAcc[$i] & "#" & $g_ahLblResultTrophyNowAcc[$i] & "#" & $g_ahPicResultTrophyNowAcc[$i] & "#" & $g_ahLblResultElixirNowAcc[$i] & "#" & $g_ahLblResultBuilderNowAcc[$i] & "#" & $g_ahPicResultBuilderNowAcc[$i] & "#" & $g_ahLblResultDENowAcc[$i] & "#" & $g_ahLblResultGemNowAcc[$i] & "#" & $g_ahPicResultGemNowAcc[$i] $g_ahGrpStatsAcc[$i] = $g_ahLblHourlyStatsGoldAcc[$i] & "#" & $g_ahLblResultRuntimeNowAcc[$i] & "#" & $g_ahPicResultRuntimeNowAcc[$i] & "#" & $g_ahLblHourlyStatsElixirAcc[$i] & "#" & $g_ahLblResultAttacked[$i] & "#" & $g_ahPicResultAttacked[$i] & "#" & $g_ahLblHourlyStatsDarkAcc[$i] & "#" & $g_ahLblResultSkipped[$i] & "#" & $g_ahPicResultSkipped[$i] GUICtrlCreateGroup("", -99, -99, 1, 1) @@ -20503,15 +20626,15 @@ $sText = "Active developers: " GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) -$sText = "Fliegerfaust, MMHK and TripleM" +$sText = "Cosote, Demen, Fliegerfaust and TripleM" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") $y += 35 -$sText = "Special participation at v7.6: " +$sText = "Special participation at v7.6.6: " GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) -$sText = "Demen, Hecki, ProMac and ViperZ" +$sText = "ViperZ" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") $y += 35 @@ -20519,7 +20642,7 @@ $sText = "Inactive developers: " GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) -$sText = "Boju, Codeslinger69, Cosote, Ezeck0001, Hervidero, IceCube, Kaganus, MR.ViPeR, Sardo, TheRevenor, Trlopes" +$sText = "Hervidero, Kaganus, Sardo, Trlopes" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") $y += 50 @@ -20527,7 +20650,7 @@ $sText = "Retired developers: " GUICtrlCreateLabel($sText, $x - 5, $y, 410, 20, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_NAVY) -$sText = "Antidote, AtoZ, Barracoda, Didipe, Dinobot, DixonHill, DkEd, GkevinOD, HungLe, KnowJack, LunaEclipse, MonkeyHunter, ProMac, Safar46, Saviart, TheMaster1st, Zengzeng, and others" +$sText = "Antidote, AtoZ, Barracoda, Boju, Codeslinger69, Didipe, Dinobot, DixonHill, DkEd, GkevinOD, HungLe, KnowJack, LunaEclipse, MonkeyHunter, ProMac, Safar46, Saviart, TheMaster1st, Zengzeng, and others" GUICtrlCreateLabel($sText, $x + 5, $y + 15, 410, 50, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT), 0) GUICtrlSetFont(-1, 9, $FW_MEDIUM, Default, "Arial") $y += 71 @@ -20544,7 +20667,7 @@ GUICtrlSetCursor(-1, 0) GUICtrlSetFont(-1, 9.5, $FW_BOLD, Default, "Arial") GUICtrlSetColor(-1, $COLOR_INFO) $y = 380 -$sText = "By running this program, the user accepts all responsibility that arises from the use of this software." & @CRLF & "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even " & @CRLF & "the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " & @CRLF & "Public License for more details. The license can be found in the main code folder location." & @CRLF & "Copyright (C) 2015-2018 MyBot.run" +$sText = "By running this program, the user accepts all responsibility that arises from the use of this software." & @CRLF & "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even " & @CRLF & "the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " & @CRLF & "Public License for more details. The license can be found in the main code folder location." & @CRLF & "Copyright (C) 2015-2019 MyBot.run" GUICtrlCreateLabel($sText, $x + 1, $y, 415, 56, BitOR($WS_VISIBLE, $ES_AUTOVSCROLL, $SS_LEFT, $ES_CENTER), 0) GUICtrlSetColor(-1, 0x000053) GUICtrlSetFont(-1, 6.5, $FW_BOLD, Default, "Arial", $CLEARTYPE_QUALITY) @@ -21178,7 +21301,7 @@ SetLogCentered(" Warning Debug Mode Enabled! ", "-", $COLOR_ERROR) EndIf $g_bFirstStart = True $g_bInitiateSwitchAcc = True -$g_iFirstTimeLab = 0 +$g_sLabUpgradeTime = "" If Not $g_bSearchMode Then $g_hTimerSinceStarted = __TimerInit() EndIf @@ -21655,7 +21778,7 @@ Func lblTotalCountTroop2() Local $TotalTotalTimeTroop = 0 Local $NbrOfBarrack = 4 Local $NbrOfDarkBarrack = 2 -For $i = $eTroopBarbarian To $eTroopIceGolem +For $i = $eTroopBarbarian To $eTroopElectroDragon Local $NbrOfTroop = GUICtrlRead($g_ahTxtTrainArmyTroopCount[$i]) Local $LevOfTroop = $g_aiTrainArmyTroopLevel[$i] If $NbrOfTroop > 0 And $LevOfTroop > 0 Then @@ -22509,20 +22632,27 @@ Next EndIf If GUICtrlRead($g_hChkRequestType_Spells) = $GUI_CHECKED Then GUICtrlSetState($g_hTxtRequestCountCCSpell, $GUI_ENABLE) -For $i = $g_ahCmbClanCastleSpell[0] To $g_ahCmbClanCastleSpell[1] -GUICtrlSetState($i, $GUI_ENABLE) -Next +GUICtrlSetState($g_ahCmbClanCastleSpell[0], $GUI_ENABLE) +GUICtrlSetState($g_ahCmbClanCastleSpell[1], $GUI_ENABLE) +GUICtrlSetState($g_ahCmbClanCastleSpell[2], $GUI_ENABLE) CmbClanCastleSpell() Else GUICtrlSetState($g_hTxtRequestCountCCSpell, $GUI_DISABLE) -For $i = $g_ahCmbClanCastleSpell[0] To $g_ahTxtClanCastleSpell[1] -GUICtrlSetState($i, $GUI_DISABLE) -Next +GUICtrlSetState($g_ahCmbClanCastleSpell[0], $GUI_DISABLE) +GUICtrlSetState($g_ahCmbClanCastleSpell[1], $GUI_DISABLE) +GUICtrlSetState($g_ahCmbClanCastleSpell[2], $GUI_DISABLE) +EndIf +If GUICtrlRead($g_hChkRequestType_Siege) = $GUI_CHECKED Then +GUICtrlSetState($g_ahCmbClanCastleSiege[0], $GUI_ENABLE) +GUICtrlSetState($g_ahCmbClanCastleSiege[1], $GUI_ENABLE) +Else +GUICtrlSetState($g_ahCmbClanCastleSiege[0], $GUI_DISABLE) +GUICtrlSetState($g_ahCmbClanCastleSiege[1], $GUI_DISABLE) EndIf EndFunc Func CmbClanCastleTroop() For $i = 0 To UBound($g_ahCmbClanCastleTroop) - 1 -If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleTroop[$i]) <= $eTroopBowler Then +If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleTroop[$i]) < $eTroopCount Then GUICtrlSetState($g_ahTxtClanCastleTroop[$i], $GUI_ENABLE) Else GUICtrlSetState($g_ahTxtClanCastleTroop[$i], $GUI_DISABLE) @@ -22531,12 +22661,7 @@ Next EndFunc Func CmbClanCastleSpell() For $i = 0 To UBound($g_ahCmbClanCastleSpell) - 1 -If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) = $eCSpell - $eLSpell Then _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSpell[$i], $eBtSpell - $eLSpell + 1) -If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) <= $eBtSpell - $eLSpell Then -GUICtrlSetState($g_ahTxtClanCastleSpell[$i], $GUI_ENABLE) -Else -GUICtrlSetState($g_ahTxtClanCastleSpell[$i], $GUI_DISABLE) -EndIf +If _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) = $eCSpell - $eLSpell Then _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSpell[$i], $eSpellCount) Next EndFunc Func chkRequestCCHoursE1() @@ -23726,7 +23851,7 @@ Local $bWasRedraw = SetRedrawBotWindow(False, Default, Default, Default, "BtnDro Local $bReady = True Local $sNewDropList = "" Local $bMissingDrop = False -Local $aiDropOrder[$eDropOrderCount] = [ $eTroopBarbarianS, $eTroopArcherS, $eTroopGiantS, $eTroopGoblinS, $eTroopWallBreakerS, $eTroopBalloonS, $eTroopWizardS, $eTroopHealerS, $eTroopDragonS, $eTroopPekkaS, $eTroopBabyDragonS, $eTroopMinerS, $eTroopElectroDragonS, $eTroopMinionS, $eTroopHogRiderS, $eTroopValkyrieS, $eTroopGolemS, $eTroopWitchS, $eTroopLavaHoundS, $eTroopBowlerS, $eHeroeS, $eCCS] +Local $aiDropOrder[$eDropOrderCount] = [ $eTroopBarbarianS, $eTroopArcherS, $eTroopGiantS, $eTroopGoblinS, $eTroopWallBreakerS, $eTroopBalloonS, $eTroopWizardS, $eTroopHealerS, $eTroopDragonS, $eTroopPekkaS, $eTroopBabyDragonS, $eTroopMinerS, $eTroopElectroDragonS, $eTroopMinionS, $eTroopHogRiderS, $eTroopValkyrieS, $eTroopGolemS, $eTroopWitchS, $eTroopLavaHoundS, $eTroopBowlerS, $eTroopIceGolemS, $eHeroeS, $eCCS] For $i = 0 To UBound($g_ahCmbDropOrder) - 1 For $j = 0 To UBound($g_ahCmbDropOrder) - 1 If $i = $j Then ContinueLoop @@ -25146,7 +25271,7 @@ For $i = 0 To 12 $g_iChkUpgradesToIgnore[$i] = GUICtrlRead($g_hChkUpgradesToIgnore[$i]) = $GUI_CHECKED ? 1 : 0 Next EndFunc -Global $g_aiDonIcons[21] = [$eIcnDonBarbarian, $eIcnDonArcher, $eIcnDonGiant, $eIcnDonGoblin, $eIcnDonWallBreaker, $eIcnDonBalloon, $eIcnDonWizard, $eIcnDonHealer, $eIcnDonDragon, $eIcnDonPekka, $eIcnDonBabyDragon, $eIcnDonMiner, $eIcnElectroDragon, $eIcnDonMinion, $eIcnDonHogRider, $eIcnDonValkyrie, $eIcnDonGolem, $eIcnDonWitch, $eIcnDonLavaHound, $eIcnDonBowler, $eIcnDonBlank] +Global $g_aiDonIcons[$eTroopCount + 1] = [$eIcnDonBarbarian, $eIcnDonArcher, $eIcnDonGiant, $eIcnDonGoblin, $eIcnDonWallBreaker, $eIcnDonBalloon, $eIcnDonWizard, $eIcnDonHealer, $eIcnDonDragon, $eIcnDonPekka, $eIcnDonBabyDragon, $eIcnDonMiner, $eIcnElectroDragon, $eIcnDonMinion, $eIcnDonHogRider, $eIcnDonValkyrie, $eIcnDonGolem, $eIcnDonWitch, $eIcnDonLavaHound, $eIcnDonBowler, $eIcnIceGolem, $eIcnDonBlank] Func btnDonateTroop() For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount If @GUI_CtrlId = $g_ahBtnDonateTroop[$i] Then @@ -25202,18 +25327,22 @@ Else GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $GUI_BKCOLOR_TRANSPARENT) If $i <= $eTroopCount - 1 + $g_iCustomDonateConfigs And GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_DISABLE) EndIf +SetStateTxtGeneralBlacklist() EndIf Next EndFunc Func chkDonateAllTroop() -For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs +For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount If @GUI_CtrlId = $g_ahChkDonateAllTroop[$i] Then +If $i <= $eTroopCount - 1 + $g_iCustomDonateConfigs Then If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_ENABLE) ElseIf GUICtrlRead($g_ahChkDonateTroop[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueTroopOnly, $GUI_DISABLE) EndIf +EndIf _DonateAllControls($i, GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED ? True : False) +SetStateTxtGeneralBlacklist() ExitLoop EndIf Next @@ -25228,6 +25357,7 @@ Else GUICtrlSetBkColor($g_ahLblDonateSpell[$i], $GUI_BKCOLOR_TRANSPARENT) If GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueSpellOnly, $GUI_DISABLE) EndIf +SetStateTxtGeneralBlacklist() EndIf Next EndFunc @@ -25240,6 +25370,7 @@ Else If GUICtrlRead($g_ahChkDonateSpell[$i]) = $GUI_UNCHECKED Then GUICtrlSetState($g_hChkDonateQueueSpellOnly, $GUI_DISABLE) EndIf _DonateAllControlsSpell($i, GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_CHECKED ? True : False) +SetStateTxtGeneralBlacklist() ExitLoop EndIf Next @@ -25294,23 +25425,33 @@ GUICtrlSetState($i, $GUI_SHOW) Next EndFunc Func _DonateControls($iTroopIndex) -Local $bWasRedraw = SetRedrawBotWindow(False, Default, Default, Default, "_DonateControls") -For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount +Local $iFirstTroop = 0, $iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount +If $iTroopIndex <= $eTroopCount - 1 + $g_iCustomDonateConfigs Then +$iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs +Else +$iFirstTroop = $eTroopCount + $g_iCustomDonateConfigs +EndIf +For $i = $iFirstTroop To $iLastTroop If $i = $iTroopIndex Then GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $COLOR_ORANGE) Else If GUICtrlGetBkColor($g_ahLblDonateTroop[$i]) = $COLOR_NAVY Then GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $GUI_BKCOLOR_TRANSPARENT) EndIf -If $iTroopIndex < $eTroopCount + $g_iCustomDonateConfigs Then GUICtrlSetState($g_ahChkDonateAllTroop[$i], $GUI_UNCHECKED) +If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then GUICtrlSetState($g_ahChkDonateAllTroop[$i], $GUI_UNCHECKED) If BitAND(GUICtrlGetState($g_ahTxtDonateTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateTroop[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistTroop[$i], $GUI_ENABLE) Next -SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateControls") EndFunc Func _DonateAllControls($iTroopIndex, $Set) Local $bWasRedraw = SetRedrawBotWindow(False, Default, Default, Default, "_DonateAllControls") +Local $iFirstTroop = 0, $iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount +If $iTroopIndex <= $eTroopCount - 1 + $g_iCustomDonateConfigs Then +$iLastTroop = $eTroopCount - 1 + $g_iCustomDonateConfigs +Else +$iFirstTroop = $eTroopCount + $g_iCustomDonateConfigs +EndIf If $Set = True Then -For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs +For $i = $iFirstTroop To $iLastTroop GUICtrlSetBkColor($g_ahLblDonateTroop[$i], $i = $iTroopIndex ? $COLOR_NAVY : $GUI_BKCOLOR_TRANSPARENT) If $i <> $iTroopIndex Then GUICtrlSetState($g_ahChkDonateAllTroop[$i], $GUI_UNCHECKED) @@ -25319,14 +25460,12 @@ GUICtrlSetState($g_ahChkDonateTroop[$i], $GUI_UNCHECKED) If BitAND(GUICtrlGetState($g_ahTxtDonateTroop[$i]), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_ahTxtDonateTroop[$i], $GUI_DISABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistTroop[$i]), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_ahTxtBlacklistTroop[$i], $GUI_DISABLE) Next -If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_DISABLE) Else GUICtrlSetBkColor($g_ahLblDonateTroop[$iTroopIndex], $GUI_BKCOLOR_TRANSPARENT) -For $i = 0 To $eTroopCount - 1 +For $i = $iFirstTroop To $iLastTroop If BitAND(GUICtrlGetState($g_ahTxtDonateTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateTroop[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistTroop[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistTroop[$i], $GUI_ENABLE) Next -If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_ENABLE) EndIf SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateAllControls") EndFunc @@ -25337,7 +25476,7 @@ GUICtrlSetBkColor($g_ahLblDonateSpell[$i], $COLOR_ORANGE) Else If GUICtrlGetBkColor($g_ahLblDonateSpell[$i]) = $COLOR_NAVY Then GUICtrlSetBkColor($g_ahLblDonateSpell[$i], $GUI_BKCOLOR_TRANSPARENT) EndIf -GUICtrlSetState($g_ahChkDonateAllSpell[$i], $GUI_UNCHECKED) +If GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_CHECKED Then GUICtrlSetState($g_ahChkDonateAllSpell[$i], $GUI_UNCHECKED) If BitAND(GUICtrlGetState($g_ahTxtDonateSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateSpell[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistSpell[$i], $GUI_ENABLE) Next @@ -25356,17 +25495,31 @@ GUICtrlSetState($g_ahChkDonateSpell[$i], $GUI_UNCHECKED) If BitAND(GUICtrlGetState($g_ahTxtDonateSpell[$i]), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_ahTxtDonateSpell[$i], $GUI_DISABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistSpell[$i]), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_ahTxtBlacklistSpell[$i], $GUI_DISABLE) Next -If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_DISABLE) Else GUICtrlSetBkColor($g_ahLblDonateSpell[$iSpellIndex], $GUI_BKCOLOR_TRANSPARENT) For $i = 0 To $eSpellCount - 1 If BitAND(GUICtrlGetState($g_ahTxtDonateSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtDonateSpell[$i], $GUI_ENABLE) If BitAND(GUICtrlGetState($g_ahTxtBlacklistSpell[$i]), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_ahTxtBlacklistSpell[$i], $GUI_ENABLE) Next -If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_ENABLE) EndIf SetRedrawBotWindowControls($bWasRedraw, $g_hGUI_DONATE_TAB, "_DonateAllControlsSpell") EndFunc +Func SetStateTxtGeneralBlacklist() +Local $bDonateToSpecificKeyWord = False, $bDonateToAll = False +For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount +If $bDonateToSpecificKeyWord Then ExitLoop +If GUICtrlRead($g_ahChkDonateTroop[$i]) = $GUI_CHECKED Then $bDonateToSpecificKeyWord = True +If GUICtrlRead($g_ahChkDonateAllTroop[$i]) = $GUI_CHECKED Then $bDonateToAll = True +If $i >= $eSpellCount - 1 Then ContinueLoop +If GUICtrlRead($g_ahChkDonateSpell[$i]) = $GUI_CHECKED Then $bDonateToSpecificKeyWord = True +If GUICtrlRead($g_ahChkDonateAllSpell[$i]) = $GUI_CHECKED Then $bDonateToAll = True +Next +If $bDonateToSpecificKeyWord Or Not $bDonateToAll Then +If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_ENABLE) +ElseIf $bDonateToAll Then +If BitAND(GUICtrlGetState($g_hTxtGeneralBlacklist), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($g_hTxtGeneralBlacklist, $GUI_DISABLE) +EndIf +EndFunc Func btnFilterDonationsCC() SetLog("open folder " & $g_sProfileDonateCapturePath, $COLOR_AQUA) ShellExecute("explorer", $g_sProfileDonateCapturePath) @@ -25763,36 +25916,18 @@ $g_bDebugMakeIMGCSV =(GUICtrlRead($g_hChkMakeIMGCSV) = $GUI_CHECKED) SetDebugLog("MakeIMGCSV " &($g_bDebugMakeIMGCSV ? "enabled" : "disabled")) EndFunc Func btnTestDonateCC() -Local $currentOCR = $g_bDebugOcr Local $currentRunState = $g_bRunState Local $currentSetlog = $g_bDebugSetlog _GUICtrlTab_ClickTab($g_hTabMain, 0) -$g_bDebugOcr = True $g_bRunState = True -$g_bDebugSetlog = True -ForceCaptureRegion() -DebugImageSave("donateCC_") SetLog(_PadStringCenter(" Test DonateCC begin (" & $g_sBotVersion & ")", 54, "="), $COLOR_INFO) -$g_iDonationWindowY = 0 -Local $aDonWinOffColors[3][3] = [[0xFFFFFF, 0, 1], [0xFFFFFF, 0, 31], [0xABABA8, 0, 32]] -Local $aDonationWindow = _MultiPixelSearch(409, 0, 410, $g_iDEFAULT_HEIGHT, 1, 1, Hex(0xFFFFFF, 6), $aDonWinOffColors, 10) -If IsArray($aDonationWindow) Then -$g_iDonationWindowY = $aDonationWindow[1] -_Sleep(250) -SetLog("$DonationWindowY: " & $g_iDonationWindowY, $COLOR_DEBUG) -Else -SetLog("Could not find the Donate Window :(", $COLOR_ERROR) -Return False -EndIf -SetLog("Detecting Troops...") -DetectSlotTroop($eIceG) -SetLog("Detecting Sieges...") -DetectSlotSiege($eSiegeStoneSlammer) -SetLog("Detecting Spells...") -DetectSlotSpell($eBtSpell) +PrepareDonateCC() +$g_iCurrentSpells = 11 +$g_aiCurrentSiegeMachines[$eSiegeWallWrecker] = 1 +$g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] = 1 +$g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] = 1 +DonateCC() SetLog(_PadStringCenter(" Test DonateCC end ", 54, "="), $COLOR_INFO) -ShellExecute($g_sProfileTempDebugPath & "donateCC_") -$g_bDebugOcr = $currentOCR $g_bRunState = $currentRunState $g_bDebugSetlog = $currentSetlog EndFunc @@ -25825,13 +25960,11 @@ Local $sImageFile = BeginImageTest() If $sImageFile = False Then $sImageFile = "Live Screenshot" EndIf SetLog(_PadStringCenter(" Begin AttackBar Detection", 54, "="), $COlOR_INFO) -Local $aAttackBar = StringSplit(AttackBarCheck(False, $DB, True), "|", $STR_NOCOUNT) -Local $aTroop -If IsArray($aAttackBar) And UBound($aAttackBar, 1) >= 1 Then -SetLog("Found " & UBound($aAttackBar, 1) & " Slots", $COlOR_SUCCESS) -For $i = 0 To UBound($aAttackBar, 1) - 1 -$aTroop = StringSplit($aAttackBar[$i], "#", $STR_NOCOUNT) -If IsArray($aTroop) And UBound($aTroop, 1) = 4 Then SetLog("- Slot " & $aTroop[1] & ": " & $aTroop[2] & " " & GetTroopName($aTroop[0], $aTroop[2]), $COLOR_SUCCESS) +Local $avAttackBar = AttackBarCheck(False, $DB, True) +If IsArray($avAttackBar) And UBound($avAttackBar, 1) >= 1 Then +SetLog("Found " & UBound($avAttackBar, 1) & " Slots", $COlOR_SUCCESS) +For $i = 0 To UBound($avAttackBar, 1) - 1 +SetLog("- Slot " & $avAttackBar[$i][1] & ": " & $avAttackBar[$i][2] & " " & GetTroopName($avAttackBar[$i][0], $avAttackBar[$i][2]) & " (X: " & $avAttackBar[$i][3] & "|Y: " & $avAttackBar[$i][4] & "|OCR X: " & $avAttackBar[$i][5] & "|OCR Y: " & $avAttackBar[$i][6] & ")", $COLOR_SUCCESS) Next EndIf SetLog(_PadStringCenter(" End AttackBar Detection ", 54, "="), $COlOR_INFO) @@ -25955,6 +26088,42 @@ Local $oldFill = 'checkDeadBaseSuperNew(False, "' & @ScriptDir & "\imgxml\deadba Local $newFill = 'checkDeadBaseSuperNew(False, "' & @ScriptDir & "\imgxml\deadbase\elix\fill\new\" & '")' checkDeadBaseFolder($directory, $oldFill, $newFill) EndFunc +Func btnTestAttackCSV() +BeginImageTest() +Local $currentRunState = $g_bRunState +Local $currentDebugAttackCSV = $g_bDebugAttackCSV +Local $currentMakeIMGCSV = $g_bDebugMakeIMGCSV +Local $currentiMatchMode = $g_iMatchMode +Local $currentdebugsetlog = $g_bDebugSetlog +Local $currentDebugBuildingPos = $g_bDebugBuildingPos +$g_bRunState = True +$g_bDebugAttackCSV = True +$g_bDebugMakeIMGCSV = True +$g_bDebugSetlog = True +$g_bDebugBuildingPos = True +$g_iMatchMode = $DB +setVillageOffset(0, 0, 1) +ConvertInternalExternArea() +If CheckZoomOut("btnTestAttackCSV", True, False) = False Then +SetLog("CheckZoomOut failed", $COLOR_INFO) +EndIf +ResetTHsearch() +SetLog("Testing FindTownhall()", $COLOR_INFO) +SetLog("FindTownhall() = " & FindTownhall(True), $COLOR_INFO) +SetLog("$g_sImglocRedline = " & $g_sImglocRedline, $COLOR_INFO) +SetLog("Testing PrepareAttack()", $COLOR_INFO) +PrepareAttack($g_iMatchMode) +SetLog("Testing Algorithm_AttackCSV()", $COLOR_INFO) +Algorithm_AttackCSV(True, False) +SetLog("Testing Algorithm_AttackCSV() DONE", $COLOR_INFO) +EndImageTest() +$g_bRunState = $currentRunState +$g_bDebugAttackCSV = $currentDebugAttackCSV +$g_bDebugMakeIMGCSV = $currentMakeIMGCSV +$g_iMatchMode = $currentiMatchMode +$g_bDebugSetlog = $currentdebugsetlog +$g_bDebugBuildingPos = $currentDebugBuildingPos +EndFunc Func btnTestGetLocationBuilding() Local $aResult, $iBdlgFindTime, $hTimer BeginImageTest() @@ -25964,7 +26133,11 @@ Local $currentdebugsetlog = $g_bDebugSetlog $g_bRunState = True $g_bDebugBuildingPos = True $g_bDebugSetlog = True -SearchZoomOut($aCenterEnemyVillageClickDrag, True, "btnTestAttackCSV") +setVillageOffset(0, 0, 1) +ConvertInternalExternArea() +If CheckZoomOut("btnTestGetLocationBuilding", True, False) = False Then +SetLog("CheckZoomOut failed", $COLOR_INFO) +EndIf ResetTHsearch() SetLog("Testing FindTownhall()", $COLOR_INFO) SetLog("FindTownhall() = " & FindTownhall(True), $COLOR_INFO) @@ -26166,7 +26339,12 @@ Func btnTestWeakBase() Local $currentRunState = $g_bRunState $g_bRunState = True BeginImageTest() -IsWeakBase() +FindTownhall(True) +If($g_iSearchTH <> "-") Then +IsWeakBase($g_iImglocTHLevel, $g_sImglocRedline, False) +Else +IsWeakBase($g_iMaxTHLevel, "", False) +EndIf EndImageTest() $g_bRunState = $currentRunState EndFunc @@ -27579,6 +27757,8 @@ btnTestDeadBaseFolder() Case $g_hBtnTestTHimgloc imglocTHSearch() Case $g_hBtnTestAttackCSV +btnTestAttackCSV() +Case $g_hBtnTestArmyWindow Local $RuntimeA = $g_bRunState $g_bRunState = True Setlog("Army Window Test") @@ -28391,7 +28571,7 @@ EndFunc Func SetTime($bForceUpdate = False) If $g_hTimerSinceStarted = 0 Then Return Local $day = 0, $hour = 0, $min = 0, $sec = 0 -If GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM2 Or $bForceUpdate = True Then +If(GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM2 And GUICtrlRead($g_hGUI_BOT_TAB, 1) = $g_hGUI_BOT_TAB_ITEM5 And GUICtrlRead($g_hTabMain, 1) = $g_hTabBot) Or $bForceUpdate = True Then _TicksToDay(Int(__TimerDiff($g_hTimerSinceStarted) + $g_iTimePassed), $day, $hour, $min, $sec) GUICtrlSetData($g_hLblResultRuntime, $day > 0 ? StringFormat("%2u Day(s) %02i:%02i:%02i", $day, $hour, $min, $sec) : StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) EndIf @@ -28399,8 +28579,19 @@ If GUICtrlGetState($g_hLblResultGoldNow) <> $GUI_ENABLE + $GUI_SHOW Or $bForceUp _TicksToTime(Int(__TimerDiff($g_hTimerSinceStarted) + $g_iTimePassed), $hour, $min, $sec) GUICtrlSetData($g_hLblResultRuntimeNow, StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) EndIf +If _DateIsValid($g_sLabUpgradeTime) Then +Local $iLabTime = _DateDiff("s", _NowCalc(), $g_sLabUpgradeTime) * 1000 +If $iLabTime > 0 Then +_TicksToDay($iLabTime, $day, $hour, $min, $sec) +GUICtrlSetData($g_hLbLLabTime, $day > 0 ? StringFormat("%2ud %02i:%02i'", $day, $hour, $min) : StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) +GUICtrlSetColor($g_hLbLLabTime, $day > 0 ? $COLOR_GREEN : $COLOR_ORANGE) +Else +GUICtrlSetData($g_hLbLLabTime, "") +$g_sLabUpgradeTime = "" +EndIf +EndIf If ProfileSwitchAccountEnabled() Then -If GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM5 Or $bForceUpdate Then +If GUICtrlRead($g_hGUI_STATS_TAB, 1) = $g_hGUI_STATS_TAB_ITEM5 And GUICtrlRead($g_hGUI_BOT_TAB, 1) = $g_hGUI_BOT_TAB_ITEM5 And GUICtrlRead($g_hTabMain, 1) = $g_hTabBot Then _TicksToTime(Int(__TimerDiff($g_ahTimerSinceSwitched[$g_iCurAccount]) + $g_aiRunTime[$g_iCurAccount]), $hour, $min, $sec) GUICtrlSetData($g_ahLblResultRuntimeNowAcc[$g_iCurAccount], StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) For $i = 0 To $g_iTotalAcc @@ -28417,6 +28608,7 @@ GUICtrlSetColor($g_ahLblTroopTime[$i], $COLOR_BLACK) EndIf EndIf Next +SwitchAccountVariablesReload("SetTime") EndIf EndIf EndFunc @@ -30421,16 +30613,16 @@ EndIf EndIf Return True EndFunc -Func PrepareAttack($pMatchMode, $Remaining = False, $DebugSiege = False) +Func PrepareAttack($pMatchMode, $bRemaining = False, $DebugSiege = False) If($pMatchMode = $DB And $g_aiAttackAlgorithm[$DB] = 1) Or($pMatchMode = $LB And $g_aiAttackAlgorithm[$LB] = 1) Then -If $g_bDebugMakeIMGCSV And $Remaining = False And TestCapture() = 0 Then +If $g_bDebugMakeIMGCSV And $bRemaining = False And TestCapture() = 0 Then If $g_iSearchTH = "-" Then imglocTHSearch(True, False, False) EndIf DebugImageSave("clean", False, Default, Default, "TH" & $g_iSearchTH & "-") EndIf EndIf -If $Remaining = False Then +If Not $bRemaining Then $g_bDropKing = False $g_bDropQueen = False $g_bDropWarden = False @@ -30440,9 +30632,8 @@ If $g_iActivateWarden = 1 Or $g_iActivateWarden = 2 Then $g_aHeroesTimerActivati $g_iTotalAttackSlot = 10 $g_bDraggedAttackBar = False EndIf -Local $troopsnumber = 0 If $g_bDebugSetlog Then SetDebugLog("PrepareAttack for " & $pMatchMode & " " & $g_asModeText[$pMatchMode], $COLOR_DEBUG) -If $Remaining Then +If $bRemaining Then SetLog("Checking remaining unused troops for: " & $g_asModeText[$pMatchMode], $COLOR_INFO) Else SetLog("Initiating attack for: " & $g_asModeText[$pMatchMode], $COLOR_ERROR) @@ -30450,7 +30641,7 @@ EndIf Local $hStarttime = _Timer_Init() Local $aPaths = [$g_sImgSwitchSiegeCastle, $g_sImgSwitchSiegeWallWrecker, $g_sImgSwitchSiegeBattleBlimp, $g_sImgSwitchSiegeStoneSlammer] Local $ToUse = $eCastle, $iDa = 0 -If($pMatchMode = $DB Or $pMatchMode = $LB Or $pMatchMode = $TS) And Not $Remaining Then +If($pMatchMode = $DB Or $pMatchMode = $LB Or $pMatchMode = $TS) And Not $bRemaining Then If $g_abAttackDropCC[$pMatchMode] And $g_aiAttackUseSiege[$pMatchMode] = 3 And($g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] > 0 Or $g_aiCurrentCCSiegeMachines[$eSiegeStoneSlammer] > 0) Then $ToUse = $eStoneS $iDa = 3 @@ -30464,8 +30655,8 @@ Else $ToUse = $eCastle $iDa = 0 EndIf -If Not $Remaining And $g_abAttackDropCC[$pMatchMode] Then -Setlog("Let's use " & NameOfTroop($ToUse)) +If Not $bRemaining And $g_abAttackDropCC[$pMatchMode] Then +Setlog("Let's use " & GetTroopName($ToUse)) If QuickMIS("BC1", $g_sImgSwitchSiegeMachine, 50, 700, 820, 720, True, False) Then If $g_bDebugSetlog Then SetDebugLog("Benchmark Switch Siege Bar: " & StringFormat("%.2f", _Timer_Diff($hStarttime)) & "'ms") $hStarttime = _Timer_Init() @@ -30501,7 +30692,7 @@ $aSiegeAvailable[UBound($aSiegeAvailable) - 1][1] = $y Local $SiegeLevel = getTroopsSpellsLevel($x - 26, 587) $aSiegeAvailable[UBound($aSiegeAvailable) - 1][2] = $SiegeLevel <> "" ? Number($SiegeLevel) : 1 If $DebugSiege Then -Local $Info = $i + 1 & "_" & NameOfTroop($ToUse) & "_L" & $aSiegeAvailable[UBound($aSiegeAvailable) - 1][2] & "_" & $x & "_" & $y +Local $Info = $i + 1 & "_" & GetTroopName($ToUse) & "_L" & $aSiegeAvailable[UBound($aSiegeAvailable) - 1][2] & "_" & $x & "_" & $y addInfoToDebugImage($hGraphic, $hPenRED, $Info, $x, $y) _GDIPlus_GraphicsDrawLine($hGraphic, 0, 587, 860, 587, $hPenRED) _GDIPlus_GraphicsDrawLine($hGraphic, $x - 26, 0, $x - 26, 732, $hPenRED) @@ -30521,13 +30712,12 @@ EndIf Next Click($iFinalX, $iFinalY, 1) Local $TextLog = $ToUse = $eCastle ? "" : " Level " & $iFinalLevel -Setlog(NameOfTroop($ToUse) & $TextLog & " selected!", $COLOR_SUCCESS) +Setlog(GetTroopName($ToUse) & $TextLog & " selected!", $COLOR_SUCCESS) Else If $g_bDebugImageSave Then DebugImageSave("PrepareAttack_SwitchSiege") Click($lastX, $lastY, 1) EndIf If _sleep(250) Then Return -Click(35, 595 + $g_iBottomOffsetY, 1, 0, "#0111") If $DebugSiege Then _GDIPlus_ImageSaveToFile($editedImage, $subDirectory & "\" & $filename) _GDIPlus_PenDispose($hPenRED) @@ -30536,10 +30726,9 @@ _GDIPlus_BitmapDispose($editedImage) EndIf Else If $g_bDebugImageSave Then DebugImageSave("PrepareAttack_SwitchSiege") -Setlog("Undetected " & NameOfTroop($ToUse) & " after click on switch btn!", $COLOR_DEBUG) +Setlog("Undetected " & GetTroopName($ToUse) & " after click on switch btn!", $COLOR_DEBUG) Click($lastX, $lastY, 1) If _sleep(250) Then Return -Click(35, 595 + $g_iBottomOffsetY, 1, 0, "#0111") EndIf If _Sleep(750) Then Return EndIf @@ -30548,93 +30737,56 @@ EndIf If $g_bDebugSetlog Then SetDebugLog("Benchmark Switch Siege Detection: " & StringFormat("%.2f", _Timer_Diff($hStarttime)) & "'ms") If $g_bDebugSetlog Then SetDebugLog("Sleeps : " & 250 + 750 & "'ms") If _Sleep($DELAYPREPAREATTACK1) Then Return -For $i = 0 To UBound($g_avAttackTroops) - 1 +Local $iTroopNumber = 0 +For $i = 0 To UBound($g_avAttackTroops, 1) - 1 $g_avAttackTroops[$i][0] = -1 $g_avAttackTroops[$i][1] = 0 $g_avAttackTroops[$i][2] = 0 +$g_avAttackTroops[$i][3] = 0 +$g_avAttackTroops[$i][4] = 0 +$g_avAttackTroops[$i][5] = 0 Next -Local $Plural = 0 -Local $result = AttackBarCheck($Remaining, $pMatchMode) -If $g_bDebugSetlog Then SetDebugLog("DLL Troopsbar list: " & $result, $COLOR_DEBUG) -Local $aTroopDataList = StringSplit($result, "|") -Local $aTemp[22][4] -If $result <> "" Then -For $i = 1 To $aTroopDataList[0] -Local $troopData = StringSplit($aTroopDataList[$i], "#", $STR_NOCOUNT) -$aTemp[Number($troopData[1])][0] = $troopData[0] -$aTemp[Number($troopData[1])][1] = Number($troopData[2]) -$aTemp[Number($troopData[1])][2] = Number($troopData[1]) -$aTemp[Number($troopData[1])][3] = Number($troopData[3]) -Next -EndIf -For $i = 0 To UBound($aTemp) - 1 -If $aTemp[$i][0] = "" And $aTemp[$i][1] = "" Then -$g_avAttackTroops[$i][0] = -1 -$g_avAttackTroops[$i][1] = 0 -$g_avAttackTroops[$i][2] = 0 -Else -Local $troopKind = $aTemp[$i][0] -If $troopKind < $eKing Then -If Not IsTroopToBeUsed($pMatchMode, $troopKind) Then -If $g_bDebugSetlog Then SetDebugLog("Discard use of troop " & $troopKind & " " & NameOfTroop($troopKind), $COLOR_ERROR) -$g_avAttackTroops[$i][0] = -1 -$g_avAttackTroops[$i][1] = 0 -$g_avAttackTroops[$i][2] = 0 -$troopKind = -1 -Else -$g_avAttackTroops[$i][0] = $aTemp[$i][0] -$g_avAttackTroops[$i][1] = $aTemp[$i][1] -$g_avAttackTroops[$i][2] = $aTemp[$i][3] -$troopsnumber += $aTemp[$i][1] -EndIf +Local $avAttackBar = AttackBarCheck($bRemaining, $pMatchMode) +If UBound($avAttackBar, 1) > 0 Then +For $i = 0 To UBound($avAttackBar, 1) - 1 +If IsUnitUsed($pMatchMode, $avAttackBar[$i][0]) Then +$g_avAttackTroops[$avAttackBar[$i][1]][0] = Number($avAttackBar[$i][0]) +$g_avAttackTroops[$avAttackBar[$i][1]][1] = Number($avAttackBar[$i][2]) +$g_avAttackTroops[$avAttackBar[$i][1]][2] = Number($avAttackBar[$i][3]) +$g_avAttackTroops[$avAttackBar[$i][1]][3] = Number($avAttackBar[$i][4]) +$g_avAttackTroops[$avAttackBar[$i][1]][4] = Number($avAttackBar[$i][5]) +$g_avAttackTroops[$avAttackBar[$i][1]][5] = Number($avAttackBar[$i][6]) +$iTroopNumber += $avAttackBar[$i][2] +Local $sDebugText = $g_bDebugSetlog ? " (X:" & $avAttackBar[$i][3] & "|Y:" & $avAttackBar[$i][4] & "|OCR-X:" & $avAttackBar[$i][5] & "|OCR-Y:" & $avAttackBar[$i][6] & ")" : "" +SetLog($avAttackBar[$i][1] & ": " & $avAttackBar[$i][2] & " " & GetTroopName($avAttackBar[$i][0], $avAttackBar[$i][2]) & $sDebugText, $COLOR_SUCCESS) Else -$g_avAttackTroops[$i][0] = $troopKind -If IsSpecialTroopToBeUsed($pMatchMode, $troopKind) Then -$troopsnumber += 1 -$g_avAttackTroops[$i][0] = $aTemp[$i][0] -$g_avAttackTroops[$i][1] = $aTemp[$i][1] -$g_avAttackTroops[$i][2] = $aTemp[$i][3] -If $g_avAttackTroops[$i][0] = $eKing Or $g_avAttackTroops[$i][0] = $eQueen Or $g_avAttackTroops[$i][0] = $eWarden Then $g_avAttackTroops[$i][1] = 1 -$troopKind = $g_avAttackTroops[$i][1] -$troopsnumber += 1 -Else -If $g_bDebugSetlog Then SetDebugLog($aTemp[$i][2] & " » Discard use Hero/Spell/Castle/Siege [" & $troopKind & "] " & NameOfTroop($troopKind), $COLOR_ERROR) -$troopKind = -1 -EndIf -EndIf -$Plural = 0 -If $aTemp[$i][1] > 1 Then $Plural = 1 -If $troopKind <> -1 Then SetLog($aTemp[$i][2] & " » " & $g_avAttackTroops[$i][1] & " " & NameOfTroop($g_avAttackTroops[$i][0], $Plural) & ", x: " & $g_avAttackTroops[$i][2], $COLOR_SUCCESS) +SetDebugLog("Discard use of " & GetTroopName($avAttackBar[$i][0]) & " (" & $avAttackBar[$i][0] & ")", $COLOR_ERROR) EndIf Next -SetSlotSpecialTroops() -If $g_bDebugSetlog Then SetDebugLog("troopsnumber = " & $troopsnumber) -Return $troopsnumber -EndFunc -Func IsTroopToBeUsed($pMatchMode, $pTroopType) -If $pMatchMode = $DT Or $pMatchMode = $TB Then Return True -If $pMatchMode = $MA Then -Local $tempArr = $g_aaiTroopsToBeUsed[$g_aiAttackTroopSelection[$DB]] -Else -Local $tempArr = $g_aaiTroopsToBeUsed[$g_aiAttackTroopSelection[$pMatchMode]] EndIf -For $x = 0 To UBound($tempArr) - 1 -If $tempArr[$x] = $pTroopType Then -If $pMatchMode = $MA And $pTroopType = $eGobl Then +SetSlotSpecialTroops() +Return $iTroopNumber +EndFunc +Func IsUnitUsed($iMatchMode, $iTroopIndex) +Local $iTempMode =($iMatchMode = $MA ? $DB : $iMatchMode) +If $iTroopIndex < $eKing Then +If $iMatchMode = $DT Or $iMatchMode = $TB Then Return True +Local $aTempArray = $g_aaiTroopsToBeUsed[$g_aiAttackTroopSelection[$iTempMode]] +Local $iFoundAt = _ArraySearch($aTempArray, $iTroopIndex) +If $iFoundAt <> -1 Then +If $iMatchMode = $MA And $iTroopIndex = $eGobl Then Return False Else Return True EndIf EndIf -Next Return False -EndFunc -Func IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) -Local $iTempMode =($pMatchMode = $MA ? $DB : $pMatchMode) -If $pMatchMode <> $DB And $pMatchMode <> $LB And $pMatchMode <> $TS And $pMatchMode <> $MA Then +Else +Local $iTempMode =($iMatchMode = $MA ? $DB : $iMatchMode) +If $iMatchMode <> $DB And $iMatchMode <> $LB And $iMatchMode <> $TS And $iMatchMode <> $MA Then Return True Else -Switch $pTroopType +Switch $iTroopIndex Case $eKing If(BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroKing) = $eHeroKing) Then Return True Case $eQueen @@ -30644,7 +30796,7 @@ If(BitAND($g_aiAttackUseHeroes[$iTempMode], $eHeroWarden) = $eHeroWarden) Then R Case $eCastle If $g_abAttackDropCC[$iTempMode] Then Return True Case $eLSpell -If $g_abAttackUseLightSpell[$iTempMode] Or $g_bSmartZapEnable = True Then Return True +If $g_abAttackUseLightSpell[$iTempMode] Or $g_bSmartZapEnable Then Return True Case $eHSpell If $g_abAttackUseHealSpell[$iTempMode] Then Return True Case $eRSpell @@ -30656,7 +30808,7 @@ If $g_abAttackUseFreezeSpell[$iTempMode] Then Return True Case $ePSpell If $g_abAttackUsePoisonSpell[$iTempMode] Then Return True Case $eESpell -If $g_abAttackUseEarthquakeSpell[$iTempMode] = 1 Or $g_bSmartZapEnable = True Then Return True +If $g_abAttackUseEarthquakeSpell[$iTempMode] = 1 Or $g_bSmartZapEnable Then Return True Case $eHaSpell If $g_abAttackUseHasteSpell[$iTempMode] Then Return True Case $eCSpell @@ -30665,20 +30817,19 @@ Case $eSkSpell If $g_abAttackUseSkeletonSpell[$iTempMode] Then Return True Case $eBtSpell If $g_abAttackUseBatSpell[$iTempMode] Then Return True -Case $eWallW -If $g_abAttackDropCC[$iTempMode] Then Return True -Case $eBattleB -If $g_abAttackDropCC[$iTempMode] Then Return True -Case $eStoneS +Case $eWallW, $eBattleB, $eStoneS If $g_abAttackDropCC[$iTempMode] Then Return True Case Else Return False EndSwitch Return False EndIf +Return False +EndIf +Return False EndFunc Func AttackRemainingTime($bInitialze = Default) -If $bInitialze = True Then +If $bInitialze Then $g_hAttackTimer = __TimerInit() $g_iAttackTimerOffset = Default SuspendAndroidTime(True) @@ -30691,7 +30842,7 @@ If $g_iAttackTimerOffset > $iPrepareTime Then $g_iAttackTimerOffset = $iPrepareTime - $g_iAttackTimerOffset EndIf EndIf -If $bInitialze = False Then Return +If Not $bInitialze Then Return Local $iAttackTime = 3 * 60 * 1000 Local $iRemaining = $iAttackTime -(__TimerDiff($g_hAttackTimer) - SuspendAndroidTime() - $g_iAttackTimerOffset) If $iRemaining < 0 Then Return 0 @@ -30809,16 +30960,18 @@ _GDIPlus_ImageDispose($hBitmap_Scaled) EndIf If $GoldChangeCheck Then PushMsg("LastRaid") $i = 0 +Local $iExitLoop = -1 While 1 If $g_bDebugSetlog Then SetDebugLog("Wait for End Fight Scene to appear #" & $i) If _CheckPixel($aEndFightSceneAvl, $g_bCapturePixel) Then -If IsReturnHomeBattlePage() Then ClickP($aReturnHomeButton, 1, 0, "#0101") -ExitLoop -Else -$i += 1 +If IsReturnHomeBattlePage() Then +ClickP($aReturnHomeButton, 1, 0, "#0101") +$iExitLoop = $i +EndIf EndIf -If $i > 10 Then ExitLoop +If $i > 25 Or($iExitLoop > -1 And $i > $iExitLoop) Then ExitLoop If _Sleep($DELAYRETURNHOME5) Then Return +$i += 1 WEnd If _Sleep($DELAYRETURNHOME2) Then Return $counter = 0 @@ -30866,19 +31019,22 @@ EndIf WEnd If _Sleep(100) Then Return Next -Local $i = 0 +$i = 0 +Local $iExitLoop = -1 While 1 If $g_bDebugSetlog Then SetDebugLog("Wait for End Fight Scene to appear #" & $i) If _CheckPixel($aEndFightSceneAvl, $g_bCapturePixel) Then -If IsReturnHomeBattlePage() Then ClickP($aReturnHomeButton, 1, 0, "#0101") -ExitLoop +If IsReturnHomeBattlePage() Then +ClickP($aReturnHomeButton, 1, 0, "#0101") +$iExitLoop = $i +EndIf Else $i += 1 EndIf -If $i > 10 Then ExitLoop -If _Sleep(100) Then Return +If $i > 25 Or($iExitLoop > -1 And $i > $iExitLoop) Then ExitLoop +If _Sleep($DELAYRETURNHOME5) Then Return WEnd -If _Sleep(100) Then Return +If _Sleep($DELAYRETURNHOME2) Then Return $g_bFullArmy = False $g_bIsFullArmywithHeroesAndSpells = False If ReturnHomeMainPage() Then Return @@ -30937,13 +31093,13 @@ If $g_bDebugSetlog Then SetDebugLog("Trophy Count Read = " & $iTrophyCurrent, $C While Number($iTrophyCurrent) > Number($g_iDropTrophyMax) If $g_bDebugSetlog Then SetDebugLog("Drop Trophy Loop #" & $iCount + 1, $COLOR_DEBUG) DropTrophy() -If _Sleep($DELAYUNBREAKABLE2) Then Return +If _Sleep($DELAYUNBREAKABLE2) Then Return True ClickP($aAway, 1, 0, "#0395") -If _Sleep($DELAYUNBREAKABLE1) Then Return +If _Sleep($DELAYUNBREAKABLE1) Then Return True $iTrophyCurrent = getTrophyMainScreen($aTrophies[0], $aTrophies[1]) If($iCount > 2) And(Number($iTrophyCurrent) > Number($g_iDropTrophyMax)) Then SetLog("Unable to drop trophy, trying again", $COLOR_ERROR) -If _Sleep(500) Then Return +If _Sleep(500) Then Return True Return True EndIf $iCount += 1 @@ -31068,15 +31224,29 @@ EndSwitch If($nbSides = 0) Then Return If _Sleep($DELAYALGORITHM_ALLTROOPS2) Then Return $g_iSidesAttack = $nbSides -$g_iSlotsGiants = 1 -Local $GiantComp = $g_aiArmyCompTroops[$eTroopGiant] -If Number($GiantComp) > 16 Or(Number($GiantComp) >= 8 And $nbSides = 4) Then $g_iSlotsGiants = 2 -If Number($GiantComp) > 20 Or(Number($GiantComp) >= 12 And $nbSides = 4) Then $g_iSlotsGiants = 0 +$g_iSlotsGiants = 0 +Local $GiantComp = 0 +For $i = 0 To UBound($g_avAttackTroops) - 1 +If $g_avAttackTroops[$i][0] = $eGiant Then +$GiantComp = $g_avAttackTroops[$i][1] +EndIf +Next +Switch $GiantComp +Case 0 To 10 +$g_iSlotsGiants = 2 +Case Else +Switch $nbSides +Case 1 To 2 +$g_iSlotsGiants = 4 +Case Else +$g_iSlotsGiants = 0 +EndSwitch +EndSwitch If $g_iMatchMode = $LB And $g_aiAttackStdDropSides[$LB] = 4 Then Switch $g_aiAttackStdDropOrder[$g_iMatchMode] Case 0 If $g_bCustomDropOrderEnable Then -Local $listInfoDeploy[22][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], [MatchTroopDropName(1), MatchSidesDrop(1), MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], [MatchTroopDropName(2), MatchSidesDrop(2), MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], [MatchTroopDropName(3), MatchSidesDrop(3), MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], [MatchTroopDropName(4), MatchSidesDrop(4), MatchTroopWaveNb(4), 1, MatchSlotsPerEdge(4)], [MatchTroopDropName(5), MatchSidesDrop(5), MatchTroopWaveNb(5), 1, MatchSlotsPerEdge(5)], [MatchTroopDropName(6), MatchSidesDrop(6), MatchTroopWaveNb(6), 1, MatchSlotsPerEdge(6)], [MatchTroopDropName(7), MatchSidesDrop(7), MatchTroopWaveNb(7), 1, MatchSlotsPerEdge(7)], [MatchTroopDropName(8), MatchSidesDrop(8), MatchTroopWaveNb(8), 1, MatchSlotsPerEdge(8)], [MatchTroopDropName(9), MatchSidesDrop(9), MatchTroopWaveNb(9), 1, MatchSlotsPerEdge(9)], [MatchTroopDropName(10), MatchSidesDrop(10), MatchTroopWaveNb(10), 1, MatchSlotsPerEdge(10)], [MatchTroopDropName(11), MatchSidesDrop(11), MatchTroopWaveNb(11), 1, MatchSlotsPerEdge(11)], [MatchTroopDropName(12), MatchSidesDrop(12), MatchTroopWaveNb(12), 1, MatchSlotsPerEdge(12)], [MatchTroopDropName(13), MatchSidesDrop(13), MatchTroopWaveNb(13), 1, MatchSlotsPerEdge(13)], [MatchTroopDropName(14), MatchSidesDrop(14), MatchTroopWaveNb(14), 1, MatchSlotsPerEdge(14)], [MatchTroopDropName(15), MatchSidesDrop(15), MatchTroopWaveNb(15), 1, MatchSlotsPerEdge(15)], [MatchTroopDropName(16), MatchSidesDrop(16), MatchTroopWaveNb(16), 1, MatchSlotsPerEdge(16)], [MatchTroopDropName(17), MatchSidesDrop(17), MatchTroopWaveNb(17), 1, MatchSlotsPerEdge(17)], [MatchTroopDropName(18), MatchSidesDrop(18), MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], [MatchTroopDropName(19), MatchSidesDrop(19), MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], [MatchTroopDropName(20), MatchSidesDrop(20), MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)]] +Local $listInfoDeploy[23][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], [MatchTroopDropName(1), MatchSidesDrop(1), MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], [MatchTroopDropName(2), MatchSidesDrop(2), MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], [MatchTroopDropName(3), MatchSidesDrop(3), MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], [MatchTroopDropName(4), MatchSidesDrop(4), MatchTroopWaveNb(4), 1, MatchSlotsPerEdge(4)], [MatchTroopDropName(5), MatchSidesDrop(5), MatchTroopWaveNb(5), 1, MatchSlotsPerEdge(5)], [MatchTroopDropName(6), MatchSidesDrop(6), MatchTroopWaveNb(6), 1, MatchSlotsPerEdge(6)], [MatchTroopDropName(7), MatchSidesDrop(7), MatchTroopWaveNb(7), 1, MatchSlotsPerEdge(7)], [MatchTroopDropName(8), MatchSidesDrop(8), MatchTroopWaveNb(8), 1, MatchSlotsPerEdge(8)], [MatchTroopDropName(9), MatchSidesDrop(9), MatchTroopWaveNb(9), 1, MatchSlotsPerEdge(9)], [MatchTroopDropName(10), MatchSidesDrop(10), MatchTroopWaveNb(10), 1, MatchSlotsPerEdge(10)], [MatchTroopDropName(11), MatchSidesDrop(11), MatchTroopWaveNb(11), 1, MatchSlotsPerEdge(11)], [MatchTroopDropName(12), MatchSidesDrop(12), MatchTroopWaveNb(12), 1, MatchSlotsPerEdge(12)], [MatchTroopDropName(13), MatchSidesDrop(13), MatchTroopWaveNb(13), 1, MatchSlotsPerEdge(13)], [MatchTroopDropName(14), MatchSidesDrop(14), MatchTroopWaveNb(14), 1, MatchSlotsPerEdge(14)], [MatchTroopDropName(15), MatchSidesDrop(15), MatchTroopWaveNb(15), 1, MatchSlotsPerEdge(15)], [MatchTroopDropName(16), MatchSidesDrop(16), MatchTroopWaveNb(16), 1, MatchSlotsPerEdge(16)], [MatchTroopDropName(17), MatchSidesDrop(17), MatchTroopWaveNb(17), 1, MatchSlotsPerEdge(17)], [MatchTroopDropName(18), MatchSidesDrop(18), MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], [MatchTroopDropName(19), MatchSidesDrop(19), MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], [MatchTroopDropName(20), MatchSidesDrop(20), MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)], [MatchTroopDropName(22), MatchSidesDrop(22), MatchTroopWaveNb(22), 1, MatchSlotsPerEdge(22)]] Else Local $listInfoDeploy[23][5] = [[$eGole, $nbSides, 1, 1, 2] , [$eLava, $nbSides, 1, 1, 2] , [$eGiant, $nbSides, 1, 1, $g_iSlotsGiants] , [$eDrag, $nbSides, 1, 1, 0] , ["CC", 1, 1, 1, 1] , [$eBall, $nbSides, 1, 1, 0] , [$eBabyD, $nbSides, 1, 1, 1] , [$eHogs, $nbSides, 1, 1, 1] , [$eValk, $nbSides, 1, 1, 0] , [$eBowl, $nbSides, 1, 1, 0] , [$eMine, $nbSides, 1, 1, 0] , [$eEDrag, $nbSides, 1, 1, 0] , [$eBarb, $nbSides, 1, 1, 0] , [$eWall, $nbSides, 1, 1, 1] , [$eArch, $nbSides, 1, 1, 0] , [$eWiza, $nbSides, 1, 1, 0] , [$eMini, $nbSides, 1, 1, 0] , [$eWitc, $nbSides, 1, 1, 1] , [$eGobl, $nbSides, 1, 1, 0] , [$eHeal, $nbSides, 1, 1, 1] , [$ePekk, $nbSides, 1, 1, 1] , [$eIceG, $nbSides, 1, 1, 0] , ["HEROES", 1, 2, 1, 1] ] EndIf @@ -31090,7 +31260,7 @@ If $g_bDebugSetlog Then SetDebugLog("listdeploy standard for attack", $COLOR_DEB Switch $g_aiAttackStdDropOrder[$g_iMatchMode] Case 0 If $g_bCustomDropOrderEnable Then -Local $listInfoDeploy[22][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], [MatchTroopDropName(1), MatchSidesDrop(1), MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], [MatchTroopDropName(2), MatchSidesDrop(2), MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], [MatchTroopDropName(3), MatchSidesDrop(3), MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], [MatchTroopDropName(4), MatchSidesDrop(4), MatchTroopWaveNb(4), 1, MatchSlotsPerEdge(4)], [MatchTroopDropName(5), MatchSidesDrop(5), MatchTroopWaveNb(5), 1, MatchSlotsPerEdge(5)], [MatchTroopDropName(6), MatchSidesDrop(6), MatchTroopWaveNb(6), 1, MatchSlotsPerEdge(6)], [MatchTroopDropName(7), MatchSidesDrop(7), MatchTroopWaveNb(7), 1, MatchSlotsPerEdge(7)], [MatchTroopDropName(8), MatchSidesDrop(8), MatchTroopWaveNb(8), 1, MatchSlotsPerEdge(8)], [MatchTroopDropName(9), MatchSidesDrop(9), MatchTroopWaveNb(9), 1, MatchSlotsPerEdge(9)], [MatchTroopDropName(10), MatchSidesDrop(10), MatchTroopWaveNb(10), 1, MatchSlotsPerEdge(10)], [MatchTroopDropName(11), MatchSidesDrop(11), MatchTroopWaveNb(11), 1, MatchSlotsPerEdge(11)], [MatchTroopDropName(12), MatchSidesDrop(12), MatchTroopWaveNb(12), 1, MatchSlotsPerEdge(12)], [MatchTroopDropName(13), MatchSidesDrop(13), MatchTroopWaveNb(13), 1, MatchSlotsPerEdge(13)], [MatchTroopDropName(14), MatchSidesDrop(14), MatchTroopWaveNb(14), 1, MatchSlotsPerEdge(14)], [MatchTroopDropName(15), MatchSidesDrop(15), MatchTroopWaveNb(15), 1, MatchSlotsPerEdge(15)], [MatchTroopDropName(16), MatchSidesDrop(16), MatchTroopWaveNb(16), 1, MatchSlotsPerEdge(16)], [MatchTroopDropName(17), MatchSidesDrop(17), MatchTroopWaveNb(17), 1, MatchSlotsPerEdge(17)], [MatchTroopDropName(18), MatchSidesDrop(18), MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], [MatchTroopDropName(19), MatchSidesDrop(19), MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], [MatchTroopDropName(20), MatchSidesDrop(20), MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)]] +Local $listInfoDeploy[23][5] = [[MatchTroopDropName(0), MatchSidesDrop(0), MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], [MatchTroopDropName(1), MatchSidesDrop(1), MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], [MatchTroopDropName(2), MatchSidesDrop(2), MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], [MatchTroopDropName(3), MatchSidesDrop(3), MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], [MatchTroopDropName(4), MatchSidesDrop(4), MatchTroopWaveNb(4), 1, MatchSlotsPerEdge(4)], [MatchTroopDropName(5), MatchSidesDrop(5), MatchTroopWaveNb(5), 1, MatchSlotsPerEdge(5)], [MatchTroopDropName(6), MatchSidesDrop(6), MatchTroopWaveNb(6), 1, MatchSlotsPerEdge(6)], [MatchTroopDropName(7), MatchSidesDrop(7), MatchTroopWaveNb(7), 1, MatchSlotsPerEdge(7)], [MatchTroopDropName(8), MatchSidesDrop(8), MatchTroopWaveNb(8), 1, MatchSlotsPerEdge(8)], [MatchTroopDropName(9), MatchSidesDrop(9), MatchTroopWaveNb(9), 1, MatchSlotsPerEdge(9)], [MatchTroopDropName(10), MatchSidesDrop(10), MatchTroopWaveNb(10), 1, MatchSlotsPerEdge(10)], [MatchTroopDropName(11), MatchSidesDrop(11), MatchTroopWaveNb(11), 1, MatchSlotsPerEdge(11)], [MatchTroopDropName(12), MatchSidesDrop(12), MatchTroopWaveNb(12), 1, MatchSlotsPerEdge(12)], [MatchTroopDropName(13), MatchSidesDrop(13), MatchTroopWaveNb(13), 1, MatchSlotsPerEdge(13)], [MatchTroopDropName(14), MatchSidesDrop(14), MatchTroopWaveNb(14), 1, MatchSlotsPerEdge(14)], [MatchTroopDropName(15), MatchSidesDrop(15), MatchTroopWaveNb(15), 1, MatchSlotsPerEdge(15)], [MatchTroopDropName(16), MatchSidesDrop(16), MatchTroopWaveNb(16), 1, MatchSlotsPerEdge(16)], [MatchTroopDropName(17), MatchSidesDrop(17), MatchTroopWaveNb(17), 1, MatchSlotsPerEdge(17)], [MatchTroopDropName(18), MatchSidesDrop(18), MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], [MatchTroopDropName(19), MatchSidesDrop(19), MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], [MatchTroopDropName(20), MatchSidesDrop(20), MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], [MatchTroopDropName(21), MatchSidesDrop(21), MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)], [MatchTroopDropName(22), MatchSidesDrop(22), MatchTroopWaveNb(22), 1, MatchSlotsPerEdge(22)]] Else Local $listInfoDeploy[23][5] = [[$eGole, $nbSides, 1, 1, 2] , [$eLava, $nbSides, 1, 1, 2] , [$eGiant, $nbSides, 1, 1, $g_iSlotsGiants] , [$eDrag, $nbSides, 1, 1, 0] , ["CC", 1, 1, 1, 1] , [$eBall, $nbSides, 1, 1, 0] , [$eBabyD, $nbSides, 1, 1, 0] , [$eHogs, $nbSides, 1, 1, 1] , [$eValk, $nbSides, 1, 1, 0] , [$eBowl, $nbSides, 1, 1, 0] , [$eIceG, $nbSides, 1, 1, 0] , [$eMine, $nbSides, 1, 1, 0] , [$eEDrag, $nbSides, 1, 1, 0] , [$eBarb, $nbSides, 1, 1, 0] , [$eWall, $nbSides, 1, 1, 1] , [$eArch, $nbSides, 1, 1, 0] , [$eWiza, $nbSides, 1, 1, 0] , [$eMini, $nbSides, 1, 1, 0] , [$eWitc, $nbSides, 1, 1, 1] , [$eGobl, $nbSides, 1, 1, 0] , [$eHeal, $nbSides, 1, 1, 1] , [$ePekk, $nbSides, 1, 1, 1] , ["HEROES", 1, 2, 1, 1] ] EndIf @@ -31216,7 +31386,6 @@ Local $TroopCountBeg Local $THtroop = -1 Local $troopNb = 0 Local $name = "" -Local $plural = 0 Local $waveName = "first" Local $NumTroopDeployed = 0 If _Sleep(5) Then Return @@ -31285,8 +31454,7 @@ EndIf EndIf If $troopKind >= $eBarb And $troopKind <= $eIceG Then $troopNb = $iNbOfSpots * $iAtEachSpot -If $troopNb > 1 Then $plural = 1 -$name = NameOfTroop($troopKind, $plural) +$name = GetTroopName($troopKind, $troopNb) $TroopCountBeg = Number(ReadTroopQuantity($THtroop)) If($TroopCountBeg = 0) And $g_bDebugSetlog Then SetLog("No " & $name & " Remaining!!!") If($TroopCountBeg = 0) Then Return False @@ -31406,7 +31574,7 @@ If CheckOneStar(0, False, True) Then Return For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][0] = $THSpell Then $Spell = $i -$name = NameOfTroop($THSpell, 0) +$name = GetTroopName($THSpell) EndIf Next If $Spell > -1 Then @@ -31645,7 +31813,7 @@ $g_iCSVLastTroopPositionDropTroopFromINI = -1 If _Sleep($DELAYRESPOND) Then Return debugAttackCSV("Troops to be used (purged from troops) ") For $i = 0 To UBound($g_avAttackTroops) - 1 -debugAttackCSV("SLOT n.: " & $i & " - Troop: " & NameOfTroop($g_avAttackTroops[$i][0]) & " (" & $g_avAttackTroops[$i][0] & ") - Quantity: " & $g_avAttackTroops[$i][1]) +debugAttackCSV("SLOT n.: " & $i & " - Troop: " & GetTroopName($g_avAttackTroops[$i][0]) & " (" & $g_avAttackTroops[$i][0] & ") - Quantity: " & $g_avAttackTroops[$i][1]) Next Local $hTimerTOTAL = __timerinit() Local $hTimer = __timerinit() @@ -32239,7 +32407,7 @@ Else $sdirectory = @ScriptDir & "\imgxml\Storages\GoldMines" EndIf $iMaxReturnPoints = 7 -$iMaxLevel = 12 +$iMaxLevel = 13 Case "Collectors" If $g_iDetectedImageType = 1 Then $sdirectory = @ScriptDir & "\imgxml\Storages\Collectors_Snow" @@ -32247,13 +32415,17 @@ Else $sdirectory = @ScriptDir & "\imgxml\Storages\Collectors" EndIf $iMaxReturnPoints = 7 -$iMaxLevel = 12 +$iMaxLevel = 13 Case "Drills" $sdirectory = @ScriptDir & "\imgxml\Storages\Drills" $iMaxReturnPoints = 3 -$iMaxLevel = 6 +$iMaxLevel = 7 Case "All" +If $g_iDetectedImageType = 1 Then $sdirectory = @ScriptDir & "\imgxml\Storages\All" +Else +$sdirectory = @ScriptDir & "\imgxml\Storages\All_Snow" +EndIf $iMaxReturnPoints = 21 $iMaxLevel = 13 EndSwitch @@ -32443,12 +32615,13 @@ _GDIPlus_ImageSaveToFile($editedImage, $subDirectory & $fileName) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen2) _GDIPlus_GraphicsDispose($hGraphic) -Setlog(" » Debug Image saved!") +Setlog(" » Debug Image saved!") EndFunc Func AttackSmartFarm($Nside, $SIDESNAMES) Setlog(" ====== Start Smart Farm Attack ====== ", $COLOR_INFO) SetSlotSpecialTroops() Local $nbSides = Null +Local $GiantComp = 0 _CaptureRegion2() _GetRedArea() Switch $Nside @@ -32467,16 +32640,18 @@ $nbSides = $Nside EndSwitch If Not $g_bRunState Then Return $g_iSidesAttack = $nbSides -$g_iSlotsGiants = 1 -Local $GiantComp = $g_aiArmyCompTroops[$eTroopGiant] +$g_iSlotsGiants = 0 +For $i = 0 To UBound($g_avAttackTroops) - 1 +If $g_avAttackTroops[$i][0] = $eGiant Then +$GiantComp = $g_avAttackTroops[$i][1] +EndIf +Next Switch $GiantComp Case 0 To 10 $g_iSlotsGiants = 2 Case Else Switch $nbSides -Case 2 -$g_iSlotsGiants = 2 -Case 1 +Case 1 To 2 $g_iSlotsGiants = 4 Case Else $g_iSlotsGiants = 0 @@ -32484,7 +32659,7 @@ EndSwitch EndSwitch SetDebugLog("Giants : " & $GiantComp & " , per side: " &($GiantComp / $nbSides) & " / deploy points per side: " & $g_iSlotsGiants) If $g_bCustomDropOrderEnable Then -Local $listInfoDeploy[22][5] = [[MatchTroopDropName(0), $nbSides, MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], [MatchTroopDropName(1), $nbSides, MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], [MatchTroopDropName(2), $nbSides, MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], [MatchTroopDropName(3), $nbSides, MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], [MatchTroopDropName(4), $nbSides, MatchTroopWaveNb(4), 1, MatchSlotsPerEdge(4)], [MatchTroopDropName(5), $nbSides, MatchTroopWaveNb(5), 1, MatchSlotsPerEdge(5)], [MatchTroopDropName(6), $nbSides, MatchTroopWaveNb(6), 1, MatchSlotsPerEdge(6)], [MatchTroopDropName(7), $nbSides, MatchTroopWaveNb(7), 1, MatchSlotsPerEdge(7)], [MatchTroopDropName(8), $nbSides, MatchTroopWaveNb(8), 1, MatchSlotsPerEdge(8)], [MatchTroopDropName(9), $nbSides, MatchTroopWaveNb(9), 1, MatchSlotsPerEdge(9)], [MatchTroopDropName(10), $nbSides, MatchTroopWaveNb(10), 1, MatchSlotsPerEdge(10)], [MatchTroopDropName(11), $nbSides, MatchTroopWaveNb(11), 1, MatchSlotsPerEdge(11)], [MatchTroopDropName(12), $nbSides, MatchTroopWaveNb(12), 1, MatchSlotsPerEdge(12)], [MatchTroopDropName(13), $nbSides, MatchTroopWaveNb(13), 1, MatchSlotsPerEdge(13)], [MatchTroopDropName(14), $nbSides, MatchTroopWaveNb(14), 1, MatchSlotsPerEdge(14)], [MatchTroopDropName(15), $nbSides, MatchTroopWaveNb(15), 1, MatchSlotsPerEdge(15)], [MatchTroopDropName(16), $nbSides, MatchTroopWaveNb(16), 1, MatchSlotsPerEdge(16)], [MatchTroopDropName(17), $nbSides, MatchTroopWaveNb(17), 1, MatchSlotsPerEdge(17)], [MatchTroopDropName(18), $nbSides, MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], [MatchTroopDropName(19), $nbSides, MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], [MatchTroopDropName(20), $nbSides, MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], [MatchTroopDropName(21), $nbSides, MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)]] +Local $listInfoDeploy[23][5] = [[MatchTroopDropName(0), $nbSides, MatchTroopWaveNb(0), 1, MatchSlotsPerEdge(0)], [MatchTroopDropName(1), $nbSides, MatchTroopWaveNb(1), 1, MatchSlotsPerEdge(1)], [MatchTroopDropName(2), $nbSides, MatchTroopWaveNb(2), 1, MatchSlotsPerEdge(2)], [MatchTroopDropName(3), $nbSides, MatchTroopWaveNb(3), 1, MatchSlotsPerEdge(3)], [MatchTroopDropName(4), $nbSides, MatchTroopWaveNb(4), 1, MatchSlotsPerEdge(4)], [MatchTroopDropName(5), $nbSides, MatchTroopWaveNb(5), 1, MatchSlotsPerEdge(5)], [MatchTroopDropName(6), $nbSides, MatchTroopWaveNb(6), 1, MatchSlotsPerEdge(6)], [MatchTroopDropName(7), $nbSides, MatchTroopWaveNb(7), 1, MatchSlotsPerEdge(7)], [MatchTroopDropName(8), $nbSides, MatchTroopWaveNb(8), 1, MatchSlotsPerEdge(8)], [MatchTroopDropName(9), $nbSides, MatchTroopWaveNb(9), 1, MatchSlotsPerEdge(9)], [MatchTroopDropName(10), $nbSides, MatchTroopWaveNb(10), 1, MatchSlotsPerEdge(10)], [MatchTroopDropName(11), $nbSides, MatchTroopWaveNb(11), 1, MatchSlotsPerEdge(11)], [MatchTroopDropName(12), $nbSides, MatchTroopWaveNb(12), 1, MatchSlotsPerEdge(12)], [MatchTroopDropName(13), $nbSides, MatchTroopWaveNb(13), 1, MatchSlotsPerEdge(13)], [MatchTroopDropName(14), $nbSides, MatchTroopWaveNb(14), 1, MatchSlotsPerEdge(14)], [MatchTroopDropName(15), $nbSides, MatchTroopWaveNb(15), 1, MatchSlotsPerEdge(15)], [MatchTroopDropName(16), $nbSides, MatchTroopWaveNb(16), 1, MatchSlotsPerEdge(16)], [MatchTroopDropName(17), $nbSides, MatchTroopWaveNb(17), 1, MatchSlotsPerEdge(17)], [MatchTroopDropName(18), $nbSides, MatchTroopWaveNb(18), 1, MatchSlotsPerEdge(18)], [MatchTroopDropName(19), $nbSides, MatchTroopWaveNb(19), 1, MatchSlotsPerEdge(19)], [MatchTroopDropName(20), $nbSides, MatchTroopWaveNb(20), 1, MatchSlotsPerEdge(20)], [MatchTroopDropName(21), $nbSides, MatchTroopWaveNb(21), 1, MatchSlotsPerEdge(21)], [MatchTroopDropName(22), $nbSides, MatchTroopWaveNb(22), 1, MatchSlotsPerEdge(22)]] Else Local $listInfoDeploy[23][5] = [[$eGole, $nbSides, 1, 1, 2] , [$eLava, $nbSides, 1, 1, 2] , [$eGiant, $nbSides, 1, 1, $g_iSlotsGiants] , [$eDrag, $nbSides, 1, 1, 0] , ["CC", 1, 1, 1, 1] , [$eBall, $nbSides, 1, 1, 0] , [$eBabyD, $nbSides, 1, 1, 0] , [$eHogs, $nbSides, 1, 1, 1] , [$eValk, $nbSides, 1, 1, 0] , [$eBowl, $nbSides, 1, 1, 0] , [$eIceG, $nbSides, 1, 1, 0] , [$eMine, $nbSides, 1, 1, 0] , [$eEDrag, $nbSides, 1, 1, 0] , [$eWall, $nbSides, 1, 1, 1] , [$eBarb, $nbSides, 1, 1, 0] , [$eArch, $nbSides, 1, 1, 0] , [$eWiza, $nbSides, 1, 1, 0] , [$eMini, $nbSides, 1, 1, 0] , [$eWitc, $nbSides, 1, 1, 1] , [$eGobl, $nbSides, 1, 1, 0] , [$eHeal, $nbSides, 1, 1, 1] , [$ePekk, $nbSides, 1, 1, 1] , ["HEROES", 1, 2, 1, 1] ] EndIf @@ -32529,15 +32704,13 @@ Local $nbSides = $listInfoDeploy[$i][1] Local $waveNb = $listInfoDeploy[$i][2] Local $maxWaveNb = $listInfoDeploy[$i][3] Local $slotsPerEdge = $listInfoDeploy[$i][4] -If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": USE " & NameOfTroop($troopKind, 0) & " SIDES " & $nbSides & " WAVE " & $waveNb & " XWAVE " & $maxWaveNb & " SLOTXEDGE " & $slotsPerEdge, $COLOR_DEBUG) +If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": USE " & GetTroopName($troopKind, 0) & " SIDES " & $nbSides & " WAVE " & $waveNb & " XWAVE " & $maxWaveNb & " SLOTXEDGE " & $slotsPerEdge, $COLOR_DEBUG) If(IsNumber($troopKind)) Then For $j = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$j][0] = $troopKind Then $troop = $j $troopNb = Ceiling($g_avAttackTroops[$j][1] / $maxWaveNb) -Local $plural = 0 -If $troopNb > 1 Then $plural = 1 -$name = NameOfTroop($troopKind, $plural) +$name = GetTroopName($troopKind, $troopNb) EndIf Next EndIf @@ -32630,9 +32803,12 @@ For $i = 0 To UBound($listInfoDeployTroopPixel) - 1 Local $infoPixelDropTroop = $listInfoDeployTroopPixel[$i] If Not(IsString($infoPixelDropTroop[0]) And($infoPixelDropTroop[0] = "CC" Or $infoPixelDropTroop[0] = "HEROES")) Then Local $numberLeft = ReadTroopQuantity($infoPixelDropTroop[0]) -If $g_bDebugSetlog Then SetDebugLog("Slot Nun= " & $infoPixelDropTroop[0]) -If $g_bDebugSetlog Then SetDebugLog("Slot Xaxis= " & GetXPosOfArmySlot($infoPixelDropTroop[0], 40)) -If $g_bDebugSetlog Then SetDebugLog($infoPixelDropTroop[5] & " - NumberLeft : " & $numberLeft) +If $g_bDebugSetlog Then +Local $aiSlotPos = GetSlotPosition($infoDropTroop[0]) +SetDebugLog("Slot Nun= " & $infoPixelDropTroop[0]) +SetDebugLog("Slot Xaxis= " & $aiSlotPos[0]) +SetDebugLog($infoPixelDropTroop[5] & " - NumberLeft : " & $numberLeft) +EndIf If($numberLeft > 0) Then If _Sleep($DELAYLAUNCHTROOP21) Then Return SelectDropTroop($infoPixelDropTroop[0]) @@ -32653,7 +32829,7 @@ If $nbSides < 1 Then Return Local $nbTroopsLeft = $number Local $nbTroopsPerEdge = Round($nbTroopsLeft / $nbSides) If($number > 0 And $nbTroopsPerEdge = 0) Then $nbTroopsPerEdge = 1 -If $g_bDebugSmartFarm Then Setlog(" - " & NameOfTroop($troop) & " Number: " & $number & " Sides: " & $nbSides & " SlotsPerEdge: " & $slotsPerEdge) +If $g_bDebugSmartFarm Then Setlog(" - " & GetTroopName($troop) & " Number: " & $number & " Sides: " & $nbSides & " SlotsPerEdge: " & $slotsPerEdge) If $nbSides = 4 Then ReDim $listInfoPixelDropTroop[4] $listInfoPixelDropTroop = GetPixelDropTroop($troop, $number, $slotsPerEdge) @@ -33136,37 +33312,37 @@ If $g_bDraggedAttackBar And $troopPosition > -1 Then $troopPosition = $troopSlotConst -($g_iTotalAttackSlot - 10) debugAttackCSV("New troop position: " & $troopPosition) EndIf -Local $usespell = True +Local $bUseSpell = True Switch $iTroopIndex Case $eLSpell -If $g_abAttackUseLightSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseLightSpell[$g_iMatchMode] Then $bUseSpell = False Case $eHSpell -If $g_abAttackUseHealSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseHealSpell[$g_iMatchMode] Then $bUseSpell = False Case $eRSpell -If $g_abAttackUseRageSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseRageSpell[$g_iMatchMode] Then $bUseSpell = False Case $eJSpell -If $g_abAttackUseJumpSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseJumpSpell[$g_iMatchMode] Then $bUseSpell = False Case $eFSpell -If $g_abAttackUseFreezeSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseFreezeSpell[$g_iMatchMode] Then $bUseSpell = False Case $eCSpell -If $g_abAttackUseCloneSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseCloneSpell[$g_iMatchMode] Then $bUseSpell = False Case $ePSpell -If $g_abAttackUsePoisonSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUsePoisonSpell[$g_iMatchMode] Then $bUseSpell = False Case $eESpell -If $g_abAttackUseEarthquakeSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseEarthquakeSpell[$g_iMatchMode] Then $bUseSpell = False Case $eHaSpell -If $g_abAttackUseHasteSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseHasteSpell[$g_iMatchMode] Then $bUseSpell = False Case $eSkSpell -If $g_abAttackUseSkeletonSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseSkeletonSpell[$g_iMatchMode] Then $bUseSpell = False Case $eBtSpell -If $g_abAttackUseBatSpell[$g_iMatchMode] = False Then $usespell = False +If Not $g_abAttackUseBatSpell[$g_iMatchMode] Then $bUseSpell = False EndSwitch -If $troopPosition = -1 Or $usespell = False Then -If $usespell = True Then -SetLog("No " & NameOfTroop($iTroopIndex) & " found in your attack troops list") -debugAttackCSV("No " & NameOfTroop($iTroopIndex) & " found in your attack troops list") +If $troopPosition = -1 Or Not $bUseSpell Then +If $bUseSpell Then +SetLog("No " & GetTroopName($iTroopIndex) & " found in your attack troops list") +debugAttackCSV("No " & GetTroopName($iTroopIndex) & " found in your attack troops list") Else -If $g_bDebugSetlog Then SetDebugLog("Discard use " & NameOfTroop($iTroopIndex), $COLOR_DEBUG) +If $g_bDebugSetlog Then SetDebugLog("Discard use " & GetTroopName($iTroopIndex), $COLOR_DEBUG) EndIf Else If $g_iCSVLastTroopPositionDropTroopFromINI <> $troopSlotConst Then @@ -33189,7 +33365,7 @@ $delayDrop = Random($delayDropMin, $delayDropMax, 1) Else $delayDrop = $delayDropMin EndIf -debugAttackCSV(">> delay change drop point: " & $delayDrop) +debugAttackCSV("- delay change drop point: " & $delayDrop) EndIf For $j = 1 To $numbersOfVectors Local $delayDropLast = 0 @@ -33259,7 +33435,7 @@ Else $sleepafter = Int($sleepafterMin) EndIf If $sleepafter > 0 And IsKeepClicksActive() = False Then -debugAttackCSV(">> delay after drop all troops: " & $sleepafter) +debugAttackCSV("- delay after drop all troops: " & $sleepafter) If $sleepafter <= 1000 Then If _Sleep($sleepafter) Then Return If $bHeroDrop = True Then @@ -34749,10 +34925,10 @@ Local $troopPosition = -1 For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][1] <> -1 Then If $g_avAttackTroops[$i][0] = $eGobl Then -If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & NameOfTroop($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & " <<---" & $eGobl, $COLOR_SUCCESS) +If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & GetTroopName($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & " <<---" & $eGobl, $COLOR_SUCCESS) $troopPosition = $i Else -If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & NameOfTroop($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & "", $COLOR_GRAY) +If $g_bDebugSetlog Then SetDebugLog("-*-" & $g_avAttackTroops[$i][0] & " " & GetTroopName($g_avAttackTroops[$i][0]) & " " & $g_avAttackTroops[$i][1] & "", $COLOR_GRAY) EndIf EndIf Next @@ -37133,7 +37309,7 @@ Local $TempKingSlot = $g_iKingSlot Local $TempQueenSlot = $g_iQueenSlot Local $TempWardenSlot = $g_iWardenSlot If $g_iKingSlot >= 11 Or $g_iQueenSlot >= 11 Or $g_iWardenSlot >= 11 Then -If $g_bDraggedAttackBar = False Then DragAttackBar($g_iTotalAttackSlot, False) +If Not $g_bDraggedAttackBar Then DragAttackBar($g_iTotalAttackSlot, False) ElseIf $g_iKingSlot >= 0 And $g_iQueenSlot >= 0 And $g_iWardenSlot >= 0 And($g_iKingSlot < $g_iTotalAttackSlot - 10 Or $g_iQueenSlot < $g_iTotalAttackSlot - 10 Or $g_iWardenSlot < $g_iTotalAttackSlot - 10) Then If $g_bDraggedAttackBar Then DragAttackBar($g_iTotalAttackSlot, True) EndIf @@ -37147,14 +37323,15 @@ SetDebugLog("CheckHeroesHealth() for Queen started ") If _Sleep($DELAYRESPOND) Then Return EndIf If $g_iActivateQueen = 0 Or $g_iActivateQueen = 2 Then -If $g_bCheckQueenPower Then +If $g_bCheckQueenPower And($g_aHeroesTimerActivation[$eHeroArcherQueen] = 0 Or __TimerDiff($g_aHeroesTimerActivation[$eHeroArcherQueen]) > $DELAYCHECKHEROESHEALTH) Then Local $aQueenHealthCopy = $aQueenHealth -$aQueenHealthCopy[0] = GetXPosOfArmySlot($TempQueenSlot, 68) + $aQueenHealthCopy[4] +Local $aSlotPosition = GetSlotPosition($TempQueenSlot) +$aQueenHealthCopy[0] = $aSlotPosition[0] + $aQueenHealthCopy[4] Local $QueenPixelColor = _GetPixelColor($aQueenHealthCopy[0], $aQueenHealthCopy[1], $g_bCapturePixel) If $g_bDebugSetlog Then SetDebugLog(" Queen _GetPixelColor(" & $aQueenHealthCopy[0] & "," & $aQueenHealthCopy[1] & "): " & $QueenPixelColor, $COLOR_DEBUG) If Not _CheckPixel2($aQueenHealthCopy, $QueenPixelColor, "Red+Blue") Then SetLog("Queen is getting weak, Activating Queen's ability", $COLOR_INFO) -SelectDropTroop($TempQueenSlot) +SelectDropTroop($TempQueenSlot, 2, Default, False) $g_iCSVLastTroopPositionDropTroopFromINI = $g_iQueenSlot $g_bCheckQueenPower = False EndIf @@ -37167,7 +37344,7 @@ $aDisplayTime[$eHeroArcherQueen] = Ceiling(__TimerDiff($g_aHeroesTimerActivation EndIf If(Int($g_iDelayActivateQueen) / 1000) <= $aDisplayTime[$eHeroArcherQueen] Then SetLog("Activating Queen's ability after " & $aDisplayTime[$eHeroArcherQueen] & "'s", $COLOR_INFO) -SelectDropTroop($TempQueenSlot) +SelectDropTroop($TempQueenSlot, 2, Default, False) $g_iCSVLastTroopPositionDropTroopFromINI = $g_iQueenSlot $g_bCheckQueenPower = False $g_aHeroesTimerActivation[$eHeroArcherQueen] = 0 @@ -37179,14 +37356,15 @@ SetDebugLog("CheckHeroesHealth() for King started ") If _Sleep($DELAYRESPOND) Then Return EndIf If $g_iActivateKing = 0 Or $g_iActivateKing = 2 Then -If $g_bCheckKingPower Then +If $g_bCheckKingPower And($g_aHeroesTimerActivation[$eHeroBarbarianKing] = 0 Or __TimerDiff($g_aHeroesTimerActivation[$eHeroBarbarianKing]) > $DELAYCHECKHEROESHEALTH) Then Local $aKingHealthCopy = $aKingHealth -$aKingHealthCopy[0] = GetXPosOfArmySlot($TempKingSlot, 68) + $aKingHealthCopy[4] +Local $aSlotPosition = GetSlotPosition($TempKingSlot) +$aKingHealthCopy[0] = $aSlotPosition[0] + $aKingHealthCopy[4] Local $KingPixelColor = _GetPixelColor($aKingHealthCopy[0], $aKingHealthCopy[1], $g_bCapturePixel) -If $g_bDebugSetlog Then SetDebugLog(" King _GetPixelColor(" & $aKingHealthCopy[0] & "," & $aKingHealthCopy[1] & "): " & $KingPixelColor, $COLOR_DEBUG) +If $g_bDebugSetlog Then SetDebugLog("King _GetPixelColor(" & $aKingHealthCopy[0] & "," & $aKingHealthCopy[1] & "): " & $KingPixelColor, $COLOR_DEBUG) If Not _CheckPixel2($aKingHealthCopy, $KingPixelColor, "Red+Blue") Then SetLog("King is getting weak, Activating King's ability", $COLOR_INFO) -SelectDropTroop($TempKingSlot) +SelectDropTroop($TempKingSlot, 2, Default, False) $g_iCSVLastTroopPositionDropTroopFromINI = $g_iKingSlot $g_bCheckKingPower = False EndIf @@ -37199,7 +37377,7 @@ $aDisplayTime[$eHeroBarbarianKing] = Ceiling(__TimerDiff($g_aHeroesTimerActivati EndIf If(Int($g_iDelayActivateKing) / 1000) <= $aDisplayTime[$eHeroBarbarianKing] Then SetLog("Activating King's ability after " & $aDisplayTime[$eHeroBarbarianKing] & "'s", $COLOR_INFO) -SelectDropTroop($TempKingSlot) +SelectDropTroop($TempKingSlot, 2, Default, False) $g_iCSVLastTroopPositionDropTroopFromINI = $g_iKingSlot $g_bCheckKingPower = False $g_aHeroesTimerActivation[$eHeroBarbarianKing] = 0 @@ -37210,15 +37388,16 @@ If $g_bDebugSetlog Then SetDebugLog("CheckHeroesHealth() for Warden started ") If _Sleep($DELAYRESPOND) Then Return EndIf -If $g_iActivateWarden = 0 Or $g_iActivateWarden = 2 Then +If $g_iActivateWarden = 0 Or $g_iActivateWarden = 2 And($g_aHeroesTimerActivation[$eHeroGrandWarden] = 0 Or __TimerDiff($g_aHeroesTimerActivation[$eHeroGrandWarden]) > $DELAYCHECKHEROESHEALTH) Then If $g_bCheckWardenPower Then Local $aWardenHealthCopy = $aWardenHealth -$aWardenHealthCopy[0] = GetXPosOfArmySlot($TempWardenSlot, 68) + $aWardenHealthCopy[4] +Local $aSlotPosition = GetSlotPosition($TempWardenSlot) +$aWardenHealthCopy[0] = $aSlotPosition[0] + $aWardenHealthCopy[4] Local $WardenPixelColor = _GetPixelColor($aWardenHealthCopy[0], $aWardenHealthCopy[1], $g_bCapturePixel) If $g_bDebugSetlog Then SetDebugLog(" Grand Warden _GetPixelColor(" & $aWardenHealthCopy[0] & "," & $aWardenHealthCopy[1] & "): " & $WardenPixelColor, $COLOR_DEBUG) If Not _CheckPixel2($aWardenHealthCopy, $WardenPixelColor, "Red+Blue") Then SetLog("Grand Warden is getting weak, Activating Warden's ability", $COLOR_INFO) -SelectDropTroop($TempWardenSlot) +SelectDropTroop($TempWardenSlot, 2, Default, False) $g_iCSVLastTroopPositionDropTroopFromINI = $g_iWardenSlot $g_bCheckWardenPower = False EndIf @@ -37231,7 +37410,7 @@ $aDisplayTime[$eHeroGrandWarden] = Ceiling(__TimerDiff($g_aHeroesTimerActivation EndIf If(Int($g_iDelayActivateWarden) / 1000) <= $aDisplayTime[$eHeroGrandWarden] Then SetLog("Activating Warden's ability after " & $aDisplayTime[$eHeroGrandWarden] & "'s", $COLOR_INFO) -SelectDropTroop($TempWardenSlot) +SelectDropTroop($TempWardenSlot, 2, Default, False) $g_iCSVLastTroopPositionDropTroopFromINI = $g_iWardenSlot $g_bCheckWardenPower = False $g_aHeroesTimerActivation[$eHeroGrandWarden] = 0 @@ -37241,14 +37420,14 @@ EndIf If _Sleep($DELAYRESPOND) Then Return EndIf EndFunc -Func dropCC($x, $y, $slot) +Func dropCC($iX, $iY, $iCCSlot) Local $test1 = False Local $test2 = False If $g_iMatchMode = $MA And $g_abAttackDropCC[$DB] Then $test1 = True If $g_iMatchMode <> $MA Then If($g_iMatchMode <> $DB And $g_iMatchMode <> $LB And $g_iMatchMode <> $MA) Or $g_abAttackDropCC[$g_iMatchMode] Then $test2 = True EndIf -If $slot <> -1 And($test1 Or $test2) Then +If $iCCSlot <> -1 And($test1 Or $test2) Then If $g_bPlannedDropCCHoursEnable = True Then Local $hour = StringSplit(_NowTime(4), ":", $STR_NOCOUNT) If $g_abPlannedDropCCHours[$hour[0]] = False Then @@ -37260,32 +37439,32 @@ If $g_bUseCCBalanced = True Then If Number($g_iTroopsReceived) <> 0 Then If Number(Number($g_iTroopsDonated) / Number($g_iTroopsReceived)) >=(Number($g_iCCDonated) / Number($g_iCCReceived)) Then SetLog("Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") >= " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) -Click(GetXPosOfArmySlot($slot, 68), 595 + $g_iBottomOffsetY, 1, $DELAYDROPCC2, "#0086") +SelectDropTroop($iCCSlot) If _Sleep($DELAYDROPCC1) Then Return -AttackClick($x, $y, 1, 0, 0, "#0087") +AttackClick($iX, $iY, 1, 0, 0, "#0087") Else SetLog("No Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") < " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) EndIf Else If Number(Number($g_iTroopsDonated) / 1) >=(Number($g_iCCDonated) / Number($g_iCCReceived)) Then SetLog("Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") >= " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) -Click(GetXPosOfArmySlot($slot, 68), 595 + $g_iBottomOffsetY, 1, $DELAYDROPCC2, "#0088") +SelectDropTroop($iCCSlot) If _Sleep($DELAYDROPCC1) Then Return -AttackClick($x, $y, 1, 0, 0, "#0089") +AttackClick($iX, $iY, 1, 0, 0, "#0089") Else SetLog("No Dropping Siege/Clan Castle, donated (" & $g_iTroopsDonated & ") / received (" & $g_iTroopsReceived & ") < " & $g_iCCDonated & "/" & $g_iCCReceived, $COLOR_INFO) EndIf EndIf Else SetLog("Dropping Siege/Clan Castle", $COLOR_INFO) -Click(GetXPosOfArmySlot($slot, 68), 595 + $g_iBottomOffsetY, 1, $DELAYDROPCC2, "#0090") +SelectDropTroop($iCCSlot) If _Sleep($DELAYDROPCC1) Then Return -AttackClick($x, $y, 1, 0, 0, "#0091") +AttackClick($iX, $iY, 1, 0, 0, "#0091") EndIf EndIf EndFunc -Func dropHeroes($x, $y, $KingSlot = -1, $QueenSlot = -1, $WardenSlot = -1) -If $g_bDebugSetlog Then SetDebugLog("dropHeroes KingSlot " & $KingSlot & " QueenSlot " & $QueenSlot & " WardenSlot " & $WardenSlot & " matchmode " & $g_iMatchMode, $COLOR_DEBUG) +Func dropHeroes($iX, $iY, $iKingSlotNumber = -1, $iQueenSlotNumber = -1, $iWardenSlotNumber = -1) +If $g_bDebugSetlog Then SetDebugLog("dropHeroes $iKingSlotNumber " & $iKingSlotNumber & " $iQueenSlotNumber " & $iQueenSlotNumber & " $iWardenSlotNumber " & $iWardenSlotNumber & " matchmode " & $g_iMatchMode, $COLOR_DEBUG) If _Sleep($DELAYDROPHEROES1) Then Return Local $bDropKing = False Local $bDropQueen = False @@ -37296,54 +37475,54 @@ $MatchMode = $DB Else $MatchMode = $g_iMatchMode EndIf -If $KingSlot <> -1 And(($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroKing) = $eHeroKing) Then $bDropKing = True -If $QueenSlot <> -1 And(($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroQueen) = $eHeroQueen) Then $bDropQueen = True -If $WardenSlot <> -1 And(($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroWarden) = $eHeroWarden) Then $bDropWarden = True +If $iKingSlotNumber <> -1 And(($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroKing) = $eHeroKing) Then $bDropKing = True +If $iQueenSlotNumber <> -1 And(($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroQueen) = $eHeroQueen) Then $bDropQueen = True +If $iWardenSlotNumber <> -1 And(($MatchMode <> $DB And $MatchMode <> $LB) Or BitAND($g_aiAttackUseHeroes[$MatchMode], $eHeroWarden) = $eHeroWarden) Then $bDropWarden = True If $g_bDebugSetlog Then SetDebugLog("drop KING = " & $bDropKing, $COLOR_DEBUG) If $g_bDebugSetlog Then SetDebugLog("drop QUEEN = " & $bDropQueen, $COLOR_DEBUG) If $g_bDebugSetlog Then SetDebugLog("drop WARDEN = " & $bDropWarden, $COLOR_DEBUG) If $bDropKing Then SetLog("Dropping King", $COLOR_INFO) -Click(GetXPosOfArmySlot($KingSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0092") +SelectDropTroop($iKingSlotNumber, 1, Default, False) If _Sleep($DELAYDROPHEROES2) Then Return -AttackClick($x, $y, 1, 0, 0, "#0093") +AttackClick($iX, $iY, 1, 0, 0, "#0093") If Not $g_bDropKing Then $g_bCheckKingPower = True Else SetDebugLog("King dropped 2nd time, Check Power flag not changed") EndIf $g_bDropKing = True -If $g_iActivateKing = 1 Or $g_iActivateKing = 2 Then $g_aHeroesTimerActivation[$eHeroBarbarianKing] = __TimerInit() +$g_aHeroesTimerActivation[$eHeroBarbarianKing] = __TimerInit() If _Sleep($DELAYDROPHEROES1) Then Return EndIf If _Sleep($DELAYDROPHEROES1) Then Return If $bDropQueen Then SetLog("Dropping Queen", $COLOR_INFO) -Click(GetXPosOfArmySlot($QueenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0094") +SelectDropTroop($iQueenSlotNumber, 1, Default, False) If _Sleep($DELAYDROPHEROES2) Then Return -AttackClick($x, $y, 1, 0, 0, "#0095") +AttackClick($iX, $iY, 1, 0, 0, "#0095") If Not $g_bDropQueen Then $g_bCheckQueenPower = True Else SetDebugLog("Queen dropped 2nd time, Check Power flag not changed") EndIf $g_bDropQueen = True -If $g_iActivateQueen = 1 Or $g_iActivateQueen = 2 Then $g_aHeroesTimerActivation[$eHeroArcherQueen] = __TimerInit() +$g_aHeroesTimerActivation[$eHeroArcherQueen] = __TimerInit() If _Sleep($DELAYDROPHEROES1) Then Return EndIf If _Sleep($DELAYDROPHEROES1) Then Return If $bDropWarden Then SetLog("Dropping Grand Warden", $COLOR_INFO) -Click(GetXPosOfArmySlot($WardenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#X998") +SelectDropTroop($iWardenSlotNumber, 1, Default, False) If _Sleep($DELAYDROPHEROES2) Then Return -AttackClick($x, $y, 1, 0, 0, "#x999") +AttackClick($iX, $iY, 1, 0, 0, "#x999") If Not $g_bDropWarden Then $g_bCheckWardenPower = True Else SetDebugLog("Warden dropped 2nd time, Check Power flag not changed") EndIf $g_bDropWarden = True -If $g_iActivateWarden = 1 Or $g_iActivateWarden = 2 Then $g_aHeroesTimerActivation[$eHeroGrandWarden] = __TimerInit() +$g_aHeroesTimerActivation[$eHeroGrandWarden] = __TimerInit() If _Sleep($DELAYDROPHEROES1) Then Return EndIf EndFunc @@ -37475,8 +37654,10 @@ Return $eLava Case 19 Return $eBowl Case 20 -Return "CC" +Return $eIceG Case 21 +Return "CC" +Case 22 Return "HEROES" EndSwitch EndFunc @@ -37555,14 +37736,16 @@ Return 2 Case 19 Return 0 Case 20 -Return 1 +Return 2 Case 21 Return 1 +Case 22 +Return 1 EndSwitch EndFunc Func MatchSidesDrop($Num) Switch _GUICtrlComboBox_GetCurSel($g_ahCmbDropOrder[$Num]) -Case 0 To 19 +Case 0 To 20 If $g_aiAttackStdDropSides[$g_iMatchMode] = 0 Then Return 1 If $g_aiAttackStdDropSides[$g_iMatchMode] = 1 Then Return 2 If $g_aiAttackStdDropSides[$g_iMatchMode] = 2 Then Return 3 @@ -37570,21 +37753,15 @@ If $g_aiAttackStdDropSides[$g_iMatchMode] = 3 Then Return 4 If $g_aiAttackStdDropSides[$g_iMatchMode] = 4 Then Return 4 If $g_aiAttackStdDropSides[$g_iMatchMode] = 5 Then Return 1 If $g_aiAttackStdDropSides[$g_iMatchMode] = 6 Then Return 1 -Case 20 -Return 1 Case 21 Return 1 +Case 22 +Return 1 EndSwitch EndFunc Func MatchTroopWaveNb($Num) Return 1 EndFunc -Func GetXPosOfArmySlot($slotNumber, $xOffsetFor11Slot) -If $slotNumber < 0 Or $slotNumber + 1 > UBound($g_avAttackTroops) Then -Return 0 -EndIf -Return $g_avAttackTroops[$slotNumber][2] -EndFunc Func GetSlotIndexFromXPos($xPos) For $slot = 0 To 11 If $xPos < 68 +($slot * 72) Then @@ -37601,9 +37778,7 @@ If $g_avAttackTroops[$i][0] = $troopKind Then If $g_avAttackTroops[$i][1] < 1 Then Return False $troop = $i $troopNb = Ceiling($g_avAttackTroops[$i][1] / $maxWaveNb) -Local $plural = 0 -If $troopNb > 1 Then $plural = 1 -$name = NameOfTroop($troopKind, $plural) +$name = GetTroopName($troopKind, $troopNb) EndIf Next If $g_bDebugSetlog Then SetDebugLog("Dropping : " & $troopNb & " " & $name, $COLOR_DEBUG) @@ -37626,43 +37801,37 @@ Local $pixelRandomDrop[2] Local $pixelRandomDropcc[2] If($g_abAttackStdSmartAttack[$g_iMatchMode]) Then For $i = 0 To UBound($listInfoDeploy) - 1 -Local $troop = -1 -Local $troopNb = 0 -Local $name = "" -Local $troopKind = $listInfoDeploy[$i][0] -Local $nbSides = $listInfoDeploy[$i][1] -Local $waveNb = $listInfoDeploy[$i][2] -Local $maxWaveNb = $listInfoDeploy[$i][3] -Local $slotsPerEdge = $listInfoDeploy[$i][4] -If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": USE " & $troopKind & " SIDES " & $nbSides & " WAVE " & $waveNb & " XWAVE " & $maxWaveNb & " SLOTXEDGE " & $slotsPerEdge, $COLOR_DEBUG) -If(IsNumber($troopKind)) Then -For $j = 0 To UBound($g_avAttackTroops) - 1 -If $g_avAttackTroops[$j][0] = $troopKind Then -$troop = $j -$troopNb = Ceiling($g_avAttackTroops[$j][1] / $maxWaveNb) -Local $plural = 0 -If $troopNb > 1 Then $plural = 1 -$name = NameOfTroop($troopKind, $plural) -EndIf -Next -EndIf -If($troop <> -1 And $troopNb > 0) Or IsString($troopKind) Then +Local $iFoundTroopAt = -1, $iTroopAmount = 0, $sTroopName +Local $vTroopIndex = $listInfoDeploy[$i][0] +Local $iNumberSides = $listInfoDeploy[$i][1] +Local $iNumberWaves = $listInfoDeploy[$i][2] +Local $iMaxNumberWaves = $listInfoDeploy[$i][3] +Local $iSlotsPerEdge = $listInfoDeploy[$i][4] +If $g_bDebugSetlog Then SetDebugLog("**ListInfoDeploy row " & $i & ": Use: " & $vTroopIndex & "|Sides: " & $iNumberSides & "|Wave: " & $iNumberWaves & "|Max Wavess: " & $iMaxNumberWaves & "|Slots per Edge " & $iSlotsPerEdge, $COLOR_DEBUG) +If IsNumber($vTroopIndex) Then +$iFoundTroopAt = _ArraySearch($g_avAttackTroops, $vTroopIndex, 0, 0, 0, 0, 1, 0) +If $iFoundTroopAt <> -1 Then +$iTroopAmount = Ceiling($g_avAttackTroops[$iFoundTroopAt][1] / $iMaxNumberWaves) +$sTroopName = GetTroopName($vTroopIndex, $iTroopAmount) +EndIf +EndIf +If($iFoundTroopAt <> -1 And $iTroopAmount > 0) Or IsString($vTroopIndex) Then Local $listInfoDeployTroopPixel -If(UBound($listListInfoDeployTroopPixel) < $waveNb) Then -ReDim $listListInfoDeployTroopPixel[$waveNb] +If(UBound($listListInfoDeployTroopPixel) < $iNumberWaves) Then +ReDim $listListInfoDeployTroopPixel[$iNumberWaves] Local $newListInfoDeployTroopPixel[0] -$listListInfoDeployTroopPixel[$waveNb - 1] = $newListInfoDeployTroopPixel +$listListInfoDeployTroopPixel[$iNumberWaves - 1] = $newListInfoDeployTroopPixel EndIf -$listInfoDeployTroopPixel = $listListInfoDeployTroopPixel[$waveNb - 1] +$listInfoDeployTroopPixel = $listListInfoDeployTroopPixel[$iNumberWaves - 1] ReDim $listInfoDeployTroopPixel[UBound($listInfoDeployTroopPixel) + 1] -If(IsString($troopKind)) Then -Local $arrCCorHeroes[1] = [$troopKind] +If(IsString($vTroopIndex)) Then +Local $arrCCorHeroes[1] = [$vTroopIndex] $listInfoDeployTroopPixel[UBound($listInfoDeployTroopPixel) - 1] = $arrCCorHeroes Else -Local $infoDropTroop = DropTroop2($troop, $nbSides, $troopNb, $slotsPerEdge, $name) +Local $infoDropTroop = DropTroop2($iFoundTroopAt, $iNumberSides, $iTroopAmount, $iSlotsPerEdge, $sTroopName) $listInfoDeployTroopPixel[UBound($listInfoDeployTroopPixel) - 1] = $infoDropTroop EndIf -$listListInfoDeployTroopPixel[$waveNb - 1] = $listInfoDeployTroopPixel +$listListInfoDeployTroopPixel[$iNumberWaves - 1] = $listInfoDeployTroopPixel EndIf Next If(($g_abAttackStdSmartNearCollectors[$g_iMatchMode][0] Or $g_abAttackStdSmartNearCollectors[$g_iMatchMode][1] Or $g_abAttackStdSmartNearCollectors[$g_iMatchMode][2]) And UBound($g_aiPixelNearCollector) = 0) Then @@ -37832,98 +38001,6 @@ Next EndIf Return True EndFunc -Func NameOfTroop($iKind, $iPlural = 0) -Local $sTroopname -Switch $iKind -Case $eBarb -$sTroopname = "Barbarian" -Case $eArch -$sTroopname = "Archer" -Case $eGobl -$sTroopname = "Goblin" -Case $eGiant -$sTroopname = "Giant" -Case $eWall -$sTroopname = "Wall Breaker" -Case $eWiza -$sTroopname = "Wizard" -Case $eBall -$sTroopname = "Balloon" -Case $eHeal -$sTroopname = "Healer" -Case $eDrag -$sTroopname = "Dragon" -Case $ePekk -$sTroopname = "Pekka" -Case $eBabyD -$sTroopname = "Baby Dragon" -Case $eMine -$sTroopname = "Miner" -Case $eEDrag -$sTroopname = "Electro Dragon" -Case $eMini -$sTroopname = "Minion" -Case $eHogs -$sTroopname = "Hog Rider" -Case $eValk -$sTroopname = "Valkyrie" -Case $eWitc -$sTroopname = "Witch" -Case $eGole -$sTroopname = "Golem" -Case $eLava -$sTroopname = "Lava Hound" -Case $eBowl -$sTroopname = "Bowler" -Case $eIceG -$sTroopname = "Ice Golem" -Case $eKing -$sTroopname = "King" -$iPlural = 0 -Case $eQueen -$sTroopname = "Queen" -$iPlural = 0 -Case $eWarden -$sTroopname = "Grand Warden" -$iPlural = 0 -Case $eCastle -$sTroopname = "Clan Castle" -$iPlural = 0 -Case $eLSpell -$sTroopname = "Lightning Spell" -Case $eHSpell -$sTroopname = "Heal Spell" -Case $eRSpell -$sTroopname = "Rage Spell" -Case $eJSpell -$sTroopname = "Jump Spell" -Case $eFSpell -$sTroopname = "Freeze Spell" -Case $eCSpell -$sTroopname = "Clone Spell" -Case $ePSpell -$sTroopname = "Poison Spell" -Case $eESpell -$sTroopname = "Earthquake Spell" -Case $eHaSpell -$sTroopname = "Haste Spell" -Case $eSkSpell -$sTroopname = "Skeleton Spell" -Case $eBtSpell -$sTroopname = "Bat Spell" -Case $eWallW -$sTroopname = "Wall Wrecker" -Case $eBattleB -$sTroopname = "Battle Blimp" -Case $eStoneS -$sTroopname = "Stone Slammer" -Case Else -Return "" -EndSwitch -If $iPlural = 1 And $iKind = $eWitc Then $sTroopname &= "e" -If $iPlural = 1 Then $sTroopname &= "s" -Return $sTroopname -EndFunc Func OldDropTroop($troop, $position, $nbperspot) SelectDropTroop($troop) If _Sleep($DELAYOLDDROPTROOP1) Then Return @@ -37932,21 +38009,20 @@ Click($position[$i][0], $position[$i][1], $nbperspot, 1, "#0110") If _Sleep($DELAYOLDDROPTROOP2) Then Return Next EndFunc -Func ReadTroopQuantity($Troop, $CheckSelectedSlot = False, $bNeedNewCapture = True) -Local $iAmount -Switch $CheckSelectedSlot +Func ReadTroopQuantity($iSlotNumber, $bCheckSelectedSlot = False, $bNeedNewCapture = True) +Local $iAmount, $aSlotPosition = GetSlotPosition($iSlotNumber) +Switch $bCheckSelectedSlot Case False -$iAmount = getTroopCountSmall(GetXPosOfArmySlot($Troop, 47), 640) +$iAmount = getTroopCountSmall($aSlotPosition[0], $aSlotPosition[1]) If $iAmount = "" Then -$iAmount = getTroopCountBig(GetXPosOfArmySlot($Troop, 47), 633) +$iAmount = getTroopCountBig($aSlotPosition[0], $aSlotPosition[1] - 3) EndIf Case Else -Local $rGetXPosOfArmySlot = GetXPosOfArmySlot($Troop, 47) -Local $isTheSlotSelected = IsSlotSelected($Troop, $bNeedNewCapture) +Local $isTheSlotSelected = IsSlotSelected($iSlotNumber, $bNeedNewCapture) If Not $isTheSlotSelected Then -$iAmount = Number(getTroopCountSmall($rGetXPosOfArmySlot, 640)) +$iAmount = Number(getTroopCountSmall($aSlotPosition[0], $aSlotPosition[1])) Else -$iAmount = Number(getTroopCountBig($rGetXPosOfArmySlot, 633)) +$iAmount = Number(getTroopCountBig($aSlotPosition[0], $aSlotPosition[1] - 3)) EndIf EndSwitch Return Number($iAmount) @@ -37966,8 +38042,22 @@ Else Return _ColorCheck( Hex(_GDIPlus_BitmapGetPixel(_GDIPlus_BitmapCreateFromHBITMAP($g_hHBitmap2),($iStartX +($iOffset * $iSlotIndex)), $iY), 6), Hex(0xFFFFFF, 6), 20) EndIf EndFunc -Func SelectDropTroop($Troop) -If IsAttackPage() Then Click(GetXPosOfArmySlot($Troop, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0111") +Func SelectDropTroop($iSlotIndex, $iClicks = 1, $iDelay = Default, $bCheckAttackPage = Default) +If $iDelay = Default Then $iDelay = 0 +If $bCheckAttackPage = Default Then $bCheckAttackPage = True +If Not $bCheckAttackPage Or IsAttackPage() Then ClickP(GetSlotPosition($iSlotIndex), $iClicks, $iDelay, "#0111") +EndFunc +Func GetSlotPosition($iSlotIndex, $bOCRPosition = False) +Local $aiReturnPosition[2] = [0, 0] +If $iSlotIndex < 0 Or $iSlotIndex + 1 > UBound($g_avAttackTroops, 1) Then Return $aiReturnPosition +If Not $bOCRPosition Then +$aiReturnPosition[0] = $g_avAttackTroops[$iSlotIndex][2] +$aiReturnPosition[1] = $g_avAttackTroops[$iSlotIndex][3] +Else +$aiReturnPosition[0] = $g_avAttackTroops[$iSlotIndex][4] +$aiReturnPosition[1] = $g_avAttackTroops[$iSlotIndex][5] +EndIf +Return $aiReturnPosition EndFunc Func SetSleep($type) If IsKeepClicksActive() = True Then Return 0 @@ -38189,12 +38279,12 @@ Next If $Spells[0][4] + $Spells[1][4] + $Spells[2][4] = 0 Then $spellsLeftString &= "None" Else -If $Spells[2][4] > 0 Then $spellsLeftString &= $Spells[2][4] & " " & NameOfTroop($Spells[2][1], 1) +If $Spells[2][4] > 0 Then $spellsLeftString &= $Spells[2][4] & " " & GetTroopName($Spells[2][1], 2) If $Spells[2][4] > 0 And $Spells[0][4] + $Spells[1][4] > 0 Then $spellsLeftString &= ", " -If $Spells[0][4] + $Spells[1][4] > 0 Then $spellsLeftString &= $Spells[0][4] + $Spells[1][4] & " " & NameOfTroop($Spells[1][1], 1) +If $Spells[0][4] + $Spells[1][4] > 0 Then $spellsLeftString &= $Spells[0][4] + $Spells[1][4] & " " & GetTroopName($Spells[1][1], 2) EndIf If $drillStealableString <> "Drills Lvl/Estimated Amount left: " Then -If $g_bNoobZap = False Then +If Not $g_bNoobZap Then SetLog($drillStealableString, $COLOR_INFO) Else If $g_bDebugSmartZap = True Then SetLog($drillStealableString, $COLOR_DEBUG) @@ -38314,19 +38404,19 @@ If $iTroops > 0 Then For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][0] = $eLSpell Then If $aSpells[0][4] = 0 Then -If $g_bDebugSmartZap = True Then SetLog(NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog(GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[0][2] = $i $aSpells[0][3] = Number($g_iLSpellLevel) $aSpells[0][4] = $g_avAttackTroops[$i][1] Else -If $g_bDebugSmartZap = True Then SetLog("Donated " & NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) +If $g_bDebugSmartZap = True Then SetLog("Donated " & GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[1][2] = $i $aSpells[1][3] = Number($g_iLSpellLevel) $aSpells[1][4] = $g_avAttackTroops[$i][1] EndIf EndIf If $g_avAttackTroops[$i][0] = $eESpell Then -If $g_bDebugSmartZap = True Then SetLog(NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) +If $g_bDebugSmartZap = True Then SetLog(GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[2][2] = $i $aSpells[2][3] = Number($g_iESpellLevel) $aSpells[2][4] = $g_avAttackTroops[$i][1] @@ -38338,21 +38428,21 @@ SetLog("No lightning spells trained, time to go home!", $COLOR_ERROR) Return $performedZap Else If $aSpells[0][4] > 0 Then -SetLog(" - Number of " & NameOfTroop($aSpells[0][1], 1) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) +SetLog(" - Number of " & GetTroopName($aSpells[0][1], 2) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) EndIf If $aSpells[1][4] > 0 Then -SetLog(" - Number of Donated " & NameOfTroop($aSpells[1][1], 1) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) +SetLog(" - Number of Donated " & GetTroopName($aSpells[1][1], 2) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) EndIf EndIf If $aSpells[2][4] > 0 And $g_bEarthQuakeZap = True Then -SetLog(" - Number of " & NameOfTroop($aSpells[2][1], 1) & " (Lvl " & $aSpells[2][3] & "): " & Number($aSpells[2][4]), $COLOR_INFO) +SetLog(" - Number of " & GetTroopName($aSpells[2][1], 2) & " (Lvl " & $aSpells[2][3] & "): " & Number($aSpells[2][4]), $COLOR_INFO) Else $aSpells[2][4] = 0 EndIf If $bZapDrills Then If(Number($g_iSearchDark) < Number($minDE)) And $g_bNoobZap = True Then SetLog("Dark Elixir is below minimum value [" & Number($g_iSmartZapMinDE) & "]!", $COLOR_INFO) -If $g_bDebugSmartZap = True Then SetLog("$g_iSearchDark|Current DE value: " & Number($g_iSearchDark), $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog("$g_iSearchDark|Current DE value: " & Number($g_iSearchDark), $COLOR_DEBUG) $bZapDrills = False ElseIf Number($g_iSearchDark) <($g_aDrillLevelTotal[3 - $drillLvlOffset] / $g_aDrillLevelHP[3 - $drillLvlOffset] * $g_fDarkStealFactor * $g_aLSpellDmg[$aSpells[0][3] - 1] * $g_fDarkFillLevel) Then SetLog("There is less Dark Elixir(" & Number($g_iSearchDark) & ") than", $COLOR_INFO) @@ -38360,9 +38450,9 @@ SetLog("gain per zap for a single Lvl " & 3 - Number($drillLvlOffset) & " drill( SetLog("Base is not worth a Zap!", $COLOR_INFO) $bZapDrills = False Else -If $g_bDebugSmartZap = True Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark) & " | $g_iSmartZapMinDE = " & Number($g_iSmartZapMinDE), $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark) & " | $g_iSmartZapMinDE = " & Number($g_iSmartZapMinDE), $COLOR_DEBUG) EndIf -If $g_bDebugSmartZap = True Then +If $g_bDebugSmartZap Then SetLog("$g_iSmartZapExpectedDE| Expected DE value:" & Number($g_iSmartZapExpectedDE), $COLOR_DEBUG) SetLog("$g_abStopAtkNoLoot1Enable[$DB] = " & $g_abStopAtkNoLoot1Enable[$DB] & ", $g_aiStopAtkNoLoot1Time[$DB] = " & $g_aiStopAtkNoLoot1Time[$DB] & "s", $COLOR_DEBUG) EndIf @@ -38533,12 +38623,12 @@ EndIf $bZapDrills = False ExitLoop Else -If $g_bDebugSmartZap = True Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark), $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog("$g_iSearchDark = " & Number($g_iSearchDark), $COLOR_DEBUG) EndIf -If $skippedZap = False Then -If $g_bDebugSmartZap = True Then SetLog("$oldSearchDark = [" & Number($oldSearchDark) & "] - $g_iSearchDark = [" & Number($g_iSearchDark) & "]", $COLOR_DEBUG) +If Not $skippedZap Then +If $g_bDebugSmartZap Then SetLog("$oldSearchDark = [" & Number($oldSearchDark) & "] - $g_iSearchDark = [" & Number($g_iSearchDark) & "]", $COLOR_DEBUG) $strikeGain = Number($oldSearchDark - $g_iSearchDark) -If $g_bDebugSmartZap = True Then SetLog("$strikeGain = " & Number($strikeGain), $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog("$strikeGain = " & Number($strikeGain), $COLOR_DEBUG) $expectedDE = -1 If $Spellused = $eESpell Then $g_iNumEQSpellsUsed += 1 @@ -38563,7 +38653,7 @@ Else $expectedDE = $g_iSmartZapExpectedDE EndIf EndIf -If $g_bDebugSmartZap = True Then SetLog("$expectedDE = " & Number($expectedDE), $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog("$expectedDE = " & Number($expectedDE), $COLOR_DEBUG) If $strikeGain < $expectedDE And $expectedDE <> -1 Then SetLog("Gained: " & $strikeGain & ", Expected: " & $expectedDE, $COLOR_INFO) If $aCluster <> -1 Then @@ -38612,7 +38702,7 @@ Local $iTroops = PrepareAttack($g_iMatchMode, True) If $iTroops > 0 Then For $i = 0 To UBound($g_avAttackTroops) - 1 If $g_avAttackTroops[$i][0] = $eLSpell Then -If $g_bDebugSmartZap = True Then SetLog("Donated " & NameOfTroop($g_avAttackTroops[$i][0], 0) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) +If $g_bDebugSmartZap Then SetLog("Donated " & GetTroopName($g_avAttackTroops[$i][0]) & ": " & $g_avAttackTroops[$i][1], $COLOR_DEBUG) $aSpells[1][2] = $i $aSpells[1][3] = Number($g_iLSpellLevel) $aSpells[1][4] = $g_avAttackTroops[$i][1] @@ -38620,7 +38710,7 @@ EndIf Next EndIf If $aSpells[1][4] > 0 Then -SetLog("Woohoo, found a donated " & NameOfTroop($aSpells[1][1], 0) & " (Lvl " & $aSpells[1][3] & ").", $COLOR_INFO) +SetLog("Woohoo, found a donated " & GetTroopName($aSpells[1][1]) & " (Lvl " & $aSpells[1][3] & ").", $COLOR_INFO) EndIf EndIf WEnd @@ -38638,10 +38728,10 @@ SetLog("No lightning spells left, time to go home!", $COLOR_ERROR) Return $performedZap Else If $aSpells[0][4] > 0 Then -SetLog(" - Number of " & NameOfTroop($aSpells[0][1], 1) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) +SetLog(" - Number of " & GetTroopName($aSpells[0][1], 2) & " (Lvl " & $aSpells[0][3] & "): " & Number($aSpells[0][4]), $COLOR_INFO) EndIf If $aSpells[1][4] > 0 Then -SetLog(" - Number of Donated " & NameOfTroop($aSpells[1][1], 1) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) +SetLog(" - Number of Donated " & GetTroopName($aSpells[1][1], 2) & " (Lvl " & $aSpells[1][3] & "): " & Number($aSpells[1][4]), $COLOR_INFO) EndIf EndIf Local $iPercentageNeeded = 50 - getOcrOverAllDamage(780, 527 + $g_iBottomOffsetY) @@ -38690,13 +38780,13 @@ $iSpell = $i EndIf Next If $Spells[$iSpell][2] > -1 Then -SetLog("Dropping " & $Spells[$iSpell][0] & " " & String(NameOfTroop($Spells[$iSpell][1], 0)), $COLOR_ACTION) +SetLog("Dropping " & $Spells[$iSpell][0] & " " & String(GetTroopName($Spells[$iSpell][1])), $COLOR_ACTION) SelectDropTroop($Spells[$iSpell][2]) If _Sleep($DELAYCASTSPELL1) Then Return If IsAttackPage() Then Click($x, $y, 1, 0, "#0029") $Spells[$iSpell][4] -= 1 Else -If $g_bDebugSmartZap = True Then SetLog("No " & String(NameOfTroop($Spells[$iSpell][1], 0)) & " Found", $COLOR_DEBUG) +If $g_bDebugSmartZap = True Then SetLog("No " & String(GetTroopName($Spells[$iSpell][1])) & " Found", $COLOR_DEBUG) EndIf Return $Spells[$iSpell][1] EndFunc @@ -39092,12 +39182,12 @@ For $pTroopType = $eKing To $eWarden Local $iHeroIdx = $pTroopType - $eKing For $pMatchMode = $DB To $LB If $g_bDebugSetlogTrain Or $g_bDebugSetlog Then -SetLog("$pTroopType: " & NameOfTroop($pTroopType) & ", $pMatchMode: " & $g_asModeText[$pMatchMode], $COLOR_DEBUG) -SetLog("TroopToBeUsed: " & IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) & ", Hero Wait Status= " & IsSearchModeActiveMini($pMatchMode) & " & " & IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) & " & " &($g_iHeroUpgrading[$iHeroIdx] <> 1) & " & " &($g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1), $COLOR_DEBUG) +SetLog("$pTroopType: " & GetTroopName($pTroopType) & ", $pMatchMode: " & $g_asModeText[$pMatchMode], $COLOR_DEBUG) +SetLog("TroopToBeUsed: " & IsUnitUsed($pMatchMode, $pTroopType) & ", Hero Wait Status= " & IsSearchModeActiveMini($pMatchMode) & " & " & IsUnitUsed($pMatchMode, $pTroopType) & " & " &($g_iHeroUpgrading[$iHeroIdx] <> 1) & " & " &($g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1), $COLOR_DEBUG) SetLog("$g_aiAttackUseHeroes[" & $pMatchMode & "]= " & $g_aiAttackUseHeroes[$pMatchMode] & ", $g_aiSearchHeroWaitEnable[" & $pMatchMode & "]= " & $g_aiSearchHeroWaitEnable[$pMatchMode] & ", $g_iHeroUpgradingBit=" & $g_iHeroUpgradingBit, $COLOR_DEBUG) EndIf $iActiveHero = -1 -If IsSearchModeActiveMini($pMatchMode) And IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$iHeroIdx] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1 Then +If IsSearchModeActiveMini($pMatchMode) And IsUnitUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$iHeroIdx] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$iHeroIdx] = 1 Then $iActiveHero = $iHeroIdx EndIf If $iActiveHero <> -1 And $aHeroResult[$iActiveHero] > 0 Then @@ -39108,7 +39198,7 @@ $g_aiTimeTrain[2] = $aHeroResult[$iActiveHero] EndIf $iTrainWaitCloseFlag = BitOR($iTrainWaitCloseFlag, $TRAINWAIT_HERO) If $g_bDebugSetlogTrain Or $g_bDebugSetlog Then -SetLog("Wait enabled: " & NameOfTroop($pTroopType) & ":" & $g_asModeText[$pMatchMode] & ", $iTrainWaitCloseFlag:" & $iTrainWaitCloseFlag & ", Hero Time:" & $aHeroResult[$iActiveHero] & ", Wait Time: " & StringFormat("%.2f", $g_aiTimeTrain[2]), $COLOR_DEBUG) +SetLog("Wait enabled: " & GetTroopName($pTroopType) & ":" & $g_asModeText[$pMatchMode] & ", $iTrainWaitCloseFlag:" & $iTrainWaitCloseFlag & ", Hero Time:" & $aHeroResult[$iActiveHero] & ", Wait Time: " & StringFormat("%.2f", $g_aiTimeTrain[2]), $COLOR_DEBUG) EndIf EndIf Next @@ -39551,7 +39641,7 @@ EndFunc Func CheckSiegeMachine() If Not $g_bRunState Then Return Local $bToReturn = True -If IsWaitforSiegeMachine() Or $g_iCommandStop = 0 Then +If IsWaitforSiegeMachine() Then For $i = $eSiegeWallWrecker To $eSiegeMachineCount - 1 If $g_aiCurrentSiegeMachines[$i] < $g_aiArmyCompSiegeMachine[$i] Then $bToReturn = False If $g_bDebugSetlogTrain Then @@ -40939,7 +41029,7 @@ Local $aSearchResult = SearchArmy("trainwindow-SiegesInQueue-bundle", 520, 210, If $aSearchResult[0][0] <> "" Then For $i = 0 To UBound($aSearchResult) - 1 Local $tempSiege = TroopIndexLookup($aSearchResult[$i][0]) -Setlog("- " & NameOfTroop($tempSiege) & " Queued.", $COLOR_INFO) +Setlog("- " & GetTroopName($tempSiege) & " Queued.", $COLOR_INFO) Next EndIf Local $sResultSpells = getRemainBuildTimer(780, 244, True) @@ -42010,6 +42100,7 @@ $g_sLabUpgradeTime = _DateAdd('n', Ceiling($iLabFinishTime), _NowCalc()) SetLog("Research will finish in " & $sLabTimeOCR & " (" & $g_sLabUpgradeTime & ")") EndIf ClickP($aAway, 2, $DELAYLABORATORY4, "#0359") +If ProfileSwitchAccountEnabled() Then SwitchAccountVariablesReload("Save") Return True ElseIf _ColorCheck(_GetPixelColor(730, 200, True), Hex(0x8088B0, 6), 20) Then SetLog("Laboratory has Stopped", $COLOR_INFO) @@ -42017,8 +42108,10 @@ ClickP($aAway, 2, $DELAYLABORATORY4, "#0359") GUICtrlSetState($g_hPicLabGray, $GUI_HIDE) GUICtrlSetState($g_hPicLabGreen, $GUI_HIDE) GUICtrlSetState($g_hPicLabRed, $GUI_SHOW) +GUICtrlSetData($g_hLbLLabTime, "") ClickP($aAway, 2, $DELAYLABORATORY4, "#0359") $g_sLabUpgradeTime = "" +If ProfileSwitchAccountEnabled() Then SwitchAccountVariablesReload("Save") Return Else SetLog("Unable to determine Lab Status", $COLOR_INFO) @@ -42026,22 +42119,23 @@ ClickP($aAway, 2, $DELAYLABORATORY4, "#0359") GUICtrlSetState($g_hPicLabGreen, $GUI_HIDE) GUICtrlSetState($g_hPicLabRed, $GUI_HIDE) GUICtrlSetState($g_hPicLabGray, $GUI_SHOW) +GUICtrlSetData($g_hLbLLabTime, "") Return EndIf EndFunc Func HideShields($bHide = False) -Local Static $ShieldState[19] +Local Static $ShieldState[20] Local $counter If $bHide = True Then $counter = 0 -For $i = $g_hlblKing to $g_hPicLabRed +For $i = $g_hlblKing to $g_hLbLLabTime $ShieldState[$counter] = GUICtrlGetState($i) GUICtrlSetState($i, $GUI_HIDE) $counter += 1 Next Else $counter = 0 -For $i = $g_hlblKing to $g_hPicLabRed +For $i = $g_hlblKing to $g_hLbLLabTime If $ShieldState[$counter] = 80 Then GUICtrlSetState($i, $GUI_SHOW ) EndIf @@ -42101,7 +42195,7 @@ If $iHeroType = $aHeroRemainData[$index][3] Then SetLog("Can not read remaining " & $aHeroRemainData[$index][2] & " recover time", $COLOR_RED) Else For $pMatchMode = $DB To $g_iMatchMode - 1 -If IsSpecialTroopToBeUsed($pMatchMode, $aHeroRemainData[$index][3]) And BitAND($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiSearchHeroWaitEnable[$pMatchMode] Then +If IsUnitUsed($pMatchMode, $aHeroRemainData[$index][3]) And BitAND($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiSearchHeroWaitEnable[$pMatchMode] Then SetLog("Can not read remaining " & $aHeroRemainData[$index][2] & " train time", $COLOR_ERROR) ExitLoop Else @@ -42540,7 +42634,8 @@ If $g_bDebugFuncTime Then StopWatchStopLog() Local $aTempCCSiegeArray, $aCCSiegeCoords Local $sCCSiegeName = "" Local $iCCSiegeIndex = -1 -Local $aCurrentCCSiegeEmpty[$eSiegeMachineCount] = [0, 0] +Local $aCurrentCCSiegeEmpty[$eSiegeMachineCount] = [0, 0, 0] +$g_aiCurrentCCSiegeMachines = $aCurrentCCSiegeEmpty Local $sSiegeInfo = getArmyCampCap(650, 468, $bNeedCapture) If $g_bDebugSetlogTrain Then SetLog("OCR $sSiegeInfo = " & $sSiegeInfo, $COLOR_DEBUG) Local $aGetSiegeCap = StringSplit($sSiegeInfo, "#", $STR_NOCOUNT) @@ -42550,7 +42645,6 @@ If Number($aGetSiegeCap[0]) = 0 then Return Else Return EndIf -$g_aiCurrentCCSiegeMachines = $aCurrentCCSiegeEmpty If UBound($aCurrentCCSiegeMachines, 1) >= 1 Then For $i = 0 To UBound($aCurrentCCSiegeMachines, 1) - 1 $aTempCCSiegeArray = $aCurrentCCSiegeMachines[$i] @@ -42822,8 +42916,8 @@ Local $matchedValues Local $TotalMatched = 0 Local $x, $y, $lvl, $fill Local $result = findMultiple($sFillDirectory, $sCocDiamond, $redLines, $minLevel, $maxLevel, $maxReturnPoints, $returnProps, $bForceCapture) -Local $foundFilledCollectors = IsArray($result) = 1 -If $foundFilledCollectors = True Then +Local $bFoundFilledCollectors = IsArray($result) = 1 +If $bFoundFilledCollectors Then For $matchedValues In $result Local $aPoints = StringSplit($matchedValues[1], "|", $STR_NOCOUNT) Local $found = UBound($aPoints) @@ -42851,7 +42945,7 @@ $found -= 1 ExitLoop EndIf Next -If $bSkipPoint = False Then +If Not $bSkipPoint Then Local $i = UBound($aPos) ReDim $aPos[$i + 1] $aPos[$i] = $aP @@ -42897,12 +42991,12 @@ Next EndIf Local $dbFound = $TotalMatched >= $g_iCollectorMatchesMin If $g_bDebugSetlog Then -If $foundFilledCollectors = False Then -SetDebugLog("IMGLOC : NOT A DEADBASE!!!", $COLOR_INFO) -ElseIf $dbFound = False Then +If Not $bFoundFilledCollectors Then +SetDebugLog("IMGLOC : NOT A DEADBASE", $COLOR_INFO) +ElseIf Not $dbFound Then SetDebugLog("IMGLOC : DEADBASE NOT MATCHED: " & $TotalMatched & "/" & $g_iCollectorMatchesMin, $COLOR_WARNING) Else -SetDebugLog("IMGLOC : FOUND DEADBASE !!! Matched: " & $TotalMatched & "/" & $g_iCollectorMatchesMin & ": " & UBound($aPoints), $COLOR_GREEN) +SetDebugLog("IMGLOC : FOUND DEADBASE Matched: " & $TotalMatched & "/" & $g_iCollectorMatchesMin & ": " & UBound($aPoints), $COLOR_GREEN) EndIf EndIf $g_aZombie[3] = $TotalMatched @@ -43403,7 +43497,7 @@ If $g_bDebugSetlog Then SetDebugLog(" imgloc DLL Error imgloc " & $error & " --- SetError(2, $extError, $aCoords) Return EndIf -If checkImglocError($result, "findImage", $sImageTile) = True Then +If checkImglocError($result, "findImage", $sImageTile) Then If $g_bDebugSetlog And $g_bDebugImageSave Then DebugImageSave("findImage_" & $sImageName, True) Return $aCoords EndIf @@ -43841,13 +43935,13 @@ Case 244 To 307 Return 255 Case 308 To 392 Return 330 -Case 393 To 464 +Case 393 To 435 Return 403 Case 450 To 510 Return 475 -Case 511 To 550 +Case 511 To 535 Return 510 -Case 551 To 605 +Case 536 To 605 Return 555 Case 625 To 700 Return 650 @@ -43974,8 +44068,9 @@ Global $IMGLOCTHNEAR Global $IMGLOCTHFAR Global $IMGLOCTHRDISTANCE Func imglocTHSearch($bReTest = False, $myVillage = False, $bForceCapture = True) -Local $xdirectory = "imglocth-bundle" +Local $xdirectorya = "imglocth-bundle" Local $xdirectoryb = "imglocth2-bundle" +Local $xdirectory Local $sCocDiamond = "ECD" Local $redLines = "" Local $minLevel = 6 @@ -43992,10 +44087,17 @@ EndIf Local $propsNames = StringSplit($returnProps, ",", $STR_NOCOUNT) If $g_bDebugSetlog Then SetDebugLog("imgloc TH search Start", $COLOR_DEBUG) Local $numRetry = 1 +If $g_iDetectedImageType = 1 Then +$numRetry = 3 +EndIf For $retry = 0 To $numRetry Local $iLvlFound = 0 -If $retry > 0 Then $xdirectory = $xdirectoryb -If $g_iDetectedImageType = 1 Then +If Mod($retry, 2) = 0 Then +$xdirectory = $xdirectorya +Else +$xdirectory = $xdirectoryb +EndIf +If $g_iDetectedImageType = 1 And $retry < 2 Then $xdirectory = "snow-" & $xdirectory EndIf If $retry > 0 And $g_sImglocRedline <> "" Then @@ -44161,286 +44263,253 @@ Return $g_iImglocTHLevel EndIf EndFunc Func AttackBarCheck($bRemaining = False, $pMatchMode = $DB, $bDebug = False) -Local $iX1 = 0, $iY1 = 635, $iX2 = 835, $iY2 = 698 -Static Local $bCheckSlot12 = False -If Not $bRemaining Then $bCheckSlot12 = False +Local Static $aAttackBar[0][8] +Local Static $bDoubleRow = False, $bCheckSlot12 = False +Local $sSearchDiamond = GetDiamondFromRect("0,635,835,698") +Local $iYBelowRowOne = 630, $aiOCRLocation[2] = [-1, -1], $aSlotAmountX[0][3] If $g_bDraggedAttackBar Then DragAttackBar($g_iTotalAttackSlot, True) +If Not $bRemaining Then +$bCheckSlot12 = False +$bDoubleRow = False +Local $aDummyArray[0][8] +$aAttackBar = $aDummyArray $g_iLSpellLevel = 1 $g_iESpellLevel = 1 -Local $aResult[1][6], $aCoordArray[1][2], $aCoords, $aCoordsSplit, $aValue, $sName, $aSlotAmountX[0][2] -If Not $g_bRunState Then Return -_CaptureRegion2($iX1, $iY1, $iX2, $iY2) -Local $sFinalResult = "", $iAttackbarStart = __TimerInit() -Local $sAttBarRes = DllCallMyBot("SearchMultipleTilesBetweenLevels", "handle", $g_hHBitmap2, "str", $g_sImgAttackBarDir, "str", "FV", "Int", 0, "str", "FV", "Int", 0, "Int", 1000) -If IsArray($sAttBarRes) Then -If $sAttBarRes[0] = "0" Or $sAttBarRes[0] = "" Then -SetLog("AttackBarCheck Error: Nothing found", $COLOR_ERROR) -ElseIf StringLeft($sAttBarRes[0], 2) = "-1" Then -SetLog("DLL Error: " & $sAttBarRes[0] & ", AttackBarCheck", $COLOR_ERROR) -Else -Local $aKeys = StringSplit($sAttBarRes[0], "|", $STR_NOCOUNT) -ReDim $aResult[UBound($aKeys)][6] -Local $iResultAddDup = 0 -For $i = 0 To UBound($aKeys) - 1 -If Not $g_bRunState Then Return -$sName = RetrieveImglocProperty($aKeys[$i], "objectname") -$aValue = RetrieveImglocProperty($aKeys[$i], "objectpoints") -$aCoords = decodeMultipleCoords($aValue, 50) -If StringRegExp($sName, "(AmountX)", 0) Then -For $j = 0 To UBound($aCoords) - 1 -$aCoordsSplit = $aCoords[$j] -_ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) -Next -Else -$aResult[$i + $iResultAddDup][0] = $sName -$aCoordsSplit = $aCoords[0] -If StringRegExp($sName, "(King)|(Warden)|(Queen)", 0) Then -_ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) +If _CheckPixel($aDoubRowAttackBar, True) Then +$bDoubleRow = True +$sSearchDiamond = GetDiamondFromRect("0,535,835,698") +ElseIf _CheckPixel($a12OrMoreSlots, True) Then +$bCheckSlot12 = True EndIf -If UBound($aCoordsSplit) = 2 Then -$aCoordArray[0][0] = $aCoordsSplit[0] -$aCoordArray[0][1] = $aCoordsSplit[1] -Else -$aCoordArray[0][0] = -1 -$aCoordArray[0][1] = -1 +SetDebugLog("AttackBarCheck: DoubleRow= " & $bDoubleRow) EndIf -If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aCoordArray[0][0] & "-" & $aCoordArray[0][1]) -$aResult[$i + $iResultAddDup][1] = Number($aCoordArray[0][0]) -$aResult[$i + $iResultAddDup][2] = Number($aCoordArray[0][1]) -Local $iMultipleCoords = UBound($aCoords) -If $iMultipleCoords > 1 And StringInStr($aResult[$i + $iResultAddDup][0], "Spell") <> 0 Then -If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " detected " & $iMultipleCoords & " times!") -For $j = 1 To $iMultipleCoords - 1 -Local $aCoordsSplit2 = $aCoords[$j] -If UBound($aCoordsSplit2) = 2 Then -$iResultAddDup += 1 -ReDim $aResult[UBound($aKeys) + $iResultAddDup][6] -$aResult[$i + $iResultAddDup][0] = $aResult[$i + $iResultAddDup - 1][0] -$aResult[$i + $iResultAddDup][1] = $aCoordsSplit2[0] -$aResult[$i + $iResultAddDup][2] = $aCoordsSplit2[1] -If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aResult[$i + $iResultAddDup][1] & "-" & $aResult[$i + $iResultAddDup][2]) +If Not $g_bRunState Then Return +If UBound($aAttackBar) = 0 Or Not $bRemaining Then +Local $iAttackbarStart = __TimerInit() +Local $aTempArray, $aTempCoords, $aTempMultiCoords, $iRow = 1 +Local $aAttackBarResult = findMultiple($g_sImgAttackBarDir, $sSearchDiamond, $sSearchDiamond, 0, 1000, 0, "objectname,objectpoints", True) +If UBound($aAttackBarResult) = 0 Then +SetLog("Error in AttackBarCheck(): Search did not return any results!", $COLOR_ERROR) +DebugImageSave("ErrorAttackBarCheck", False, Default, Default, "#1") +Return "" +EndIf +For $i = 0 To UBound($aAttackBarResult, 1) - 1 +$aTempArray = $aAttackBarResult[$i] +$aTempMultiCoords = decodeMultipleCoords($aTempArray[1], 40, 40, -1) +For $j = 0 To UBound($aTempMultiCoords, 1) - 1 +$aTempCoords = $aTempMultiCoords[$j] +If $bDoubleRow And $aTempCoords[1] >= $iYBelowRowOne Then $iRow = 2 +If StringRegExp($aTempArray[0], "(AmountX)", 0) Then +_ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) +$aiOCRLocation[$iRow - 1] = $aTempCoords[1] Else +If StringRegExp($aTempArray[0], "(King)|(Queen)|(Warden)", 0) Then _ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) +Local $aTempElement[1][8] = [[$aTempArray[0], $aTempCoords[0], $aTempCoords[1], -1, -1, -1, -1, $iRow]] +_ArrayAdd($aAttackBar, $aTempElement) EndIf +$iRow = 1 Next -EndIf -EndIf Next -_ArraySort($aResult, 0, 0, 0, 1) +If UBound($aAttackBar, 1) = 0 Then +SetLog("Error in AttackBarCheck(): $aAttackBar has no results in it", $COLOR_ERROR) +Return "" +EndIf +_ArraySort($aAttackBar, 0, 0, 0, 1) _ArraySort($aSlotAmountX) -If $g_bDebugSetlog Then SetDebugLog("Attackbar detection completed in " & StringFormat("%.2f", _Timer_Diff($iAttackbarStart)) & " ms") +If $bDoubleRow Then $aSlotAmountX = SortDoubleRowXElements($aSlotAmountX) +SetDebugLog("AttackBarCheck(): Finished Image Search in: " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") $iAttackbarStart = __TimerInit() -If Not $bRemaining And _CheckPixel($a12OrMoreSlots, True) Then $bCheckSlot12 = True -Local $iSPellLevelOCR = -8 -For $i = 0 To UBound($aResult) - 1 -Local $aTempSlot -If $aResult[$i][1] > 0 Then -If $g_bDebugSetlog Then SetDebugLog("SLOT : " & $i, $COLOR_DEBUG) -If $g_bDebugSetlog Then SetDebugLog("Detection : " & $aResult[$i][0] & "|x" & $aResult[$i][1] & "|y" & $aResult[$i][2], $COLOR_DEBUG) -$aTempSlot = SlotAttack(Number($aResult[$i][1]), $aSlotAmountX) -If $g_bRunState = False Then Return +EndIf +Local $aFinalAttackBar[0][7] +Local $aiOCRY = [-1, -1] +If Not $bRemaining Then $aiOCRY = GetOCRYLocation($aSlotAmountX) +Local $sKeepRemainTroops = "(King)|(Queen)|(Warden)|(WallW)|(BattleB)|(StoneS)" +For $i = 0 To UBound($aAttackBar, 1) - 1 +If $aAttackBar[$i][1] > 0 Then +Local $bRemoved = False +If Not $g_bRunState Then Return If _Sleep(20) Then Return -If UBound($aTempSlot) = 3 Then -If $g_bDebugSetlog Then SetDebugLog("OCR : " & $aTempSlot[0] & "|SLOT: " & $aTempSlot[2], $COLOR_DEBUG) -If $aResult[$i][0] = "Castle" Or $aResult[$i][0] = "King" Or $aResult[$i][0] = "Queen" Or $aResult[$i][0] = "Warden" Or $aResult[$i][0] = "WallW" Or $aResult[$i][0] = "BattleB" Or $aResult[$i][0] = "StoneS" Then -$aResult[$i][3] = 1 -$aResult[$i][4] = $aTempSlot[2] +If $bRemaining Then +$aTroopIsDeployed[0] = $aAttackBar[$i][5] - 15 +$aTroopIsDeployed[1] = $aAttackBar[$i][6] +If _CheckPixel($aTroopIsDeployed, True) Then +$bRemoved = True +$aAttackBar[$i][4] = 0 +If StringRegExp($aAttackBar[$i][0], $sKeepRemainTroops, 0) = 0 Then +SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, now removed") +ContinueLoop Else -$aResult[$i][3] = Number(getTroopCountBig(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1) - 2)) -$aResult[$i][4] = $aTempSlot[2] -If $aResult[$i][3] = "" Or $aResult[$i][3] = 0 Then -$aResult[$i][3] = Number(getTroopCountSmall(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1))) -$aResult[$i][4] = $aTempSlot[2] -EndIf -If StringInStr($aResult[$i][0], "ESpell") <> 0 And $g_bSmartZapEnable Then -$aResult[$i][5] = getTroopsSpellsLevel(Number($aTempSlot[0] + $iX1) + $iSPellLevelOCR, 704) -If $aResult[$i][5] <> "" Then $g_iESpellLevel = $aResult[$i][5] -If $g_bDebugSmartZap Then SetLog("Earthquake Spell detected with level: " & $aResult[$i][5], $COLOR_DEBUG) +SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, but stays") EndIf -If StringInStr($aResult[$i][0], "LSpell") <> 0 And $g_bSmartZapEnable Then -$aResult[$i][5] = getTroopsSpellsLevel(Number($aTempSlot[0] + $iX1) + $iSPellLevelOCR, 704) -If $aResult[$i][5] <> "" Then $g_iLSpellLevel = $aResult[$i][5] -If $g_bDebugSmartZap Then SetLog("Lightning Spell detected with level: " & $aResult[$i][5], $COLOR_DEBUG) EndIf +Else +Local $aTempSlot = AttackSlot(Number($aAttackBar[$i][1]), Number($aAttackBar[$i][7]), $aSlotAmountX) +$aAttackBar[$i][5] = Number($aTempSlot[0]) +$aAttackBar[$i][6] = Number($aTempSlot[1]) +$aAttackBar[$i][3] = Number($aTempSlot[2]) +If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)", 0) And $aiOCRY[$aAttackBar[$i][7] - 1] <> -1 Then $aAttackBar[$i][6] =($aiOCRY[$aAttackBar[$i][7] - 1] - 7) EndIf +If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)|(Castle)|(WallW)|(BattleB)|(StoneS)", 0) Then +If Not $bRemoved Then $aAttackBar[$i][4] = 1 Else -SetLog("Error while detecting Attackbar", $COLOR_ERROR) -SetLog("Detection: " & $aResult[$i][0] & "|X:" & $aResult[$i][1] & "|Y:" & $aResult[$i][2], $COLOR_DEBUG) -$aResult[$i][3] = -1 -$aResult[$i][4] = -1 +If Not $bRemoved Then +$aAttackBar[$i][4] = Number(getTroopCountSmall(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6]))) +If $aAttackBar[$i][4] = 0 Then $aAttackBar[$i][4] = Number(getTroopCountBig(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6] - 2))) EndIf -$sFinalResult &= "|" & TroopIndexLookup($aResult[$i][0]) & "#" & $aResult[$i][4] & "#" & $aResult[$i][3] & "#" & $aResult[$i][1] +If StringRegExp($aAttackBar[$i][0], "(LSpell)|(ESpell)", 0) And $g_bSmartZapEnable Then +Local $iSpellLevel = Number(getTroopsSpellsLevel(Number($aAttackBar[$i][5]) - 20, 704)) +If StringInStr($aAttackBar[$i][0], "LSpell") <> 0 And $iSpellLevel > 0 Then $g_iLSpellLevel = $iSpellLevel +If StringInStr($aAttackBar[$i][0], "ESpell") <> 0 And $iSpellLevel > 0 Then $g_iESpellLevel = $iSpellLevel EndIf -Next EndIf +Local $aTempFinalArray[1][7] = [[TroopIndexLookup($aAttackBar[$i][0]), $aAttackBar[$i][3], $aAttackBar[$i][4], $aAttackBar[$i][1], $aAttackBar[$i][2], $aAttackBar[$i][5], $aAttackBar[$i][6]]] +_ArrayAdd($aFinalAttackBar, $aTempFinalArray) EndIf -If $g_bDebugSetlog Then SetDebugLog("Attackbar OCR completed in " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") -If $bDebug Then -Local $iX1 = 0, $iY1 = 635, $iX2 = 853, $iY2 = 698 -_CaptureRegion2($iX1, $iY1, $iX2, $iY2) -Local $sSubDir = $g_sProfileTempDebugPath & "AttackBarDetection" -DirCreate($sSubDir) -Local $sDate = @YEAR & "-" & @MON & "-" & @MDAY, $sTime = @HOUR & "." & @MIN & "." & @SEC -Local $sDebugImageName = String($sDate & "_" & $sTime & "_.png") -Local $hEditedImage = _GDIPlus_BitmapCreateFromHBITMAP($g_hHBitmap2) -Local $hGraphic = _GDIPlus_ImageGetGraphicsContext($hEditedImage) -Local $hPenRED = _GDIPlus_PenCreate(0xFFFF0000, 3) -For $i = 0 To UBound($aResult) - 1 -addInfoToDebugImage($hGraphic, $hPenRED, $aResult[$i][0], $aResult[$i][1], $aResult[$i][2]) Next -_GDIPlus_ImageSaveToFile($hEditedImage, $sSubDir & "\" & $sDebugImageName) -_GDIPlus_PenDispose($hPenRED) -_GDIPlus_GraphicsDispose($hGraphic) -_GDIPlus_BitmapDispose($hEditedImage) -EndIf -If($pMatchMode <= $LB And $bCheckSlot12 And UBound($aResult) > 1 And $g_aiAttackAlgorithm[$pMatchMode] <> 3) Or $bDebug Then -SetDebuglog("$sFinalResult 1st page = " & $sFinalResult) -Local $aLastTroop1stPage[2] -$aLastTroop1stPage[0] = $aResult[UBound($aResult) - 1][0] -$aLastTroop1stPage[1] = UBound(_ArrayFindAll($aResult, $aLastTroop1stPage[0])) -SetDebuglog("$sLastTroop1stPage = " & $aLastTroop1stPage[0] & ", appears: " & $aLastTroop1stPage[1]) +If($pMatchMode <= $LB And $bCheckSlot12 And Not $bDoubleRow And UBound($aAttackBar) > 1 And $g_aiAttackAlgorithm[$pMatchMode] <> 3) Or($bDebug And $bCheckSlot12) Then DragAttackBar() -$sFinalResult &= ExtendedAttackBarCheck($aLastTroop1stPage, $bRemaining) +Local $aExtendedArray = ExtendedAttackBarCheck($aAttackBar, $bRemaining, $sSearchDiamond) +_ArrayAdd($aFinalAttackBar, $aExtendedArray) +$g_iTotalAttackSlot = UBound($aFinalAttackBar, 1) + 1 If Not $bRemaining Then DragAttackBar($g_iTotalAttackSlot, True) EndIf -$sFinalResult = StringTrimLeft($sFinalResult, 1) -Return $sFinalResult +_ArraySort($aFinalAttackBar, 0, 0, 0, 1) +Return $aFinalAttackBar EndFunc -Func SlotAttack($iPosX, $aSlots) -Local $aTempSlot[3] = [0, 0, 0] -Local $iClosest = SearchNearest($aSlots, $iPosX) -Local $bLast = False -If $iClosest = _ArrayMaxIndex($aSlots, 0) And $aSlots[$iClosest][0] >=($g_iGAME_WIDTH - 60) Then $bLast = True -If $iClosest >= 0 And $iClosest < UBound($aSlots) Then -$aTempSlot[0] = $bLast ? $g_iGAME_WIDTH - 53 : $aSlots[$iClosest][0] - 15 -$aTempSlot[1] = $aSlots[$iClosest][1] - 7 -$aTempSlot[2] = $iClosest -EndIf -Return $aTempSlot -EndFunc -Func SearchNearest($aArray, $iNumber) -Local $iVal, $iValOld = _ArrayMax($aArray), $iReturn -For $i = 0 To UBound($aArray) - 1 -$iVal = Abs($aArray[$i][0] - $iNumber) -If $iValOld >= $iVal Then -$iValOld = $iVal -$iReturn = $i +Func ExtendedAttackBarCheck($aAttackBarFirstSearch, $bRemaining, $sSearchDiamond) +Local Static $aAttackBar[0][8] +Local $iLastSlotNumber = _ArrayMax($aAttackBarFirstSearch, 0, -1, -1, 3) +Local $sLastTroopName = $aAttackBarFirstSearch[_ArrayMaxIndex($aAttackBarFirstSearch, 0, -1, -1, 1)][0], $aiOCRLocation[2] = [-1, -1] +Local $aSlotAmountX[0][3] +If Not $bRemaining Then +Local $aDummyArray[0][8] +$aAttackBar = $aDummyArray +$g_iTotalAttackSlot = 11 EndIf -Next -Return $iReturn -EndFunc -Func ExtendedAttackBarCheck($aLastTroop1stPage, $bRemaining) -Local $iX1 = 0, $iY1 = 635, $iX2 = 835, $iY2 = 698 -Static $bCheckSlotwHero2 = False -Local $aResult[1][6], $aCoordArray[1][2], $aCoords, $aCoordsSplit, $aValue, $sName, $aSlotAmountX[0][2] -If Not $g_bRunState Then Return -_CaptureRegion2($iX1, $iY1, $iX2, $iY2) -Local $sFinalResult = "" -Local $sAttBarRes = DllCallMyBot("SearchMultipleTilesBetweenLevels", "handle", $g_hHBitmap2, "str", $g_sImgAttackBarDir, "str", "FV", "Int", 0, "str", "FV", "Int", 0, "Int", 1000) -If IsArray($sAttBarRes) Then -If $sAttBarRes[0] = "0" Or $sAttBarRes[0] = "" Then -SetLog("Imgloc|AttackBarCheck not found!", $COLOR_ERROR) -ElseIf StringLeft($sAttBarRes[0], 2) = "-1" Then -SetLog("DLL Error: " & $sAttBarRes[0] & ", AttackBarCheck", $COLOR_RED) -Else -Local $aKeys = StringSplit($sAttBarRes[0], "|", $STR_NOCOUNT) -ReDim $aResult[UBound($aKeys)][6] -Local $iResultAddDup = 0 -For $i = 0 To UBound($aKeys) - 1 If Not $g_bRunState Then Return -$sName = RetrieveImglocProperty($aKeys[$i], "objectname") -$aValue = RetrieveImglocProperty($aKeys[$i], "objectpoints") -$aCoords = decodeMultipleCoords($aValue, 50) -If StringRegExp($sName, "(AmountX)", 0) Then -For $j = 0 To UBound($aCoords) - 1 -$aCoordsSplit = $aCoords[$j] -_ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) -Next -Else -$aResult[$i + $iResultAddDup][0] = $sName -$aCoordsSplit = $aCoords[0] -If StringRegExp($sName, "(King)|(Warden)|(Queen)", 0) Then _ArrayAdd($aSlotAmountX, $aCoordsSplit[0] & "|" & $aCoordsSplit[1], 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) -If UBound($aCoordsSplit) = 2 Then -$aCoordArray[0][0] = $aCoordsSplit[0] -$aCoordArray[0][1] = $aCoordsSplit[1] -Else -$aCoordArray[0][0] = -1 -$aCoordArray[0][1] = -1 +If UBound($aAttackBar) = 0 Or Not $bRemaining Then +Local $iAttackbarStart = __TimerInit() +Local $aTempArray, $aTempCoords, $aTempMultiCoords, $iRow = 1 +Local $aAttackBarResult = findMultiple($g_sImgAttackBarDir, $sSearchDiamond, $sSearchDiamond, 0, 1000, 0, "objectname,objectpoints", True) +If UBound($aAttackBarResult) = 0 Then +SetLog("Error in AttackBarCheck(): Search did not return any results!", $COLOR_ERROR) +DebugImageSave("ErrorAttackBarCheck", False, Default, Default, "#2") +Return "" EndIf -If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aCoordArray[0][0] & "-" & $aCoordArray[0][1]) -$aResult[$i + $iResultAddDup][1] = Number($aCoordArray[0][0]) -$aResult[$i + $iResultAddDup][2] = Number($aCoordArray[0][1]) -Local $iMultipleCoords = UBound($aCoords) -If $iMultipleCoords > 1 And StringInStr($aResult[$i + $iResultAddDup][0], "Spell") <> 0 Then -If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " detected " & $iMultipleCoords & " times!") -For $j = 1 To $iMultipleCoords - 1 -Local $aCoordsSplit2 = $aCoords[$j] -If UBound($aCoordsSplit2) = 2 Then -$iResultAddDup += 1 -ReDim $aResult[UBound($aKeys) + $iResultAddDup][6] -$aResult[$i + $iResultAddDup][0] = $aResult[$i + $iResultAddDup - 1][0] -$aResult[$i + $iResultAddDup][1] = $aCoordsSplit2[0] -$aResult[$i + $iResultAddDup][2] = $aCoordsSplit2[1] -If $g_bDebugSetlog Then SetDebugLog($aResult[$i + $iResultAddDup][0] & " | $aCoordArray: " & $aResult[$i + $iResultAddDup][1] & "-" & $aResult[$i + $iResultAddDup][2]) +For $i = 0 To UBound($aAttackBarResult, 1) - 1 +$aTempArray = $aAttackBarResult[$i] +$aTempMultiCoords = decodeMultipleCoords($aTempArray[1], 60, 60, -1) +For $j = 0 To UBound($aTempMultiCoords, 1) - 1 +$aTempCoords = $aTempMultiCoords[$j] +If StringRegExp($aTempArray[0], "(AmountX)", 0) Then +_ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) +$aiOCRLocation[$iRow - 1] = $aTempCoords[1] Else +If StringRegExp($aTempArray[0], "(King)|(Queen)|(Warden)", 0) Then _ArrayAdd($aSlotAmountX, $aTempCoords[0] & "|" & $aTempCoords[1] & "|" & $iRow, 0, "|", @CRLF, $ARRAYFILL_FORCE_NUMBER) +Local $aTempElement[1][8] = [[$aTempArray[0], $aTempCoords[0], $aTempCoords[1], -1, -1, -1, -1, $iRow]] +_ArrayAdd($aAttackBar, $aTempElement) EndIf Next -EndIf -EndIf Next -_ArraySort($aResult, 0, 0, 0, 1) +If UBound($aAttackBar, 1) = 0 Then +SetLog("Error in AttackBarCheck(): $aAttackBar has no results in it", $COLOR_ERROR) +Return "" +EndIf +_ArraySort($aAttackBar, 0, 0, 0, 1) _ArraySort($aSlotAmountX) -Local $iSlotExtended = 0 -Static $iFirstExtendedSlot = -1 -If Not $bRemaining Then -$iFirstExtendedSlot = -1 +SetDebugLog("AttackBarCheck(): Finished Image Search in: " & StringFormat("%.2f", __TimerDiff($iAttackbarStart)) & " ms") +$iAttackbarStart = __TimerInit() EndIf -Local $iFoundLastTroop1stPage -Local $bStart2ndPage = False -For $i = 0 To UBound($aResult) - 1 -Local $aTempSlot -If $aResult[$i][1] > 0 Then -SetDebugLog("Slot : " & $i, $COLOR_DEBUG) -SetDebugLog("Detection : " & $aResult[$i][0] & "|x" & $aResult[$i][1] & "|y" & $aResult[$i][2], $COLOR_DEBUG) -If $aResult[$i][0] = $aLastTroop1stPage[0] And Not $bStart2ndPage Then -$iFoundLastTroop1stPage += 1 -SetDebugLog("Found $aLastTroop1stPage[0]: " & $aResult[$i][0] & " x" & $iFoundLastTroop1stPage) -If $iFoundLastTroop1stPage >= $aLastTroop1stPage[1] Then $bStart2ndPage = True -ContinueLoop +Local $aFinalAttackBar[0][7] +Local $aiOCRY = [-1, -1] +Local $sKeepRemainTroops = "(King)|(Queen)|(Warden)|(WallW)|(BattleB)|(StoneS)" +If Not $bRemaining Then +$aiOCRY = GetOCRYLocation($aSlotAmountX) +$aAttackBar = _ArrayExtract($aAttackBar, _ArraySearch($aAttackBar, $sLastTroopName, 0, 0, 0, 0, 1, 0) + 1) EndIf -If Not $bStart2ndPage Then ContinueLoop -$aTempSlot = SlotAttack(Number($aResult[$i][1]), $aSlotAmountX) -If $iFirstExtendedSlot = -1 Then $iFirstExtendedSlot = $aTempSlot[2] -$iSlotExtended = $aTempSlot[2] - $iFirstExtendedSlot + 1 +For $i = 0 To UBound($aAttackBar, 1) - 1 +If $aAttackBar[$i][1] > 0 Then +Local $bRemoved = False If Not $g_bRunState Then Return If _Sleep(20) Then Return -If UBound($aTempSlot) = 3 Then -SetDebugLog("OCR : " & $aTempSlot[0] & "|SLOT: " & $aTempSlot[2], $COLOR_DEBUG) -If $aResult[$i][0] = "Castle" Or $aResult[$i][0] = "King" Or $aResult[$i][0] = "Queen" Or $aResult[$i][0] = "Warden" Or $aResult[$i][0] = "WallW" Or $aResult[$i][0] = "BattleB" Or $aResult[$i][0] = "StoneS" Then -$aResult[$i][3] = 1 +If $bRemaining Then +$aTroopIsDeployed[0] = $aAttackBar[$i][5] - 15 +$aTroopIsDeployed[1] = $aAttackBar[$i][6] +If _CheckPixel($aTroopIsDeployed, True) Then +$bRemoved = True +$aAttackBar[$i][4] = 0 +If StringRegExp($aAttackBar[$i][0], $sKeepRemainTroops, 0) = 0 Then +SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, now removed") +ContinueLoop Else -$aResult[$i][3] = Number(getTroopCountSmall(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1))) -If $aResult[$i][3] = "" Or $aResult[$i][3] = 0 Then -$aResult[$i][3] = Number(getTroopCountBig(Number($aTempSlot[0] + $iX1), Number($aTempSlot[1] + $iY1) - 4)) +SetDebugLog("AttackBarCheck(): Troop " + $aAttackBar[$i][0] + " already deployed, but stays") EndIf EndIf -$aResult[$i][4] =($aTempSlot[2] + 11) - $iFirstExtendedSlot Else -Setlog("Problem with Attack bar detection!", $COLOR_ERROR) -SetLog("Detection : " & $aResult[$i][0] & "|x" & $aResult[$i][1] & "|y" & $aResult[$i][2], $COLOR_DEBUG) -$aResult[$i][3] = -1 -$aResult[$i][4] = -1 +Local $aTempSlot = AttackSlot(Number($aAttackBar[$i][1]), Number($aAttackBar[$i][7]), $aSlotAmountX) +$aAttackBar[$i][5] = Number($aTempSlot[0]) +$aAttackBar[$i][6] = Number($aTempSlot[1]) +$aAttackBar[$i][3] = Number($aTempSlot[2] + $iLastSlotNumber - 1) +If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)", 0) And $aiOCRY[$aAttackBar[$i][7] - 1] <> -1 Then $aAttackBar[$i][6] =($aiOCRY[$aAttackBar[$i][7] - 1] - 7) +EndIf +If StringRegExp($aAttackBar[$i][0], "(King)|(Queen)|(Warden)|(Castle)|(WallW)|(BattleB)|(StoneS)", 0) Then +If Not $bRemoved Then $aAttackBar[$i][4] = 1 +Else +If Not $bRemoved Then +$aAttackBar[$i][4] = Number(getTroopCountSmall(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6]))) +If $aAttackBar[$i][4] = 0 Then $aAttackBar[$i][4] = Number(getTroopCountBig(Number($aAttackBar[$i][5]), Number($aAttackBar[$i][6] - 2))) +EndIf +If StringRegExp($aAttackBar[$i][0], "(LSpell)|(ESpell)", 0) And $g_bSmartZapEnable Then +Local $iSpellLevel = Number(getTroopsSpellsLevel(Number($aAttackBar[$i][5]) - 20, 704)) +If StringInStr($aAttackBar[$i][0], "LSpell") <> 0 And $iSpellLevel > 0 Then $g_iLSpellLevel = $iSpellLevel +If StringInStr($aAttackBar[$i][0], "ESpell") <> 0 And $iSpellLevel > 0 Then $g_iESpellLevel = $iSpellLevel EndIf -$sFinalResult &= "|" & TroopIndexLookup($aResult[$i][0]) & "#" & $aResult[$i][4] & "#" & $aResult[$i][3] & "#" & $aResult[$i][1] +EndIf +Local $aTempFinalArray[1][7] = [[TroopIndexLookup($aAttackBar[$i][0]), $aAttackBar[$i][3], $aAttackBar[$i][4], $aAttackBar[$i][1], $aAttackBar[$i][2], $aAttackBar[$i][5], $aAttackBar[$i][6]]] +_ArrayAdd($aFinalAttackBar, $aTempFinalArray) EndIf Next -If Not $bRemaining Then -$g_iTotalAttackSlot = $iSlotExtended + 10 +_ArraySort($aFinalAttackBar, 0, 0, 0, 1) +Return $aFinalAttackBar +EndFunc +Func GetOCRYLocation($aArray) +Local $aiReturn[2] = [-1, -1], $aTempArray[0], $aTempArray2[0] +For $i = 0 To UBound($aArray, 1) - 1 +If $aArray[$i][2] = 1 Then +_ArrayAdd($aTempArray, $aArray[$i][1]) +Else +_ArrayAdd($aTempArray2, $aArray[$i][1]) EndIf -SetDebugLog("$iSlotExtended / $g_iTotalAttackSlot: " & $iSlotExtended & "/" & $g_iTotalAttackSlot) +Next +$aiReturn[0] = _ArrayMin($aTempArray) +$aiReturn[1] = _ArrayMin($aTempArray2) +Return $aiReturn +EndFunc +Func SearchNearest($aArray, $iNumber, $iRow) +Local $iVal, $iValOld = _ArrayMax($aArray), $iReturn +For $i = 0 To UBound($aArray) - 1 +$iVal = Abs($aArray[$i][0] - $iNumber) +If $iValOld >= $iVal And $iRow = Number($aArray[$i][2]) Then +$iValOld = $iVal +$iReturn = $i EndIf +Next +Return $iReturn +EndFunc +Func SortDoubleRowXElements($aArray) +Local $aSecondRow[0][3] +Local $aNewSlotAmountX[0][3] +For $i = 0 To UBound($aArray) - 1 +If $aArray[$i][2] = 2 Then +_ArrayAdd($aSecondRow, _ArrayExtract($aArray, $i, $i)) +Else +_ArrayAdd($aNewSlotAmountX, _ArrayExtract($aArray, $i, $i)) EndIf -SetDebugLog("Extended $sFinalResult: " & $sFinalResult) -Return $sFinalResult +Next +_ArraySort($aNewSlotAmountX) +_ArraySort($aSecondRow) +_ArrayAdd($aNewSlotAmountX, $aSecondRow) +Return $aNewSlotAmountX EndFunc Func DragAttackBar($iTotalSlot = 20, $bBack = False) If $g_iTotalAttackSlot > 10 Then $iTotalSlot = $g_iTotalAttackSlot @@ -44460,6 +44529,18 @@ $g_bDraggedAttackBar = $bAlreadyDrag $g_iCSVLastTroopPositionDropTroopFromINI = -1 Return $bAlreadyDrag EndFunc +Func AttackSlot($iPosX, $iRow, $aSlots) +Local $aTempSlot[3] = [0, 0, 0] +Local $iClosest = SearchNearest($aSlots, $iPosX, $iRow) +Local $bLast = False +If $iClosest = _ArrayMaxIndex($aSlots, 0) And $aSlots[$iClosest][0] >=($g_iGAME_WIDTH - 60) Then $bLast = True +If $iClosest >= 0 And $iClosest < UBound($aSlots) Then +$aTempSlot[0] = $bLast ? $g_iGAME_WIDTH - 53 : $aSlots[$iClosest][0] - 15 +$aTempSlot[1] = $aSlots[$iClosest][1] - 7 +$aTempSlot[2] = $iClosest +EndIf +Return $aTempSlot +EndFunc Func QuickMIS($ValueReturned, $directory, $Left = 0, $Top = 0, $Right = $g_iGAME_WIDTH, $Bottom = $g_iGAME_HEIGHT, $bNeedCapture = True, $Debug = False) If($ValueReturned <> "BC1") And($ValueReturned <> "CX") And($ValueReturned <> "N1") And($ValueReturned <> "NX") And($ValueReturned <> "Q1") And($ValueReturned <> "QX") Then SetLog("Bad parameters during QuickMIS call for MultiSearch...", $COLOR_RED) @@ -44753,6 +44834,7 @@ If $g_bChkSharedPrefs And HaveSharedPrefs() Then SetLog("Please wait for loading CoC...!") PushSharedPrefs() OpenCoC() +Return True EndIf Case _CheckPixel($aIsCheckOOS, $g_bNoCapturePixel) Or(UBound(decodeSingleCoord(FindImageInPlace("OOS", $g_sImgOutOfSync, "355,335,435,395", False, $g_iAndroidLollipop))) > 1) SetLog("Out of Sync Error, Reloading CoC...", $COLOR_ERROR) @@ -45616,9 +45698,9 @@ Return SetError(1, 0, -1) EndFunc Func isOnBuilderBase($bNeedCaptureRegion = False) _Sleep($DELAYISBUILDERBASE) -Local $ImagePath = @ScriptDir & "\imgxml\village\Page\BuilderIsland\" -If QuickMIS("BC1", $ImagePath, 260, 0, 406, 54, $bNeedCaptureRegion, $g_bDebugSetlog) Then -If $g_bDebugSetlog Then SetDebugLog("Builder Base Builder detected", $COLOR_DEBUG) +Local $aSearchResult = decodeSingleCoord(findImage("isOnBuilderBase", $g_sImgIsOnBB, GetDiamondFromRect("260,0,406,54"), 1, $bNeedCaptureRegion)) +If IsArray($aSearchResult) And UBound($aSearchResult) = 2 Then +SetDebugLog("Builder Base Builder detected", $COLOR_DEBUG) Return True Else Return False @@ -45650,6 +45732,7 @@ WinGetAndroidHandle() If $bCheckRunState And Not $g_bRunState Then Return FuncReturn() AndroidAdbSendShellCommand("am force-stop " & $g_sAndroidGamePackage, Default, Default, False) ResetAndroidProcess() +_Sleep($DELAYCLOSEOPEN3000) If $bCheckRunState And Not $g_bRunState Then Return FuncReturn() If $ReOpenCoC Then OpenCoC() @@ -45663,14 +45746,14 @@ ResumeAndroid() If Not $g_bRunState Then Return FuncReturn() Local $RunApp = "", $iCount = 0 WinGetAndroidHandle() -If _Sleep(500) Then Return FuncReturn() +If _Sleep($DELAYCLOSEOPEN500) Then Return FuncReturn() If Not $g_bRunState Then Return FuncReturn() If Not StartAndroidCoC() Then Return FuncReturn() While _CheckPixel($aIsMain, True) = False $iCount += 1 -If _Sleep(100) Then Return FuncReturn() +If _Sleep($DELAYCLOSEOPEN500) Then Return FuncReturn() If checkObstacles() Then $iCount += 1 -If $iCount > 250 Then ExitLoop +If $iCount > 50 Then ExitLoop If Not $g_bRunState Then ExitLoop WEnd FuncReturn() @@ -45849,7 +45932,7 @@ SetDebugLog("Zooming Out (" & $sFunc & ")", $COLOR_INFO) Else SetLog("Zooming Out", $COLOR_INFO) EndIf -If _Sleep($DELAYZOOMOUT1) Then Return +If _Sleep($DELAYZOOMOUT1) Then Return True If $bAndroidZoomOut Then AndroidZoomOut(False) ForceCaptureRegion() @@ -45864,7 +45947,7 @@ If @error <> 0 Then $bAndroidZoomOut = False EndIf If Not $bAndroidZoomOut Then If $g_bDebugSetlog Then SetDebugLog("Index = "&$i, $COLOR_DEBUG) -If _Sleep($DELAYZOOMOUT2) Then Return +If _Sleep($DELAYZOOMOUT2) Then Return True If $g_bChkBackgroundMode = False And $g_bNoFocusTampering = False Then $Result0 = ControlFocus($g_hAndroidWindow, "", "") Else @@ -45879,7 +45962,7 @@ SetLog("Warning ControlSend $Result = "&$Result1, $COLOR_DEBUG) EndIf EndIF If $i > $delayCount Then -If _Sleep($DELAYZOOMOUT3) Then Return +If _Sleep($DELAYZOOMOUT3) Then Return True EndIf If $tryCtrlWheelScrollAfterCycles > 0 And $i > $tryCtrlWheelScrollAfterCycles Then $tryCtrlWheelScroll = True If $i > $exitCount Then Return @@ -45916,7 +45999,7 @@ Else SetLog("Zooming Out", $COLOR_INFO) EndIf AndroidShield("ZoomOutCtrlWheelScroll") -If _Sleep($DELAYZOOMOUT1) Then Return +If _Sleep($DELAYZOOMOUT1) Then Return True If $AndroidZoomOut Then AndroidZoomOut(False) ForceCaptureRegion() @@ -46007,7 +46090,7 @@ _PostMessage_ClickDrag(100, 600, 600, 100, "left") Next EndIf EndIf -If _Sleep($DELAYZOOMOUT1) Then Return +If _Sleep($DELAYZOOMOUT1) Then Return True Local $aMousePos = MouseGetPos() $i = 0 While StringInStr($aPicture[0], "zoomou") = 0 @@ -46520,6 +46603,8 @@ Return False EndIf If $bInstalled And Not $bCheckOnly Then $__VBoxManage_Path = $__BlueStacks_Path & "BstkVMMgr.exe" +$g_sAndroidAdbInstanceShellOptions = " -t -t" +$g_sAndroidAdbShellOptions = " /data/anr/../../system/xbin/bstk/su root" CheckBlueStacksVersionMod() Local $BstAdbPort = RegRead($g_sHKLM & "\SOFTWARE\BlueStacks\Guests\" & $g_sAndroidInstance & "\Config\", "BstAdbPort") If $BstAdbPort Then @@ -47838,7 +47923,7 @@ $g_sAndroidAdbDevice = $g_sAndroidAdbDeviceHost & ":" & $g_sAndroidAdbDevicePort Else SetLog("Using ADB default device " & $g_sAndroidAdbDevice & " for " & $g_sAndroidEmulator, $COLOR_ERROR) EndIf -$g_sAndroidPicturesPath = "(/mnt/shared/Other|/mnt/shell/emulated/0/Download/other)" +$g_sAndroidPicturesPath = "(/mnt/shared/Other|/mnt/shell/emulated/0/Download/other|/mnt/shell/emulated/0/Others)" $aRegexResult = StringRegExp($__VBoxVMinfo, "Name: 'Other', Host path: '(.*)'.*", $STR_REGEXPARRAYGLOBALMATCH) If Not @error Then $g_bAndroidSharedFolderAvailable = True @@ -52000,6 +52085,7 @@ GUICtrlSetData($g_alblBldBaseStats[$i], _NumberFormat($g_aiCurrentLootBB[$i], Tr $iOldCurrentLootBB[$i] = $g_aiCurrentLootBB[$i] EndIf Next +If Not _DateIsValid($g_sLabUpgradeTime) Then GUICtrlSetData($g_hLbLLabTime, "") If ProfileSwitchAccountEnabled() Then GUICtrlSetData($g_ahLblResultGoldNowAcc[$g_iCurAccount], _NumberFormat($g_aiCurrentLoot[$eLootGold], True)) GUICtrlSetData($g_ahLblResultElixirNowAcc[$g_iCurAccount], _NumberFormat($g_aiCurrentLoot[$eLootElixir], True)) @@ -52098,6 +52184,7 @@ SwitchAccountVariablesReload("Reset") For $i = 0 To 7 GUICtrlSetData($g_ahLblResultRuntimeNowAcc[$i], "00:00:00") $g_aiRunTime[$i] = 0 +GUICtrlSetData($g_hLbLLabTime, "") Next EndIf UpdateStats() @@ -52469,7 +52556,7 @@ If $iLoop > 1 Then AndroidPageError("IsTrainPage") Return False EndFunc Func IsAttackPage($bCapturePixel = $g_bCapturePixel) -If IsPageLoop($aIsAttackPage, 1, $bCapturePixel) Then +If IsPageLoop($aIsAttackPage, 1, $bCapturePixel) Or IsPageLoop($aDoubRowAttackBar, 1, $bCapturePixel) Then If $g_bDebugSetlog Or $g_bDebugClick Then SetLog("**Attack Window OK**", $COLOR_ACTION) Return True EndIf @@ -53816,7 +53903,7 @@ Local $sBldgText, $sBldgLevel, $aString Local $aResult[3] = ["", "", ""] $sBldgText = getNameBuilding($iXstart, $iYstart) If $sBldgText = "" Then -If _Sleep($DELAYBUILDINGINFO1) Then Return +If _Sleep($DELAYBUILDINGINFO1) Then Return $aResult $sBldgText = getNameBuilding($iXstart, $iYstart) EndIf If $g_bDebugSetlog Then SetDebugLog("Read building Name String = " & $sBldgText, $COLOR_DEBUG) @@ -53903,7 +53990,7 @@ Func getResourcesLootT($x_start, $y_start) Return getOcrAndCapture("coc-loot", $x_start, $y_start, 37, 22, True) EndFunc Func getResourcesBonus($x_start, $y_start) -Return getOcrAndCapture("coc-bonus", $x_start, $y_start, 98, 16, True) +Return getOcrAndCapture("coc-bonus", $x_start, $y_start, 98, 20, True) EndFunc Func getResourcesBonusPerc($x_start, $y_start) Return getOcrAndCapture("coc-bonus", $x_start, $y_start, 48, 16, True) @@ -54274,7 +54361,7 @@ EndSelect $sTimeResult = getOcrGuardShield(484, 21) If $g_bDebugSetlog Then SetDebugLog("OCR Shield Time= " & $sTimeResult, $COLOR_DEBUG) If $sTimeResult = "" Then -If _Sleep($DELAYPERSONALSHIELD2) Then Return +If _Sleep($DELAYPERSONALSHIELD2) Then Return $aPBReturnResult $sTimeResult = getOcrGuardShield(484, 21) If $g_bDebugSetlog Then SetDebugLog("OCR2 Shield Time= " & $sTimeResult, $COLOR_DEBUG) If $sTimeResult = "" Then @@ -54284,7 +54371,7 @@ SetError(2, "Bad time value OCR") Return $aPBReturnResult EndIf EndIf -If _Sleep($DELAYPERSONALSHIELD3) Then Return +If _Sleep($DELAYPERSONALSHIELD3) Then Return $aPBReturnResult $aString = StringSplit($sTimeResult, " ") Switch $aString[0] Case 1 @@ -54624,7 +54711,7 @@ $aResult[0][2] = Round(__TimerDiff($hWeakTimer) / 1000, 2) $aResult[0][3] = "Seconds" Return $aResult EndFunc -Func IsWeakBase($townHallLevel = 11, $redlines = "", $bForceCaptureRegion = True) +Func IsWeakBase($townHallLevel = $g_iMaxTHLevel, $redlines = "", $bForceCaptureRegion = True) Local $aResult = weakBaseCheck($townHallLevel, $redlines, $bForceCaptureRegion) displayWeakBaseLog($aResult, $g_bDebugSetlog) If $g_bDebugSetlog Then @@ -54993,7 +55080,7 @@ SetLog("Going to Attack...", $COLOR_INFO) If $g_bSearchRestartPickupHero And $Mode <> $DT Then For $pTroopType = $eKing To $eWarden For $pMatchMode = $DB To $g_iModeCount - 1 -If IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) Then +If IsUnitUsed($pMatchMode, $pTroopType) Then If Not _DateIsValid($g_asHeroHealTime[$pTroopType - $eKing]) Then getArmyHeroTime("All", True, True) ExitLoop 2 @@ -55094,7 +55181,7 @@ Local $iSkipped = 0 Local $bReturnToPickupHero = False Local $abHeroUse[3] = [False, False, False] For $i = 0 to 2 -$abHeroUse[$i] =($g_abSearchSearchesEnable[$DB] ? IsSpecialTroopToBeUsed($DB, $eKing + $i) : False) Or($g_abSearchSearchesEnable[$LB] ? IsSpecialTroopToBeUsed($LB, $eKing + $i) : False) +$abHeroUse[$i] =($g_abSearchSearchesEnable[$DB] ? IsUnitUsed($DB, $eKing + $i) : False) Or($g_abSearchSearchesEnable[$LB] ? IsUnitUsed($LB, $eKing + $i) : False) Next If $g_bDebugDeadBaseImage Or $g_aiSearchEnableDebugDeadBaseImage > 0 Then DirCreate($g_sProfileTempDebugPath & "\SkippedZombies\") @@ -55166,11 +55253,16 @@ If $isModeActive[$i] Then $match[$i] = CompareResources($i) EndIf Next +setVillageOffset(0, 0, 1) +ConvertInternalExternArea() ForceCaptureRegion() _CaptureRegion2() +Local $bAlwaysMeasure = True For $i = 0 To $g_iModeCount - 1 -If $match[$i] Then +If $match[$i] Or $bAlwaysMeasure Then If CheckZoomOut("VillageSearch", True, False) = False Then +DebugImageSave("VillageSearchMeasureFailed", False, Default, Default) +ExitLoop $i = 0 Local $bMeasured Do @@ -55218,21 +55310,37 @@ If $checkDeadBase Then $dbBase = checkDeadBase() EndIf If(IsWeakBaseActive($DB) And $dbBase And($match[$DB] Or $g_abFilterMeetOneConditionEnable[$DB])) Or(IsWeakBaseActive($LB) And($match[$LB] Or $g_abFilterMeetOneConditionEnable[$LB])) Then +Local $maxTry = 1 +For $i = 0 To $g_iModeCount - 2 +If $g_abFilterMaxEagleEnable[$i] Then $maxTry = 2 +Next +For $try = 1 To $maxTry If($g_iSearchTH <> "-") Then $weakBaseValues = IsWeakBase($g_iImglocTHLevel, $g_sImglocRedline, False) Else -$weakBaseValues = IsWeakBase(11, "", False) +$weakBaseValues = IsWeakBase($g_iMaxTHLevel, "", False) EndIf +Local $bIsWeak = False For $i = 0 To $g_iModeCount - 2 If IsWeakBaseActive($i) And(($i = $DB And $dbBase) Or $i <> $DB) And($match[$i] Or $g_abFilterMeetOneConditionEnable[$i]) Then If getIsWeak($weakBaseValues, $i) Then $match[$i] = True +$bIsWeak = True Else $match[$i] = False $noMatchTxt &= ", Not a Weak Base for " & $g_asModeText[$i] +$try = 2 EndIf EndIf Next +If $bIsWeak And $try = 1 Then +ResumeAndroid() +If _Sleep(3000) Then Return +ForceCaptureRegion() +_CaptureRegion2() +SuspendAndroid() +EndIf +Next EndIf CheckMilkingBase($match[$DB], $dbBase) ResumeAndroid() @@ -55401,7 +55509,7 @@ If $g_bBtnAttackNowPressed = True Then SetLogCentered(" Attack Now Pressed! ", "~", $COLOR_SUCCESS) EndIf If $g_bSearchAlertMe Then -TrayTip($g_asModeText[$g_iMatchMode] & " Match Found!", "Gold: " & $g_iSearchGold & "; Elixir: " & $g_iSearchElixir & "; Dark: " & $g_iSearchDark & "; Trophy: " & $g_iSearchTrophy, "", 0) +TrayTip($g_sProfileCurrentName & ": " & $g_asModeText[$g_iMatchMode] & " Match Found!", "Gold: " & $g_iSearchGold & "; Elixir: " & $g_iSearchElixir & "; Dark: " & $g_iSearchDark & "; Trophy: " & $g_iSearchTrophy, "", 0) If FileExists(@WindowsDir & "\media\Festival\Windows Exclamation.wav") Then SoundPlay(@WindowsDir & "\media\Festival\Windows Exclamation.wav", 1) ElseIf FileExists(@WindowsDir & "\media\Windows Exclamation.wav") Then @@ -56039,8 +56147,9 @@ EndIf Return False EndFunc Func btnSearchFailRetry() -If QuickMIS("BC1", @ScriptDir & "\imgxml\Resources\Clouds", 270, 400, 600, 500) Then -Click($g_iQuickMISX + 270, $g_iQuickMISY + 400, 1, 0, "#0512") +Local $aRetrySearchButton = decodeSingleCoord(findImage("Retry Search", $g_sImgRetrySearchButton, GetDiamondFromRect("270,400,600,500"), 1, True)) +If IsArray($aRetrySearchButton) And UBound($aRetrySearchButton) = 2 Then +Click($aRetrySearchButton[0], $aRetrySearchButton[1], 1, 0, "#0512") Return True EndIf Return False @@ -56851,7 +56960,7 @@ EndIf ClickP($aAway, 1, 0, "#0438") If _Sleep($DELAYTREASURY4) Then Return EndFunc -Global $g_aiPrepDon[5] = [0, 0, 0, 0, 0] +Global $g_aiPrepDon[6] = [0, 0, 0, 0, 0, 0] Global $g_iTotalDonateTroopCapacity, $g_iTotalDonateSpellCapacity, $g_iTotalDonateSiegeMachineCapacity Global $g_iDonTroopsLimit = 8, $iDonSpellsLimit = 1, $g_iDonTroopsAv = 0, $g_iDonSpellsAv = 0 Global $g_iDonTroopsQuantityAv = 0, $g_iDonTroopsQuantity = 0, $g_iDonSpellsQuantityAv = 0, $g_iDonSpellsQuantity = 0 @@ -56874,10 +56983,13 @@ $g_aiPrepDon[2] = BitOR($g_aiPrepDon[2],($g_abChkDonateSpell[$i] ? 1 : 0)) $g_aiPrepDon[3] = BitOR($g_aiPrepDon[3],($g_abChkDonateAllSpell[$i] ? 1 : 0)) EndIf Next +$g_aiPrepDon[4] = 0 +$g_aiPrepDon[5] = 0 For $i = $eSiegeWallWrecker To $eSiegeMachineCount - 1 $g_aiPrepDon[4] = BitOR($g_aiPrepDon[4],($g_abChkDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $i] ? 1 : 0)) +$g_aiPrepDon[5] = BitOR($g_aiPrepDon[5],($g_abChkDonateAllTroop[$eTroopCount + $g_iCustomDonateConfigs + $i] ? 1 : 0)) Next -$g_iActiveDonate = BitOR($g_aiPrepDon[0], $g_aiPrepDon[1], $g_aiPrepDon[2], $g_aiPrepDon[3], $g_aiPrepDon[4]) +$g_iActiveDonate = BitOR($g_aiPrepDon[0], $g_aiPrepDon[1], $g_aiPrepDon[2], $g_aiPrepDon[3], $g_aiPrepDon[4], $g_aiPrepDon[5]) EndFunc Func IsDonateQueueOnly(ByRef $abDonateQueueOnly) If Not $abDonateQueueOnly[0] And Not $abDonateQueueOnly[1] Then Return @@ -56957,6 +57069,7 @@ Local $bDonateAllTroop =($g_aiPrepDon[1] = 1) Local $bDonateSpell =($g_aiPrepDon[2] = 1) Local $bDonateAllSpell =($g_aiPrepDon[3] = 1) Local $bDonateSiege =($g_aiPrepDon[4] = 1) +Local $bDonateAllSiege =($g_aiPrepDon[5] = 1) Local $bDonate =($g_iActiveDonate = 1) Local $bOpen = True, $bClose = False Local $ClanString = "" @@ -56985,7 +57098,7 @@ SetLog("Failed to read queue, skip donating spells") $bDonateSpell = False $bDonateAllSpell = False EndIf -$bDonate = BitOR($bDonateTroop, $bDonateAllTroop, $bDonateSpell, $bDonateAllSpell, $bDonateSiege) +$bDonate = BitOR($bDonateTroop, $bDonateAllTroop, $bDonateSpell, $bDonateAllSpell, $bDonateSiege, $bDonateAllSiege) If Not $bDonate Then Return ClickP($aAway, 1, 0, "#0167") ForceCaptureRegion() @@ -57112,7 +57225,7 @@ SetLog("Chat Request: " & $tempClip) Else SetLog("Chat Request: " & $ClanString) EndIf -If Not $bDonateAllTroop And Not $bDonateAllSpell Then +If Not $bDonateAllTroop And Not $bDonateAllSpell And Not $bDonateAllSiege Then Local $Checked = False For $i = 0 To UBound($g_abChkDonateTroop) - 1 If $g_abChkDonateTroop[$i] Then @@ -57136,7 +57249,7 @@ EndIf SetDebugLog("Chat Request matches a donate keyword, proceed with donating") EndIf EndIf -ElseIf(($bDonateAllTroop And $bDonateAllSpell And Not $bDonateSiege) Or($bDonateAllTroop And(Not $bDonateSpell Or Not $bDonateSiege)) Or((Not $bDonateTroop Or Not $bDonateSiege) And $bDonateAllSpell)) Then +ElseIf $bDonateAllTroop Or $bDonateAllSpell Or $bDonateAllSiege Then SetLog("Skip reading chat requests. Donate all is enabled!", $COLOR_ACTION) EndIf RemainingCCcapacity() @@ -57157,7 +57270,7 @@ ElseIf $g_iTotalDonateSpellCapacity = -1 Then If $g_bDebugSetlog Then SetDebugLog("This CC cannot accept spells, skip spell donation...", $COLOR_DEBUG) $g_bSkipDonSpells = True EndIf -If Not $bDonateSiege Then +If Not $bDonateSiege And Not $bDonateAllSiege Then SetLog("Siege donation is not enabled, skip siege donation...", $COLOR_ACTION) $g_bSkipDonSiege = True ElseIf $g_aiCurrentSiegeMachines[$eSiegeWallWrecker] = 0 And $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] = 0 And $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] = 0 Then @@ -57260,8 +57373,8 @@ If $g_bDebugSetlog Then SetDebugLog("Get Donated Spells in " & StringFormat("%.2 $itime = TimerInit() EndIf EndIf -If $bDonateAllTroop Or $bDonateAllSpell Then -If $g_bDebugSetlog Then SetDebugLog("Troop/Spell All checkpoint.", $COLOR_DEBUG) +If $bDonateAllTroop Or $bDonateAllSpell Or $bDonateAllSiege Then +If $g_bDebugSetlog Then SetDebugLog("Troop/Spell/Siege All checkpoint.", $COLOR_DEBUG) $g_bDonateAllRespectBlk = True If $bDonateAllTroop And Not $g_bSkipDonTroops Then DonateWindowCap($g_bSkipDonTroops, $g_bSkipDonSpells) @@ -57333,6 +57446,21 @@ $iBenchmark = TimerDiff($itime) If $g_bDebugSetlog Then SetDebugLog("Get Donated Spells (to all) in " & StringFormat("%.2f", $iBenchmark) & "'ms", $COLOR_DEBUG) $itime = TimerInit() EndIf +If $bDonateAllSiege And Not $g_bSkipDonSiege Then +If $g_bDebugSetlog Then SetDebugLog("Siege All checkpoint.", $COLOR_DEBUG) +For $SiegeIndex = $eSiegeWallWrecker To $eSiegeMachineCount - 1 +Local $Index = $eTroopCount + $g_iCustomDonateConfigs + $SiegeIndex +If $g_abChkDonateAllTroop[$Index] Then +If CheckDonateSiege($SiegeIndex, $g_asTxtDonateTroop[$Index], $g_asTxtBlacklistTroop[$Index], $ClanString) Then +DonateSiegeType($SiegeIndex, True) +EndIf +ExitLoop +EndIf +Next +$iBenchmark = TimerDiff($itime) +If $g_bDebugSetlog Then SetDebugLog("Get Donated Sieges (to all) in " & StringFormat("%.2f", $iBenchmark) & "'ms", $COLOR_DEBUG) +$itime = TimerInit() +EndIf $g_bDonateAllRespectBlk = False EndIf $bDonate = True @@ -57602,7 +57730,7 @@ EndIf SetLog($Text, $LocalColor) EndIf EndFunc -Func DonateSiegeType(Const $iSiegeIndex) +Func DonateSiegeType(Const $iSiegeIndex, $bDonateAll = False) Local $Slot = -1, $detectedSlot = -1 Local $YComp = 0, $donaterow = -1 Local $donateposinrow = -1 @@ -57639,7 +57767,7 @@ If $g_iCommandStop = 3 Then $g_iCommandStop = 0 $g_bFullArmy = False EndIf -SetLog("Donating 1 " &($g_asSiegeMachineNames[$iSiegeIndex]), $COLOR_GREEN) +SetLog("Donating 1 " &($g_asSiegeMachineNames[$iSiegeIndex]) &($bDonateAll ? " (to all requests)" : ""), $COLOR_GREEN) $g_aiDonateSiegeMachines[$iSiegeIndex] += 1 $g_aiDonateStatsSieges[$iSiegeIndex][0] += 1 Else @@ -57757,9 +57885,9 @@ $g_iTotalDonateTroopCapacity = -1 $g_iTotalDonateSpellCapacity = -1 $g_iTotalDonateSiegeMachineCapacity = -1 Local $bDonateSpell =($g_aiPrepDon[2] = 1 Or $g_aiPrepDon[3] = 1) And($g_iCurrentSpells > 0 Or $g_iCurrentSpells = "") -Local $bDonateSiege =($g_aiPrepDon[4] = 1) And($g_aiCurrentSiegeMachines[$eSiegeWallWrecker] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] > 0) +Local $bDonateSiege =($g_aiPrepDon[4] = 1 Or $g_aiPrepDon[5] = 1) And($g_aiCurrentSiegeMachines[$eSiegeWallWrecker] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeBattleBlimp] > 0 Or $g_aiCurrentSiegeMachines[$eSiegeStoneSlammer] > 0) SetDebugLog("$g_aiPrepDon[2]: " & $g_aiPrepDon[2] & ", $g_aiPrepDon[3]: " & $g_aiPrepDon[3] & ", $g_iCurrentSpells: " & $g_iCurrentSpells & ", $bDonateSpell: " & $bDonateSpell) -SetDebugLog("$g_aiPrepDon[4]: " & $g_aiPrepDon[4] & ", $bDonateSiege: " & $bDonateSiege) +SetDebugLog("$g_aiPrepDon[4]: " & $g_aiPrepDon[4] & "$g_aiPrepDon[5]: " & $g_aiPrepDon[5] & ", $bDonateSiege: " & $bDonateSiege) If $g_bDebugSetLog Then SetDebugLog("Start dual getOcrSpaceCastleDonate", $COLOR_DEBUG) $sCapTroops = getOcrSpaceCastleDonate(27, $g_aiDonatePixel[1]) If StringInStr($sCapTroops, "#") Then @@ -57999,7 +58127,7 @@ Local $iHighestTime = -1 For $pTroopType = $eKing To $eWarden For $pMatchMode = $DB To $g_iModeCount - 1 $iActiveHero = -1 -If IsSearchModeActiveMini($pMatchMode) And IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$pTroopType - $eKing] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$pTroopType - $eKing] = 1 Then +If IsSearchModeActiveMini($pMatchMode) And IsUnitUsed($pMatchMode, $pTroopType) And $g_iHeroUpgrading[$pTroopType - $eKing] <> 1 And $g_iHeroWaitAttackNoBit[$pMatchMode][$pTroopType - $eKing] = 1 Then $iActiveHero = $pTroopType - $eKing EndIf If $iActiveHero <> -1 And $aHeroResult[$iActiveHero] > 0 Then @@ -58316,7 +58444,7 @@ Case "Q" If $g_iQueenSlot <> -1 Then SetTrophyLoss() SetLog("Deploying Queen", $COLOR_INFO) -Click(GetXPosOfArmySlot($g_iQueenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0179") +SelectDropTroop($g_iQueenSlot) If _Sleep($DELAYDROPTROPHY1) Then ExitLoop Click($aRandomEdge[$iRandomXY][0], $aRandomEdge[$iRandomXY][1], 1, 0, "#0180") If _Sleep($DELAYDROPTROPHY4) Then ExitLoop @@ -58329,7 +58457,7 @@ Case "K" If $g_iKingSlot <> -1 Then SetTrophyLoss() SetLog("Deploying King", $COLOR_INFO) -Click(GetXPosOfArmySlot($g_iKingSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0177") +SelectDropTroop($g_iKingSlot) If _Sleep($DELAYDROPTROPHY1) Then ExitLoop Click($aRandomEdge[$iRandomXY][0], $aRandomEdge[$iRandomXY][1], 1, 0, "#0178") If _Sleep($DELAYDROPTROPHY4) Then ExitLoop @@ -58342,7 +58470,7 @@ Case "W" If $g_iWardenSlot <> -1 Then SetTrophyLoss() SetLog("Deploying Warden", $COLOR_INFO) -Click(GetXPosOfArmySlot($g_iWardenSlot, 68), 595 + $g_iBottomOffsetY, 1, 0, "#0000") +SelectDropTroop($g_iWardenSlot) If _Sleep($DELAYDROPTROPHY1) Then ExitLoop Click($aRandomEdge[$iRandomXY][0], $aRandomEdge[$iRandomXY][1], 1, 0, "#0000") If _Sleep($DELAYDROPTROPHY4) Then ExitLoop @@ -59474,9 +59602,11 @@ If _Sleep($DELAYPROFILEREPORT1) Then Return If $iCount >= 25 Then ExitLoop WEnd If $iCount >= 25 Then SetDebugLog("Profile Page did not open after " & $iCount & " Loops", $COLOR_DEBUG) +Local $aSearchResult For $i = 0 to 1 -If QuickMIS("BC1", $g_sImgCollectReward, 680, 165, 855, 680) Then -Click($g_iQuickMISX + 680, $g_iQuickMISY + 165) +$aSearchResult = decodeSingleCoord(findImage("CollectReward", $g_sImgCollectReward, GetDiamondFromRect("680,165,855,680"), 1, True)) +If IsArray($aSearchResult) And UBound($aSearchResult) = 2 Then +Click($aSearchResult[0], $aSearchResult[1]) SetLog("Reward collected", $COLOR_SUCCESS) For $i = 0 To 9 ClickDrag(421, 200, 421, 630, 2000) @@ -59552,7 +59682,7 @@ If _Sleep($DELAYREARM1) Then Return Click(515, 400, 1, 0, "#0226") If _Sleep($DELAYREARM4) Then Return If isGemOpen(True) Then -SetLog("Not enough loot to rearm traps.....", $COLOR_ERROR) +SetLog("Not enough loot to rearm traps!", $COLOR_ERROR) Click(585, 252, 1, 0, "#0227") If _Sleep($DELAYREARM1) Then Return Else @@ -59574,8 +59704,8 @@ ClickP($aAway, 1, 0, "#0234") If _Sleep($DELAYREARM2) Then Return checkMainScreen(False) EndFunc -Func RequestCC($ClickPAtEnd = True, $specifyText = "") -If Not $g_bRequestTroopsEnable Or Not $g_bCanRequestCC Or Not $g_bDonationEnabled Then +Func RequestCC($bClickPAtEnd = True, $sText = "") +If Not $g_bRequestTroopsEnable Or Not $g_bDonationEnabled Then Return EndIf If $g_bRequestTroopsEnable Then @@ -59585,23 +59715,31 @@ SetLog("Request Clan Castle troops not planned, Skipped..", $COLOR_ACTION) Return EndIf EndIf -If $specifyText <> "IsFullClanCastle" And Not OpenArmyOverview(True, "RequestCC()") Then Return +If $sText <> "IsFullClanCastle" And Not OpenArmyOverview(True, "RequestCC()") Then Return If _Sleep($DELAYREQUESTCC1) Then Return SetLog("Requesting Clan Castle reinforcements", $COLOR_INFO) checkAttackDisable($g_iTaBChkIdle) -If $ClickPAtEnd Then CheckCCArmy() -Local $color1 = _GetPixelColor($aRequestTroopsAO[0], $aRequestTroopsAO[1] + 20, True) -Local $color2 = _GetPixelColor($aRequestTroopsAO[0], $aRequestTroopsAO[1], True) -If _ColorCheck($color1, Hex($aRequestTroopsAO[2], 6), $aRequestTroopsAO[5]) Then -SetLog("Your Clan Castle is already full or you are not in a clan.") -$g_bCanRequestCC = False -ElseIf _ColorCheck($color1, Hex($aRequestTroopsAO[3], 6), $aRequestTroopsAO[5]) Then -If _ColorCheck($color2, Hex($aRequestTroopsAO[4], 6), $aRequestTroopsAO[5]) Then +If $bClickPAtEnd Then CheckCCArmy() +Local $sSearchDiamond = GetDiamondFromRect("600,430,850,620") +Local Static $aRequestButtonPos[2] = [-1, -1] +Local $aRequestButton = findMultiple($g_sImgRequestCCButton, $sSearchDiamond, $sSearchDiamond, 0, 1000, 1, "objectname,objectpoints", True) +If Not IsArray($aRequestButton) Then +SetLog("Error in RequestCC(): $aRequestButton is no Array") +Return +EndIf +If UBound($aRequestButton, 1) >= 1 Then +Local $sButtonState +Local $aRequestButtonSubResult = $aRequestButton[0] +$sButtonState = $aRequestButtonSubResult[0] +If $aRequestButtonPos[0] = -1 Then +$aRequestButtonPos = StringSplit($aRequestButtonSubResult[1], ",", $STR_NOCOUNT) +EndIf +If StringInStr($sButtonState, "Available", 0) > 0 Then Local $bNeedRequest = False If Not $g_abRequestType[0] And Not $g_abRequestType[1] And Not $g_abRequestType[2] Then SetDebugLog("Request for Specific CC is not enable") $bNeedRequest = True -ElseIf Not $ClickPAtEnd Then +ElseIf Not $bClickPAtEnd Then $bNeedRequest = True Else For $i = 0 To 2 @@ -59612,20 +59750,23 @@ EndIf Next EndIf If $bNeedRequest Then -Local $x = _makerequest() +Local $x = _makerequest($aRequestButtonPos) EndIf +ElseIf StringInStr($sButtonState, "Already", 0) > 0 Then +SetLog("Clan Castle Request has already been made", $COLOR_INFO) +ElseIf StringInStr($sButtonState, "Full", 0) > 0 Then +SetLog("Clan Castle is full or not available", $COLOR_INFO) Else -SetLog("Request has already been made") +SetLog("Error in RequestCC(): Couldn't detect Request Button State", $COLOR_ERROR) EndIf Else -SetLog("Cannot detect button request troops.") -SetLog("The Pixel on " & $aRequestTroopsAO[0] & "-" & $aRequestTroopsAO[1] & " was: " & $color1, $COLOR_ERROR) +SetLog("Error in RequestCC(): $aRequestButton did not return a Button State", $COLOR_ERROR) EndIf If _Sleep($DELAYREQUESTCC1) Then Return -If $ClickPAtEnd Then ClickP($aAway, 2, 0, "#0335") +If $bClickPAtEnd Then ClickP($aAway, 2, 0, "#0335") EndFunc -Func _makerequest() -Click($aRequestTroopsAO[0], $aRequestTroopsAO[1], 1, 0, "0336") +Func _makerequest($aButtonPosition) +ClickP($aButtonPosition, 1, 0, "0336") Local $iCount = 0 While Not( _ColorCheck(_GetPixelColor($aCancRequestCCBtn[0], $aCancRequestCCBtn[1], True), Hex($aCancRequestCCBtn[2], 6), $aCancRequestCCBtn[3])) If _Sleep($DELAYMAKEREQUEST1) Then ExitLoop @@ -59639,7 +59780,7 @@ ClickP($aAway, 2, 0, "#0257") If _Sleep($DELAYMAKEREQUEST2) Then Return Else If $g_sRequestTroopsText <> "" Then -If $g_bChkBackgroundMode = False And $g_bNoFocusTampering = False Then ControlFocus($g_hAndroidWindow, "", "") +If Not $g_bChkBackgroundMode And Not $g_bNoFocusTampering Then ControlFocus($g_hAndroidWindow, "", "") AndroidSendText($g_sRequestTroopsText, True) Click($atxtRequestCCBtn[0], $atxtRequestCCBtn[1], 1, 0, "#0254") _Sleep($DELAYMAKEREQUEST2) @@ -59668,11 +59809,12 @@ EndFunc Func IsFullClanCastleType($CCType = 0) Local $aCheckCCNotFull[3] = [24, 455, 631], $sLog[3] = ["Troop", "Spell", "Siege Machine"] Local $aiRequestCountCC[3] = [Number($g_iRequestCountCCTroop), Number($g_iRequestCountCCSpell), 0] -If Not $g_abRequestType[$CCType] And($g_abRequestType[0] Or $g_abRequestType[1] Or $g_abRequestType[2]) Then +Local $bCheckOnlyTroop = $g_abRequestType[0] = False And $g_abRequestType[1] = False And $g_abRequestType[2] = False +If Not $g_abRequestType[$CCType] And($g_abRequestType[0] Or $g_abRequestType[1] Or $g_abRequestType[2] Or($bCheckOnlyTroop And $CCType <> 0)) Then If $g_bDebugSetlog Then SetLog($sLog[$CCType] & " not cared about.") Return True Else -If _ColorCheck(_GetPixelColor($aCheckCCNotFull[$CCType], 470, True), Hex(0xDC363A , 6), 30) Then +If _ColorCheck(_GetPixelColor($aCheckCCNotFull[$CCType], 470, True), Hex(0xDC363A, 6), 30) Then SetDebugLog("Found CC " & $sLog[$CCType] & " not full") Local $iTotalExpectedTroop = 0, $iTotalExpectedSpell = 0 For $i = 0 To $eTroopCount - 1 @@ -59681,7 +59823,7 @@ If $i <= $eSpellCount - 1 Then $iTotalExpectedSpell += $g_aiCCSpellsExpected[$i] Next If $aiRequestCountCC[0] > $iTotalExpectedTroop And $iTotalExpectedTroop > 0 Then $aiRequestCountCC[0] = $iTotalExpectedTroop If $aiRequestCountCC[1] > $iTotalExpectedSpell And $iTotalExpectedSpell > 0 Then $aiRequestCountCC[1] = $iTotalExpectedSpell -If $aiRequestCountCC[$CCType] = 0 or $aiRequestCountCC[$CCType] >= 40 - $CCType * 38 Then +If $aiRequestCountCC[$CCType] = 0 Or $aiRequestCountCC[$CCType] >= 40 - $CCType * 38 Then Return False Else Local $sCCReceived = getOcrAndCapture("coc-ms", 289 + $CCType * 183, 468, 60, 16, True, False, True) @@ -59726,23 +59868,24 @@ EndFunc Func CheckCCArmy() Local $bSkipTroop = Not $g_abRequestType[0] Or _ArrayMin($g_aiClanCastleTroopWaitType) = $eTroopCount Local $bSkipSpell = Not $g_abRequestType[1] Or _ArrayMin($g_aiClanCastleSpellWaitType) = $eSpellCount -If $bSkipTroop And $bSkipSpell Then Return -Local $bNeedRemove = False, $aToRemove[7][2] +Local $bSkipSiege = Not $g_abRequestType[2] Or _ArrayMin($g_aiClanCastleSiegeWaitType) = $eSiegeMachineCount +If $bSkipTroop And $bSkipSpell And $bSkipSiege Then Return +Local $bNeedRemove = False, $aToRemove[8][2] Local $aTroopWSlot, $aSpellWSlot For $i = 0 To 2 If $g_aiClanCastleTroopWaitQty[$i] = 0 And $g_aiClanCastleTroopWaitType[$i] < $eTroopCount Then $g_aiCCTroopsExpected[$g_aiClanCastleTroopWaitType[$i]] = 40 -If $i <= 1 And $g_aiClanCastleSpellWaitQty[$i] = 0 And $g_aiClanCastleSpellWaitType[$i] < $eSpellCount Then $g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] = 2 Next -SetLog("Getting current available " &($bSkipTroop ? "spells " :($bSkipSpell ? "troops " : "troops and spells ")) & "in Clan Castle...") +SetLog("Getting current army in Clan Castle...") If Not $bSkipTroop Then $aTroopWSlot = getArmyCCTroops(False, False, False, True, True, True) If Not $bSkipSpell Then $aSpellWSlot = getArmyCCSpells(False, False, False, True, True, True) +If Not $bSkipSiege Then getArmyCCSiegeMachines() If IsArray($aTroopWSlot) Then For $i = 0 To $eTroopCount - 1 Local $iUnwanted = $g_aiCurrentCCTroops[$i] - $g_aiCCTroopsExpected[$i] If $g_aiCurrentCCTroops[$i] > 0 Then SetDebugLog("Expecting " & $g_asTroopNames[$i] & ": " & $g_aiCCTroopsExpected[$i] & "x. Received: " & $g_aiCurrentCCTroops[$i]) If $iUnwanted > 0 Then If Not $bNeedRemove Then -SetLog("Removing unexpected troops/spells:") +SetLog("Removing unexpected CC army:") $bNeedRemove = True EndIf For $j = 0 To UBound($aTroopWSlot) - 1 @@ -59763,7 +59906,7 @@ Local $iUnwanted = $g_aiCurrentCCSpells[$i] - $g_aiCCSpellsExpected[$i] If $g_aiCurrentCCSpells[$i] > 0 Then SetDebugLog("Expecting " & $g_asSpellNames[$i] & ": " & $g_aiCCSpellsExpected[$i] & "x. Received: " & $g_aiCurrentCCSpells[$i]) If $iUnwanted > 0 Then If Not $bNeedRemove Then -SetLog("Removing unexpected spells:") +SetLog("Removing unexpected CC spells/siege machine:") $bNeedRemove = True EndIf For $j = 0 To UBound($aSpellWSlot) - 1 @@ -59778,13 +59921,27 @@ Next EndIf Next EndIf +If Not $bSkipSiege Then +For $i = 0 To $eSiegeMachineCount - 1 +If $g_aiCurrentCCSiegeMachines[$i] > 0 Then SetDebugLog("Expecting " & $g_asSiegeMachineNames[$i] & ": " & $g_aiCCSiegeExpected[$i] & "x. Received: " & $g_aiCurrentCCSiegeMachines[$i]) +If $g_aiCurrentCCSiegeMachines[$i] > $g_aiCCSiegeExpected[$i] Then +If Not $bNeedRemove Then +SetLog("Removing unexpected CC siege machine:") +$bNeedRemove = True +EndIf +$aToRemove[7][1] = 1 +SetLog(" - " & $aToRemove[7][1] & "x " & $g_asSiegeMachineNames[$i]) +ExitLoop +EndIf +Next +EndIf If $bNeedRemove Then RemoveCastleArmy($aToRemove) If _Sleep(1000) Then Return EndIf EndFunc Func RemoveCastleArmy($aToRemove) -If _ArrayMax($aToRemove) = 0 Then Return +If _ArrayMax($aToRemove, 0, -1, -1, 1) = 0 Then Return If Not _CheckPixel($aButtonEditArmy, True) Then SetLog("Cannot find/verify 'Edit Army' Button in Army tab", $COLOR_WARNING) Return False @@ -59792,10 +59949,11 @@ EndIf ClickP($aButtonEditArmy, 1) If Not $g_bRunState Then Return If _Sleep(500) Then Return -Local $aPos[2] = [72, 575] +Local $aPos[2] = [35, 575] For $i = 0 To UBound($aToRemove) - 1 If $aToRemove[$i][1] > 0 Then $aPos[0] = $aToRemove[$i][0] + 35 +If $i = 7 Then $aPos[0] = 685 SetDebugLog(" - Click at slot " & $i & ". (" & $aPos[0] & ") x " & $aToRemove[$i][1]) ClickRemoveTroop($aPos, $aToRemove[$i][1], $g_iTrainClickDelay) EndIf @@ -59823,7 +59981,7 @@ ClickP($aAway, 2, 0, "#0346") Return False WEnd ClickP($aButtonRemoveTroopsOK2, 1) -SetLog("Clan Castle Troops/Spells Removed", $COLOR_SUCCESS) +SetLog("Clan Castle army removed", $COLOR_SUCCESS) If _Sleep(200) Then Return Return True EndFunc @@ -60319,8 +60477,8 @@ If _Sleep($DELAYAUTOUPGRADEBUILDING1) Then Return Switch $g_aUpgradeNameLevel[1] Case "Barbarian King", "Archer Queen", "Grand Warden" $g_aUpgradeResourceCostDuration[0] = QuickMIS("N1", $g_sImgAUpgradeRes, 690, 540, 730, 580) -$g_aUpgradeResourceCostDuration[1] = getResourcesBonus(598, 519 + $g_iMidOffsetY) -$g_aUpgradeResourceCostDuration[2] = getHeroUpgradeTime(464, 527 + $g_iMidOffsetY) +$g_aUpgradeResourceCostDuration[1] = getResourcesBonus(598, 522 + $g_iMidOffsetY) +$g_aUpgradeResourceCostDuration[2] = getHeroUpgradeTime(578, 465 + $g_iMidOffsetY) Case Else $g_aUpgradeResourceCostDuration[0] = QuickMIS("N1", $g_sImgAUpgradeRes, 460, 510, 500, 550) $g_aUpgradeResourceCostDuration[1] = getResourcesBonus(366, 487 + $g_iMidOffsetY) @@ -61285,7 +61443,7 @@ Global Const $aiCloseDefaultPOS[2] = [721, 143] Global Const $aiIconDefaultPOS[36][2] = [ [-1, -1], [114, 337 + $g_iMidOffsetY], [114, 444 + $g_iMidOffsetY], [221, 337 + $g_iMidOffsetY], [221, 444 + $g_iMidOffsetY], [327, 337 + $g_iMidOffsetY], [327, 444 + $g_iMidOffsetY], [434, 337 + $g_iMidOffsetY], [434, 444 + $g_iMidOffsetY], [541, 337 + $g_iMidOffsetY], [541, 444 + $g_iMidOffsetY], [647, 337 + $g_iMidOffsetY], [647, 444 + $g_iMidOffsetY], [114, 337 + $g_iMidOffsetY], [114, 444 + $g_iMidOffsetY], [221, 337 + $g_iMidOffsetY], [221, 444 + $g_iMidOffsetY], [327, 337 + $g_iMidOffsetY], [327, 444 + $g_iMidOffsetY], [434, 337 + $g_iMidOffsetY], [434, 444 + $g_iMidOffsetY], [541, 337 + $g_iMidOffsetY], [541, 444 + $g_iMidOffsetY], [647, 337 + $g_iMidOffsetY], [647, 444 + $g_iMidOffsetY], [114, 337 + $g_iMidOffsetY], [114, 444 + $g_iMidOffsetY], [221, 337 + $g_iMidOffsetY], [221, 444 + $g_iMidOffsetY], [327, 337 + $g_iMidOffsetY], [327, 444 + $g_iMidOffsetY], [434, 337 + $g_iMidOffsetY], [434, 444 + $g_iMidOffsetY], [541, 337 + $g_iMidOffsetY], [541, 444 + $g_iMidOffsetY], [647, 337 + $g_iMidOffsetY]] Func Laboratory() Local $aUpgradeValue[36] = [-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -Local $iAvailElixir, $iAvailDark, $sElixirCount, $sDarkCount, $TimeDiff, $aArray, $Result, $iCheapestCost = 0 +Local $iAvailElixir, $iAvailDark, $sElixirCount, $sDarkCount, $TimeDiff, $aArray, $Result Local $iXMoved = 0, $iYMoved = 0, $iFirstPageOffset = 0, $iLastPageOffset = 0 Local $iSelectedUpgrade = $g_iCmbLaboratory $g_iUpgradeMinElixir = Number($g_iUpgradeMinElixir) @@ -61476,26 +61634,81 @@ EndIf If Not $g_bRunState Then Return Next If $aUpgradeValue[$g_iCmbLaboratory] = -1 Then +Local $bPreferTraining = False, $iCheapestCost = 0 If $g_iCmbLaboratory = 0 Then -SetLog("No dedicated troop for upgrade selected, doing cheapest upgrade", $COLOR_ACTION) +SetLog("No dedicated troop for upgrade selected.", $COLOR_INFO) Else -SetLog("No upgrade for " & $g_avLabTroops[$g_iCmbLaboratory][3] & " available, doing cheapest upgrade", $COLOR_ACTION) +SetLog("No upgrade for " & $g_avLabTroops[$g_iCmbLaboratory][3] & " available.", $COLOR_INFO) EndIf For $i = 1 To 35 +If $aUpgradeValue[$i] > 0 Then Switch $i -Case 1 To 19 -ContinueCase -Case 33 To 35 -If $aUpgradeValue[$i] > 0 And($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then +Case 1 To 13 +If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompTroops[$i - 1] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) +If $g_aiArmyCompTroops[$i - 1] > 0 Then +If Not $bPreferTraining Or $aUpgradeValue[$i] < $iCheapestCost Then +$bPreferTraining = True $iSelectedUpgrade = $i $iCheapestCost = $aUpgradeValue[$i] EndIf -Case 20 To 32 -If $aUpgradeValue[$i] > 0 And($iCheapestCost = 0 Or $aUpgradeValue[$i] * 50 < $iCheapestCost) Then +ElseIf Not $bPreferTraining And($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] +EndIf +Case 14 To 19 +If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompSpells[$i - 14] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) +If $g_aiArmyCompSpells[$i - 14] > 0 Then +If Not $bPreferTraining Or $aUpgradeValue[$i] < $iCheapestCost Then +$bPreferTraining = True +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] +EndIf +ElseIf Not $bPreferTraining And($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] +EndIf +Case 20 To 24 +If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompSpells[$i - 14] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) +If $g_aiArmyCompSpells[$i - 14] > 0 Then +If Not $bPreferTraining Or $aUpgradeValue[$i] * 50 < $iCheapestCost Then +$bPreferTraining = True $iSelectedUpgrade = $i $iCheapestCost = $aUpgradeValue[$i] * 50 EndIf +ElseIf Not $bPreferTraining And($iCheapestCost = 0 Or $aUpgradeValue[$i] * 50 < $iCheapestCost) Then +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] * 50 +EndIf +Case 25 To 32 +If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompTroops[$i - 12] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) +If $g_aiArmyCompTroops[$i - 12] > 0 Then +If Not $bPreferTraining Or $aUpgradeValue[$i] * 50 < $iCheapestCost Then +$bPreferTraining = True +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] * 50 +EndIf +ElseIf Not $bPreferTraining And($iCheapestCost = 0 Or $aUpgradeValue[$i] * 50 < $iCheapestCost) Then +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] * 50 +EndIf +Case 33 To 35 +If $g_bDebugSetlog Then SetLog($g_avLabTroops[$i][3] & " is upgradeable; ArmyCompCount = " & $g_aiArmyCompSiegeMachine[$i - 33] & ", Value = " & $aUpgradeValue[$i], $COLOR_DEBUG) +If $g_aiArmyCompTroops[$i - 33] > 0 Then +If Not $bPreferTraining Or $aUpgradeValue[$i] < $iCheapestCost Then +$bPreferTraining = True +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] +EndIf +ElseIf Not $bPreferTraining And($iCheapestCost = 0 Or $aUpgradeValue[$i] < $iCheapestCost) Then +$iSelectedUpgrade = $i +$iCheapestCost = $aUpgradeValue[$i] +EndIf +Case Else +ClickP($aAway, 2, $DELAYLABORATORY4, "#0353") +Return False EndSwitch +If $g_bDebugSetlog Then SetLog("Army Comp is" &($bPreferTraining ? " " : " not ") & "prefered. " & $g_avLabTroops[$iSelectedUpgrade][3] & " is currently selected. Cost = " & $iCheapestCost, $COLOR_DEBUG) +EndIf Next If $g_iCmbLaboratory = $iSelectedUpgrade Then SetLog("No alternate troop for upgrade found", $COLOR_WARNING) @@ -62294,7 +62507,7 @@ EndIf Local $a = $tree[0] - $stone[0] Local $b = $stone[1] - $tree[1] Local $c = Sqrt($a * $a + $b * $b) - $stone[4] - $tree[4] -Local $z = $c / 473.60282919315 +Local $z = $c / 458 Local $stone_x_exp = $stone[2] Local $stone_y_exp = $stone[3] ConvertVillagePos($stone_x_exp, $stone_y_exp, $z) @@ -62735,10 +62948,10 @@ SetLog("Switch Account enable for " & $g_iTotalAcc + 1 & " accounts") SetSwitchAccLog("Initiating: " & $g_iTotalAcc + 1 & " acc", $COLOR_SUCCESS) For $i = 0 To $g_iTotalAcc Local $sBotType = "Idle" -If $g_abAccountNo[$i] = True Then +If $g_abAccountNo[$i] Then If SwitchAccountEnabled($i) Then $sBotType = "Active" -If $g_abDonateOnly[$i] = True Then $sBotType = "Donate" +If $g_abDonateOnly[$i] Then $sBotType = "Donate" If $g_iNextAccount = -1 Then $g_iNextAccount = $i If $g_asProfileName[$i] = $g_sProfileCurrentName Then $g_iNextAccount = $i Else @@ -62940,6 +63153,7 @@ $g_aiRunTime[$g_iCurAccount] += __TimerDiff($g_ahTimerSinceSwitched[$g_iCurAccou $g_ahTimerSinceSwitched[$g_iCurAccount] = 0 EndIf $g_iCurAccount = $NextAccount +SwitchAccountVariablesReload() $g_ahTimerSinceSwitched[$g_iCurAccount] = __TimerInit() $g_bInitiateSwitchAcc = False If $g_sProfileCurrentName <> $g_asProfileName[$g_iNextAccount] Then @@ -62959,7 +63173,6 @@ PushSharedPrefs() OpenCoC() waitMainScreen() EndIf -SwitchAccountVariablesReload() SetSwitchAccLog("Switched to Acc [" & $NextAccount + 1 & "]", $COLOR_SUCCESS) If $g_bChkSharedPrefs Then waitMainScreen() @@ -63045,10 +63258,10 @@ EndIf If _Sleep(600) Then Return FuncReturn("Exit") Local $XCoordinates = QuickMIS("CX", $sGPlayAccount, 155, 100, 705, 710, True, $g_bDebugImageSave) If UBound($XCoordinates) <= 0 Then -SetLog("No GooglePlay accounts detected!!", $COLOR_ERROR) +SetLog("No GooglePlay accounts detected!", $COLOR_ERROR) Return FuncReturn("Error") ElseIf UBound($XCoordinates) < $g_iTotalAcc + 1 Then -SetLog("Less GooglePlay accounts detected than configured!!", $COLOR_ERROR) +SetLog("Less GooglePlay accounts detected than configured!", $COLOR_ERROR) SetDebugLog("Detected: " & UBound($XCoordinates) & ", Configured: " &($g_iTotalAcc + 1), $COLOR_DEBUG) Return FuncReturn("Error") ElseIf UBound($XCoordinates) > $g_iTotalAcc + 1 Then @@ -63334,7 +63547,7 @@ If $aHeroResult[0] > 0 Or $aHeroResult[1] > 0 Or $aHeroResult[2] > 0 Then For $pTroopType = $eKing To $eWarden For $pMatchMode = $DB To $g_iModeCount - 1 $iActiveHero = -1 -If IsSpecialTroopToBeUsed($pMatchMode, $pTroopType) And BitOR($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiAttackUseHeroes[$pMatchMode] Then +If IsUnitUsed($pMatchMode, $pTroopType) And BitOR($g_aiAttackUseHeroes[$pMatchMode], $g_aiSearchHeroWaitEnable[$pMatchMode]) = $g_aiAttackUseHeroes[$pMatchMode] Then $iActiveHero = $pTroopType - $eKing EndIf If $iActiveHero <> -1 And $aHeroResult[$iActiveHero] > 0 Then @@ -63749,6 +63962,7 @@ $g_iSmartZapGain = $aiSmartZapGain[$g_iCurAccount] $g_iNumEQSpellsUsed = $aiNumEQSpellsUsed[$g_iCurAccount] $g_iNumLSpellsUsed = $aiNumLSpellsUsed[$g_iCurAccount] $g_sLabUpgradeTime = $asLabUpgradeTime[$g_iCurAccount] +GUICtrlSetData($g_hLbLLabTime, "") $g_iLaboratoryElixirCost = $aiLabElixirCost[$g_iCurAccount] $g_iLaboratoryDElixirCost = $aiLabDElixirCost[$g_iCurAccount] Local $Counter = 0 @@ -63775,6 +63989,23 @@ GUICtrlSetData($g_ahLblHourlyStatsGoldAcc[$i], _NumberFormat(Round($aiStatsTotal GUICtrlSetData($g_ahLblHourlyStatsElixirAcc[$i], _NumberFormat(Round($aiStatsTotalGain[$i][$eLootElixir] /(Int(__TimerDiff($g_hTimerSinceStarted) + $g_iTimePassed)) * 3600)) & "k / h") GUICtrlSetData($g_ahLblHourlyStatsDarkAcc[$i], _NumberFormat(Round($aiStatsTotalGain[$i][$eLootDarkElixir] /(Int(__TimerDiff($g_hTimerSinceStarted) + $g_iTimePassed)) * 3600 * 1000)) & " / h") Next +Case "SetTime" +Local $day, $hour, $min, $sec +For $i = 0 To $g_iTotalAcc +If _DateIsValid($asLabUpgradeTime[$i]) Then +Local $iLabTime = _DateDiff("s", _NowCalc(), $asLabUpgradeTime[$i]) * 1000 +If $iLabTime > 0 Then +_TicksToDay($iLabTime, $day, $hour, $min, $sec) +GUICtrlSetData($g_ahLblLabTime[$i], $day > 0 ? StringFormat("%2ud %02i:%02i'", $day, $hour, $min) : StringFormat("%02i:%02i:%02i", $hour, $min, $sec)) +GUICtrlSetColor($g_ahLblLabTime[$i], $day > 0 ? $COLOR_GREEN : $COLOR_ORANGE) +Else +GUICtrlSetData($g_ahLblLabTime[$i], "") +$asLabUpgradeTime[$i] = "" +EndIf +Else +GUICtrlSetData($g_ahLblLabTime[$i], "") +EndIf +Next EndSwitch EndFunc Func _ClanGames($test = False) @@ -63825,7 +64056,7 @@ $hTimer = TimerInit() If $g_bRunState = False Then Return If $g_bChkClanGamesDebug Then SetLog("Your TownHall Level is " & $g_iTownHallLevel) If isProblemAffect(True) Then checkMainScreen(False) -Local $Rows = ["300,155,760,245", "300,315,760,405", "300,475,760,550"] +Local $FullArea = "300,155,765,550" Local $pathImages = @ScriptDir & "\imgxml\Resources\ClanGamesImages\Challenges" Local $pathTemp = @TempDir & "\" & $g_sProfileCurrentName & "\Challenges\" If $g_bChkClanGamesLoot Then FileCopy($pathImages & "\L-*.xml", $pathTemp, $FC_OVERWRITE + $FC_CREATEPATH) @@ -63841,10 +64072,8 @@ Else Setlog("ClanGames-Error on $HowManyImages: " & @error) EndIf Local $aAllDetectionsOnScreen[0][4] -For $x = 0 To UBound($Rows) - 1 -Setlog("Detecting the row number " & $x + 1) -Local $sClanGamesWindow = GetDiamondFromRect($Rows[$x]) -Local $aCurrentDetection = findMultiple($pathTemp, $sClanGamesWindow, "", 0, 1000, 0, "objectname,objectpoints", True) +Local $sClanGamesWindow = GetDiamondFromRect($FullArea) +Local $aCurrentDetection = findMultiple($pathTemp, $sClanGamesWindow, $sClanGamesWindow, 0, 1000, 0, "objectname,objectpoints", True) Local $aEachDetection If $g_bChkClanGamesDebug Then Setlog("_ClanGames findMultiple (in " & Round(TimerDiff($hTimer) / 1000, 2) & " seconds)", $COLOR_INFO) $hTimer = TimerInit() @@ -63877,7 +64106,6 @@ $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][2] = $tempObbj[0] $aAllDetectionsOnScreen[UBound($aAllDetectionsOnScreen) - 1][3] = $tempObbj[1] Next EndIf -Next Local $aSelectChallenges[0][5] If UBound($aAllDetectionsOnScreen) > 0 Then For $i = 0 To UBound($aAllDetectionsOnScreen) - 1 @@ -65627,10 +65855,9 @@ GUICtrlSetData($g_hTxtRequestCountCCSpell, $g_iRequestCountCCSpell) For $i = 0 To 2 _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleTroop[$i] , $g_aiClanCastleTroopWaitType[$i]) GUICtrlSetData($g_ahTxtClanCastleTroop[$i], $g_aiClanCastleTroopWaitQty[$i]) -Next -For $i = 0 To 1 _GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSpell[$i] , $g_aiClanCastleSpellWaitType[$i]) -GUICtrlSetData($g_ahTxtClanCastleSpell[$i], $g_aiClanCastleSpellWaitQty[$i]) +If $i > 1 Then ContinueLoop +_GUICtrlComboBox_SetCurSel($g_ahCmbClanCastleSiege[$i] , $g_aiClanCastleSiegeWaitType[$i]) Next chkRequestCountCC() chkRequestCCHours() @@ -65649,10 +65876,9 @@ $g_iRequestCountCCSpell = GUICtrlRead($g_hTxtRequestCountCCSpell) For $i = 0 To 2 $g_aiClanCastleTroopWaitType[$i] = _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleTroop[$i]) $g_aiClanCastleTroopWaitQty[$i] = GUICtrlRead($g_ahTxtClanCastleTroop[$i]) -Next -For $i = 0 To 1 $g_aiClanCastleSpellWaitType[$i] = _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSpell[$i]) -$g_aiClanCastleSpellWaitQty[$i] = GUICtrlRead($g_ahTxtClanCastleSpell[$i]) +If $i > 1 Then ContinueLoop +$g_aiClanCastleSiegeWaitType[$i] = _GUICtrlComboBox_GetCurSel($g_ahCmbClanCastleSiege[$i]) Next For $i = 0 To 23 $g_abRequestCCHours[$i] =(GUICtrlRead($g_ahChkRequestCCHours[$i]) = $GUI_CHECKED) @@ -65710,6 +65936,12 @@ _DonateControls($index + $i) Else GUICtrlSetBkColor($g_ahLblDonateTroop[$index + $i], $GUI_BKCOLOR_TRANSPARENT) EndIf +If $g_abChkDonateAllTroop[$index + $i] Then +GUICtrlSetState($g_ahChkDonateAllTroop[$index + $i], $GUI_CHECKED) +_DonateAllControls($index + $i, True) +Else +GUICtrlSetState($g_ahChkDonateAllTroop[$index + $i], $GUI_UNCHECKED) +EndIf GUICtrlSetData($g_ahTxtDonateTroop[$index + $i], $g_asTxtDonateTroop[$index + $i]) GUICtrlSetData($g_ahTxtBlacklistTroop[$index + $i], $g_asTxtBlacklistTroop[$index + $i]) Next @@ -65759,6 +65991,7 @@ Next For $i = $eSiegeWallWrecker to $eSiegeMachineCount - 1 Local $index = $eTroopCount + $g_iCustomDonateConfigs $g_abChkDonateTroop[$index + $i] =(GUICtrlRead($g_ahChkDonateTroop[$index + $i]) = $GUI_CHECKED) +$g_abChkDonateAllTroop[$index + $i] =(GUICtrlRead($g_ahChkDonateAllTroop[$index + $i]) = $GUI_CHECKED) $g_asTxtDonateTroop[$index + $i] = GUICtrlRead($g_ahTxtDonateTroop[$index + $i]) $g_asTxtBlacklistTroop[$index + $i] = GUICtrlRead($g_ahTxtBlacklistTroop[$index + $i]) Next @@ -67641,20 +67874,21 @@ $g_iRequestCountCCSpell = Int(IniRead($g_sProfileConfigPath, "donate", "RequestC For $i = 0 To $eTroopCount - 1 $g_aiCCTroopsExpected[$i] = 0 If $i < $eSpellCount Then $g_aiCCSpellsExpected[$i] = 0 +If $i < $eSiegeMachineCount Then $g_aiCCSiegeExpected[$i] = 0 Next For $i = 0 To 2 -$g_aiClanCastleTroopWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleTroop" & $i, "20")) +$g_aiClanCastleTroopWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleTroop" & $i, $eTroopCount)) $g_aiClanCastleTroopWaitQty[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "txtClanCastleTroop" & $i, "0")) If $g_aiClanCastleTroopWaitType[$i] < $eTroopCount Then $g_aiCCTroopsExpected[$g_aiClanCastleTroopWaitType[$i]] += $g_aiClanCastleTroopWaitQty[$i] EndIf -Next -For $i = 0 To 1 -$g_aiClanCastleSpellWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSpell" & $i, "10")) -$g_aiClanCastleSpellWaitQty[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "txtClanCastleSpell" & $i, "0")) +$g_aiClanCastleSpellWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSpell" & $i, $eSpellCount)) If $g_aiClanCastleSpellWaitType[$i] < $eSpellCount Then -$g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] += $g_aiClanCastleSpellWaitQty[$i] +$g_aiCCSpellsExpected[$g_aiClanCastleSpellWaitType[$i]] += 1 EndIf +If $i > 1 Then ContinueLoop +$g_aiClanCastleSiegeWaitType[$i] = Int(IniRead($g_sProfileConfigPath, "donate", "cmbClanCastleSiege" & $i, $eSiegeMachineCount)) +If $g_aiClanCastleSiegeWaitType[$i] < $eSiegeMachineCount Then $g_aiCCSiegeExpected[$g_aiClanCastleSiegeWaitType[$i]] = 1 Next $g_abRequestCCHours = StringSplit(IniRead($g_sProfileConfigPath, "planned", "RequestHours", "1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1"), "|", $STR_NOCOUNT) For $i = 0 To 23 @@ -67762,6 +67996,7 @@ For $i = $eSiegeWallWrecker to $eSiegeMachineCount - 1 Local $index = $eTroopCount + $g_iCustomDonateConfigs Local $sIniName = $g_asSiegeMachineShortNames[$i] $g_abChkDonateTroop[$index + $i] =(IniRead($g_sProfileConfigPath, "donate", "chkDonate" & $sIniName, "0") = "1") +$g_abChkDonateAllTroop[$index + $i] =(IniRead($g_sProfileConfigPath, "donate", "chkDonateAll" & $sIniName, "0") = "1") Next $g_asTxtDonateTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtDonateWallW", "Wrecker|siege"), "|", @CRLF) $g_asTxtBlacklistTroop[$eTroopCount + $g_iCustomDonateConfigs + $eSiegeWallWrecker] = StringReplace(IniRead($g_sProfileConfigPath, "donate", "txtBlacklistWallW", "no WallW|no Wrecker|siege no"), "|", @CRLF) @@ -67812,7 +68047,6 @@ EndFunc Func ReadConfig_600_14() IniReadS($g_bAutoLabUpgradeEnable, $g_sProfileBuildingPath, "upgrade", "upgradetroops", False, "Bool") IniReadS($g_iCmbLaboratory, $g_sProfileBuildingPath, "upgrade", "upgradetroopname", 0, "int") -$g_sLabUpgradeTime = IniRead($g_sProfileBuildingPath, "upgrade", "upgradelabtime", "") IniReadS($g_iLaboratoryElixirCost, $g_sProfileBuildingPath, "upgrade", "upgradelabelexircost", 0, "int") IniReadS($g_iLaboratoryDElixirCost, $g_sProfileBuildingPath, "upgrade", "upgradelabdelexircost", 0, "int") EndFunc @@ -68519,7 +68753,6 @@ _Ini_Add("upgrade", "yLastGoodWallPos", $g_aiLastGoodWallPos[1]) ApplyConfig_600_14(GetApplyConfigSaveAction()) _Ini_Add("upgrade", "upgradetroops", $g_bAutoLabUpgradeEnable ? 1 : 0) _Ini_Add("upgrade", "upgradetroopname", $g_iCmbLaboratory) -_Ini_Add("upgrade", "upgradelabtime", $g_sLabUpgradeTime) _Ini_Add("upgrade", "upgradelabelexircost", $g_iLaboratoryElixirCost) _Ini_Add("upgrade", "upgradelabdelexircost", $g_iLaboratoryDElixirCost) ApplyConfig_600_16(GetApplyConfigSaveAction()) @@ -68723,10 +68956,8 @@ _Ini_Add("donate", "RequestCountCC_Spell", $g_iRequestCountCCSpell) For $i = 0 To 2 _Ini_Add("donate", "cmbClanCastleTroop" & $i, $g_aiClanCastleTroopWaitType[$i]) _Ini_Add("donate", "txtClanCastleTroop" & $i, $g_aiClanCastleTroopWaitQty[$i]) -Next -For $i = 0 To 1 _Ini_Add("donate", "cmbClanCastleSpell" & $i, $g_aiClanCastleSpellWaitType[$i]) -_Ini_Add("donate", "txtClanCastleSpell" & $i, $g_aiClanCastleSpellWaitQty[$i]) +If $i <= 1 Then _Ini_Add("donate", "cmbClanCastleSiege" & $i, $g_aiClanCastleSiegeWaitType[$i]) Next Local $string = "" For $i = 0 To 23 @@ -68771,6 +69002,7 @@ For $i = $eSiegeWallWrecker to $eSiegeMachineCount - 1 Local $index = $eTroopCount + $g_iCustomDonateConfigs Local $sIniName = $g_asSiegeMachineShortNames[$i] _Ini_Add("donate", "chkDonate" & $sIniName, $g_abChkDonateTroop[$index + $i] ? 1 : 0) +_Ini_Add("donate", "chkDonateAll" & $sIniName, $g_abChkDonateAllTroop[$index + $i] ? 1 : 0) _Ini_Add("donate", "txtDonate" & $sIniName, StringReplace($g_asTxtDonateTroop[$index + $i], @CRLF, "|")) _Ini_Add("donate", "txtBlacklist" & $sIniName, StringReplace($g_asTxtBlacklistTroop[$index + $i], @CRLF, "|")) NExt diff --git a/imgxml/ArmyOverview/RequestCC/AlreadyMade_0_92.xml b/imgxml/ArmyOverview/RequestCC/AlreadyMade_0_92.xml new file mode 100644 index 000000000..ea93ca236 --- /dev/null +++ b/imgxml/ArmyOverview/RequestCC/AlreadyMade_0_92.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkbhfC0G6G9bCMQt/8w6StQ6XITPC+YrP+R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/PG/c2SeX1Tb3Aq34ZBjj5Wfw4d7KP6RAavJ2k9/oTMGGjeza7TjC69Ytz5lKvdTYMmc8FH4oQBWD0mBWakxwdntJ84HR72J4qxRjXOyPggunOE6V0op1aAW05LLiJuAXCh85NK325vHX8o5n1+ClCvYdsPgAxitLM2lZOZw+10LGcLiEDpfB4qxlk3ecfNlddrBDdJMklpvEpGLJ5zZSswQoXm+pZOKxxkm5hzqRTMwnQgAbG4CdhTj+QFr4U41L+bxqoP9zD6OAPRy5DPnIE1gC9FjiOiA7t0hwRTWJGm5nh9OjufDpTcw3TLqpi4XPKnLgY+muYVwe5qe470YJrsOq7B0RXzo0F010Dw6k+67fJQR7M50kDbpI5/Rmkg7jf33a3ZPtROIJHU0NYM2pEghtKXLSUYTmjxstP1rXfy1gg9W4wg6WCVcD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/ArmyOverview/RequestCC/Available_0_90.xml b/imgxml/ArmyOverview/RequestCC/Available_0_90.xml new file mode 100644 index 000000000..2e0f2c426 --- /dev/null +++ b/imgxml/ArmyOverview/RequestCC/Available_0_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlVLQertSrI1ftydSXKZ7TP4OxI6JoYcHCR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/i145BkZys/ELaZF4Kffq9zU8IofKKvjJzam7qxqYqlB3Jq3zMjulIM67oa7j3pxZzMdCLXUKdtwR8YUWDSQkhR9HqDLNLZ+b4SXu4g4zm/FObb1FELwyRcjNpjS/SQXkjMQ/kEzOWe58OjnHZ+8+oXWkokXIpUbVo2mzrppeGpyuRxER0k0zcXlnU1/+Jlzil9yXlRUfVziEsCy3D+GGa6SwXpgu1qxYkKlOOtUeZivV0OO0vmqbYXKC2klyouYdC7derJzEY2rTnUxD0BKDXLaFtteJDj3451MxU9QO/tj44kJmGhS8jCpqXFGlgfu4ZjFE6hbuq5UoEFkvDXfTtteCuGXkKecCMKQusR1X6mgBTEn3cgYHB4eU7K0TKpguobdjSLENjP1/Y6Yo4wIjMdRbNW8eCXQbahhWHYWyAVvzn4tFHEBFWqAnqDPU9BPKwB4E/ZyTh5LB8BIuO8RzIOWHENdScSr3C2hsr7t2zdEFEuBBAwxL2C0q/atd7UERL/f3N3y1nPylhZD8w83B7bX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/ArmyOverview/RequestCC/FullOrUnavailable_0_92.xml b/imgxml/ArmyOverview/RequestCC/FullOrUnavailable_0_92.xml new file mode 100644 index 000000000..7be2fbf07 --- /dev/null +++ b/imgxml/ArmyOverview/RequestCC/FullOrUnavailable_0_92.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkdNmieW2zC+mViuizW1dic5xCq8ptB93aR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/TNzmj2SCXbtWgk1xo7eWoug2sGLOZbCWiEDhcJuYfuDQCIB07JkZx36REnimHZQbltzePbC7f5epfRcYjk+oC6tmrz1rx5TIh5LSicZSSAmG5KbztKwts24KPotIl7m8tQNZQZKxn1sKgMzhH/hF9ZwsTbxIyTtno1lhMLkZBkO3IpAJ+wLEXh+qVNwDuWbdSw21oamTgjKIpfJ8DRLbzwBbppE0PtnYNy6jLUV6zfFOHqVrlx5aeVVLeGMwcAPrtSNs7bGi8LP7bRq7aSvVXjvLvj2CdSFup3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/AttackBar/BattleB_100_92.xml b/imgxml/AttackBar/BattleB_100_92.xml index 7cd2a3809..178bcd4a8 100644 --- a/imgxml/AttackBar/BattleB_100_92.xml +++ b/imgxml/AttackBar/BattleB_100_92.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlIb4262EpBrS8m/DrmGZACj9eL/Tw+afKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2Q6LGkRGC1ZZFmfjJwQTmINKfdpxqJDDAf5iCmWOjXVbacKAcCtzAGgRjamAaPlf1v5lu5HCloipnfJGNtPLQQVA9o4W4IAks4WaFLn0CmsP6KQmxBxmNvaReLKKVIFUu8TjyMADOn/p08idm/a2URSQbyl+9WYFiYsT9aORLV1Gz0qj6DfuDLf6+M+kHJaM0U4Z0ITx+oWp6XuRLRQ5Xe5rLaMu2Sl+MccynoFka8wx91puLzE+oHRK2t4IdfQ541C5q8q3eCXv3tLE4IXyCz+8BEIG9JvJAVark4Z7OgEA2k4gqkSwyQ/fWdJGjqWEmuq3RUzmklcQoEuGdqMnBWcCREKCxopTJuzqRRrb/dGPqmxkt2/sPj55aWjMfFyfGrQVut4ljBdNWv8C9ARVWmp03jhvrlgI4eF+QQZuiMbYBZDdoxM4dllCnW47COT3KDVcn8TNmQctdrxvNnSE0axRTiUuSnyDfik5lqMCEEPP0kPWDgfwPAz0B01tvd0nwh8Xg70rIAPp2HM7zkd5igccu7agn4VNJSM3OuhPhRN+UW06bs0enE0OOXm2c9IcJfVRIMg/kFXkEDcgEl4OAYJzdb9wGGfCg45RyzepbLh+7whwbZht1xSahBXHe6n1xH462QofUlKA4M6n1pKYLPjJtRN4h31aWuklvgUyeGvY5CWub9+9eg/CPeqrichbX+zoII1i0dIHFdU5+fOuO5rz0QtPkAZvIwttqBQDMXONboNuvA+ifx1oIzIIVXiWKWeyXqp+9PSt5CbwoqPpQVChX1iQ3PhiNgszbsJJJMuSv4UpBH0JxVuIs/V6ePRPuMwiYQfluzBgJYXRPi6D/0m7B4wS718xlg8R7YHEfIgWuxVrlO9yjRPr4Ly7w3ERUxQkEQzy9fQ7hqXaPJWXuC1go4uUtZ5gJ1qpKz8dUJgpZu+JBLzD4hoC9m9IlufMN3sRF3m2OKc06EwBI/EYxV8Wsy9PDiJ3bMoBbYrPrhLD61/aOxQRVGX2a4gsrFmjDM \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlIb4262EpBrS8m/DrmGZACj9eL/Tw+afKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/wsAajbXsmeTjP62WTklLsrlFa/U2u2QF5XAE3gDND7/Fr++rQJ4LiXv8AMpM3OMBd29uN7/zkVj8BRRCNTOBbcRM/Xygdf3PhvVelLKusRQjSc7uF/e3YHCLTcGeGvfDH19fKK2nlQhpVBrrL5YAmKMaFNk/xOAFvaEoFhRckrvyN89x8hpW8t9MFWZWdYou9nNKCvZbMsyQvyZBVGFUaYXiEMvmxt8UGXdeXzH0l7slJl5qHZpDSpi7vWtFL7idtYqCAc+J9mRJ0o++H61B+qvjgH6JPcDm/UOE5b979dQ8JnwcT276YQ2UIOHqkyZ/Vjaivm9r3pukr6AHNT4hmX4Ofrf0t84Frb5wy/sQpTulc9EakmtsSN48dNFWvrySoV+QMkGXsoUknXsMy7YLrcUYQewsiJcSUKuwuVXkQJk6ntqTEv0M1NXIU9b8GP9Ph0qhZe1/Xvehc/9BWPKhyW5DbA/xatwnIP/rpYo87H7AUDCZVP4J4FlpHLRFM232Je+bFf8YWxrUpdXwED9iJOynmq0mseqoyusOiSF4Ilj4brBNGzqTjI43NUjfMos3ESqlBwNfJl3mvWTdVOqqTdGowRviReT+ZeRw6bAWTRTjUecn4fwvOyPhOg4wulxiV1xVpWQe+dGUnc88yFWvV6kxwdK5lLlgUGiUyLwahArI929y36FpEyuiCErq70wzCxv3SjyMbRbQ9b1/qy1LYaXDCW93C9Gpcz5FqRl1OSmgMBjVCeLQndOjn1xUujsuMKk+L+yeXMEkXAjZxdF4fxPVYDDU6eHkedsKNkBMIWrA/0QKX1D2fvatGesx7vni4pb5GJaK3kjD11H8o2odFRNyXKIFGNNROrCIc4dGq8EjS3R2HLjOK2iaJ7/1JEbAAriMVZaehSJtHdLBQ2dSC75ePkFbwi6UKOT5n4KsTLL3Hw8js0Ds7lrCPuTqMTP3ddJceHDwK0aWJ3qHQ2Y1/VcD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/AttackBar/BtSpell_100_92.xml b/imgxml/AttackBar/BtSpell_100_92.xml index b32a92b94..f8e48ee4a 100644 --- a/imgxml/AttackBar/BtSpell_100_92.xml +++ b/imgxml/AttackBar/BtSpell_100_92.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmfEfroAxCv9f0Ch138Nn/6pTsas7D/0C+R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvZ/r6gLpgnuMWDvqkGUEcu559x1SW4tOUOqw7cMq+9lPl87H6V/3FO67Ctk6P1ZE61/DA36DoiWJUmLpaiJyjLbLL6SH3RWhSsGTCRy0DlqyCEVIhZf37AngX6IMUFnitQ1IqD6Mi/l7H7d8QuxS14v1MuF2IQ0Gf8rS6giZ/bBHnck57TASdTPiO3IIjG0mW93PvnxUftmjmHW7HeZmA63NxjCyEv9dBLjWUqbE7Pol5RPNMJILXMgeosXSnxuc/p3xbCnLjo3A220d0T3rdb/6YUBaP7yR5Vd2ymPHsNKmXI0aVjq7yeO8HK5niTj0hIlIaBW1zJWECHkuMvqJdE+CTeAh2KBg6wJ5jNMyMryZ/BRzgkFfWq/yVCxVUHxsyqUnwLWCJbnFcD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmfEfroAxCv9dRbV6rHr8VTLHhMroRjH7WR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/IRMPuTcSqXkafCXIiRE0QhOsCpkfZptCIYyUDnUxqrVKzf9uQXy9+DR7jmpuSyAHgbEJHGxZ8kpoQovODhYuH2Zh1PJ94KHSNkqIsEzOdk3ILrHDI92DEYgI6ILw3jS8KQZFUdK8NSvSPkm0Dfmr0YjjVpFznDHzbRu+bVYgh9bKSymUN8MxhgLT2g6+HYTJvHxz8pB9JBaNsp2C0hQ6IYVNacTGcwYQ1HI063R7T3uVPkV1tWjbLF+DtDCll+qe159OdZB4Nm09sol3U1c2mho1OnaBVY7WI6AYlWUBJiDxQLeglNs31VcD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/AttackBar/EDrag_100_93.xml b/imgxml/AttackBar/EDrag_100_93.xml index 208596358..fde87deaf 100644 --- a/imgxml/AttackBar/EDrag_100_93.xml +++ b/imgxml/AttackBar/EDrag_100_93.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnDxBx6/L2gHwIBq4zPiOuOIAa3Pq7UNeqR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QnwJJn4rm9nBX/wGTGzslkuuPqKSSOn+movuSZyt0Ro+fmxOep/3xIw2O8ZGOx7HshqzRpDu3IA7a+pDvi8nwtShHWzMOEoZliK8qM3/uh5UYdAaUlK43bY/LcWhRXW/iMB2+QxCk02y9dD0HV1yslxQK/IwrSnF0AsWdkYTRJs21I21nsxytkOq09jNcpw/vSOJmIopl6RiHX1aSLzXAQnhEhuncgxetwxOaE4nBQ6rTS72r+7hrkHRsgGloLjNMUOrBCfufzS1O8pfYyXRI/hRAZln/yeJvMY9wPcGqLChpnY1PeBcQBUI1mVYN8FxTm7OpDtMiKcGx0hkCV4vAjRybFA/lJFtL/yhBQ7nVbAvktlvbmgOzxqOI+NoTEaIwN7maHcetzuk+fQNoJoOx2JW4ispOqLzh7fx8NlDLLzbntBuzn40es2L+a3Pezk/cMDvc7r33d3vSLn/Lt5LFIUy/EvSgkiiuVe3y8xQbP3aug3nynOKWIY7dFUek3FuLBknhkeKRm/hmvZiu0dkQals8zvxU28HvzDZeL2WcqTT6vvC8W5t0dS9AfD7sg5fDqY1XCG4CeKQSEbCliDvi0cVFpovtv6zN8O21K8QIIlPADHgcxLJ1jhpr5YIelaFuV7f+v/ygRa6u4SwTbQwkHGkIDFrgsEOQNZC3tINGN/Pdp4jrxR42aSgwyzohskVerMDqiTACx8ObTXX2rIW/2yuNpcpp9OyyMWiC/V/Uhh3evZ7Iji96IBsUvilj1ZRX5LYfJp5N1gRrMvTw4id2zKAW2Kz64Sw+tf2jsUEVRl9muILKxZowzA== \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnDxBx6/L2gHwIBq4zPiOuOIAa3Pq7UNeqR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw//JRUHKqj6m1FkfpTy7OK8ovYu1HSELJk1QTh8hC3jJqW/nqLqZpR3gaPh1e53e4BRYUiyvIA7lcn2KgmK/S6qfmZ5tuchx7JFO01HJFSusetUtyRx9BCzHkeB89OXe2FxtCwC11SqhJ2C7G9TnzeCkBPDr600zqGB7zPYvm1BQvjfig9t9xlDc+u7CzMppKqins+TG8YE1jljweTbbihIv1DJFb2NZzRrQ4A5HHkkP1G6cHceZ+cXbHR1dpabPs6/+2aLZg5Du9JEPKpzEkYxbFwu65o1ccIGpI2NyBnZW6mWvNMVsnMP24/EY8vKK5XzOOT6jpQhylsdkTTcc5cK3qGNw6+SW6wWO11CCIiUz7risciSVUi4xUT8t9mpfQdMO1fYPT0op/g6fJLkN2ujoPxcIURg4pEA5CMYWNZHp2rdJHF6O3J0vMgBwss5uqBVtPb9/Pdk4bd54mEUrB/0C8Q2L7sDvltC6nBp3Y411tDbAwCBos3cnAsH1C3zdqfJr9rDSKjFMBSk1Xn/h8oIbXuzu9iuKjvtozRACcKXEuYUg2BnbGORkN5M1iN1FyDvZ1E+F+wdE0qyQuyMP1kcWpAv3WuaIyl93c4587LK2lqJP1e7jnxUJRqy1+e0U7+8Kes2jjdjUqn4doySHC/CMsZFXsIW0/2QV+oOUqVxobq15oe1J37X6huqoV7NvFih1269LJ7mHzfr2Vs4CoIc0QWwGOeHjZEFLaVAzJzGxDdWYb6ayRay58zfvFRcr2IP1+8T281TmhXA/iFxAkgnyy+mX7r01YHtf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/AttackBar/ESpell_100_90.xml b/imgxml/AttackBar/ESpell_100_90.xml index dc220196d..a4394a108 100644 --- a/imgxml/AttackBar/ESpell_100_90.xml +++ b/imgxml/AttackBar/ESpell_100_90.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnDFNhQs8kTXsrU8FmCBc8qZNOCMmgWnXOR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QdY4PJgXhK2cJVbFZEs+ErZ074XlszPmYsk06MDgbVbMSgtR6FXkZvGhMHUQzAga5krBfI/Gfuoy18J8Bs1IzXRj7E/ArYKjIFHXLNoVB13676Nl4CkRgxZ+/uyqRa4QYie0IGLDzgU9JJYNh0kuSPoBaFEeICRildittDJ1gbJFHxC0kDIKvZqwGL+H/o2QSk4NzU6JwrjNKT0agXicFIGSUjKCdaFY4Kq64tuFXfXWkmOPSn6Fqk3BjAlbaKIBWSWM++MBzEjOUNQmgtYIM1WI2GeGTOcn898oLKEJk7k3lzhBefUK4775RPzzrceL9a8jY3qZLfIjORwt2jvBagOi+EMH7UHV0M2WCXGxBvILHqxZ6wME6bc+CSapn1QZYcrNx8tc5TSwT0ZH8Nc/YJSFvRhgVYbMPNQGRzkfbA4beRjPeBZX2l45E7oxXZPTbzTtHFtny2qs61niwAiyb4AViJQHAVeEYFrxibY6Ln3aYEu4eBhjmxg0iqUEHI16kRTViIxyN3n42ygc3jfS3g2093RdFcpm29FV5k0e5Wjllp6x7nSJm0qSzfyJXgK4H3UeWSgIL6OVDFebJ3vLlS1ZeUvnmcBhrEiCWemhse8qGtoxRbDdCM5hdqeweh/vQ9g/zcMzQu4ioypoR/vmXukEv5QQW4fVKJOJ6ZV471Ixkh0USSrMyTfBgQg8U0zjDTKNyWJ4ZdSe+5bM4oBtcxiPHY3Z2dNp1Hr1tcW/uNWnJcctM9XLmGr1JH9NLKPVCts4nua+LgdM1enmxFinDvVfDGApENFO2g2SOT30VPBELR7dXDPvcP+ldcXQF9wChpecuAZwx5ovkT+rYkQ0yEI6svW0WtE5UOMlzEYEgHOne8hl1MBavAs784vl9YFPEbHJTDexhAdEZx8cUffIbvz0rrAuLenCZOakuWeFOVJ3LC4sKx19zy0v4J+9dYt0enkpSN8D6mN5c79Mu4jplbj16rOzFeYsL3NApvnbXdWAST61Z3iOtlzm33O9QAbN2q0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnDFNhQs8kTXsrU8FmCBc8qZNOCMmgWnXOR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/ldXUvrMiJAvY6pu2LPjaWU9Kj5X5HOFhkw6XG90hrWF6oTC9VA0BWdMu++sH2hy+VTnhLDMdp0TdYXUJLkUyBvnKIN289Xs9uTg2TZhHs8R2l9O1mPoNzn++QgfjbckbB3NGPz1Vf9fZHrapuaW6HNPJ2L7chm0sK7/7zmlWpm5XvrQUGefoSQNMxBQdgTZwl+j3lnOgp7usmASXDnUKlQ2aOmn5VKV56FgNyHg7IOvwEErh68TwS576n5GdCsT24/qiLPMKhK033vnUvUtuSXlpfRN0JlFMwNJUfuXYXeAdRj4u2dfm33wjbMak9EQFwqYYWADFFqmBmsvq2TVIQeUmLIRU9nO8GBjLiAdSgMsfkvdUgtMH1m/6qd87jaJILmq0fIz69eRiEQl9Z/h73+lrlfDYnW5raKTgYhqssExetAGHUmUuPFbUiIOJuNiFn6weCwWjD+Io843X2GCm6i8FBePWSHoD1EZ5j3Q7H+jklc7wWHvFs/vx2OkBwBvoxzAVZ4Ei8lSgc3ZUjCzOAo2T8j1Sw0KGRZfCtezTzGwydVD6cD+IXUFt8jhqU4beLefJaJdb4XAN/WND9pbcbXkQbOIqIJQtrC4RYlvDgEZMfMqDJiSlRHfJNvZgpQ9RCtWA6zntgDAzLA1Gpp4CmASrOt4iTfeJ2Y5kGsY3BbCynPU7siYIrFJjcv5u40achNAvlylccaVfPx2BXNrofx4W/+0O84z5SPFtSK+3I3tYJXgwFk6jNmTdNnwt+tXiVOizWRfhM68iaPiA0D3Ota+D7TOmeG1hVz7u1ZGE6yB5UrXAvyc8T0QdOKwWG6kRZ7RPu/At/JyZ6VxqHHi1OMkPdljK5WjQBzZe00O1dOt2mxxe4rpotvTVu/hDHFYH5420/JzXudp/lhZSRbeFnbdBfAeOLWErdZuK17WCukmha+itsDcvp0r/wqJTugOZ0yEpmEOBhkiQSsW3GMDNVjJNJK4odGbCRqtk0+NfkYENJCXIfTRXzuwyXH2/ATiS+20au2kr1V47y749gnUhbqd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/AttackBar/FSpell_100_92.xml b/imgxml/AttackBar/FSpell_100_92.xml index bd7c3757d..e35ce94ed 100644 --- a/imgxml/AttackBar/FSpell_100_92.xml +++ b/imgxml/AttackBar/FSpell_100_92.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnD4ZSXm6l1iMsTxUNeq2qimxPSHz6ho5uR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QIAUEMQHQKY2/SwMbVS0ULNEktshE9+EL7mLldcDP66EB8tTlTpOeqG2sdnUoQm7Zv7Gs8VMgbq/ZTJwAJxS37jmYLhHWdQ0EsHr029vJv5sfmWxq5GinHGVcYsaC0p4FOxm3ttwtA0flk9omEeW136IvI62nNfeBCFl1kRFmIjt5qNrss1NOZdFPoQp7wkafTckhA1SdBf3LIt3Cu+NE2TnGcHSGCF26cJ040oXRV8nAcy1xat5ix0ltHwhpOTyqAAz4sKHh28xRwAMmmJJdT6juIPnpkdQJFgQVqsoE8vw9QDq9sk9x/uOK5+dONerznezd8IPO5X9zXwOubGpmaurE5txCF+jYAr9Ty60C+Nis6+2+RpHoM/q/U9sNuHq5nDnRLdrvX9znMATrcJcm8F4byk/fSCcgGhbDDVTATgqCMKYtSBfBr+C4QH1K+eqTzmi06JFQ/s3FcnlxFTqb9xVdEErxWD7AlkKLrXOl0fRVfQNSwUpqwu+NDN8OKivUt5lCvZMeWDUeefFy17aipss65tz352oDFvdZ5VH6wE8ywFy0b6N3Hnwci307m1H1VXuJ5P4+V2b+oKVLdusMVlLFtRSPF0c1Fh0P7gf1FBQXurFrLLGotUH5SF9uLIkBiQ1DL+aNkRZbtieZaG5E2oxCDtV47a01Ck9ULOyKDV/PEMfu1b9Ii+BabmvcfnUMqs6AjywCvLtMGesX7fZk9XNd9u42ZHBuDjnEERTev0FMwqzjdfmRQTX4UQfUhtXm/S4VzIey+oEcPH7eBi30A36Zys46OX5hKNyO/JNJgdS4E36qOX6zpJkassJAxebrliaMKOpROZd0CSW+miYLlQdR9/d/Ia45R7bFSJzHxPB2sYCmhelVp47ZSg2vowfV7pJ4Ndyp4FIKNnkMiiVaUTcr1iyj/twzZv/1f8lsmZcH9IUrtl6npsS5eOQidPGA83YslUmok0Cj/BLRGHNhQGUPMn1o02H6n9A4iYEXBKjY6/qQj3OMirO/eghnYlRZwnEMjiuAcFCJkdvXsMycPCDbvg/nOXtDXumJRrGLGtkv9/c3fLWc/KWFkPzDzcHttf2jsUEVRl9muILKxZowzA== \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnD4ZSXm6l1iMsTxUNeq2qimxPSHz6ho5uR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/qXsu1dDrnbEsWhyeH5P8UWiXpvjK3pc13q7HJsdRFa7gE8tbhCFENi9seAPGv+hj5U7q/OUFZVeVDUQHqFv0BG79m1uRFQjUk+jDcxs1v5Am6NAbqGyslbsavu5MLeF9IvwvW5hcMf8bZb9boxS+ahK+FhiyV0h0QKOzc1q7wCMogHMNVKlakimQbDOqCvgNTSrTuSyOyjFG/EQeKET+2NQ8+iTnt/xm3zCsN18N40AfLZok99EPGnSMiNzhGkeD7MApidsuobVTP3Rhnh2ED3xAI9vCshShDxt7cL0Y8Ou6cbtCtupBpq2zeBWR3OsqBCRQd+C+R9rJcaArZKsmrL0yQN/j0e26G6VO0fPZPoGZdw09ZV+aeA/zaLPUimuuGneQbsyvlD/WP/fgC9wToQ5hmVQNf9v4zvDaQDT+23TXS1Eq0gJiChA4HGUeaJAMJmHsal+cU0qmhVEvjeuFH5+DTWz0Nlh2Cr0ty4xVCBiBNBUPOuk5WXcJmos4EsjnYUztdOO1En9rp/ApNrc1gw8hAFAHgjoTdbmdvNqaYLi2g/oel3x09i9syMmZpuFqZ8zCj9RFAJtXR9yRWW6E35LWbxpiexWYpL6wOqhPBFO2DQBdQ1aDb2oZuL1/Lgejk49ErpmvsLpOvs9zL2EuXQ+NwAEpik7RwzFtLmg5zB5sFuqHYuq2LCtvZaDb8CO67eG9mfT9ZLgAmDK4VRxLP4r2GmcclXAmMt6xjzRhPwR6ntRHYDUE1IX1Jnmk2zYs8GFzFH8IzicgFQB3PZyEXTMmBq6ghkgAZTvo7J9fsiOlSf0t2GqmXA6Vz1ELtrYdsz+zEogVNAmaqI7c/l/Pv8j+Bt9+nvk8ORXHg2BDLY4NLyj92d7KR3orEIFOXK/n3fGIy9C76FdYRszwxxMR5h8Licjmt+klsC46EH+1gQocfSPdj/N8Uwrs9osWR+oEXs1AqSPJxqef0sFxkDCkikeiR8sXianADP30gmkaaHRzx9c/khpScu2V2GmpqJKIEHgA90Y8uracGB3zBocKqn3uPNEF5aGmKzRJZ1krqQtrMvTw4id2zKAW2Kz64Sw+tf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/AttackBar/HaSpell_100_90.xml b/imgxml/AttackBar/HaSpell_100_90.xml deleted file mode 100644 index 5e4c112a4..000000000 --- a/imgxml/AttackBar/HaSpell_100_90.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OllVq+PPsLBSudl9U+DMe76vED1CRv3vkiR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/z13ck595SEoMW/ET3eBalezcuUW/ZUYGYr0wRvJC3nuwdnAM/l/fPGGpLBXIiy1kHpX5XeU1Ow81fPAUrIXvH2THq4q00Y6X0WxVRrhN3uyIHETPAxXEzUDzhqUvYHrvn0GERSbEQYyGcSLW2+l5I6QOnCHA3N/6saErOvYjo+X154S5u7CSPYFZ0JULVs2Pgiy4HT2B6nuhNXALxbxOeh20TK0wo+GOtEkdq5suHNq9YufECahgEsrm/vg4g29fq1wjp23mcHoTr6xPcFHjuu5TKBgEuWUNvF1TJp/vvjZXa8+FCnaxUqRqvINUX+jJY5pOgQ8tXqBv8Ptw83UeAA02HO+lgcy9bj1l0kjZ8UM6rVXvReO63Mjf6aQDXlMMhBUGJKSGVoNqiXLL6NIFGOOVBUOz7bAnTmPcz0my0IPQiDTgp5TBC7S0sYw364kH3MKlnrrYQ5H9wPoOS8jHqOYqzmMIkD/pQk0sXVOFdzpTk0/y1n/KRv8Zx+RkQyO9z7d1mJjA1n0NzenIgJUQLJx0Mh0rIc+2l6IKhKBZbGuYAIBlkXqI8tlhOEOI2XLU2MMf5+EibFMQqCF8yD1rYQyEDsmCJ1cJl2LmKAuZZos9d3kViqKuOjoN4kyhha+11qljHShxK/bsGJiHPfVGX8BRlHcTJi7/VwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/AttackBar/HaSpell_100_92.xml b/imgxml/AttackBar/HaSpell_100_92.xml new file mode 100644 index 000000000..397aac20f --- /dev/null +++ b/imgxml/AttackBar/HaSpell_100_92.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlXgtNssoLU0tugBXObPzV2EuHPGcmgsJSR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/FHAfhUgRxeZXVv6OOVorKezFVztbtTgmtKmCrt7Sio+6LrD2noQOwiH9WRWjSsvkilZ2yTiD/KPhyPrJikFU+yKe8w6QYmCCYOa+08gEq2fT8bgMnA2ibuf3LgZdzQRFfZQ5mPiBkE3wKU5kkGFUBqnuN1bNEprCO3+nSAOvsAC3P1RvP06JLCuRfFjd23eBzr3ltc1/CBNhyvGmNc+PRpGuQWHGz2I1Wmd5WEse+ARA3+OgBrrjdzDCroD4ojqj0dOOmk/GmzoFVxXEQTUIdYstcHGZtVKhGfpkPwVHi7H+jBjOn3JopDWCQPjOIjZGbb2E65bnbTdgqtW/+/4Wm2w9BtkI9QQ2maMJOhTLr+yk6835D0K4JXq7HkWJcKossbvwUxFCVGm202XjA8/kZe0x5R2iBbMVa1Gsh7NPpP+3TK+W9R7/e7jGW7QH12E1BYFtCLuQeAhC7r1pAsQH13YLntxkAkEQV/HQ8SXl/FP7mkoidtSTILZ36Pl4fhLn/oMEuED0ErqP9KS6UqkwBikZ8WRNxEcaLg6myhl/3545lhAxZwdssytLTYetH+ysx/lNyXzoU7ybPl5L5gdmD9PIXTbWLxA8+mFeFGFWjvHWZK+CVT5NrJ6XD16nc1CxqCM6KnChXURufBwgfBDUXUf2IIOSOfTe7M/Mv8bRq/q3Z0xvRLrMpGhj/nEhfNM4JZfYk3lnWFkno2A3PSlDQ/ry1xE1C78Vb1B7emBoVPpxO1SiOS+aP+P4WgqZBzQspntMocU03p/HWR/VXaEc0yIWizdKFGTvq+CC9yAcwPLkvcvm9/pdRjqIynpPkx/Y2F9KBuL4SgAU0dvbXal04auhpylUbadBYrGglYrI9jyAsD3OUy8s9xOTUBsABOLmM5LkTDAw5e4MaBictf74/V4V7I6+lOV0FRAWqOWS8k+tTb951O0c9JEdT7b3YNhea4yUX4dDiK0qXRctBaRrAagHS+eCuYegR9ge6zyBsVohVfL35NApk+pdr1lUdsrour1nSxkG7yGWIRppcnWEmIRdYoW1kyq/7UJv4fgQDZ1nSveay6UChYkVGYYLk/IKmjkhdTohSdGS/JVBWE8jszRHr9sqN2sR45Ary15DQIA34TNStDEfq1+37Qh1gb8zpag6fshygf+84jv8nNU829ViPkJV6NJfyMWwdnVcC7OU+X3Wni2UJ+B1CbsXj3QiPyAumwuoUyywzwjHE9NYMH8zGr3T5LPVs/W2fqk0QJMjH/pTtmhWS+lOfbpbMvl7K/sOSXpHWcfNCYBYJ941apal1WSb3lE78yLpFtwXF+mWg5jq2Y1i9JEXsvKbuo4IlrG4CviRx9fKtbj+oNIJj7UjbO2xovCz+20au2kr1V47y749gnUhbqd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/AttackBar/Heal_100_91.xml b/imgxml/AttackBar/Heal_100_91.xml index 1a6250148..871993b5a 100644 --- a/imgxml/AttackBar/Heal_100_91.xml +++ b/imgxml/AttackBar/Heal_100_91.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Omx5f6vdKJuHnFKxbkUXrsN1xAVzdENNn6R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QzaxQWF1LGIU6XG4w2HBJsuc/NFGzKTlIL7bt7BPZ1YLPwTGnDNlqHwskUH7WCeHw0GRKuZUQ6IsiUGAgBgZ/GNN+zhYLj3phrj9qIV5ff877Xq6q5+lBKdocoms9UEqpAeqvlazObm08PYuF1gB1egAQci6lahj6hvZmQgOSpgwsE1b4BD5qSZSha6eyOZhpfEgdtDOJxUpBTnWGW1aSUOWJryRy49kNDpmUcOK41WsvzSEmCHSD/aVuolt5Ef0AFz0exzRgBJNyRrrJaoByXt0TmcAaSun4rXJb48Afw4iVj09iTOvErnFlMDqVsQfQQv+MZI5GuZ81BeFxtdR7kWseGgt7xPQKrXqgdyw9J3xh59DFPOks+ilol6ANmZeHo+fu3vAozUNltiCmgphefeG+aGt9/H7hmDdotci2ovH887BtN0LVmtey4MvqdbBBapU7m/x8/4idZsLuDailBDieiIYR9c7v5NYmJfauuJKiLXf90c2s26AEY1K/3aFuKVY17FMdBX6FP0Q1JlLrz7X7i2Rh/pUzs6z9XpiHAD3Omo3DTWMoG6sIlevKEF154XYYZiQny/98QJXG7XLWcwQ+CvuS6gOjralM6oTjcsmft/k8LvGNDTrvlyZn/8EwCxvOdgvjhbW0+5bLpbyIvzKprSQu/ihbsx9+IkyvLRj9HxBfX3Szpss6GvxzlL8pBClKReHz0muYkdCcYggU2Ap8FohnBxNskNq8bOdaHBlY2z5mxdLJ2HhrjUV6W2boqRnEosahtJOy26WRV1DD7kTzVFf6/shHxW5iaSd2DYtwzSTh87CEavKyDAbyXCnGQ4/8mIjCikF0SjwwK2ZMF106YRhzFBIW8G5Zj2vFIIzbjuwSDL73xLUjbO2xovCz+20au2kr1V47y749gnUhbqd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Omx5f6vdKJuHnFKxbkUXrsN1xAVzdENNn6R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/7KpDjfQrFU59uCppvWTat4N+Z34HYeXL7FsGbmCqiG/RbebBw1XnEiBok698uQoG39Q83flNV86Kc5l2Ug2j0xW6PanCkKFoH2IbqJr9puG7ppdbne/gIIldRaHoZIebR1K5LBMT2dXYv0MmHM+R/r5zS+/AA/BzUPJfGDlLxMx9JaYnYxZesXSvK7oGnU+6DQSL8/5AwUNNjKfKHfjnUtVSwGDr+slwWlANnuoQda/TGuxAzFLiNK8KdgUirCzpLFIHdz2WON3ypc0OHuSEr/1oqszX7IcgoC/y0nNGp3GvihGioHAeNRV/q6vJdP5YFS/Znjo2xFquG21omKH1cqa+CibMG5PAKRSiT/xJeasQ4BDShegooUIaSgR0wl2g1Y9RZ5cjiG3dX4n2chqXajiX3gYZo2JnrH4RzxY/fWTqv0hy6ALOLOTK7nxdg6bhamwp6uMn4z+VljsX2w+QgPZVDu2uHVfPiR5oFXS3QOgNJnnuvLurhTHAuJTwtyWojiqkZfR6z4bRR6q224bQEt6lPsChGRb7HR9JzSqWLNJy6OYZprX6Iyd49nMEXrOlRSSINyUSEuXEDbVSzgQy0X/GkpiFbAyR6THan22C035gRiigyK6qGI1hBGAnOMIEiG+94zgsmUAmVqUaAkDf75iAZDdzLGYoDag0fAxhtCHmEMYle5dbVESiNkqTvD6vRFAIBb125FxDj5sqUQNDPBpOFhw8sX3/nCLFQAukDK0E7g6loWs85AVskGjufoDd/ZrUhhN+M13hMDSGu2tJ/Ynl8dFfUC9JHHppWyZHQYzCjptQ5JYXiMNYGywTOApwT1LoMR1tWDK4xWbgM6aCCPSxu7moMOwSXpVRFLGKArmg3LK7/DEXzC/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/AttackBar/IceG_100_90.xml b/imgxml/AttackBar/IceG_100_90.xml index a93863391..78cda4170 100644 --- a/imgxml/AttackBar/IceG_100_90.xml +++ b/imgxml/AttackBar/IceG_100_90.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkwQvSuLwj/nVcZUDCZQolyBc+sXcpJMbyR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvZ/r6gLpgnuMWDvqkGUEcu9gOq4vxCAaQIeN68UNMIsFEt/JbHTGqulbsgZENLtcgjOQ+WIH5+wmNu2a1iFcenZw0XZxQMNb+oT8xD+IchjYBLRCLlW3wzx+JBLgSK8NJzDCscA3Kdxxy9HWc1YZcrKfxvjb20q30cyaGWjazZVvmBIp8sbxmUgYKpYKS7JCnY/wF55qyF0NnKf4Rc9L7Zmv+EryHHVlc3EXh9WbjLiUcqj17scq2sQbuSQCnImzyHjpsyJk5bJ8SZaxpOPnGfLMCFU/78DbqapyG2uLnYmtHP0jyHZL8MGRMGDctKJfgk9zb4pc+4QEvp++TZmZ940MgbVjUKXEdZwn/jKhoeDTd09w0bAocpzkbrnmX1VCtqy0AcYAkYTfVob8JYtHvejR6RTH/pKpZEisd2e0NRFILJ8txZfC8iBbBs1R76CrJY+bPhyTsFharqWd/h8tRfV4TgM2JEJlbuHVUBavhVQkLdvgetN0Kcp0Ia7zTaX7NCRrae+rXopegrYi1wLPT7D9gnDA6+EPRRohAKCl/J7M49nvmO+UWw26U0LuwOlLi/XI2pY9WMLRW2/g2pNNXfFjsCuVSxXFH2k0H7D9Edh/S0GNfdjmuBqyIMyLax4V/+R5kzciJcR3yQa0ngtATBNBApWAIqzJIShso7kjEWiHSoZ9V1yILKg0MXjAqK9ldMvRCd9hPP0UGbuSK9Xnw8Tz1SvqS2YO4v6H+x7g7BUgmm2LQIp1rYjFL7kIzrvK1npmrpUatEVywnbgLpjNEJkpRp31WG1hkWUBf3gYhWR8egq27o6vZbg8Z+7AI4YCZ12qpeC1EJ9gDkF2ru4kisCpn+8Tr+lrMQuoABHo3H7kpm7Vn0MbulxaDn3qaaiaLk0VowzumbRrUjbO2xovCz+20au2kr1V47y749gnUhbqd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkwQvSuLwj/nVNZuWbX34UhOdoDieNHSTuR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/E8ivQwt/hDF+5obJcIv+5UW8V/RscZemx4dQn5Tr+IlFHgYXCsgyNgY/N6jStCeuWSnP1ENZh+sgU6eCZpzkdsAyg81BKg5S5MdTZdhllGe6utRSRNZBh6FfnNxl4qPeh9dN10Cbm3bC3qCN5LdQO6htm5ZkCPDoWp2lSCYJ0vBrNgrBs5cnh1Yw6c6jan/Yp9nCUSNjX6FfA2gnbYD0CxqEaXrgbh1s4vEo1vlPV2a4HGaNFy7n2zVMWEc003LqtSNaKYDxRuh3YjIQb9ZTVn8nREuny923rHUWfZ8dYOsKntVgn/TlJA+CI8v4CBfegIxPOdwyPwEPRc+r800cvdAFfo3sOGdZU4N4FTa8lN91L5apl1NnDwD3JmLfiF72jJo2ZccJvlmdcL6jrUyyu0A9u6SocT/sm/3c2NAJDB0LlrL+k9PSCHskTWU23zAGD8VeAu9zwaeeqUe7jEmFY+7vebLb6Ni328HMf8d2lFS9jdgTsfu3naULxBTyhhuD4M+t62/f6EY98n/NfyqL8H7Sxd8SINM3DbAJEuE9hLICBQ3tASk8GkLZpTGSh6x7bGlZG66M2Hj9bfwaPLHz4ypwb1kUHlrXabdT3cQ/5Io4/gsI1uhgsX477r9+Bi5uHb9TsNR2bJDdkwgaYHSluLfOMozuLR+R7osq+kIMy9R2YpONUwmsvY8vm0YHehRmwnUS84Y8OpufmWAivpUDvsBTd1cXJa7FZ6QL2DV/+wEhstUIyNKWvxoSRew8hBvPEbCZIlC84NAMfJm8NWP9H5IuhB11PI0U4yawU4VXNDXlvVj5nlO3GIGRoqKzcaDPHT8cBeD6qmRJo9b9X+s1HR/D/yV9hnqLQMgRm29Xmj1f/HdQMejXIKBoNCXeIoHdreqDULV9NI4S1VL4F+Y3MDyL2GR+mdkfVwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/AttackBar/JSpell_100_92.xml b/imgxml/AttackBar/JSpell_100_92.xml new file mode 100644 index 000000000..e3842d822 --- /dev/null +++ b/imgxml/AttackBar/JSpell_100_92.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnQXCp+aqM9hiSS8FWdXM6AOEjkRNfSvASR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/n8VNl3D0O13acNkgonqlqoIkPDo3lKWkY2dn5BN7P+Jt2YUcEAOFj2EKNOBFMSmyI1vZiRCl4kCDSUyt01aQVeKd9GhusdRp3RY/H7t06B9DbE++BvQw0T64pykefSPrUomI1wlm3sHDVxnp6HQsV2tkSDIl+WEoar9B8oeenTb51iwk7sp0fbdUx+1rcbiTntduoAMa90kN39Ztm+LrSYk+AaPPtsF8mwPzPQsBs0tZmMUpSu1o5uKktPrVzKxrCiFLO74Sa/h7FDS8I6CX4j94K/MeWOmt1VMnTrFBRGTkPIYh9nZmSVe3ir8KTv3D9Wh2GUePMG7jtSRkWvPQQgjX36S27c53s6gCVnRng7we8Xc4TWC+KE5UjlYmXw8me6zYdSutuObkJ1IKv5KpXna8XHRK8WEv/r3hUPoltER4bYmDBG7eSQ4goLateChZflX+9yJjY9dhbHWjg/hqRqueW0WFi94hiqMo9fXXjMAOIAaZZeChrtSRdLEZwOK7VXcAehLTRNkX24EHcGqdiDHTNyfjkBO/qBXckdSGLALhOmgCY2tzXUZPmIclsBN9u9wQYnz48mz6gRaKIAT4ohNf0Lgzlw9ue54IB6BmsPJABbsBXgG6D2+pMb7y5HfASfE7AsIHEdoBCiP8BBftZDoidu9PaGjqT4W4gw94hHNTKOSpcgLPXyX+GZ47IoHvF+kUR3sZ6Vgrm3XdsdsBBkcxzGMcHCoUQgu7E/LPrEVMIdUe44cb1RwXALRv+KAgX0eoTwEW0kUQhheGMfSMwLpfQYJl2eG3zzB9L4QRe7E+V6dUNIXYFM+ajg78AdhtYs9PiNJxazcyjh7KsnYCElfwVE/iKkJUhDkWskCb7uKnbTnX7AcBlgjNsVr+j8PCGlm4W/wT2+IajR05JTKnrNp3atvZXlOHzfZw+t2U5ZvRzIlNkyJSdK3eXhDlFT4B0b6Vf5Pdi8z8F0zakVhkUZNmCop/KOP0iYuc9GTomWAY1XNGYzQnbsHKkrGZDOkfymGiWn6vwdrWhnPLHJKWkf0L4HpuL3/3yWLGqmuttZiHVkgYx0ksQECVPT+/7Ibvv0XiwxV4PAJRtjHsmyvtXIo6+xhVqWc7IKFU/IvaY2Aw1nBuSwrmbrPk0knbmqVUcDIvH1lwXTqQQjceMWFor3s7nw5z+V/YRcZMOBF+x/uD6lXXHxNdgeeOV/yGGjlEhoM2bR6cDvb0ezyFQ66ePee25ExjjAgWi5BWrrU8PrShPWLkShUN89O/Ponp4Y9d2ta31hvYcZ7B0flKM1yjSXvLaJ+W/ogQtKa8vVpLlxtO9Gifdb8qJEwU3IjLy4bUQc2lRNQ0xpgMGpxurFdp8enpc/BsdMyH1LlU0HjLQWNahMMNdE2gxde9KpMacGguMB/1lkUlEtyXDIMgmQxbDKICtorcGeXwUyXJt4UCzfUTOJ3ereua1GbNOb5TZy6ohBmKU2hxUhX7Ysd5/b7jy+3/SdnLtA1e3EjFnA2NAKelMwUvLuYECCBAd2xwTiXQc4/8CNmeb/W9sfekyeQxsKwe+jihG8WBOqK+hl8m8ZAgP40mtU6imswxBenKmppveNQsJ+ruxx9xbq1Lh2O7OsWXnan9L/pp+J6mSIA8V4JyDD6Yvrl8kKYnhY8uxx1k24gTuZQ2qkCEYdk/E5R3aRCtrHboEu5CMyTSUA5zINaP91PoxIr2XTR90bq8diqWVtboTipBl9/W4b8e4N+CV+68Omd5Z/oMU+V3O3sFebB16s94T5pPbB3iXtByJJE7YjUp/VTHVb9oJh1pGoEkXD2nUPb3WnMAjxhv5InDoqIOablMU0u0m+FBKlR8FT3O5TFG4ANAgTdyt38V58bCuD+kA+XYAirKr6ywtsGctrezTuVMNa8TPZbjwUaTHAMmAbmPAFmaEE2dNLayiUiwJEfe1sLpmXjo4gGUMBApUl+Zab9w5cXVcZvyrcnCO9QSDLzBBAB39SIVo585WeZVE1lzvzzuERKzn8mmgquUWODXqaQpi83NDSVX8ZtUPfTiazL08OIndsygFtis+uEsPrX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/AttackBar/JSpell_100_94.xml b/imgxml/AttackBar/JSpell_100_94.xml deleted file mode 100644 index 60392e109..000000000 --- a/imgxml/AttackBar/JSpell_100_94.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlVLQertSrI1ftydSXKZ7TP4OxI6JoYcHCR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/NgQSnkUhWBvvVy1BlTX1sjy/KsiHuOf4cXAnXf7SiBF89NxzHWLyRcZh3WkKsdLnlMdzNwFPoZ3lXlBq5mnw9Fjgtg667DAIL+ZGwAymw7lQeAk+YI+vvmiiujtrghqoIGQr+IrqrpTxkafWhdvETkneQzAywKBGNDyN8OFVDaFhzUSb8TmD0oaYjmWapyQQbmoWQOr/eR00RhcZ7Kv10ZAWut2R6JAZYTVm8qW56631n+c6pv93OEQ19NhEeF5md0Diw280HEb4o3fZNso1diXf3AstLsIV1ucv08688Lt5bYnjbQbpirF8wddXRR+Zvjlk9Uu/UVFRQA7XNxestHz+1SOag9H+7a465TwuDx8EmHSxuuPaEAqpoJM7ctFSm6v+jfQphT8IcPN42PS5Bm+gdROH75S83uPhbjO5a3X9Kq80CELVWl7/ZOO4ZsGMJNnSqBj32RaBh38gSZYs3z5iAbq5tQTXafPd9fyiyVvhn2ghLLcUxTVWEyBYwx2vtIZZ6Gzz+De/xvelOx4N3FkrhqVFloCVcwG1CqJX2cuoEdm6LIWC+Ot221mjhx2jgK2vH6f5DZv7bRq7aSvVXjvLvj2CdSFup3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/AttackBar/King_100_92.xml b/imgxml/AttackBar/King_100_92.xml index a87ea016c..4a227e8e0 100644 --- a/imgxml/AttackBar/King_100_92.xml +++ b/imgxml/AttackBar/King_100_92.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Okl2g3pImYpJaAekgF5DJNszVZ46BhtG8GR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QvpZc3k06FS1n1URg8yP97+FYTmN9Zrlh9Ls1k7M34700lIxhSG8zflsAps2Q5fzDKErGgeO5e78bFvNRLuwz+GRfqAHyQUgeESqakjzXRct4D3X79ZxknyyaWhYeXt5MJAqLPKTxSMNibDQRMOhuIhiuP8NllR/GX+6ovfw0FyhS7sdXneiasZWKP8F9/VarERgaj/pLWCXwW/BGM1EHnA8VbanrG8dFmof+vqcNFmnGx8/k/EUNKv0dnHNdzKQvNLwGvtt8xy/nc2vx7hxDKOSEza8c73x9zKcLe4R/BMyGBbd0ZS3YO85NfrL92riqfzLdcvABplmD+vbHQ13RFtaOMZFeDT37PyZBB6hdgVPun2xLbQ4JHbJzNO0UzUA6Oqe6ruBAww4O79TEC0S3SJO27z7hpBlD3zINq7PuXLzpYVDqaClQ4aoZZibcJ/KpQ/Z/0/ZSlAQY4YRdIV8GGm/VOawnkiAjDsbm8/Jtzp0mSHP8irFUmpV2tW0p9ShiudHVNLWcxGKtc38av1b18EPRvwRvg/Vf5XaXvq920yQyiGMDBPqW9PXohOkZ5xZ70BwrXKap9686SlcCku0EFk5D7x8WfSIO8YnnldxBWMjUysu1Mg8fP2N5fhSKrIAVuGuh2wTSsBX6pK4grhqqv6AzCnPlifkfZ5eYqOVNyZAPn2BNLf1EgjeE/B9nhmqD6unefaNM1x8gtXs4yfDyaf0Hf7Je5TC/2kJ42g9Z/e+x+45NjNTDDc3qb0ronm689tqrB/7RJwMUrSNsi4uLtopr41e1TuUIievtX/B0UAmuNflTOZcPcYCtrx+n+Q2b+20au2kr1V47y749gnUhbqd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Okl2g3pImYpJaAekgF5DJNszVZ46BhtG8GR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/6CSBT9vhAa3I/2NrFZxP1gd6bH7Ox8EG6ScROoHzgPz2uiILvTSIW5jqZIGHgs9yZBPdNh+aW+WYjp2AU9BuNr7/5m4APo36v1jE8zhuXtwEbGAvOkXKlhriKCPCAS/hd6tMf5WjszJTw1lcMN6B4wNu1im78FAjLT+9DBzave7POtVc6l9riBHEzni93fBLNK4WePJ2OvSa8NYvV9qRiWLwiftQbd8sJVA+DzrwZE3OcJi8h2bk/Q84GyknoCCgw8SaabG+tLMsRMxXLySCjOqhJUdpMl37QXARsr9eWKf6kfPrp4/QCRQ7ImXU6Su1L9z19TJMRymY4Ori4X/v9qHVme2qnjraIzlGjUaNW3gaDLgyD0HeuCbuCc1LNtreJhKJloZkpsQsXAcJhUfkbTuujhVs6nLB696+ETOp49BqLopEkcyCH/2/aSyeLmibDoyG0XndENAU86V8hpoa/ikBUgN9E5HIUKr0kRzXnQyfSDktMNGL7LiEXGGgCakO5kJWo2+zDnsTwcXILu1b0CMVXdv5eS0nb85cbdeW6QwjdNyle7EhNCGSBFG0eevRo6fYKfsOvu+7GyLnQPm710pmPyyvAADl7wzMvHRriNvUaTe9isABWXX5rAdEVxXSfYpMph7nRucQqwdQV2wGW0jmQBydi6iBsb5FiSSxgj/IcWQTRYN+GL9OHmahnIvWF3SWjwsyUghPr1LS2UnO6wti1OZX3K3diB6OJZAlgho45zKvDFjf7jZ0vGxdEuTiEJ/bhTwS1eFa7k4yJWdnEHF6NtbMtmyCLPLzBn3rZIbKzJ8IYSFUvy/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/AttackBar/Queen_100_93.xml b/imgxml/AttackBar/Queen_100_93.xml index 8249105dc..542d92e56 100644 --- a/imgxml/AttackBar/Queen_100_93.xml +++ b/imgxml/AttackBar/Queen_100_93.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlWakXQntUiBcJ2qBfiXevaWqBhj1ZFoAyR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QyHiHHfGVI84YI2mUl+P9Kh7XYoFwKi5ZGD1swWkbahx7SGjxNtAxQLGSGpaAZ+6NnA1xBIJhebuLf9SWw5qlYDNWPZQ4NHQQf4BrfaqT0Wud3mdky2Z+Vri5EYZENDnhVX/3KbppdLpQOYRsdFrrF2KF7DRQtcspqCneyoX47yeuS+J1mRK5Q1bm2UbbQtRjkMA0gc+rr9xp5d2PPeoP3dpAEomjLczrTuGXrn7HMU4SXg29dfuX4A8evTv1QZNx+I5Y+KYvibvvbZDkwO7J6z/hkZ/zlGEzACNzBeNWrLGPcZBvGjd5cY4YHCsf6JFGUg+DZLQJyO2uN2NIPmLzx7m+/hZ+s3zyGKyHfDJvKZo2pSxPBfzi7rIoJqHZds4t1dD0voTEOzx999UPHVT3s8K9arhczrwaP+NGVghx+AXcHY1b5rll3Q32DcvUde6I3cEfuJz+wMpsRiOXcL1RAqiXDjCCxqxz+godH3bCDiP2U4IWZ4wl5BQdJx8WDOh6jSdFLn5KCqjNZmM3Ju3xoDS1HPvqDZ6IMJobZAa0tRThlkLP+NFQwOZDmAoG4HYNZ1GGiEq407G/i781FjVEDo9biu3DENzGI6Cdfu9CyutrkZP6IuFvNBdIf6imgqL7+LzUvDEm1svXUOKQPUH6wFyfv7A+LtQd2+vXd4Yn1VKoz0mSv1/kWdqMTQNKkTg/kqJgHSukZ9sT7a02fkSxWhVgSwmjFlmtYm1gPlqDfJuJsLYPY3Lc51mijlek/PdkU9ycgXkAHp7KZhMXG7bjee2d8XwX5FvgF3AFfhkMO6XVnJ1oUkZElad7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlWakXQntUiBcJ2qBfiXevaWqBhj1ZFoAyR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/06NAMKohQ0OQVPhHNnSHjAyEpFt38mCCkpIVK/X/QhnQA35lK0QUqQ1Bj7jUW/KnxRBg1dUULteAjFIstP7ccd6mOvVrxNHaSgfQwo+ylIuGw2ShmT6uaBh1ALTx5+YKzyChU0J1Y5+eTZh59KOfrvOHCiqT7noQzvDoq9TEDvh8j1u/zK38zEDg1W7BE1NZvE2tDlr/eU5g112lrgM629lx9oUWTKADDICqQ33orcFEGIAQMdnpsdzD5JpZ1+IxBN4K/oHm/YHHteS/zWEuVvvYPcH2+pqSfNPBKaOJNylVXR3pb/rgK2pmUAEZs5ikrV+H/uLnD9IGkgusGMrGpBTm2Y00UzC1tF+jWMXTtVsx4L8F3+jP7Lfi5HUB+w5CLFFqsR9tt7+orNg86SJyaAq6HMKsbvBKVdvzaAAYMHs1dTIU66Lalgd+xvbmr6uoWUETN5t9pkWFPepDylLvNDVsoVpPNIC3zlGpZdExEjHb1bGIJEIIZKnxBHNRnL3gTFnAnQyFElSdmai97sTEA1JFgzjfoQRHh8RE6eaYW90MQD4i9N7wCCRRmN4MF+NSA4/SihzURGE4SYovI02EVSfdtuRi1JzFJd8vJtay8HLZDFZCh//KpgS5kNEg26EIFRd+b1I06m7iB0VEG072L1CRXGE3ytzodt4UGRUD8sDBgZ7ypVq9RLLvUNckABzF/U3GSDhID0j4poYA4mE79CxRyFJwD3ohuYytYBindkljQz1w90cs3lZQZxtBfUl9ra6yjpbG0OtrjnoTLTieNZZz9x/Y/iHYq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/AttackBar/WallW_100_93.xml b/imgxml/AttackBar/WallW_100_93.xml index 6c6b2aa9f..094898245 100644 --- a/imgxml/AttackBar/WallW_100_93.xml +++ b/imgxml/AttackBar/WallW_100_93.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlIb4262EpBrS8m/DrmGZACj9eL/Tw+afKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2Q0hGObQdRz3KbHfi8LrOy+QZxGwqTzawKEHYJ+u4tnLEbgDkYPfDhyyAThZhOsxvCb7FiXfWXMVtPEKGRmGwojauyYWMMRbXCCI+JxZVkspKl2ieV1I9zvMfIXHD3FIcC1oT7lgIXFZ87vWrS+9itndmXYDrTRHJWsdqsilAv5hZXlS+JoM71V+IP3wig/JD8Cq4cJPbJ2t4NPNzsoFWNO1g43eLRFPdzsw+O9g6SVpqvWznNH9g05stFPycqbTpI3lk1qNO1pm76BoJ85HzX5WmhqFim9bV3VQO4+gAzkQLlUf4cG9+v9mS4j/XClT2UF+awW5OPDdgVWwIU9irUSLvI8iF2A+9anXDI80wDIZ7WSLkJOlS47yUk5SXMChgNQ00q/u9NmOkQ2C5g+mD4FF16dIyAqEIBibaU1ul8tSR7zDoWvs2J0gpseK+1WRBVWJ2UDG9IwEiphppXSxzlWnVb9/F6zpY7HyCimuYARbEtWCpziEPRVqMn3N/yfPGRbdMqmttxeh3Y2H2haGgQTK+Fy3ApaADRaSbjw+tvdNQE8HsE+VBp8ZZhgW1khn+CExGJciIUXX3tLtM5quBJY3WrgAZKVj+6SOzWxmmYCwO3u+tQu8cYrYw95KtzQp6RuKbXXswLFGF8QrOtUKjXrr8GsFBFE/gLD7wv7VvGlu6fwRCag1Wi7EvrXG8Ht0YamITPm0y8HV/OOKvke39YLT/WpYKfs2WOrBpyDQ1bzRZiEpQoE0ycBqtLyJmQG413RrW++rmp9PKYPS2LfKy5qEk3FK7iuoqwtka7WdzqQloagSZsMm3qZnaEHOuHoCaW+eByjmbS4FGn/+eCo/xRRcLsJbqsORS9KThWOzXrZXcZL6qVviSwmFF/xSCeAbIDaeYes8DcQLhw+UH/sx7uRtqe16H1NZKuazL08OIndsygFtis+uEsPrX9o7FBFUZfZriCysWaMMw= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlIb4262EpBrS8m/DrmGZACj9eL/Tw+afKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/E8ivQwt/hDEOKcynWKo/IcLCOQQU2u1LMELzKqs+p7T/gFD9fDRYuFStSjcbbK52ilPu5JIT3RTqBa8H1vQXJYIWlVeUzBFb1Ky0UZQKOJOHfL+ORhZskAb/IngWKG0GHIGLOgu3VXPL6YkDAvyP4eNBCGLvC0D4j/1bLnNkHBW+ehPbv3MGBG7nvWd95bx+h2XMvrrDIZf2moaYNBYFEM8w5DlBbFT61Rf6CFJ04NxfAuo+qnWQ1u6k4+i9LWm9oscIohFTESqLgOlMbmqcAMl1puBRVNKfRvtoid4AMCwEKhzdpD8JrqhLMNcj6+7mJjSLKjTTuSjRVkK5+aVQMTaOEJUgmpZYlLn26wCatYKM1MY1X2dRCaiwi418oYqUaho4sb/boqc4iU5I60dQd2ObncFEVSGOaplKMQZDVOPIYqVSxOxDeGWh0N4fyZl2nRL5xIwyzPcEPj7p+s2/XmlD4N6GlGIvVa0GDYqSG7tygHVXodtWnC9WIkWhP7rQ6eyEejVcPrh48v387vCq1b5f+xPYGqrx+7TVtV+fPBmmc3CFGShQ44jOvS0wDsJRvmrVIYuCY1DTGfo4s0q72aVHJXSCR0LqftFaRQobfxWC+R7gm6s9KKUJejn/uLV5YglkBYnYrAqxtgZGUgQ0wrQTNURxku7nCfBaJug5b3xtZkfmnDPiN5OZ/JgRgsOFrNb1SFH2j8nNocUn268GC5oIbtIr6J0BrmogqjKvAldP1x5B39POWxEjrIcAtoX6em3iiH/4MRSPgPANLFvYTNyAcIg7a0lgM5myGVuNqpSpiApT+ffNwJ4afodiKCYZFxTdEEpZwGeuL45hHVxEyUXw29yrJaZxdb9oN/9fcOpD4e+VOTV8wBd2MP2Lmdf29JCiGAHE31jzj46Hu0AaIqzTExxEWvVZVwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/AttackBar/Warden_100_90.xml b/imgxml/AttackBar/Warden_100_90.xml index 3bfcc9cee..4c0f1f339 100644 --- a/imgxml/AttackBar/Warden_100_90.xml +++ b/imgxml/AttackBar/Warden_100_90.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnHkjVNzr5hTtIpBqtl4Ch2QPVGFSvYDOmR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QCYZHlpUWHHF+jV5eT8OSqCtIwSw/eLayLbMjZaHCXCzfgUqW+kfbeH6KuY1IYm6IIUxgSTH+gmcUZ5WgTf8cevstSXxGFLskcmZvwDirtOZjgTGIc3dwUYOkg70cF9xn+5XylXkDtpTymabG+u1sS8qbufX0BiL4C+eIKPcDkBHxmovMHUYG4g4m3jl9n2thVnLUjPILC4artRwjnMrOaW01jF3oZ/llJ4TbGRYHRorOyR38GgMU7b22JjvAwHeG/0K9c+kKi9b7g+/cNC4bGkvvhEmkgwYm+NLlF0pYHFScGyhlA2G1r7A46J0b+/nbchNWOdWOGwQvEOc+tVfr3lJOM3WIKDBfOYS2qMhSVPaFK5rRAyVkS4MVqS9vSwxpOXhM7qaO36s83E9CVT07IynK0Ycs6V56czW1pMudecJzDx8mGh2bTYM7LESkWhC9mDp4GhvaSCnpZfkOImoyCQ/rlDKQ6vV9Com9ip/zulzLMnjEmTzoDdKcQtgyUtqmUU5q0I8rKnKH1eN+hbi2XQqpp/vhLBvcMqOufQhgt9o2Ov3lN7dV04kb+2yqnhty6p4YF7rcAJFcy+4w3QN/0SgVBmCWLtiWSAq/OHOCfoK24ue2B/4q73tnxqlRrJiEtsYAThubqOZceTHJY8KpzKz3F66eHUTtphLUMdX1nHFvBStNaQ/8gIloiKnQaL2/qupK4NoMQa8Oif7sEvAJLyJTlu/gooLkloClY6nVbAq/SKX4vfPT4q18KpYkX3AX+dVSPD29Y2gP64+GuQFFTcq8ER4IL7CSVwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnHkjVNzr5hTtIpBqtl4Ch2QPVGFSvYDOmR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/c2SSDX+Jn+q3Tt9/qAqEgkTZb1OkyhBXC2iSmYbXYIZHtHRWcJjVHSZzte3YdJovFVKdoIF2w+RWLNcAJ8Bk8oNhGWkRXdToQYiGJKkOKM47QALWwo43/BXBVBQLYH8Wuq4i0+f/9h2+wpuvJSeD74/bKxxC2WmU0y7V3LxCrJ8dgRrgFN/2ANa3G6PLSVTth/gHZ6UotoyAFBDJz+n8rijbiZ0raufHIhdwVFW4PrVPnuT/fbuxQ/xC+UJCuTDCmPcxk9ffm+3y9x9jHw1cYGUW/9K+4rcFhvUIMgxHWFpImJV+BnM9tbTjA0/+HF2uA08KTK3lK8ZI/1cjX8o1+XZjcRc/hm6DLCYyPFT7tcz+6h1zPEJJvXD0FnZiWFT2XPJMwCQiMzBW5WKEDMahhXuS9wF1mDaO8rgJoZTvH6QOQOAkNzV8eoYBDsUjOqBA3ApGrEJljo206NNU0Ngu9jl/Hx0ftyKeSrW/0dMJyfvYCvRUnsNwMpF6GkLMYEwdMd6TweIGKZnOCtmVuOoZXAzZN7RAE7rD3ivRpt9CM6hQzw4hZvyE23IEG5H3xpcrJuFia5iQO2SN/orH7H8zbdGH+iw0/yt5RtePRY2ICEUb7+btIj6Bxyu+dw2ez1mq0bC84qiFj54Zlr17KO5yN+8HZhVdpI496wJ1J6tp8pDRJ5byJJnJ5TIzqxzaqaeLU4N4bFRGcwDe8dbeON93YcuMHwE8Go7ailyIwaAaVbh+B1ingHfKHI1+Y395ZKQZV1bZkxN2QSCKayAjnazkbrxLxVVSdI3ZF3AFfhkMO6XVnJ1oUkZElad7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/AttackBar/Wiza_100_89.xml b/imgxml/AttackBar/Wiza_100_89.xml index 39c1d0e18..f37cca61e 100644 --- a/imgxml/AttackBar/Wiza_100_89.xml +++ b/imgxml/AttackBar/Wiza_100_89.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlgIrlwO+ufGGTb1+qzn0ks+eSBOGwHbqiR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QaijinIREcWOOL3Ejj2/d/nl/MAxAFZ9FW62VyHQtzV3i3OzqrE05CHaVs4lcctA8najxLDesu9iF0IsNu5MBwiGxCAC9nLv+UH876JrGxRKI23D109W65HvwZcFeWAKhrjqvD1VUlAv9CtcvI0Z1R1chCI5Yv6OwmbWUfbX1FaGKG9c+yK4h0C8Yp2PnkJwt4quDM23jtQsZdrcdAD6REwLw0k+DV9djzR450Zm3rAion/KK9XprdgtHFBVnYCvsP+JXl11m9tk9qigwwcBZ6P9pjiYqvtzsHv6GAm6vKVj54rfvj9fFuKxGRjNCk+Mt6PD/cM+gNrGUyNbiPo4+mERqFuKlTb/OtcL5ZetEZKdmDM0kKIAvJBkTsc7tofJCRRw/lNlnZLLsEvg72lfE7hWP/Zhuf96oUTaJ5thCf73tWEZKjcL0m7Xs0XExCrUirMDLFuUyJdx/6W/V/ta1Zou/EpdVuu+eJOSfMJ5y60xU3yx6Ge2XbdvEoBLzp4XoMoPXKCfURHaR5OxwDeNAni/CSeL5ioIR2hXJ+47Gyx/2y4GpwrSDaPvARufuFnjjsHbN/WV9USIznNKLdX4Dr5VOqyh3ko5Azl9Jp5AoXiF6ow/ObvpQ1o7WFUwiS7xHXd7AwtqRPpuUw2VKo7LQ6Sir+MdwP5YBJ14DRR/yudDvdB3VXWBzJY+71HU979J6czpT49HPyQmrS/L4vNNmMyd7jxborhoYp3ushW3PiOwDEprWmfpsFw== \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlgIrlwO+ufGGTb1+qzn0ks+eSBOGwHbqiR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/oL5njidzG9omfkL9cz5F3eo9p+6Dhy0BV9E6pLTd/sbDHZXqSu78/LWlebzEgHMO+4rxgjlHhgW+KI/7v1y3otZep6Y3Xgh/voPlTm1s1jzioPFOUJEbGg4DF2BVQ7UoQ87+i534P+KY0AXyywXrpOdqLJ1/IsJuAss5usdh18pMhEFmY3D7ddx3JVvWMBTO0Qyj5o33qZPoGc8aGvshwnqxOpwakLMZOnQttK+QarswOuq6mK+R1BaoFt1qfIv1s+f2LlI4yT0qXhmYKKdINhkc4qddhOpm2cdbMKPmux0gY09BC2L7vxHVWAe6zI/c/dh6XaxlDDvzpnYvqhh07/dKrsrB4vAb5BLr+tR0G87JSqz3v/GOIvpRCT0J3QB6kmwr6izMLhw7DQEdYWGaLmaE/GL5RGOU6sxc7v0F2gPOgXFR84pO5ksWlAyqB+tdXvMioMMIWlHdpjyzji/2WI/12vHnWbzNl/QWv0X3FvDGk2RZ0F2yae4gsIfMq7SoynpCS52UXGs2UvNQDazHST8o0/pWInpGbEhMMFVAtKRIB5CNWCNLDQRfwKh2qXek0nixPV22HYlP9tvSWsNeOjTuJARHF2hdhQytGKWQPhO2IiKTdKICmAEc7j0G7wPAIRLA/+DP5mNquS4Wknp3K+P1ICMgLZmRLPlJk9IT9g7Xe1K1crGmY9bZtio+WISDgK2vH6f5DZv7bRq7aSvVXjvLvj2CdSFup3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/Buildings/Eagle/EagleB_2_89.xml b/imgxml/Buildings/Eagle/EagleB_2_89.xml deleted file mode 100644 index 320565082..000000000 --- a/imgxml/Buildings/Eagle/EagleB_2_89.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Om3ioS5Ag15Shn+Be8xYe/eLXMkEvpISz+cSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz9JO3WTPAoArwPpmdpjTk79eIuho3LWJML859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh1LMLbJLkGhS5eO4K/PG70uHXJpBHoGv/Y62o26lAaUyarMDhSRqiUpndXbUkeMu8XC6cN3hOn3HRW1FUb8KvGzK0h7udppxO20rZBHP76g6Tab1OnKYO0QEWbwMhrB1SyvTLkEkWhr2hb0SlvjaHH5bOE2t3n28MoR47gG03XBUufqwNiYnuD2RjwhY+se2WsyZszMNSfAE3JAFIci7N906POOiY1Fclz6gDL8N1BffBSopEOGxOpW3RpveaBUnLk7xrdyo5946JqRweEc+BXdhErfMgw9RSzPBUxjWnH+iz0aouDvpcC9xP+VCX+xv5nWwhvyeLigOreT8tETCtN+e5gf9bxWApxCh1d69ioEr5X5twfFLOGNcvcsYVgu5rLS8NWHDRRBGebUL7M0FX1F1Hq53khvO2H2sXHayyOfxCZ5kfy9tIt6F8Jio3hqgkKH4vKT0G+ReGlMJ/nFjPtHCmvsE+RXou7F81nrhi3CiOp6zIf72G2nVtIh0K7Bu+LHDjisMAbc6PVH31C/7IrsKE+TZObXyV9qQsTD58+NQ7pNASvOFSVfOgT4aie+0/dtkNaMgYogAj+zQ8HdvfqV1F4WuaesGTPirxkYg6lXUI6ZNwV3WPCQ4xDg9ey93f7mjYam/thM83YsLV5xvZ46AqJan0S19Zyh7p6/Q65ZcRohYMVYrUdQCkqNVgTX47GNX3sGzsVWClNc3pQ6camOsCr5BRxNZ3UZm76wCjuiiQLHxi5gpeYgGw4TMEFrd467WMzyUkVpoBLLuSveUQnGKPOlmIP/xhjDQa2bflydfph0wgrmFYuUwtZIeY05HOoSbHN+qJcY1mJCEr/JM5z8pc2YTydYQwsJdvpkr19lcUZJjL3ZqEuRhrNJdzD2KRKlTSeZPxczBUTatzm2QKQ25EHJw3ZiRFY2eUyTK1eI7ypoeqjHleBiOPeU+6OEP7SgJP9F88GcHUymZ5A02IAWpByyfztQxTn1JCbeJ53oBq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Buildings/Eagle/Eagle_1_89.xml b/imgxml/Buildings/Eagle/Eagle_1_89.xml index 9596d1ded..6f07a09a7 100644 --- a/imgxml/Buildings/Eagle/Eagle_1_89.xml +++ b/imgxml/Buildings/Eagle/Eagle_1_89.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Om3ioS5Ag15Sq5h1Ad56yJI7Aopa07qUsuR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/yDEzCVjUGXYuADJPapN46UAYb5Un8b067mEMYQpQTNvzvlWN6GhpdhYXNzdogYAs/KMbtLmmG/GOnPxzwedSDt25rfp5+bbfjSkYYVFvn29JISv+8JN3gHqxaZ+tlua9XMNSbPRfi2DsvAMBNR+UmQQqMae5Gcxym9RZpM9E3E/HHFiOWMw7pPC1THjh7JJoolIrfsC7S42OGcP6j7Xvrn+4qhkUXUK8tjKv/g9XEp7zBCw5paciCLE/yhvxZfT9e2VzQmQDcBeU1MCkTTZ1UwJpSijrzlLBLNmocEbZgrWEMvtxiTOEiACrJo6eUSrV1QrNCdVALIr7yYaaf1eL7kn4dy6ibQdC8Tcp/sdxPec/i+W/KGUukfIW8hfk7WGSVaUlnGYTcBMw9ONozFYDbu0Af2EZA2O3JFyCs28Y3yZe6bLGUl8oUrntmqzxcaCsqWjlkh/lx4JFxKnHhcjsa7rI1CmmFoijlSVwb42gtEIKhpinioe1n30qgC6cMC15mLB0pjByTyPovQquugQF2RAF7SdZk+FjPWKFhfx6WtDw4LT3MyOmxp8ZB9dejVETrTdemG/SmkPbWrmqpOIAhqBk056RUIfjyQFF6513609MZbUxd4ddyCcczLRZzKUvSepMBkW7Yg/uH324BNi6qQLHNomaH+yn7i0e7cWa8fBDoWXi1WQka5ZSLKKyXytkEXC77vvERKv8fEDhXcbQRHAnHJQZpX5NjdJGIVsuk229UtHueRHjZTSsNGYfs1Bb26GHRCpt1WRMBir8h30fE1bpIpgIZFzB5/Y+svHwznR1qzX7NWB+8m5vyQEZ91TWeMG694PFxebuReNMv5gAB1AsIZ8pdmZZq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnXOjAcEcf74vn9/jZAqvdEptipQhFWdKKcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz7Xk9p92hTCYLPwHFT18t5JeIuho3LWJML859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh4FvYr49Z8Js5236llz/DtsvFaA5YR8FRfGNl0eKG/9PwavU/PiBFVvpxGKZkzpKJ1LAP4Jr9OGW83dVXQ4uU8wS6rsITubWuIBCsq5LM2y4Ue0AYAaet139cfqH7xNKzaOA0VXsDr5zrAwTj7zk/LqX2EcbzzCOJOjb6idOTdoCgsX1MSUc+s4QjvVcFz+taXSXsDZRA77/DotuNzydaPGIjRZDHW6f5CGLLzBIJyPRH8bXUOrX4vdBOSiO/Zb2+EWizDHZLLVkvU5oP69zWT6N7I5p9D9VRZJCqetK7oa/g4CZeEHFGgGkh1si/Uq4U3yZwQKxxyI91bPNQKdSzUc5eBFpszqbDSJ23p4kTqKlp1j6QjQ0VDH192GCmsLz0ClhIIIjqgTzLLdJsJnk6zNZYrdk0lcAvyxtsQgO8XU7VDvvkJ9bMtSo5jiPisczg6638y51W7A5q9Ev3OdEw9j/KK6MItDbmgMKILJpR5MwEOuCPH9v3MadbpX/IRxrpU8iUQeMChnrec6KXpgxV0YkYvMmcjQxGfajWrWABCDvSaTNMP8iK5lO1+LKMMuxe1exsx25UDc+q0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Buildings/Eagle/Eagle_2_88.xml b/imgxml/Buildings/Eagle/Eagle_2_88.xml deleted file mode 100644 index 745ab8124..000000000 --- a/imgxml/Buildings/Eagle/Eagle_2_88.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Om3ioS5Ag15Sq5h1Ad56yJI7Aopa07qUsuR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/yDEzCVjUGXYuADJPapN46X3N/UickhqX7Pj8DrNnSHcQn557wXafpColYtjCOrBWnJDbsHvqa1rY438Sue2meFoReq2rRL+stp/xAsGxPQMeL/baznE7cwTft3Tartlt6G3n9ROzQxcoWCZZ7kMxFfNMld+PaEoskKDTV70SNzXbaqd/rW5okX1egyDmLXm5WuO5ak3VQ9VCh6lkRtY0/ejhGxRbc3g6EMW6VK8/kRT49eQ3Scq/bQari7chRWNZPoLaNN//ipoLhUx5JTTXc/gKoCEh7EQ63ncOIC0+jRXVVRftxgAAHi0Air9fbeNJrt+CiIeL+v+QLgJZ9yCf5Do+nmRlaEddJsX4zmPGNd3snJsblMox+trDT/rTV4dA59NI+aOLzl7ZKjfVRxj73wTnfnSYbLGaaKWHvX1toLfP2h/JoKAQtKuKyEM8urEZ4J9p7II+2jCFtKxPYIM9dgUCcIq6QK//LWDMnCO3TuCdJiKESQnhOO/4foY6C/wvlVRmgxGJYHaMdDQBhwi6sZJVOfLtAgmjU8hFTuY+DBTdOBuYnZOG3ETtgCMFPrFnTFPyExoO/tqO7XHRM0cg0lMPhSzZlYAz4ql/68etNBEW5/EYWsaVlNDLFjyBnm/0qF/rtFFcgDEvEhDGRcG95Ad+NmsX1NrBI0SXlgsYR2dZlXH6xsoLwWQ+IgwT0x9wq5bK48ZNqX2HGvGvVcyp6eAYuxJtVdJDB85iu/r7YubBsIJl24RLlCq/hk3Fgg4KxO58z+RQvPL30iRyvHtbloeheXLiUUksq3C8ps+2+2jm7Et9ldSIGRV6x0RUiqhSbgsLeox8RaLyR5LS3rBOBF4GgoYq27Oiq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Buildings/Eagle/Eagle_2_89.xml b/imgxml/Buildings/Eagle/Eagle_2_89.xml new file mode 100644 index 000000000..2847db7a7 --- /dev/null +++ b/imgxml/Buildings/Eagle/Eagle_2_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnXOjAcEcf74vn9/jZAqvdEptipQhFWdKKcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz7Xk9p92hTCYuJTPjuMX39fRtFTU9DQbmr859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh92UStSifCJR5Uo5zw087J6RSp+JwR839RmPFeymLMy70Lb9rwuOCtUYapMEg0ArYzwVsarf59uIthOLpXr6GLYOXCS+gMSTupxHRWHyPW0QeGNKp7ADzXFv9z+YYBKi1w7973LdDTBUBv0F5PoYsreZtwqdi/b8XJYOKso9keuveNSH2jNJYANis0LMSpsFgIiauFhORSKGO+AdD31A/5QKlvEVXX6/XUpquWFBE3c2GHfkNiTYo6x5+zTnTx8C7nag7j3CR6L2prT1drY6DnGBxiSq1e6UnHo+59FUvRVI2xfQVe1vOLhiC77LLPa5PhdFYLcf7T8fTuiMchbLTw8plsxkXuoQpk7cjmdAXEb4SCZJucXUPGHWkzs/iJkFeQjGgPrYDqkwz3rAEvJ1hinqmCwSmHliqirkLPICzKBrgrpSDlrL2BkbR4vKkP/UiKwjURlJuCPkOtNJuOi+CN/RrWkBMmU+tnajpvADes4g/U9J6S9NxdBM2wHjCwe9i6SNyM70abR9NmQvP19Z44XY7KJ6SdCJ7QswhhgXDjTJ0gRg2ZT4zQXYUuSQkoYoeHwp4N3u7uSEVwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/Buildings/Eagle/Eagle_3_89.xml b/imgxml/Buildings/Eagle/Eagle_3_89.xml new file mode 100644 index 000000000..392fea365 --- /dev/null +++ b/imgxml/Buildings/Eagle/Eagle_3_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnXOjAcEcf74vn9/jZAqvdEptipQhFWdKKcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz7Xk9p92hTCY035ZoCG0avv2Zkaqf81l0b859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh2YxlEYNnlEKhUQfsaeS6aqZNQI3VV9aejbj6BPgACnSjm1/JIRZP/484FjbqtO+WhHYin07ndALS2o2OT4paMyBtoxxAmH9dSuIgsIYg3Zt/5QcASFDIMTpGxM2V1sG76X+hcMMgIh0IHuM+DTr4KHRwr6sJ180EdR6KSp6lLEaHZhPr0cDya5ByK8R0QhnKzSglaIhlZonrU0i1+Qo3/GbMGO/vIGCZ2pT9V7Bq2SSCdoRMVlbktqsm+6sNkLukJNXniT7gLLFJxofxds7ZMIJyK2sCfWR+gXnKFxhg1pjM2h+LzMMzgK/kAmqv76pe13yY9RKdCFt+ML3aWuT3AxLjGNQIUAk+SqQSYFLghxUy4KVphjqfCkel+wbqFhoHndhImqqy2UyhuheNsLELI/byo2wz/LI+0esi40HE5ZFGSlmGMocnKR5bAJQg2yq+tQcIg8UgzRlnUQM0a0xcpLMdPxqMF+/eHklEGN6o2RR0qS+NNVgLgQP3U3RuPeQ3EFA7TPg6mPeoDzji8AUN3oKYdWP/g2gOcFD2yi60FjX+yi13+3jWoLH3ogzw7VlQROSzLFz9UA8au8iR38TUs1XA/iFxAkgnyy+mX7r01YHtf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/Buildings/Eagle/Eagle_3_90.xml b/imgxml/Buildings/Eagle/Eagle_3_90.xml deleted file mode 100644 index 70e59c762..000000000 --- a/imgxml/Buildings/Eagle/Eagle_3_90.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Om7xNqajs8vHmM+VyY7CxsLoL/Ovei0lwyR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszECOswVEoRm2QMPiFOQZ/bUhqcJFEOMUAnyDdukdl1djqmETTOnu4LXAES93E8XcUs4VKWgySrR333/Chvjuxh2uBUBsNR9WZyIJxoY4Lp8LpBswbPPQaFUOdJwagRBBM3Lth+SwhrVeRtHbh6Hde23JPzNXq/4ezrU0nymZwJsfln9TM5RIKm380lLBkQKqIm0QBnKmysOWtl9PcpiD+6Atn9V7yaEgdZkz5S/bGLcCXTTbs+nlsGdLJoKMg/TuaSb5bbWn7n2lsEa1kPm83ceTREn4TwI7vjQSP5XhtQyVfQA5/uugYYETsq6T8Xryxcw4/fUwm08uwNExALpWFQFBP7OQNwWVCZsDoO6ge6H0MWwBteiXlXKSXBVy2LLgxVAdU3VGoYqikvihCvX6PTLOChnT3gCeg80/9TqIVDCiYZafacnOyA88KuE1rq4hy9E+OTPxicJtEjHvNDSwS77ty28M/EWKJK6ACntiVdp/sSdBt27y+DVcPqYc5nvVaWT+PHOZi3nQdhiTX41tyVjReAc2rs74RXbrIucWbFS9/IZfIcCs6PeUXGUhSzivE2aH2l89VT+jyZk5U4kPTiH5LzqdfX2Bb/h3EAc8WyiWX5G2YRQ0pDONedM6NmkiT4ST7ZiKptm8rIaeyBPyJGox554DzVMollZRaijAS8Lzok8/J/sVbO9gTTbQMELU8phXQF4rpwrJc0S6CeGhNYMnwNZh7zhfnQoJgHm8bmDej9HkLbc7FNb2/VE00Ekb3ABqYjxgVnwZDRlyTC2oe8ccAHhvxM6PE7OpldmYXDepUdAXtDzcmJbLaP+EXrtM7CTUf2XDgS2J5NNnQBWENRkUtDrhiZ1l9nP0oAOaSBKFCiManThz4gDLHuAeHgT7QYi68QCd+Gi+WN0ddujJRdoH5gTlLU2w5wQJ0mkNX8tg3DIsvVbn1zewMnsSO/6vRFlPfckvMUFRGz7ujFO5aLwoAbJocKzGOv/DYGTrkTYISPfAsIz4kmgD8fsSdn8UggoRN4p/Uv9M/8vadBxih/GyQWV6WfHfkbNVGWYiWZbKKLr8rR5xxoQdAKePbFn234Lu+rY0/j1nYVR9gjgVsofv1ctcG/fq9QxzTNo0F1ETapXXYAZCI2iYMk0WHhVJ3IxYiPUajTF2ZxgVJs0FgnaTQa4n+v4YrVSidEOGwQzqcikDSruhSbez3NqXvQNhFA+VarTYeDgym0TQE83li+CMr5Dh4XSvUrnp9/RITCzR89YM5qd8DTR0v9/c3fLWc/KWFkPzDzcHttf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/DonateCC/Spells/BtSpell_100_92.xml b/imgxml/DonateCC/Spells/Bat_100_93.xml similarity index 100% rename from imgxml/DonateCC/Spells/BtSpell_100_92.xml rename to imgxml/DonateCC/Spells/Bat_100_93.xml diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Exciting8s_0_91.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Exciting8s_0_91.xml new file mode 100644 index 000000000..ddfe3b317 --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Exciting8s_0_91.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmOUIc18vt9mhTYdM1fV0Wuox1Tx23IoSeR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/9tN2IFbZnxHa9fvvggByolEsD0GbVfvUXXyQ3dcXztQxmswwnaLjQiII7hI8Wop2kyS4cinUnqSrq9OQf+86IwH17nDD55qecJRIqA+szc3WpTfIn6YBS09CZbViOZNeru9rbh3Ngx2V7Q2wDPqVEvkem4dXFz7SpPo2xm3DNJmHmLHwvDYohPP0RRuTNQMh5BrTcf+7ZM+1b3arAXnrqS8yL9n3R/CLphxFqHfH3f1EIL0KuRMK9zAHInSaaG21cy8zdY8qzMitmT2bJs3QGQs/gm8byVJ4FcPFJ26M4YRywjh/QfThEc0k7b1MN8funGoSPm647m553FpAypyMW4UAYRoq2VF5HZWERSMkDkfFLbF8yLK+492qbIxsj2/ugK2vH6f5DZv7bRq7aSvVXjvLvj2CdSFup3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Exotic11s_0_91.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Exotic11s_0_91.xml new file mode 100644 index 000000000..107dcf70d --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Exotic11s_0_91.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnTH3nO3Rmg0CZGnOsl8d1b1AHBqlhaTeuR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/NGyHHXC1y6yuwjE5L+EIml81FliIVcP9s0XTikyXQvkdpgFQd/Ziv17jWJw7qZh6l9RWikco0vaSl+XnXlCo46W9jCbDrvS4LKoAAoY0N9qr2jgfh/k0r3g364lpTxZzlC8dLUviRa8cjngVI8FOL4KUJ7gO0CJ9RjL86DXuIfSNgPp2w//7p6fvaaVoMo+3dCsM5vFLHduDhyME0Mk0D28DYRG20VB9kNxY1Kbp6OqRL3udnkGmpILD5mIUzsEMFQMTmjP4l47HsO9wqq3P9StmFndaKMI33lDoVrfiBW7nCRSbbhqZd98gryMrxe3W/VXcBLFYMH0IsG+MDXCh2/WrXGrWPJnernqT3UInR9S/9harsfeBtb2ZU768fx6RcQ+xh2XZ9T0YHUwqy2wB3Jga/Ky8Y69eI/nugiiCJ59TipBR51g2WnrUYJ37FIW8aiUiybHIWGV7chNcA7Ce6i/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Noble9s_0_91.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Noble9s_0_91.xml new file mode 100644 index 000000000..8c2e7d197 --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Noble9s_0_91.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmEf9NwJeBG2vTYH/nNngJMLDFtOJy0Q6WR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/8PHdovMlPjjRuBiDn3FwtMJgb/1lzTxvjbCTWWmzqv7/S0IIozfoZWB8fajxqd/gIZTNf8OSntdwLTJ7yAcf4RxSfG5CSZ3bpDEIVJXSpeFDV+MSpLtQeJQl1GGyKNr7Yp4edLc1Qq8/sugaVNRkMtzi9H/zgbsxBH/g2gCR09hq99gsBd3R1cq8eCtRWpI3gWabTjB6WbDMBClVZ7Ahr3gWgarzqfP5VtAdQ/+U0NLPuV9+m+ciiDGMrJqcWTawP6tYvqXVyJJnPpAK4doQaB8bCk3dqYfuLbhLkrdy6alZNXlQxpAFV5Krbzxz2pSI0qQLYAYc0aDMeFU5z7r8T6n0PtDxeK3KDyOM8wh39STHQEoz12BTBQhpeTQxZT7WdaZ5aWlN5OinZ0TSWQqCw3xthni2KtZ8O4feMgT8yzXj9ymwOWohG8EKhkHEKytN+KuVT7ae9VISpEA+vdqoasOAluZaVsUtq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Scrappy6s_0_93.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Scrappy6s_0_93.xml new file mode 100644 index 000000000..809286489 --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Scrappy6s_0_93.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlVLQertSrI1ftydSXKZ7TP4OxI6JoYcHCR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/eV5NBbLHeKLtzAzKfqO0ka8HWfBjcWVzueM7ZjamVrzfVzZmB3HVEw2uL4f+D2T+saLMGjmOhbWgCsq8YIXKhj66qxET+G5P6FzbGGzbVrploKSwC1xnhM0LHVh7oNf7t5fs+/6NU0T+bW/ZaUyFs40b7xI1BlElvleQ15CSxl3DAfUBnruQxZAU1OuaHMchOO1y45wleck8u5EQJkpKI7KeceRUBrroj5ixjX4mFGKu6BMh0yt+pdUXrQb1+rY8jONFcAbnf4P85rFkC39XUBFRlcQg8h5QEw6r3l5q8LyJafMOV7qiM8geVbHukpIujp4rEh0r5HB9I2/0djSAB4HVEmwtpnqe9Su6iuFaglJ8EkhZK50JBgf0wztbKzVfCNBC/bFMUVrcw5qKmJbly8B8tsxRvD2hxlFUmvnYuFLVkfs01XhAvgoWL34JdpOK9s6kAUApJySXqzlyCU3bedPXEzlj36nu1+Pjm0UmyM/lp+6LUo/WqX789aGFxbj882Gdg7aumqSW3qISh4raxAXIywK5nIoX8fp8c4yc6+k/zOFicb0Y1x2D8j4xNyg05nsoUpk6iHGHSnyIfjULMIJi5WQjfUmyb0ufHLQGrewlkLkp75zcDAqZ9oiPuVDDPoIsy3dPa7wXcAV+GQw7pdWcnWhSRkSVp3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Super7s_0_91.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Super7s_0_91.xml new file mode 100644 index 000000000..c19d66dd6 --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Super7s_0_91.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlKQMq6fOTHxY8iSLVhlwt+0zBXXOVdnomR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/et4BZOaL3kDqXUqUlmeYqnxOw7vCMzgk6CRnJCKycDJCZCtVDGAl++92paLhZLNU0m/zUIdmeM2N8ztlXu9HtG4QZ+RiECG3DURSVS6S7Bjv2hUsN90X2O8h3/J/3RSnrI80jtnOEi0zRvWBHTGyc17q/f1fISVpf1Qg8r55JhpCDPZ/LZ0IoD4zadwJ+MIFzEGCEvcB2+DqusoHJwqcljwBr+G/s9kdkVdFRS4g4eMc0y2PrKV1hL3jizwYuT81xZdQJE7bUz+dYraeDfKudhqnzRb/cMXKzOkYhoO/TNYWcJXk5joimGFrv8G2bz/KDhN0CcRSee2KYaePbudIuFihWY/oo4rLCpNUUUlhh/2M4wIvWlchzwm6emzBfymJz3jtkh43/oTBp7E70rgeFzZBy/xptWmCZmgPZcW+sNnz+7v/gb+qVAj8TAxZfYnPKiv7CE4R1pKL2019HF6Qpw+FzeQfqI1J8BbpDwRO1MgvV8WTebUFt3HIZ+3edPWmHGxXPXqxUs2HwGp15j0WUpjtu+Zob7AvhKk8FWhqvNyJdOrjayiqheWNRpm2fzAj74bsuMje0xsXcAV+GQw7pdWcnWhSRkSVp3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Terrific10s_0_91.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Terrific10s_0_91.xml new file mode 100644 index 000000000..37c5ec26d --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Terrific10s_0_91.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnGH4ih+PtHWXt8GIoxkXcAn4/FSrM9t1KR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/E9l/yEPKZ7XYXUc5IrBa99wgY9Siivo9CNDzHb481XLYl+C2cwXD88UKrRntTjf8ZBbAHytqaAkkQq8J7vwBrRpG8AAvPkIemOSfLoozH/F8FCpXcnNE88Thw8ndyw3UZ3vwt0KYnbw7mRjHLp1F7BQ5/fKit8joVlNs9QSqs1mFK4UFtChEi4i7A08jdw+Q29pQ5bd8BWK9rRGLZXCzjsXALVhimrnj3BeP1JbXlAJHD9BlUb6b+WZm5O40ssccfzzeVkWGVd7FhBdSnGfo78VBfJoLBhCPodSLQ4NuMgW8cygUAazVIuZa5P3mf0c04X1RTt6x2+hr5Op8rXh8PWr9kfs3m82zmLYtqLgl4v8PDrHQuzYSjatL8vi802YzJ3uPFuiuGhine6yFbc+I7AMSmtaZ+mwX \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/B-Triumphant12s_0_93.xml b/imgxml/Resources/ClanGamesImages/Challenges/B-Triumphant12s_0_93.xml new file mode 100644 index 000000000..a0006acc9 --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/B-Triumphant12s_0_93.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+On1qqpR5EecLtoDY52LqTMeG00guIQz7pKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/BAYKupFHxgkmIM7QSpW4BqXjWPEXhLVRHJwLiQyDfD2RK/WukupESN/ZQmZE8+wwV7uYrJ0B/13cILNW1DowXLcaVgpVMXLPYUE+Riawq04YvM0K/9EaEkfdVEh1VQHaKydG9fb6ElAoK3VT/Zw8gIlHDxNdTVwZlb7ZfTIcVbuA4lxjkN1kp5neqB+C3KJl8lygI1hXLKpDu71gcxI7I0/FJxJvSvoXMgg1rkibURxPD542NARphuOno6/KIRI+4VPm23Hjd4iRMEjBmo7RNw9/LXmWSuGQ0f1ejO2xx4Jeihld6boYEs1aP7kPBj49bLdFpI5rBgu5qf2qYmnfSp/GxkaZMeHEFKoHhkw+vJRCh2hqKjNEFx6VW2NFRYhACMkoU+JKvexQaeMFDeMISb8sOWGMxXvFlFtrtoOp55cfOe6yq3mhjCKDFQcPZItnQV0U6kv0DT0yJIeBjgrHWo+raUyXNwUc/nsFG79euW6UrN+SSmncWweH6cnfTPJRbGHw71t/pHpUvqgx84yiLCkNkm7VejXGdb4Dism4J24j9k7U5yTA+A1FUuSMJ8Yvz8TO/FkutpQ6oy7IJmwgwbORZ5ogrj3JZFA08+1G6c5ncQX0wgM3u2sy9PDiJ3bMoBbYrPrhLD61/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/D-BBreakdown_0_91.xml b/imgxml/Resources/ClanGamesImages/Challenges/D-BBreakdown_0_91.xml new file mode 100644 index 000000000..176cc1d0c --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/D-BBreakdown_0_91.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmgBeAL4yJBFkCKl1JKiyie//omUOhWUPqR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/qdFOTpaV03r8Ufbb24uO+3GuoEkbYdfkKiTgFG3UsVJvZttByk3OeSI76T+VZNDTLdaJMPAgBEKERz3UehDFBrr+TjP5q3oZ1eTLvPHhKQy4PFUE3FmlM8f97Ebay5VTtVa0ARoZH1trCPCJ7vbzXdV5ewi0yXtoN1wEtPpDU+FnwuXNiONc2ZDY2C5PTqBOM82VJUQ4zElnDfUct7pr9MHHqdVOILC01yKpbKNGwmOfYHThDkWRBme64cnfc1f6vleovveBUjCdjcbTSqp9L4G4tSHFTISDcjfaBxZBL7EKdZEQqZgUH7s3un4C8Kit7eakTqleuFejcaUbiuCUGmZrSdtQaIlkC39xPnba9gDEn543CBa1UlWxx20ovo+8bMK9esELEu5Yp0it4Dni5Zzp48km0bU3PNpXM/iETpQ8zfTS1Mv1jrTl+HX1kW+IyCH9sd3NrHH/5ZCoqm6caYDQvFSbQd+infKZ+tIe/LPnjnFS6a2DZC/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/Resources/ClanGamesImages/Challenges/D-WallWhacker_0_93.xml b/imgxml/Resources/ClanGamesImages/Challenges/D-WallWhacker_0_93.xml new file mode 100644 index 000000000..f9551ff8b --- /dev/null +++ b/imgxml/Resources/ClanGamesImages/Challenges/D-WallWhacker_0_93.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkDDc7UE4MoJ67qRfLi/rk1OTKI8BEXlwKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/XCCres6FpqkLSWdmdU1w9TU6Qdl9Pb7lQo5Oskl7qjSSZN/ycCNj2MklIlTWNre02f3cabjZTjpyqFRXnH2Ai75HhEXpZNmexodrpxjFqlL6xgfSnaqfPsmRpakP/Ivxc6j9pcbM9hFlOxfLh51p0CtoNxk9xa0fFmq5zRPxkf2v2epgrG8wf9Li+XXeVAAZPZ9s+JOhTWLDVnHz2O9DC00mqgwt3mqU5MYJ7Xzica2C6OyBGCuyVGGE1tA27XK5kfbUuQWp3KVw7ZhWvxpEqZKcvOWrnOM637k88o6k/LgnbkQivHDl8nHzrsMPvp4vD1aNfPbq0zdpayOhGFXRPoXa+zMnG68ZdJ2u6KwVlMCHGsMzXEpnShGNz0hRtV6sn+CB0kmj9jncMrhTVsRcQsIUrNq2af8TbhM7hOiXT5RXUa5IsN1839rmi08UrJPhLMA+A5KqUUbyO64xgPEIZqG+m91v1N1UF9ukDaQrB9lY57e9uvr0zSHPZDlp4vKJiWHOqeIfhWLJPeq0R6Nz4jrLCcgonEmBGU1275FkGl38+f1g0e0/gUzu26tHNFIqJI42GxmcErAlXXr6PTlEoX8wnD+taUiohXy/VjIQkksX/jUVhrdPzzLx7pkDF8uivAiE71OACjvX7Gdv07NPz4+/wU9dkUFgbHZlTJM7Ie4vc9yr3dpoY5anNJmAp1r0VwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Collector_10_100_89.xml b/imgxml/Storages/All_Snow/Collector_10_100_89.xml new file mode 100644 index 000000000..79cddc469 --- /dev/null +++ b/imgxml/Storages/All_Snow/Collector_10_100_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnL4B7cjExQFJs5eP1k/wR2gymnqQM3NayR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGJ/bEilDkuxshBZPSby06+Pn4h3wIZ0apAbQLa+6FOGBFPsjuTMZl0dyNEIs0wDwPhh0SZ8LGgz5NrTwOAmI0d4GJQX+UhRUnfYqCz2NnQt86Ca2yl3DoJ4KLpj4yc9Kl2mduiCgJXB7fKIRK8NIuzRqsaxFgGDhohLtfQ8yFqX2n6aJtKeFKf+XTzgpK0KkTWFcz0X5UC3zD5QpBPpV1MWN5FMHcNLGaEqWyRwgfydojeBjZGCR7LUHbt3tIYJknKFOjFSTej/j4pjEEey09BcAfgf4uvplf8eZcekVmJINtEItHGCv+ZiuMTXRMneQvxSYXb09Bomkk2qL95AVA9aYhL0Dm9BxBuXsiMaqGTxV54RjJdramtbYs8VErLBMWEByzhUmEh66i2A0AxarvNnVhRBMMATK4L1F0Q0ytmcHBFFTS8GycQhjDoAT5qRkqMeLitfbj9tuftD0DCHv8QoR9Pj1brK9J5T/KsurERxIN6WWvIgctXZn+McoQ0/p1B3dkjXal/V2MJltdTXd/1hPmQn4zg7R3aaTbZMrvdWN7dQphW49VlorvszPu9Ram9VGBzyuRMuTHyOv+OGCX/dTxZPiuWiwJq/X3rGbO6wNkmjUM62C164qJ8+xUD256hsN5vTVJch+qM+4H1c9OYt6avWEy48nMinl5gP/pjrs2z84vH2iuxGf3yVPMsgWJbhh+yyNeMmew6g/YO5ycTFnnlb3Jzo6W8C3yrhtmzZtqJ2v4op3ynzwGncSsGgqEeDSeJ9h/KlbaveRJ8qRUUWnwvdii8hbQh3NiH4X7hwHkVAQdsBry1lldij14FZqPMeIEbsgXWflco4+a06jxSe5s/oPMjWW6msHHHqM2FVHAYTSDy7eSl4MPMKrKFWmUL/f3N3y1nPylhZD8w83B7bX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Collector_11_100_89.xml b/imgxml/Storages/All_Snow/Collector_11_100_89.xml new file mode 100644 index 000000000..ebbc1f4aa --- /dev/null +++ b/imgxml/Storages/All_Snow/Collector_11_100_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmSoWPu7B6xOvATTg7KSUJvPsdoDcW94jWR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGBotfQu5FdJpETa2eSWvuCmtekxxaNYRC+Tc9hkmh8gnGmxobzJCHkV/rnFnYoaCehHO+nKxVyf4PEgako35e15NmENRig+vEjMiyBz1N1AQcswA7ATm1TATFB2LdEoFkop8ED/UGDcgA2kkyvq0BUexYRpK51pAsegwm+GUmMxm38qkIxVNURQA2BRDbt6OyAm1hSjOYjsOKkeAaviBQjuZj6lCXIvdGHOqWhbR1YhWdzSkV0rUbs394h2iYVSKvFxeOGfAe1d+nWrD8yUYUNcSNdZcOr+Y7xFntpxR050ReU7qikRhgZyFN1BKioDjVhdQPBqBAENuIg1aySX3gK1Xjhyd2dh/w6ZHNctFMlzmix/V2zUfTE/IGki6yT7ALj5GFiR3HOUzDxZ923HuJ0Q1wqKwrYnvMlGmyedo2XnLN1j7mu7FKLGSzhYQjvSYduItnc985hXj/+jsli2wZCJuIdVtEnLg4lkYY0ihkhDN96XY4TSm7QAwm4Y/IgY1LM2j4rZ9f5wbZiWjyLfrz9jcja85RQ/xsMTK9/hHH9Dmd7HUDItXfZeA4E1QK+JsjL37pA0YQHCfLIZUIUAxah4N7ub2S6KGH7Ev9w8gH5Ahx5h9B2yyYlSztYMiJgHhLR4CDVAbk4sOkF5DLcWMr17DBagDbqh9mZ3j7tbVMKPg5d1c7Ivaw19PsWjBzsYdVPp8WCAGjPdT3ptWnsyaaAqxRfxN1zfnGn/FGKUSpvZY+efHtCoA7316Uf8z4MW/HfY2y2qIAcnWRoCG+/8YoHA420K2i9lNH0A0coQazR8w4U069KZZF1PtEV2BsDJC1t44MnBDRZTazMjkV+yB+z6F3ozXe+GEDJNIjScnnqfg32Fx9O3dKsjVkS4wHFILvshj8XLWvX8m7Y/fZJqVmDwD6NrsTEHmIw/rmvB2VPP9rMvTw4id2zKAW2Kz64Sw+tf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Collector_12_100_89.xml b/imgxml/Storages/All_Snow/Collector_12_100_89.xml new file mode 100644 index 000000000..0fadae6ed --- /dev/null +++ b/imgxml/Storages/All_Snow/Collector_12_100_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlpBAC3ptowNkqVnL+sSRjqkBLv2nfSJLKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGQAx0S5h4ZS/gxMflNvpDGtIEFhsjyneyWlaijnFglE419g0S4etE140yvO+3y/5FKcnD2++zJ3EV+hLmDFcg3zOnzV/XjSHToc5hNXp/7FVR9NGyGArMhNUMryoILQ/BYn1H0zJVVrL8zIIICpG2XLD+WlMZG6iKYYZdd5TYUBuznwhzsAGuxiujTDvI1E335s3cVW4DJsu8y3DNDZgvY2pS3iVo8FX3BZwp0TwSwVWJXfRbFQes/RY7ZXo5hzYQ6D6bS+zMa4jkrxUPynOSPwGDQOgg4TfNiilSwxhWVt7XKK2RongM8qQQvpL1xMJoy8T6dx00mCMBW5JdX8j7LuNiGOY5KVP0pBThu3Ok4lSuk2FGi/Xr/rr11G09LxqTLseCQwGDI315AZhWYrqy2vXQd2sUXvK/it7K0lJRrD3ruFta4aLtNrvxvzRGsDPRbwiLNie11jJEJc3G9g3Up6u0ndYCPaarOHTll12jelfUYM+Pe5E4AJiY2bb7toOWlHzqm4YwQamKkOkGhsTojPauTlmPpH0R5mN3GjbBCwZwcwbPfYMGC8dIrH/Pj8XtTJLOPtss6/P2NuaDNVMcaO4B20wCggsFTf7vLR1IqlLPKL3vDK+EGTdBx5xgvUQtyVQ89K8vUWyF9WOYR/2hRs2H7nwKfwKuvAqkefHpjxSgsqHPHDxc76QDSdh1UTQTUaHxBhBfLYIgeXExqmwsi/RvJzSKGECsLAk18/E3sUaiRYgVXWplHloW4Xk5VXSwfRXrLVsls0Q71lfHjoY7t8FUd0DmuC821QxDibFdaTD92DwhqBoIYTXfs3uBos+2uTlH99pxMopX/QlrbBXyi3XVaCx/XTdTiRcqOHE71A7/tAGzZVXpHJnpDShpzHJfW4NQNHbYtnxxD2b5A5pYvmwyu7630NY468U4m1JRfRylhbedYN9cV8s66QsVqaOnQNTNledvWsnDlQZhs5FaO7y8YG5lunTbTFznmgm9cYKsZx3TANlbY5TuRli3JYPPAJdaQGHdn361I2ztsaLws/ttGrtpK9VeO8u+PYJ1IW6ne6yFbc+I7AMSmtaZ+mwX \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Collector_13_100_90.xml b/imgxml/Storages/All_Snow/Collector_13_100_90.xml new file mode 100644 index 000000000..0fbcdaba3 --- /dev/null +++ b/imgxml/Storages/All_Snow/Collector_13_100_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Ok+OhTTM4c0i6VZ0nZkYVMdVKivTl5HLxWR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/KWo/EYM9wqrprAYRCQ1cItV6uViu9UwvHgAa5B0z9KYmBIIsoGUb5jlYh/2967XDNZRhJoJJ54iHMlhAPbXp1ndk54ZkucGDbnrQQrOvseqohHDRUHlfgt9Rg0+1/eQIQCpCU5twJytU8+fqY7JdDHXk9iX7Se15AysxTCQKfjjM17EmJIMPaH5DVtoyrzsrqBKWzdhGbBHiKDAVAhj2Vf+MpcOkNzEKsCmucGoJPOFX+cmfpBClnyjEzNW4oeyDRH+ujA6rio9WcNuuXTZYuzQM+lGEnaNmGnrvnrMXt3OIcE5FeXXyy4lrM1BBmL6y8J8gwaRk+yFvpA7ScysQccFabtW1W0tWO48y/rtzLsg9PbCkJoyYd+dEHF3CH2f4dePaKobVcHoUgZYjBMnc51tP60zyl+vwBzXU/Vl59TDaWbHnS3YTY6mfYx2yaifbxDJ+e2wabEMlt5xZYKjEZAu2Rqw6HQ6BSMKpCOBMgNM2HouZQzDCrNVA4tIZNG6cpmWN7q9CL3HGFUqeI1cZS196+ayUksNQNAThhi81ix/y41TK3FkF3yflFNl/HOpPcRfhSIv9vvZqQvev4crU6/TNcOppGZ4EsgsSlk+ws6U+GGqT21dV3gh4ZB8nXF7vavroOH82dtbAcsMBMXYJFi/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Collector_8_100_90.xml b/imgxml/Storages/All_Snow/Collector_8_100_90.xml new file mode 100644 index 000000000..e7af92f2d --- /dev/null +++ b/imgxml/Storages/All_Snow/Collector_8_100_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmaFXxk4w6rtBHHj2emV+WEIk6BYQPPJKuR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNG6WO7GFkK68CrsjtW4aeK+ve3+Ezae+ANjGmCvrdBDtUcTOaNhTGqmF2F+rR6GH1bdDq/anBM2ZlnFRLLDJtKKYr1pgjQEYcNjT8veYebQLomV0JOJjIwgn7mfoLy1mSWFNF5wfGa0LqYFsZlAUqVxniunwrO5ngeNGcX0lsK3oLxahmg9kPp7WWwfliinqkyNLR/etmXzFqesYJmycr9Z10Qi1+Du3tdInRvDNG3PkUGwQYJZF4tEjF8aDerEA2GfBBH3p0C2PLnuheSwR8Sljgmel7kb6vBFr7F3taHxHH2t+QjdTqjxf2ULNUzZ84G4B6Rgr+fECSH1l6Cr5C268bA+PWhOb8HLW520jwkfrRGjFy9MNKbRH9og7Khc0s411Js2yN8LiKGLOuPHTscmA1FGYQjm4hpchADlCByyNg7Ias4O2GA/tbfKtZOtVJ3/8r6gAGGp9/M5tR8GYOC2CgahJcUQIEL2bhgRHd+KsIOELUvnP8XDtXl+7x+LitRr3zthHEfmNSVU8pw2ehj4kj5ZWpXn9VtHEqwERqG4eHL98gBBIOOA3QsxJ24ULr6BqhqFFALoIjxTtUcSk5HL1h4aQRr7T4nFWgRJzBH/m7zHupZ5SLleEGIDR4AAon+G02WlyS7z4FOfgmxKeoDzaBPErWwslQ9MibPBNQ4BiluTSeInBW+bO3qGM06ux2JGiwZPOXA4ADB8jFs49ySH2IRq3BV7lkF4ueQxDcpgs38Lr8wMDLLP1Ap1XFNEpa4H0/ANpVGOLXrcWCrZv5R9DxucFnR8eun4B8pxsp42fnGnOsSGszTHn+ZTAd8+2vFq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Collector_9_100_89.xml b/imgxml/Storages/All_Snow/Collector_9_100_89.xml new file mode 100644 index 000000000..fc1ccb2bb --- /dev/null +++ b/imgxml/Storages/All_Snow/Collector_9_100_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnAXk3vG8I+G/8Dkwxm0ME3dUU45FazxrKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGl+tZqKkCpRGzxETfDCLK9uwdwKG4cu8sVlohzfMU46YnOEV1UdVjCgYwawjwLwyn9uElFN6JlfOjbBq8eP6CrOaCeYqtH5lmlsV5vGpCtYOIQs0dYv3Lm288iiu4b5zN/G5EqrAC08ep/vXFIIVuS+FbZOiE1H+VdwV9R18hQHxD2Mz2JK7Xqg8BfGLx1yyyUlNy98r1Z2xmnPmm8aj/g+uUjLmR6hvOM4HlNC8Bpt2w4CMg1fYBD+knhDfBOToA2IdKCuBBjZZkon2MHr15moQwqgtQ/RBhreGnseO3svRR4HXY+GrvfEXM8Kq1CpLXALafSmdsEoTMhd5m5QEdYLrdH/tBYp3QEOQg5vj39pIgqE+c1RiZXNIvsjRzZ69mHS3/8+JSkY2P3qz+KLJhUWHs4lPRzaLjsYkoODhuR5czjsFtxIyKSk6zF3MXMPK+eBOKXNJIvl8tcgJbFL1LSuLfntSs67ECQhKsi0fhbLfCpk/LY34kQu1C7tS03GROsLsKy91R+VL5GKq52jQ0L5+HrMeLPq9cAYQ/ZLCbrCf4nIjQtrQvZ4RLsT+lgF0M/M4pIMn1sKH14a5Z6pypYV0dhpQ+2UpeJEyHvuj4KlT9q6ZTmAw9cembRX9CklOtVdvsrdlZK3j/UlgAopQmNVrdf0W2limGHCWIl4do3jvm8JepY0gvqHfSG3qHPSVhPLS2Grp8DOcJKP11Fp0snI/Hz88Qvc07DLlnBQQlt5LkoPDYcF7e49EtJn7Yi5WVt86oynRhPHsF/Sn7dPpB368ORMdJT3M8B1grxHWWXJRmKNf85LhAiCGfYmcmyE80MCwZw4xfcXE23NCW5DxvTbpZ6D2X7DuuT9bBHcbwtsHLS/ZHzLkwouB/vL3+C3IYyWDh6KnhkCXARbzRGtUWYwmQFCy+KwWhF3AFfhkMO6XVnJ1oUkZElad7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Drill_1_89.xml b/imgxml/Storages/All_Snow/Drill_1_89.xml new file mode 100644 index 000000000..e3a453063 --- /dev/null +++ b/imgxml/Storages/All_Snow/Drill_1_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Olf+KHhzPJonrNoXL6jGJboQOEkMg6bVYA92trx+kc4FNCLppagfrX1cMwmoyfrmdjooqlrapPIQuM6C2RcEFFGJHOUZ4Tb6HiOZFWrnrKLwtPQW6KwT9d4lA8TJSJ5dYHELS00gaP3aDMk7eHoZyj1/2ktCvwux+EcdgYi2Th/8aBaAsNiEHxHkC7Z8FqVeJq9vyx+kNFOg6svng2suzwqSrxc72O6XxLmoBqVMfAncYKe6p3J/BXiShvZOi+UxKuwvWn1xqmotNSs9l2uHJpZcIHP0qjxgukOsVAFTTxhVquEHWQ8996Eq7587VH7BxSfzuFgS9t4jULdquJ7dAcIWJLEtfA0BoI+/RjDUbLRAa3TgwfFepmXXGM5nxNtcV6/JCsqE6JqmwZ+TthLmZJdBmY5DQ3EuNmD6CVQ2VcTXerV7VRhVKJDSROhCSx3f75xoCdDQn++bleYolK561e5I8951ueFyNOU+WIR34EBRanrWctgZ4ZqDJ9XjL0x9M8/F4F1pWe6GAscStauqiYBNbKq9byhHqhV65vm1fwHqpAIkCZQq+W7LbnToaGKNiTSzXQfGBlURI0eieJe+mE4ESkA6Wl2X6cqbFgTrEyleMzW72p2HbWsJQ0Fsjc9TiCe+FrvywsfkiZrvaagBmsUR4Imt2SxGamofO5e9V4nKBdWoZjhEXgaDnqbJB65oU5WjlrBVLPKNbevT4NxzXQMinIcVq9BGld49Q/wFc0zwF27Axm6wz0P18Zo10QUNBCA4A0rbriRgyg0E+3b2dJa8h3Nq8iOLjibJlmsW5jhyKnzcI/UEt+npuLvohhpNiVR3y4KMi9LWq52ybaMy1VLZnIld9FVcL2/A9JTI4OAUja+9Arngw+N3TsSyzVlCrQUWIhBL1yX4ZdR83WnF7Kgh5FucX/bV9F3tDfolnET4lYkqww0b/bAAN6cLDA6S0MuoQ8XVRKiVuZRwLuIRqWXU42tZd2HCNHpEi2knwnC34yI/UEix/re7P7ZZNMqPtXDp9zdDlXeV/CuQ+dWB8cgIt5nuxiIqNvCvpgK8F9yNcDRdamAlNbrLhLYtDyVaUdTja1l3YcI0UcEoqNAzkdZjIj9QSLH+t5+CcgJdRghLMOn3N0OVd5X8K5D51YHxyAi3me7GIio24Y5B1vMi7lE8bIJo4hzYlbI8Iaga4Av6nykdNCVX3F/lx7fjaG2rKGSIy3ak49EB900ewmnH/jiv8/DBmMZOiUf2eMtFL3HYa0z/cqkRJ05Gwlk4m32RBCyoEmWGA0TWfQSWdmn9QKHgucwk2rlTKxTGmEWyu1TanS3d2gIA9n7gyL9K2xNIV9zsU3oARscxh/Z4y0UvcdhTsZbPFdFtmUbCWTibfZEELKgSZYYDRNZ9BJZ2af1Aof0074K7NzaFzkKgsnluqqCO7K5bIc/iBt6/0GXxilUE0lLJtgM+P3+R7YA2CRTJnmmAZxbbCu9v6IsiBbBYTln2fjW/VaxvQ3grZ4mA/yr2gyLn8OhIWIyG2smtMDWybK7FP4bm0r33cgcfX3iqNx3aeoohOcp/kyczOSex9wZqA+E9c8AHc3/jmT9ldgFd4WPt3Xg6c2/ImU9ti492rUrqbgTxLx2z9pWXf9xURKytu6i7SuG01/K6DwVYKazV2QMl9bQB6QiFtnGf2WB6wBtnmoGLdpGDc+R4CyiIGjpo5Olit3as7oO8zdHTWXfkDN3Vx7qNtrmIC8ID2J+8BNWXvG8EUUik1hib3cBcSzdmUh3i/oyhMG0lIzYfHaNeAeTWS3XE2voM9aAjRtFd+1XdQ8v6zTDTcDRxopsgq6EXaYwRIYcHtV8rvHP6Ho5q+goawnVs/Zb6mgPc7F1AM81JbO8k1uhGODffuhFgFOLKx0SVdCiT9CMwgxIWDu85KskbxjiYyFR2BemYNieMPDgV+kfaKKzKS0fNGSlquvsm0/2vHXvtjyrEwy9eRBH2wyOgZenx0hHlWlsWzC72jI4XyHZU4+jM93DrByR9DJM7NZNInvn4cZFosm1FlVHoiBFysIDljZbbSxfOS8cQcqhO+Uh397l5O5RRS6C+j+3datL8vi802YzJ3uPFuiuGhine6yFbc+I7AMSmtaZ+mwX \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Drill_3_90.xml b/imgxml/Storages/All_Snow/Drill_3_90.xml new file mode 100644 index 000000000..368993706 --- /dev/null +++ b/imgxml/Storages/All_Snow/Drill_3_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Ok9aQD9vRTedY7qXxUV2tzsBgEn5zXiFmg92trx+kc4FNCLppagfrX1cMwmoyfrmdjooqlrapPIQuM6C2RcEFFGJHOUZ4Tb6HiOZFWrnrKLwtPQW6KwT9d4lA8TJSJ5dYHELS00gaP3aDMk7eHoZyj1/2ktCvwux+EcdgYi2Th/8aBaAsNiEHxHkC7Z8FqVeJq9vyx+kNFOg6svng2suzwqSrxc72O6XxLmoBqVMfAncYKe6p3J/BXiShvZOi+UxKuwvWn1xqmotNSs9l2uHJpZcIHP0qjxgukOsVAFTTxhVquEHWQ8996Eq7587VH7BxSfzuFgS9t4jULdquJ7dAcIWJLEtfA0BoI+/RjDUbLRAa3TgwfFepmXXGM5nxNtcV6/JCsqE6JqmwZ+TthLmZJdBmY5DQ3EuNmD6CVQ2VcTXerV7VRhVKJDSROhCSx3f75xoCdDQn++bleYolK561e5I8951ueFyNOU+WIR34EBRanrWctgZ4ZqDJ9XjL0x9M8/F4F1pWe6GAscStauqiYBNbKq9byhHqhV65vm1fwHqpAIkCZQq+W7LbnToaGKNiTSzXQfGBlURI0eieJe+mE4ESkA6Wl2X6cqbFgTrEyleMzW72p2HbWsJQ0Fsjc9TiCe+FrvywsfkiZrvaagBmsUR4Imt2SxGamofO5e9V4nKBdWoZjhEXgaDnqbJB65oU5WjlrBVLPKNbevT4NxzXQMinIcVq9BGld49Q/wFc0zwF27Axm6wz0P18Zo10QUNBCA4A0rbriRgyg0E+3b2dJa8h3Nq8iOLjibJlmsW5jhyKnzcI/UEt+npuLvohhpNiVR3y4KMi9LWq52ybaMy1VLZnIld9FVcL2/A9JTI4OAUja+9Arngw+N3TsSyzVlCrQUWIhBL1yX4ZdR83WnF7Kgh5FucX/bV9F3tDfolnET4lYkqww0b/bAAN6cLDA6S0MuoQ8XVRKiVuZRwLuIRqWXU42tZd2HCNFB3RMzy7tS//Rd3lNUUvhkwwf1f9cpMeCqC14OR9khbv1qWEAIPWpZ6KQlp71vG14Q5fMWHlPJR8DRdamAlNbrLhLYtDyVaUdTja1l3YcI0cpoJiX9ClxH9F3eU1RS+GRBkTOW2gzQhaoLXg5H2SFu/WpYQAg9alnopCWnvW8bXs5ge9pytuS/8bIJo4hzYlbI8Iaga4Av6nykdNCVX3F/lx7fjaG2rKGSIy3ak49EB900ewmnH/jiv8/DBmMZOiWyxudGV/A/TwiRjzg3W03PF4SwMls8bGgkHBA4IwWYi3xuJXb9A7crADCJDgOwlx5TGmEWyu1TanS3d2gIA9n7gyL9K2xNIV9zsU3oARscxrLG50ZX8D9PILzNBr0VP6kXhLAyWzxsaCQcEDgjBZiLfG4ldv0Dtyvi4WqKEZcQvDkKgsnluqqCO7K5bIc/iBt6/0GXxilUE0lLJtgM+P3+R7YA2CRTJnmmAZxbbCu9v6IsiBbBYTln2fjW/VaxvQ3grZ4mA/yr2gyLn8OhIWIyumDgcktcxK5/Y6NwSauRYMgcfX3iqNx3RTMbKSDVk7v/M3gC8nckUMLiITuli9BV7glhAs8UTFiN5id5hDP6+AhzlUya2cZinRcWzwFyDLeycUjsj7U15islI+JLt3WXGQo5fwGFa91opu15Sal92fXR9B0bNtaK4F2W6gIqWBKfRBFIrmgqNGjN5yHI/dOeFfSOOqVEfqKpuhNIRiyRq5MwvkAOQk9X+71A/KljfXl8SFqv6ikLJ+IUXhPa3eReTbbOayJQwhqVT5Zz0QjAc95AxlmAoSeznbtre2enE3mR+Vw3vtrCa2pkxFVFPDS0g8lIYVskGdPOSK9XE7Ebh1HuqfMjed7aGgnPd2G/690SiCmvi04Rw88P2SRLHSIhb62xu5bg1/Dx4osJ0MXNTEO2rWMe0z2irVOkF/K7CXyKSX14LYp6INiCMQejXHd3nQIB6MIzk0Vr2fDQxoUhJ1embIiYAmXnq6rlHsv5jvquEFMdXFbWRaKEzKfIa5FcrcgZ4DCZr89GaPZ8defB3v8ekIgmYavmThPlJhmf2rc+h3HTQqTOPWkaDXelIWP0NNIAfA4n0YD6sdrt+mN0d2sy9PDiJ3bMoBbYrPrhLD61/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Drill_4_89.xml b/imgxml/Storages/All_Snow/Drill_4_89.xml new file mode 100644 index 000000000..a50c9f551 --- /dev/null +++ b/imgxml/Storages/All_Snow/Drill_4_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkQp4/rcJ0q9jALbHbLv1PB/K8luwYgv0E92trx+kc4FNCLppagfrX1cMwmoyfrmdjooqlrapPIQuM6C2RcEFFGJHOUZ4Tb6HiOZFWrnrKLwtPQW6KwT9d4lA8TJSJ5dYHELS00gaP3aDMk7eHoZyj1/2ktCvwux+EcdgYi2Th/8aBaAsNiEHxHkC7Z8FqVeJq9vyx+kNFOg6svng2suzwqSrxc72O6XxLmoBqVMfAncYKe6p3J/BXiShvZOi+UxKuwvWn1xqmotNSs9l2uHJpZcIHP0qjxgukOsVAFTTxhVquEHWQ8996Eq7587VH7BxSfzuFgS9t4jULdquJ7dAcIWJLEtfA0BoI+/RjDUbLRAa3TgwfFepmXXGM5nxNtcV6/JCsqE6JqmwZ+TthLmZJdBmY5DQ3EuNmD6CVQ2VcTXerV7VRhVKJDSROhCSx3f75xoCdDQn++bleYolK561e5I8951ueFyNOU+WIR34EBRanrWctgZ4ZqDJ9XjL0x9M8/F4F1pWe6GAscStauqiYBNbKq9byhHqhV65vm1fwHqpAIkCZQq+W7LbnToaGKNiTSzXQfGBlURI0eieJe+mE4ESkA6Wl2X6cqbFgTrEyleMzW72p2HbWsJQ0Fsjc9TiCe+FrvywsfkiZrvaagBmsUR4Imt2SxGamofO5e9V4nKBdWoZjhEXgaDnqbJB65oU5WjlrBVLPKNbevT4NxzXQMinIcVq9BGld49Q/wFc0zwF27Axm6wz0P18Zo10QUNBCA4A0rbriRgyg0E+3b2dJa8h3Nq8iOLjibJlmsW5jhyKnzcI/UEt+npuLvohhpNiVR3y4KMi9LWq52ybaMy1VLZnIld9FVcL2/A9JTI4OAUja+9Arngw+N3TsSyzVlCrQUWIhBL1yX4ZdR83WnF7Kgh5FucX/bV9F3tDfolnET4lYkqww0b/bAAN6cLDA6S0MuoQ8XVRKiVuZRwLuIRqWXU42tZd2HCNFB3RMzy7tS/8BqtTuluqm3fUVunVHvauOB2PCwLPfjPOA9C+lFKByRe4nkFXiiStdlK6z99oF+AsDRdamAlNbrLhLYtDyVaUdTja1l3YcI0cpoJiX9ClxHwGq1O6W6qbdXATCdAsP+6oHY8LAs9+M84D0L6UUoHJF7ieQVeKJK197XRAA4cOeM8bIJo4hzYlbI8Iaga4Av6nykdNCVX3F/lx7fjaG2rKGSIy3ak49EB900ewmnH/jiv8/DBmMZOiULPpQgMOB5DH0vZFocgFkQbRrhC0cwd1Uz1xxyL3ZOCnKefNhyrD//rB22o664YZFTGmEWyu1TanS3d2gIA9n7gyL9K2xNIV9zsU3oARscxgs+lCAw4HkMX7WURFhzdDhtGuELRzB3VTPXHHIvdk4Kcp582HKsP/8wsxJvID8bHDkKgsnluqqCO7K5bIc/iBt6/0GXxilUE0lLJtgM+P3+R7YA2CRTJnmmAZxbbCu9v6IsiBbBYTln2fjW/VaxvQ3grZ4mA/yr2gyLn8OhIWIyXBhv+9ey3RqXIux64fMnnsgcfX3iqNx3SuSXXca7T2tKSgMv6roqbqMmS1QpIkBslld2O90UTO4ynRk3oSRimroJFiWKKW0MLadZyiUf0PwVatsZFX6lqGof1NLQfLHy7Y80JAQwE8y5VRf6fanA8vkmSN58ZTkk8aKwyhPoOU8JTPrLqFNiudp1CgSwbzWWCdX5u2ojG6u+C+juSBWrm6ZzFTcZi5IeGFWb8XRQ3E1jkvNr6cbB9HifAQTaEI8xoR4VDWUIeyCZE+3GBbo5nncUYY30WkI0dY3CGDdgqKC+CvA78IP7dnVDEvoHebnuQqpKLaL9sqvrOczELrCN+Kte78PpO2tYeE3mf+dfSB5b/TG7E2m5IwkaPtzMS4Fq9ai//sFoJtAe/j36ArJEm15lrMAwS45UlZP6t8K+DD8YpEq+ePd9XeNzBePYahoo0ig5N285seA0rBGFm8OXf29SN3wIScT8J2BAa4aXx9UP4hTowNvp7jKadZSqFKuui9kW1jpsyR+Pnh5WGl9Z/guCZ2IPRYWuJesBnCWXTGUOqix5IUqi0Y8VGquU4Oty2tGAXoVe2TDFLSmqNapqk/56Zdoc5eW8ItCEBMD7yzIZoWeLRX0HDmwm8OHMN3j9eBT2ps6wR4yUn3wYR6jGkx10fTWUnveyjquJ6ayEyME/OkOLwweJay0aLHmVLCEuJ4LW9XRb9EAv9/c3fLWc/KWFkPzDzcHttf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Drill_6_89.xml b/imgxml/Storages/All_Snow/Drill_6_89.xml new file mode 100644 index 000000000..e8e47aedd --- /dev/null +++ b/imgxml/Storages/All_Snow/Drill_6_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Ol58QEhqNvVGp16FM6Cs6GOs3lIo+2gkjM92trx+kc4FNCLppagfrX1cMwmoyfrmdjooqlrapPIQuM6C2RcEFFGJHOUZ4Tb6HiOZFWrnrKLwtPQW6KwT9d4lA8TJSJ5dYHELS00gaP3aDMk7eHoZyj1/2ktCvwux+EcdgYi2Th/8aBaAsNiEHxHkC7Z8FqVeJq9vyx+kNFOg6svng2suzwqSrxc72O6XxLmoBqVMfAncYKe6p3J/BXiShvZOi+UxKuwvWn1xqmotNSs9l2uHJpZcIHP0qjxgukOsVAFTTxhVquEHWQ8996Eq7587VH7BxSfzuFgS9t4jULdquJ7dAcIWJLEtfA0BoI+/RjDUbLRAa3TgwfFepmXXGM5nxNtcV6/JCsqE6JqmwZ+TthLmZJdBmY5DQ3EuNmD6CVQ2VcTXerV7VRhVKJDSROhCSx3f75xoCdDQn++bleYolK561e5I8951ueFyNOU+WIR34EBRanrWctgZ4ZqDJ9XjL0x9M8/F4F1pWe6GAscStauqiYBNbKq9byhHqhV65vm1fwHqpAIkCZQq+W7LbnToaGKNiTSzXQfGBlURI0eieJe+mE4ESkA6Wl2X6cqbFgTrEyleMzW72p2HbWsJQ0Fsjc9TiCe+FrvywsfkiZrvaagBmsUR4Imt2SxGamofO5e9V4nKBdWoZjhEXgaDnqbJB65oU5WjlrBVLPKNbevT4NxzXQMinIcVq9BGld49Q/wFc0zwF27Axm6wz0P18Zo10QUNBCA4A0rbriRgyg0E+3b2dJa8h3Nq8iOLjibJlmsW5jhyKnzcI/UEt+npuLvohhpNiVR3y4KMi9LWq52ybaMy1VLZnIld9FVcL2/A9JTI4OAUja+9Arngw+N3TsSyzVlCrQUWIhBL1yX4ZdR83WnF7Kgh5FucX/bV9F3tDfolnET4lYkqww0b/bAAN6cLDA6S0MuoQ8XVRKiVuZRwLuIRqWXU42tZd2HCNE3u1PGpEp9Qrgny+JWRZCeICyDL1Tm4HiWFbxpk3PnSAMg0hCOIMFHQeSIyxbHOoB6hw13VueXq8DRdamAlNbrLhLYtDyVaUdTja1l3YcI0c5KqTqFXU1juCfL4lZFkJ4GpcvR/DSFSZYVvGmTc+dIAyDSEI4gwUdB5IjLFsc6gHKvKPMIOrTL8bIJo4hzYlbI8Iaga4Av6nykdNCVX3F/lx7fjaG2rKGSIy3ak49EB900ewmnH/jiv8/DBmMZOiUXSFstzkt+LSBzEQp7c4WjGwlk4m32RBATnWEKV0MK45M+qKOzzIdyU3NO7yFuxlBTGmEWyu1TanS3d2gIA9n7gyL9K2xNIV9zsU3oARscxhdIWy3OS34tHYz2eOEESSwbCWTibfZEEBOdYQpXQwrjkz6oo7PMh3KZrC2FB8YC2TkKgsnluqqCO7K5bIc/iBt6/0GXxilUE0lLJtgM+P3+R7YA2CRTJnmmAZxbbCu9v6IsiBbBYTln2fjW/VaxvQ3grZ4mA/yr2gyLn8OhIWIyvu+m56A7Aqm2NNeoTxwhGMgcfX3iqNx3Z+YNjoKF6b/2V3DK0nSbtUqrCUFfINpJvOekeQMIO9CXnd93oIhMQ5tBaqzF0oh1RwZvqmqatJsZSUHM0kEHgmLhPO+gQsGNaKbFAAT7xl3kbYkY8hPEopq2w9wQ5F21bJnF6kCb5Egg63jb4iL+iNbQq3QWjxILE1OUVTQT/fQHdMRdZAaqyaII5VHWKs4A07x0hWGZuo2PRD5F35AxilScO7mu9l7MVaxhx3Htoh8+cPbUu7V6+wKHn9wDRHMV4jkWJt2SQqeapRnmN35LzFOESyQA8gbvAJ/LxkjZMlYN4XFOoLVWYPbuxqYHUMUhYY9zm6I2htjUZDid1+Rc+EeInqL82YJYKctbQbC3oQjlEarYw/JZjwxyjO5Nz9QegEs/UyW18I3gmt6IkcxzoABbuo/13OiuUY88236ydqfFrUhNCrYqI1orwpq7uYwkD84xaPUf45/IyRVExgZoWCP5zoLwTvvySH+vT45MJCXIQLs+l3m/YwsfpVWMwjEmfzyIrZ9R3CQbK+UlHQso24fSABfLpfbod4+EGBb8dtPprzFe1reKFFTZGlgEiKZ/n5uIoy1zdx97NMYz7qK8Y0zUw+1Q/GaSq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Drill_7_90.xml b/imgxml/Storages/All_Snow/Drill_7_90.xml new file mode 100644 index 000000000..7b3c41707 --- /dev/null +++ b/imgxml/Storages/All_Snow/Drill_7_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Ol58QEhqNvVGp16FM6Cs6GOvLrSwCdIZ3qR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/IH0U1DRGH4/o2F01WiDsoTTNUM9cAg+gliQ4+6yUHQwpMpxLuhG78hPl0VFXWgzE0Z9n4+Uw24Zu1t+mmVlBi3zIXa2hz96e4tX/6P6Pi1MCbTtsNbK5Sskpi7lpXR4ROWNUoX2mJPVtQKtcdq4o5NdG5vMHrVRBPxZrNGKpc8VgM86nvCrwmUv2148AOqqUCuT1vwAlOv4qpm2h83q2Wgmvu+Ky8+rc396gBlFbAAYDWJ8DJ3JXyAunfltfSkLQDXaKo7O4vvM3IvRA7WBsz5dtfCt416/b1s/glMCX9/GslAVbyFFOsNBffUGKeSpI/fPk8etriDJO3Nb4MNJdemOkqyOo/4wUZ7WTFqkHGLVUx2zA/6MNwgugdgHg67oj/BqxbcKW1rPtGriAkDyogqZo25solMsAWKma9yUpxSbbT15h7pwO+MvpnAFXrzB6dZ4ku7EjJJa+qRBZ0ZJPSJ4AhtnXaSZlesseZh/hIr2el6C4/MEQpF4S1jFdhr13wq3/2yirVFr45XVETf3wLCsUWArc8Rn+wl+EWzHIA9pTg8+Wqdg+gntE3IiZFzK2I5ufrmp9Rhk52hF+6x/uRBdVsjEd6i9ZXjNP2b4AG3OrS/L4vNNmMyd7jxborhoYp3ushW3PiOwDEprWmfpsFw== \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Mine_10_100_88.xml b/imgxml/Storages/All_Snow/Mine_10_100_88.xml new file mode 100644 index 000000000..bdf0025fc --- /dev/null +++ b/imgxml/Storages/All_Snow/Mine_10_100_88.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnL4B7cjExQFJs5eP1k/wR2gymnqQM3NayR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGJ/bEilDkuxshBZPSby06+A0+rCEiJ5wW4ZhsKzn3ZnZpqU3ms7gFufFTt3LWAMeyAlNySMkrZqIH81T2T8Sz9DvFyrvnO0CNbdHsaX7Qz6VBrAuvZIOWsaP+IiiizGqa8xJtmxGpj2nWWOgAAqQd0DQkPTS7aF0qsukFMy3YmqiHq7Cs1+X2/xU4SEXE/Gb0xAOuRciChWcx3Wpd6CTOUF4ON1MKplIe1jWeILeHgrQUlEE90ofx9dzDvCJeUFlbthfQ6IN+VIr2hnLafM9d+MaPzZ3OEh4GVGWLs/g+W6wS/CK9SkK4vXxzO1vSfe3Hx5DJAjp+GAc1Zp30oim6qq/GMuP6QDfAdDv0qeILCIuyLpFoXFZIDyFi5YHihBVHG7NlFk3MzLE9Pd7SRH38FsHflqBgW315n3luhl7EM7+4IpbO/xiVgs6Giei6Bsp27vdRA6WRI2UOHhZXl2PcREJClVCx9HmdyW4/JUOlqlSFa2JgAvk/8kOpiYfU0wWe0x43yYiElZPe7SdjbJOBZyyM4a+S9s00zarga332gMd3WgJ89VUg8ebP+NRs/P5w9DZhn4bTuYpVRuOAgiXtY8+0P3gsxyfIMgSRvoylV08arDYYHOivTnJ+KBgAi1o5SRkjoCsEOUJswMilVAeS1WqU6QGfw4Z2lPYpixkYRPvc/mlaAT404rZqBbUXUKGTto3saC5thAAhfnq+ItdaoRlzOwmPX9GVGCtxMJz1qHvqgaKtr6su4rtxTYYsoy0RpbK04iK2lS2slzW+igKqAiyMngKb8SxcKqVm9RMT3MYX+PQiN0ChjVdJwAYxuMwGiJr/y5rCwHpqyqadH0xfXGuuvKRLP8s3H4rR3sluT9aFwwZIGniP2KGUNm2VvPFIL/f3N3y1nPylhZD8w83B7bX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Mine_11_100_86.xml b/imgxml/Storages/All_Snow/Mine_11_100_86.xml new file mode 100644 index 000000000..a1b4d2804 --- /dev/null +++ b/imgxml/Storages/All_Snow/Mine_11_100_86.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmkzhErKFHCBWexHuvkd4Yi9uzgR7jb+/OR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGAR1nTCeMjmkLM0JOUF577BMV1GDJLqbQZ//JeWhH2FWIJwew0G2xqwlLOGCTQxlY3ox7IxZNw8Bc0+vkjVO6mvJq+uggZNmQ5a0WoUszPZ/fXuZZKo3iskkBo8bY1z1wO9I9Eal+AauwCihyhIcLzu9h6d5N6CBFHV9iDotcIj3sgP6TAhWRXRlZeV0Pxij75X3z5nxLjXwoN4znHpxDXfEpVODDoGDTlTAReC+noaErMF/Y4qgXnj/7S+268QGt/ILUQj9ocnr/wnvydu946a2m6K6WFO90QQOQJYM0t+VRG7FAk68RkJmPYKFuriw6gaSb0NlbiCzevPxQFphQmpsJqfAylWZoStmi4a27+YwEyVDMqvESm7agQyh5ZDm4wpPHHzzSvQUUP2j1f8P/XbwNTdotXJWkxHAFQlH3Uq2TVVAAoMJBlkH0ZXraTuj/WkzyWrK5cU7r7X2x9F8WwPgynVkv8t4e5ZGvMto4NwDQjs0EXqAV/qxBYuKO+M9WeEvXaOVR9ggxtRAH/MRHs4tiId6WYAJtAlc+2rph5I21umw2Qz3TIUklo05k/9doqb6kTC+/8ft5A8fU3D1nrAALjC/rKGmZThMQCmyjad9PKsAnhEZ6FDqXPp9gnxbIVgxHU2oRtwRxZIKXqYpU7JGqfCgpm/gAqXSzIfBt3uS873c6b+Gne5Fm6UlULRgy8IlFhL7bdpjlenpx00D0IsCtkl4DW4b2fji2X9XM550KlovPauMzfO+JmXrjRBtRhketxCFiRHL8wo1hJ4UVmzbepdWj2yNVpkxK2NcZFb9a+wZpsCbjmE2uTdzI7avCazL08OIndsygFtis+uEsPrX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Mine_12_100_86.xml b/imgxml/Storages/All_Snow/Mine_12_100_86.xml new file mode 100644 index 000000000..680d2fcd8 --- /dev/null +++ b/imgxml/Storages/All_Snow/Mine_12_100_86.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnL4B7cjExQFJs5eP1k/wR2gymnqQM3NayR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGJ/bEilDkuxshBZPSby06+A2Ei7i6MJRAx14AlfS6x7FY3jbs7Ok1JPyroNYlokGTLxue6IKWOhXGWgDsmBLev1zLKOFgUuCyDcEJcz5ur5fK9GJGLQ11FYDDvUpw14CdH/59coiHO/xVPIBGLHDk1pjIrRGrsiSyQ8LNaJCeBEs1XdgQVclvKgOkp8Iw/oxiXUtKjg3MhXyZUNUEHhq41EBqYb33hnLY7LJ918GCCGx+xO8vzYedE2oFlcMk0v58LOUNzeKRVhhAhufOR6D2B6T0WrEAoULx7m1hel2JmhBmDcA0Xe49PbU2CrG4vTU+bbcvtDSzFun8/wOyWJHX413WUmJA5EmFujsqw3ZRmFLomphnQaQ33K7FSOWqfk6MJb8KqYWzI2LWyekPyxAWMWx++JhMdTWK7fGgkuhmm4x6dh9gOjMQpf3UeE5t0Bcko5WYXgTJgRoWYaxdCtiKOy9IvrPP9ZmoF4g5LiUHpuCJwlpfMYBlc1RZiNkx5fGrpHlI/rNGXx8V1AfxNZ2Tc1XlCgOGVas2jXhlJWCYwJrdhGRZy/0Wwoww9fUjWJZzpIUPKNbIE5mTyG/iMMj0oF+fCFbliRG79xZslC7UzLwf1XhVrXTfwtHaGy3QfOg4cd5CWVD7NFpkUG3VxVPV0c87leYpTEp+R+6bntKks8QgWw2D2GHMYtWDTl9eQEAZRxd+QCa/lOyqoDIrkxbD5DuZqbFkRea/o2LgmIwZB6bJ3lzga/0mVwBTc4+OgEVSriYBueRfLLD/TAFsr/v3ayAIwG01HOcRx6T+XgXSZMa8NInoFEPr/el1r8yHNz0BiUaGm2IuON8bkeHgABGIUoLjle9I0oIqj+jNXhnc7G+I83ONI67wY0ZfWGoAUJSTL/f3N3y1nPylhZD8w83B7bX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Mine_13_100_90.xml b/imgxml/Storages/All_Snow/Mine_13_100_90.xml new file mode 100644 index 000000000..7d0dd12a4 --- /dev/null +++ b/imgxml/Storages/All_Snow/Mine_13_100_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+On2R3l33Cwsg/QUAMCW4EzEyMHZSyOli/+R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/puznVRsKfmO7uftBcA8yLh6iFssdWlL2VUERvaOp0Y4ESbpD1gvJXZwv1YkaHu/dT+cNHtXg/rGEJyBcBsLP753I7JgsupRivS9yM08qihNh6SryrB9A0LXyrJcSkxAjobSHvude+nRwAayo0G1+YmMastJXt5fbsuX8vcN8nw7rebhEDt1/L3PIPIRPrSQX2alk5NJwwShm4MGunLOSTEtCCT6+23dvDYPSQeMEna5SmKjgsMDOIVY84I6+WrsM2D8ymx8qkf3D1+228pNvrbg5oDwFrZAA5+9ktJSg98ht4PgC3QvOhgnEoR7OmXP7gNRAoovDk0ttzZqGwqSST19EhgLvoX5nAoNnDzpFfkhc7ef33hRne0V+4DUdFvhD+2N3JSwsM82jhVm6QA7zDs3Z3GD1dVyUbnkf7QiTQ0gji5xHorgn3Gzgk2iIkXq3JzdvfXS7pweXhUQouQixy4eLeMWHO2gpAU+0y0qAr5m1QbCwCTTXJECh7LL/9mn+hWYKHl5otgc6hDJ3cndr2t9d2JCPj1x4biwX1q6TgAeXvlAhLPh7895pwnQ0T8IrriKDehET9RqkUJ9Ofqwc85Iv9JFdZsFNJYowmCWji6sMKTcNV0Snz/j1MwBOsSpyK4TDfTUJ4zo0LeXg7Mm8BuNx+wJbyD9Cq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Mine_8_100_90.xml b/imgxml/Storages/All_Snow/Mine_8_100_90.xml new file mode 100644 index 000000000..9261f426a --- /dev/null +++ b/imgxml/Storages/All_Snow/Mine_8_100_90.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmswZEdOX+MLuTzlAKCanaJXQ+1psy1T3aR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGF8woEeIgE5h8PMOXW92yRDzmxbnx5Gzrpzx1BJywgXd52ACSwVSvZNeJ3Bn3pRYAqr7cXW1Ti46jm6dvsTyq4KYH8o8HWuskrul+qTZrAo8jtyw3c5WgqMU5lyIirdDM5AELtLQygBt6qpYHpRhxShjGIWboaCSeu+NZ7YAbhtxsuYboLiw9xvWgIT7kayfXDqat5cK4nGuvjrgfsx82NvBSChlFQ0xJ7jQErC5/ytArfe28tiVSdIXrmTsQ7fm9HaNc+aYrsjf+IYNiNqQ8kNiCYRqGW23u7aqH5FIixIqD7g9cv6HfC8K1bUgkle4Ct6g9Z4lw1IB0gxuTjPsmtH147p0u4HkwSzIA/4bAeaE0bn2TmqM/Bifx8Q2YRoi6DuGKqlpdxes4bvUp6uVFUGKCITkYryqztFMiezYkaHIpTmN55cOrGPn0X/5m7AAPUhdCVGr4PFGYGAj6qOq7mEX9VhYijRnSRcgQCSKOLFZPt4Nz1rlIR0/guKuvUqmxQR4HNVZacXjy3q2wOc4GDZ/sl+pHwFFDCrzic8NC16IgJnPFdLUGZfOvrkssfGcIDTC6hK3d+ywZBk7YR6x22z/DwcdIiyTGSJ2OEEEiaIPMV6cZFDT5Y4I7nJPdKm16VMqBFymjz1pzRUoB0nliK98SG62tj8BriaBZKfh+J0ao3BLyYv5b4+wyXH2/ATiS+20au2kr1V47y749gnUhbqd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Storages/All_Snow/Mine_9_100_89.xml b/imgxml/Storages/All_Snow/Mine_9_100_89.xml new file mode 100644 index 000000000..3e18b9d8d --- /dev/null +++ b/imgxml/Storages/All_Snow/Mine_9_100_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmswZEdOX+MLuTzlAKCanaJXQ+1psy1T3aR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/geuBRIwbbawxBN06nx62Itk02IJ4UAHt0hkVSvANnld2449pxXszEK3KWYDmvcNGssFcyoihlhzO0zJgr8Zr8mQsbGC0g0lXBbA2tfE2utMw+Iu4wyrPh+lVh7Tt8eRi5J/WiLKa1fQ1Ac2zlKQeRl45QoaBYUzhwvLsHPekmE8wjWoEv7qgo+7dY6hQmuX9kgUB+sHRzXV2hofFeiVT6z2aCjozFHhhV69OdLI9uXAsrk2WVb7XAPbQeNaztqZGdosV0Ap1kn59tL0v570IO8MuCKjdB1zkvyi1QSxVDw02CUBu62bq7K6HRGJ4CDwuelmzJVui7OIuAuo/ZtAoEKHFgdfx4tWqGdozkdr6Yq+imKGbzhB/AtsUeZRwswFC0MgRRvr4pHmy/id+N2sA8wPjiSIARquFyuYFzk4KXcjSdIeFEleQqvnmcF7WJE3NEFQUpkpe+TumDCXL2n1Rg3qz+Y2n66AxRFYk6o1GvX+Gggfih42mx+uaGPjnO8oX+0SgThyj7d3xKOt9MOKsNFdgxcZIu2oTOgcop1dWJ3AIzBBVqNE5hzF7WFrWUC7uFpoWk3/Sna9S4i+d/qCLKj3VPaGL285SFSP11gqyRCO0fPIwgX24M1HcV5d0CTghoCTsxaboNEoUheWOkOifSP3QhPKTnHBvXFZtkcOrc8xAV8vlqH9rxX4vOsUnzfvwQDapL8M6MwPUw4QPdLRD+prgViA4jKacw82knSNyFswT5mzhaI4PjuAdBwhyhd6bF3AFfhkMO6XVnJ1oUkZElad7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/Storages/Drills/Level/Drill_7_92.xml b/imgxml/Storages/Drills/Level/Drill_7_93.xml similarity index 100% rename from imgxml/Storages/Drills/Level/Drill_7_92.xml rename to imgxml/Storages/Drills/Level/Drill_7_93.xml diff --git a/imgxml/Train/Spell_Train/RSpell_100_90.xml b/imgxml/Train/Spell_Train/RSpell_100_91.xml similarity index 100% rename from imgxml/Train/Spell_Train/RSpell_100_90.xml rename to imgxml/Train/Spell_Train/RSpell_100_91.xml diff --git a/imgxml/deadbase/elix/fill/elixirA_10_100_95.xml b/imgxml/deadbase/elix/fill/elixirA_10_100_96.xml similarity index 100% rename from imgxml/deadbase/elix/fill/elixirA_10_100_95.xml rename to imgxml/deadbase/elix/fill/elixirA_10_100_96.xml diff --git a/imgxml/deadbase/elix/fill/elixirA_12_100_88.xml b/imgxml/deadbase/elix/fill/elixirA_12_100_90.xml similarity index 100% rename from imgxml/deadbase/elix/fill/elixirA_12_100_88.xml rename to imgxml/deadbase/elix/fill/elixirA_12_100_90.xml diff --git a/imgxml/deadbase/elix/fill/elixirA_12_50_98.xml b/imgxml/deadbase/elix/fill/elixirA_12_50_95.xml similarity index 100% rename from imgxml/deadbase/elix/fill/elixirA_12_50_98.xml rename to imgxml/deadbase/elix/fill/elixirA_12_50_95.xml diff --git a/imgxml/deadbase/elix/fill/elixirA_13_50_93.xml b/imgxml/deadbase/elix/fill/elixirA_13_50_93.xml new file mode 100644 index 000000000..7acc6a939 --- /dev/null +++ b/imgxml/deadbase/elix/fill/elixirA_13_50_93.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnxI3GS/eSZ7z9t0Yj08ic04Tz7Nxc77WiR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/71rSKfCeYIdK81a4xh6eVN3vsy24Rk2uXIdTD7427pcN8iSwR6UgqexJuCbgSB65Bt2j1j4Q4f7ibOFjwb7PZi/UyTu2Fl7DQRt7MFsb7rmhFTW8qTYLhiFJJGuuh30stOYdG6h6Uq+dqIxtHecI+LjSQ6c+4IR6Z3mIOzMmRD1GePKZUTrrfS/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/deadbase/elix/lvl/elixirSmall_12_1000_86.xml b/imgxml/deadbase/elix/lvl/elixirSmall_12_1000_86.xml new file mode 100644 index 000000000..a67566315 --- /dev/null +++ b/imgxml/deadbase/elix/lvl/elixirSmall_12_1000_86.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmfEfroAxCv9f0Ch138Nn/6QISkhiR/tuWcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz/ZvtGcM+q4LAuEZdux7Og3RtFTU9DQbmr859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh8QNEE51nt7lrXYInKL+KYxjWXw8jPh+nkBuD587RZlkExtEjl96oOgchM2JwDnotPA9Ecwmv7ZphLYxhDgpgPA2J+HPaOO3rSyRn1cE3cafPiLDXT47L/HVS72pYL9Q1HN9W54rSKmT97uf2qWj8X7oRyI7i5bfUMaXOHXjZYOJrOBhdCVVFONQmpabso475un8kIDXOT6fCHuaAHXpVifs9Ucu4Go/h7yK1bJPpCFazIeo7c8xfgu9aaQrgED17d4PeRLrLkVEU1j31QlrHbAl2tOjeWsyOVVNBsqZPj0HYq24dOZt2tI7HjzPOE3acnLeOFEKC56Q9jaCRZc5lHF1zEXcyr4OYLenEJQjMI3fimfDlk1tomrfqKNnr4ATJaYmSzt+ONMWazL08OIndsygFtis+uEsPrX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/deadbase/elix/lvl/elixirSmall_12_1000_88.xml b/imgxml/deadbase/elix/lvl/elixirSmall_12_1000_88.xml new file mode 100644 index 000000000..05a2a385d --- /dev/null +++ b/imgxml/deadbase/elix/lvl/elixirSmall_12_1000_88.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Ok8DtC/X7x+KzBR01fm/+X/BzvHeXwybcCcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz6dAD5bjfnkze1aMRroV3kteIuho3LWJML859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh4Js7aK+xiLHdN7wThmwlrI6TjnTplVYIR5F/A8er9J6dym6CYWmKkAiWUSgIk3H1W9oSZwA1Ten6cgmDR44Dy/WkBsbWc1sNg8Gewsaj142MPcqjpCwY6E+CMFC7XMCxqp+ITV+jZDoQU8sc3mvOMnGKODbCxbSJ/pz1tuMNaYfdORRksfEJF9xxn4VN/JD6atutBHwmEBI/NjCs+2j0behv5cAa1QMh9pPspgq71vJ9EEUCH56IoqcZsEjMKQ//sySYcSWEOuuVwP4hcQJIJ8svpl+69NWB7X9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/deadbase/elix/lvl/elixirSmall_13_1000_89.xml b/imgxml/deadbase/elix/lvl/elixirSmall_13_1000_89.xml new file mode 100644 index 000000000..3f15ef474 --- /dev/null +++ b/imgxml/deadbase/elix/lvl/elixirSmall_13_1000_89.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnEg4w/ATa0gVuy3dPKctgeB2cEdWumO3GcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz6dAD5bjfnkzE7TN54pXNTr2Zkaqf81l0b859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh4z4jipzODuQxx/QfTp2exaxBUGn7E2+z8jvaRgu8+sqRN0DDX6ZRlMsi6CTHgDorCVilkFesLRzAQL9mZWK4ap+j/jv37NasZR9vo9Q0d8m8vJK5A2IkM2C+p4sH7NsZeXtOVwjTEhHD048vMWjWgCB0j/nJ3CTEbxUZqvF5E8TgNRxyTNCsALh43vMwxFBnGjycJRGbT//11vzemwFtDgKqsrJyODsr2cVW0IYmBDBKao2NY8e9g14QpDTbgqUfsz5OY4M2OwblIGY/nxOlCc2F3gXLwyUWOHegN4Dm1IoScyA/b9p0Ey/m8Gs3v+qQmsy9PDiJ3bMoBbYrPrhLD61/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/deadbase/elix/lvl/elixirSnow_13_1000_86.xml b/imgxml/deadbase/elix/lvl/elixirSnow_13_1000_86.xml new file mode 100644 index 000000000..ebd64511c --- /dev/null +++ b/imgxml/deadbase/elix/lvl/elixirSnow_13_1000_86.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OllVq+PPsLBSqRBH3fwB7nfYiqmEm6LolecSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz/ZvtGcM+q4LZ3Jqw8q028nRtFTU9DQbmr859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh/Sux1+qi71qmK6TCU6CPAhTxwkdebyoqIBWF/RB36noj3G40cTP4S6vTftvgVFgVTwoF4S8X2Ldwe0nVfWaHznDjhlq9xnaVjJsnc8TAd8k9YbQYWqKRtIdHO9EcZIQP8LDW7tsfheBnE2TtzzQG1P+E3/xBvoLhG0BJIdokSMrlDJpc8VS2Cj+ZFJPsI+6ZVbtTx0IY4s5nq7v4blgcGsHfyfYvpCfEybjQugYxrS2OTbx8ln1/+n9HR8c3PZITZKmxwuD2mHvgd06kncTo+8OwEImSv3AGsK5f1xYF2Hy+VMWJ69Mx6JMPVmNtJJMsZlRFBhQjwBgdRFLh4o3DNhWN9vWBNoTiAIxt4HcGLNibQWGK8PspvyquZZcJrECejPRWxF1ypLtZfW5ocpoD9gHtXYBk/OrhgDTB2UCZH0v2Pu46F97h62/L2g0d67f7pQf7EYt5csD00N31JR0JbAtH83ZArzIJbc1bbqtZ6nUInvV+EgVovhjPkuTx0UTwuqGyWiISoSFWnorOThA43Fg5axUf3OU78fcN7Oem3P25/V9S59muwJkiIgarBXOuRjbRsv5CQnMy4xPRWxlDcXq3nA97dRR5bwBY7jYMEiX7yhv0B7fsIK77TjZs2G1vdt6TQL/xwaTPY0zfubB+e/c9Icwy/rZlR3a5ZpE/n3WcdOOr+rnMnBgQidqNYfYx2hjQmAoK0e/1fzpBerm+aLMvIxT+ZE2Xq6viwO4gEW8L/pPZ7cRr5KOCnOCVj6JuunXWbG45FNHZq0qs7NI4djV/mtfSVqzkYsTpz8NkJAWheRrziXQzUUKI+/5khZIi587UAbhNeOs2zvRI++TXnEZKRKyQur2ywdOy9Wa7eJEazL08OIndsygFtis+uEsPrX9o7FBFUZfZriCysWaMMw= \ No newline at end of file diff --git a/imgxml/imglocbuttons/BoostCT_0_90.xml b/imgxml/imglocbuttons/BoostCT_0_89.xml similarity index 100% rename from imgxml/imglocbuttons/BoostCT_0_90.xml rename to imgxml/imglocbuttons/BoostCT_0_89.xml diff --git a/imgxml/rearm/Inferno_0_92.xml b/imgxml/rearm/Inferno_0_92.xml index d368532a7..5ee5b10e9 100644 --- a/imgxml/rearm/Inferno_0_92.xml +++ b/imgxml/rearm/Inferno_0_92.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Oncy02yXjJ508G4Kzg6k/MlopXXn2H+u4KR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/bleWX76lv7l4k10nl4jyJvS31N553ZVqO0vdOvoS7Sp4LJxDRStM4zNjYudBL0eIFjBDiVUP02yf6rQ13SejrWr90QwEzmbXSmTowz6ovl6zuKyd2OnGdDM1zi1mKRUpJUIraVAjoCL5S2vGf1te9wukoJndBMM3GyLgdVeUT5CPejwnh3vbpVK46NBOLbmdE/LcQaUHSt1qWHEsNqQjh29/2VzqI6/vxiuJ3l8DXGAXkJy6g6j/Q/5NKEBn8+SFDcsiGVHSmB2k/siVwGWhqner0P9pWpRqJTVVAFMVwRBi9ACsaW+kjD2/UrFd4NAuHxtX0g73MX/2wEvPAP0M+UsvT44hyymfL/f3N3y1nPylhZD8w83B7bX9o7FBFUZfZriCysWaMMw= \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnWxUKErTeyV3oWBRSmwvykRgc8oB2dicSR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/wsxqp/h2cKhcP3GB9HWy4jZp4WTOnTCUQPKN9p8KPGgaM7cCXHw8Wqt9Ft83RKEOazD8e5Mcom/RHZtADy1V2GkEsp05MCafQXeHjiNUoGKMd/eGXrhFDJ0rRw73y/tCO2/EupYxeUMNh6NHJpJ/GNJW1qn8wWR923TSSbIAZJ4VuIfyWfz2VxBPJBgz8FFcoxIk4LxMeaHPCqcSW5GTdNd0xeL8idkeZkxJqTLDgcHf10rNNBYT/DUPLOCmSssQS5cAf4RBN46Ca+HUWgZJZoGZi75tBx8Hj2dEfmdU/7gHVH7UeX4sN6pMxQ75EotfDFSInDPRB7z1QDdKJW2OwXGXjh0KsGaPjEiyqQRtqtDVadepJnwZB9DwAiDMQ5ZqrbnB7LjJonHixke33MLQZg3kS0GzCg0dtwZMKIcd1+mcUEQUeLBvZCW9qqcn4WW0QLUCkXvnRSiXscWsu6vNPlcD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/rearm/Xbow_0_92.xml b/imgxml/rearm/Xbow_0_92.xml index 3c37549b4..5e0ba1014 100644 --- a/imgxml/rearm/Xbow_0_92.xml +++ b/imgxml/rearm/Xbow_0_92.xml @@ -1 +1 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnMv64NG1pFHfLzS0c3NeJBozQEw0c18ESR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/pFTsdCoSJr8X0NdPeJT/lrGGAnnPLc/qiOUK1s5DTcn/FmbGWvACIMohVPMe6enVNUmf+5xRtUkNzX8OKOYsCntcvuNNJtPGtSxcQg7/1A/P39rv+tsRX4J680H9FmoWhyVtCrVs8AZjaH1JnHTyL6E1N/WT/5+uX/W9xbtmpR+JAApEJ5/uFW5PAGfdYmliV49mLHTkKFqlGkKVOGCntsb3B7c01gdWgGgMKbFabcd+7SJAIguXZ1TuAfnF3KLWRXcxclA3KpGm/jlyHp8CNTol3DJHxyL+Ob3bVV1ULNPfUnh1eBVznWs6S9FdeN2Kwidj4MUkqlW5VxVUHUSkC9LC1bEYnSDJEZhTO1QkVhFJBtpJysJ6QQqxPUb61LsLAWpmV6dvdyDIc7vDv1VZnpV3xiUF4bCv1lLc+tZkpx45pVnvAnfskkOsHlLA8hP95343MBTP6XOH3LlEj/2tG9SChQjvpcYhJYr8qrSRS3AgkzOCw/WO9dlVR1TrrQgQOGn5IWE301zPrgV+63dL5xdwBX4ZDDul1ZydaFJGRJWne6yFbc+I7AMSmtaZ+mwX \ No newline at end of file +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Om07pz83jX6qdnU3xguy6ED7gdWbzgygF2R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/EMRS0ZzKxgWSgIfG8kKBtot/IzhqStIGZsQcAN0aP0/n7nyYochwv2iWZfrRwP3QbimMTB+9CZeFlHIJ4OdjIbiLhhfcu9dZA9ANsNV3CZtpm1fsnekA634I28/BIo9NnA02MGGCoecntYqotDfbLYipzNTRkq2aJHklTl9tydsw0rBnwEgnxh08GuWYCJsNLinudWa81IJWYFOgrJd/UvNtlMp/L3LdJSlX2XQBeaV5PUxxe/kmq0qMiZesqsAsy5M576KSTXvQ5aVqvnwXLuRBo5VVoImm4FANfR1lqUjEF+qzJ3CqLXdGlAwujPuoxa6rqxHKN8IZHll9YCNH6NvMrwvjX8K+gRwoZp/yc3GHplKHY3Vh+sEuNGDR6zOxkUenzKP8wsu3HDyCYwBj3PBz/meanUmogIqBkbFVzi3Hgjy/JPTgF5hbpAgvE3IC8qoohPNFUNEw5QHAok3x5AilNbpXaYshOZIYUZbTgVkyLpYkBopcTru/B72Xw/eI3Ik5WDjWjoHyADkLB5LvLn3UCHmBz2x6384qTCVl0hh4rPZpyT5H3C2CbGzJojbLCjrH7HEA/KeN8o1G1etTXo+2bpM9+wAZlPTaKzOCyJMu+KmA7fwBfOwHIz0sEIQrEwD+ifSGik0YhOMAaTDkSO+8EGlyfYQaU8v9TN3V8ZcIn+O905BbcF++mRF73t9CjJsOvxCB5XVnbfS4MbQkDVgfofCW1jBOqQo0AqQ+1sf/hrZ9FEFdEWcYvrpnEBVgCwYcwQUY/D4n7nPAywq/pkbMjT3slxyJSAZi8b+BDH+WBg1utixv7cDYlpwia9INBfFu005n49Odsu3YGZdet0FIRxpkeHyHGdsAMYKkqN9hAwKiiEc8JWw5DA4EyKQuDZvx/Sl2LqQkcgO6+pIIergC0LyVypuehNA8WffdYPpKlzLu9FHv8kIHze1hClZEVk53WabiucktQZXXrKmEpU+xxEfRTBikuHpwKvwCumLRFejxzObgyUoCMXd4+Fd73MgbqwOfahuc+W2vjkYnPgH09vCrQtqI2jZi98LYaP9xptLRiP05W1cD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/village/NormalVillage/2stoneNox-124-475-63,25963776642856_0_95.xml b/imgxml/village/NormalVillage/2stoneNox-124-475-63,25963776642856_0_95.xml deleted file mode 100644 index f5ee51c1d..000000000 --- a/imgxml/village/NormalVillage/2stoneNox-124-475-63,25963776642856_0_95.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Onh36uEVsvRdJ/rHpSjHPVExGG+K2xQP/OcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz+cuv1+WziSATLGKQyrP2JW8CfMazqmekMNIkjxirmjdERL9Cc50WWjAS1QhjyFJrykwCoTty19nGEC/0b5wb8BQOdYOREWH/kzjVmOIwzYYK0/Zutobr6h2x074+xt2JqdG0Ez/41bAvjr7795xzcIQk+4PQ8tbBY9mKNX5sHSsMWpfeTBliYOuiybFzwhiTP2UDfIZZoPTl/ZpMqPQhBjzHzPZPXGa6EXNl2RKtHqrXjRP8jRvLLWKBlOOtJDsNx3sVjUYaLk+S91vpfZDME8uxf1viGW7v0JhEa0o2rDku6TycDboVSqZenljZfut5VW/0ygAjNGtYOdx7g3n/hX7I3V0VkLmcu1cnQ/ALA2E2ll3oPEBywBosF2fSFgkIADyl3gYXOxBtIZlgxZfYQ5Nv0azQ/cWqKHceE3fDTLCafsfPXm9Ur+OVJim+28ALGzqzmM1o6bCUsybyE/XPPlG+Mv6MCnmAakUdpYFlXe+sLqk69+EnTPHGRH3PvgjGEMSUOntMpgqn3t+3Ys1D6eoZqWn3yJ8VYe5uiY9NWpcKtOJzOnChiQXbk0yRN0PxSGyGAMVYMF1jRGnprnKsPrAnOrsteKF7wJ5Fbd+feP7Mr5UX21EdlmGw1GQr2TwXcihOGapCKP1Ap/+HLHal1/FMPY7BAljoQL7Hh9+gMYnESCcQgha9Rav7wyyzYTbABHj8hGMJ5hl0LRhHVtIXrbFw/zjRMJYK9ov9zve1AuwbuZBFW/8s4ATEbsC8023Yp0nJB5j0hzMtCpmBMfA+hwTWy+586WONNFQcFIeOTaATgiRpgcfh4DufTTMpM33Pw6+aH7ox9zoSu13fq7TUfBKQValAHRpB0Glr5NZNk48bwdnQH6AUEokjZaXpxqjyUQ8cpZ9+u+H7yfCo2UzLHOrh2g5ssdfa8lIiwI+XE9s+xjSPxHyj0n5y1ml8p0/LOv2fSqLUL/3kXqpZE7arha862ZnjJcnYKdhStXTAew2xhd1vxHTNPgs+vX1sqzQSSWEyhi3pd1eO5JgG56RAPJ22ZkTajPOkfwc6jJHUfUJBQch16IDiGRbEm6JmS3e22OF3Wo1OTEKSOFqYOLZhuexcpc1XpzOaqy6cy1p0rbQ5uLHOUowSSHtpq4oaMtEZ6yxwrwdA/l7XL6XFvdLmVRXA/iFxAkgnyy+mX7r01YHtf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/village/NormalVillage/2stoneNox-289-612-86,4_0_95.xml b/imgxml/village/NormalVillage/2stoneNox-289-612-86,4_0_95.xml new file mode 100644 index 000000000..2777a0aa6 --- /dev/null +++ b/imgxml/village/NormalVillage/2stoneNox-289-612-86,4_0_95.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Oncy02yXjJ508G4Kzg6k/MlopXXn2H+u4KR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/KKLsyumP6hTWDY89u/BuLgSlk3LGSiOZ044Hqs8V3Mb69xluSBwCOKF7S7SI1YRkE4L8HbFPVvGfrsyrt0hpwLt63f8uZ9Oefn7kopY4DXZnKAXpDLso5lpTRrOm9jAbieyt7anYyfWCn25Q3wLCQe6oEyTBOYqExtEpJSz9Wft+aYV7GwUijcA7P6dXkgTJC38WjsQktjxJmSwxJKVmpS6G86pFILPidnlTSOAVlN1YP/c0hkjM29tDKddr7YkLN7drO+vYB0mTiG/JvWMlMjzK1qmUIs0NV7o6jetPCttBTDFR7m15D5DwChz9vtPvDmnz4LYPogdq2GhTOEKKBlcD+IXECSCfLL6ZfuvTVge1/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/village/NormalVillage/2stoneiTools-124-475-63,25963776642856_0_95.xml b/imgxml/village/NormalVillage/2stoneiTools-124-475-63,25963776642856_0_95.xml deleted file mode 100644 index da2bfaf65..000000000 --- a/imgxml/village/NormalVillage/2stoneiTools-124-475-63,25963776642856_0_95.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OnbM8ZVzx2mZCZbhyCBYUqt7nQqKnLcMmWcSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz8+zwd94xYyVc1SaRD9xgHm8JUMNYjHKcL859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh+MS5l6xnN45i+9W6W/oV7eA+NHL2GHkPCFQk0JugWPrkD0naXYLkmoW31CIDWN3p07BJ7NiFM6sZcGlQ97PHhs3+bRNmbXmEMi4pdsbNVVzrsM+s3oZFuNRPINNXr5ff0eI3EQ3RgtDbCB1l6pnJACISngwjQ7nZlToTm7VPaOMgjK1FwrlB2tzCcc/ydpT4yDf3MByrynxuFTGzTc8o4iqFxrlnoXYEZSS/pHNS3rz/KmKZV4W28KkgHkYIvyqaNkl1rG71S3sOYUcrmcryz7JxIPoyp+qHv0xOfq3cpTtgny0RVa+zLPR9Ub4b8CKsInSLJAcGWkkfyOyAD1sRQlIKrk23laI1DrRBjBTFK4jZa7bofbpibS8ZfzeoeqGfZyh4SeEHTBeZMAKEhuk80ZAA+YgaOBs7VA/pmziBiLcIvv7eDLR+4WEI00Jcex2PghWufOm3WyT3xeN1tZEz1BgIN4TKH2ZcMmIaqcxdzgVIBJLX17HYgafRryaO1etFCUakJBBIoN1e5pLNRQmc0oMtpnAlAdeRcoxOvPnzZz9upzyfqMsvAJcCOqMXPZxkpjKctfdEcB9UK2/YcqhViMKoD9tciMl06Afpv3E7Ib5fC3ZPlYA+hPKQYDZKS+gLIDmAs6EmxzpojdklDjaYLYngotIGfitBUZ0LNSrmIvC+nIvWHsSQ7GG/9Dh+tVRaOa9RaV0YrypLSYYsCnUVvgP5IUdcPH+SnoNu2+6Vn9im3WxD2yMP9HCu0ogE5dyWiNivRFlLxRjmyDrj0yDl1DVFPPVjnCk7IwmgnTiSj52FO/GnOJByOzUEpqFaL2nl+8vZrTMRC3sqp7JhAZQgourEXpREIn9L8t0sz1OjpQFdtcFvMpFWG7LsUiMNpa9P3jDrWI/Ku7/aYdIKBpkR5TlQSJwiJH6uk39RGmubkssadS78t+isexoRaoSJgPZo7dBlIrSL5DS53cXAOtM9XcVlLuVO2y7DAY/CepAxvyGf5LZB4kpxVOJjyyPUt8u3QGNi7V6zMEiQgipPTFxp3k0CT9gIrHbIbN19xBwD1FwePEkpBjy6ZPYC7Yx/HFfIj+8CLqH708G/3EVeGz7Y8wb1zFDVD5bl60rPcv9/bQl0bcj3+KgCPWzNNv0LkxVNuisXkJ55ohqdvT4RF5ZnhmJxTlxTjTYD+OU75B7xi9PSyVT6rz63OLNZ9MqJeTwU1dcgQnYyLJvlNgxht2c12BTNJkNOvRyanJU5yDt+QWAq0vy+LzTZjMne48W6K4aGKd7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/village/NormalVillage/2treeBlueStacks2A-605-129-55,675933536059_0_92.xml b/imgxml/village/NormalVillage/2treeBlueStacks2A-605-129-55,675933536059_0_92.xml deleted file mode 100644 index 70ca18ef8..000000000 --- a/imgxml/village/NormalVillage/2treeBlueStacks2A-605-129-55,675933536059_0_92.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OlzZ8x28Osn3AllSF+yB32d+o5QndAL/AyR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/TaWMBzfOux0ImxxjoQ+Z6fNPyxDMAFWzfLJI29GJiVzfLtAF4G/DdqZUZL6xApZlGrAAsV4k2jaal7nIfT6oyR/ILRFOlfVJT4T7w95kLW9E+xZzZfejc5K3ORQDmz2V/JJXh9qSlY4AJBCvmWYVwn8xezp5hlLfbglLnMlhqV0+0m4K8cHIgAQqlJ+P702sPRtF7LejZtSpK5yqnbMBlODjSZUHo9Squ3FJa1jxWgw8K+bs8rVB1urftBjvPNlebtz/DxB966yREqNkz//T6Y4Tlf5g2EX/d5yMFaPDLbYBnriF/KtiNjM7m7wDC0CNlz6bUKJdocdGwz23HVVv66cpfW9uYvVAVIFFI8bNVeJnwCOx6OvX9d4RElItHbpUbduxyXN3aTphO58GgzmGdNxMxdhpkwqQ1eAMbRO9umT6T7HmUEWYA8QV2mGKNXD3NcdVAbeKubNVyuGVxzIaQTUoucuZHCk9QkXADum/67xuVnTXRbOK7O6nWYOwR+O9owbiQNQscJTevFHFLLCXFVqx9hhjwpdlcKMLb0nWMGh7MV/BN/oRTLAhV2X8F3XvQu7vWyE5JZlgOuOsRkB+0oEbjlruHnNH02UfhPRaxU1MrmL6ryecSUMVnydGXnrCPkLFZMgwy//Y15W/yn7umhKCzoOFXwRV1oEUdrIujJQQkGu/gZVvMywXEzrwsu+jf2PLLmBRd7H96Zr1Vym6txSWrj0jmNJ7FFqvs6JChYiFemJ6nMQ0OUdvRfhSAK4AFtUK8XFVFMQjYuaeaUhc64krfxKcA6VOB7CqO22PbE/uDrwiZ3OuBrYSh+77mxOL8MYd4fA6yb6RyJvVM2xQXMlo5FlTv4NBuRAolyNpyLCo9Oenfhof4HQ4Wi1ZjF1Ft6mY+QKL0g5Kti41B7XodGUkD9a6rCdmaPxgflm42d5Nsg5aRdWeUH0Af3eRXkxnLkPkSh0SZG9FEJ9oA6lA1A0OLOM5Rz9dJK5Pq3liedF07mnuDBDeLd+WMh+BSDFQ4lhSvRkXVIyAd/31ePCZsq366iTAKw3GnlEu82dA2ab93Te1LrKfR5OAcsahLR1lQxbTZhE5Y5Tugr7C8e6cl2ES+UuZl7L8jn2JoL1W2wrAzPzQRr8OTlkKTYipwxILwjJRKU0WBS0YhBk7qVa2wQ2Q+yLCYP9KVRhbSDlMRmNQR3LMZp0Nz+e1mhFKBrcmT+huiP6NplBA6LPOxX16mRtLYPcNd9UC9v3AhVDke4NKGgQaXORaxRticalnLALeTGbv2yvG1kc8YTY7pLN04v3RUpF0TmzfEE8pbe4AABjw0MuGCcJ7qQ1AO9AuoEUayXRLrE1W9f1vsH79lxiDlJi2HGA+SZ+Scfra5xMN5L8dAMx/jUFtWRK7rFuE9ZdaP0LHhXniZe/Lv4ojoxlAwNvgGAGJYx8Ftl5vSJOVV3PQtZn2LNb/7yRkp3ko2D5ct4kMp9bXLo3OEnh2cj4sT7tVsxN3BdJJyS3dWp1LEPWtQTlNCRDS1OJNmTaIeKYNguq9c/Y+IHA5KEE4ImoI2oNEVgkr5/f7U6+bbbHrSVVbr4BFWkUe+WKV3qRBJjKDuWGVdwxVU74i1lOzlQHb2dXyfI31PEv4PHaLqF1Oc1w42uQ332eqKS7rDg6Ouba6FnUCcWZyenv+fcZsTitDLc3FBRqnZApf8dG4mnyJFmgWJncCouWMmK5VI/27ltn659pCWxDbnUDjlcsjb9RJ3cbHPif+9x1s13GEsHmgpCmGErQ5uBC9yZd3CxZtwLsceGOu1Ae3QCrmbZeGq5rXIPiCIhMyKjnJcSsKtZswCLfDJ2S3RyrvvSmbQgTzgHxrcgBygSUTUi5tmCetyVitrIBauQuh2lZnIMj+/EHhRI7hJXtKG2IqbIB691CbjGXEHSWNCOrZfb92ahjIj2wpE7qqDRwPSYYEfXMmJtcvEyOMIcgSZGq7ODaHQlPyDUuQF3AFfhkMO6XVnJ1oUkZElad7rIVtz4jsAxKa1pn6bBc= \ No newline at end of file diff --git a/imgxml/village/NormalVillage/2treeNox-773-244-55_0_92.xml b/imgxml/village/NormalVillage/2treeNox-773-244-55_0_92.xml new file mode 100644 index 000000000..473adb2f9 --- /dev/null +++ b/imgxml/village/NormalVillage/2treeNox-773-244-55_0_92.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmiKXAvwmbR7dfwWVQCedeV1VPsG+E9A/+R2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/d/vcjxLqkZrpZxtBNOnOzEdFFWVh0bLcufyYxWLBVz3XCG0Bp9hK1+F3cp24i27CsfXpmppzxRZDzU+rvSZukm+1VU/uFrMyrqYiBB4KnZ5h90xDt6wcj10cd74ylrOGZ5lvKx4hxyVV+rkfylN/noJj/+xeUj2UN4cE8Zu+kIxxmhvZoyNIVO1qax1oOwUIcw81ExY10VU+Q6p8e5dHZ5uQKA9zwez+nt2rHdn3QHXigH8ortv7owCYVeff+cM0LA4+ks7RvpOivFvQ+ztauOlyFuC/dWGsHinQoBt1XgolixlKpvWLUlyKlFaGiqUsa/VF45e0TFlGENtx8D6bvuwvgULGWIElzO4EmGmTRUqLyuCWnhbCqAmhOWrH15Lkvw3fZQ0CRR997g0ZkS3M/SjSATIb+o+tPaLFwGQm9lqpiouZOLK9ty3au5woH9ynC3tWI6/5WczKePTP+4XfykHc7EGqhEt5uAIcogLDf97oWRn+qnfTpCJEbMmtMURaE09ATh5f2xsMjna8DqtbzDbyDgGu687DFFC36XzufR/HxtCx+mceJxAS7uEZWjGSmQxXw1vQAkFdItYRuusl/LUpM+lly72VaK7tvRhxq6X1AQdJSOhNmxv79QHHpqe8ROzzSsKkweHPA5Qua2QmrFnpv6kICyTqXzN3pECFAWixn8nFyBtgylmeSKtEQzoLkX4Lrn8V03bh44Ydn0QGGhkcSmAZx+5ZHH4S+JmgUKcgNavkQfdFjBz6+MPrOi5xyBZs7XgnkpEF+gGGE1jFN3tqoe47sT/4jb6tC1ZC06Kg0dE4jWqv0cpwkdJO8wK/QnXCTXZwskcC/I4odQNSyK8CmLXw69WmeXIS8Dq8u/knob8JUoZRk5iWiqov+QB0gdlArsJC/kyqv6Jdai2xsX5rCgATIcbRsb8io4jXnGjhpQU4Ouj2tLjW6VPeftSq93Apripy016ROClWKo8GcBAeY43Z4jcgmsGZHNNWYTDq6zvC509oyMJSNLWb9TvZvZ2WJmGYlvECav6ZrbMiuqNui8SoqHODiHZlh2uOsJ+Ys5uw3qVtU3jaMRksfRLaYSiSohXlJOTW2IgCtp5++ZtKRXaLHKFC7vlBcZOQ2iX5TIXU1OQ/GIdplzPqvvVk/wAtDonkLYD980qaAMHwu0PcNlNUmm7CY5LzksPwS++fVLrr4YdT1ny4JV36R/MWNnL+0PbWAfFgzfF0oRe2B/ZaAJNwP2l16Gnzw3AbYgVvM7fgw+iotHKsN3oYC5Iv/721h/x1PktEeiYJrVUP8d/rr3Jnchc2EAvRw32ueXLWnbWodBRhwdk85UH8EeAfPHeLRp5Wc/SQAPp+yCbSJrdJQjyKzlFDPmBPYbKfEXzZYYi1wACQ2S8DQZ1fuy7jALI1GfodXlNwAzARGstprVzMKuqjSKi8Fz/d0bUC0g+5jLhQFyz+UmjAohqsA2vMlus3lEbx6xAPnOVMTYgjeVFWqgcQWGSroVN3ko3bgJtv4Rf9lyYbf5Mq418xt1Z/+HyGuox0ov7FPamIIeHmvSIXGcG4QIMJMcFnp2XNxW8CuJN7UJz27N8k3kPkYbW2YIvzxppZMUVM9TTJAICAcWBtzULdJen4n+eyutkzQCUG/LbE7/0SG4PIz1FlKHdhug3GVOwoFXqB1O8uYqKeeDCaf/hzglE2Q1YvdfeLNiNgvb9WyJBwtfFhDTva1ogpLRUIPQ9968w4TcLLPulajl/R9e9hGimBvCKCkyB0HfRi7210w+gVQ4TNErRAOL/5Zv6epYK+lnbdLhNNmbDzVT4CbHVxIrOxxKyhk7z/34sN+nYkkxuWjA1B8A5ZXswtS/1QKvw6AsewGKU2n8jroWRS1MJMbGq18oIRWn68KSgw9Ozm8q/tti5PysuWltqI7aI6sZ3yhNdITpozX2uq06whRWavdRHilT73w38F0vH/0Kh8sfQc6JDCJpoH9eu3u+uqtZgnZKKmy62PizWobXoG6cnBpAOI0Aycv1RjkbmQcLUZfeLIaB993XWmLrwW0bhs4Nc4BxAPRYJYllZrUGuQRFnO9TuGpafHnlHwLmNfiyjS1xpYWdb0F6NBIkQ5xpWRWkpw6y5z46rDsJYGBbGJ3Pn8oolDodKREA5ncwLDaOR8Inma/53ZeB6NjdM+XILuzOoYYT2glS7mjBHokdHc1TS+ubrFIQJnLNNGbzrgBe7r8yaw/flu3ihzm/DDBi10TFGEHwiXWHt69mmff1d984B49zPyG4QCrpa9ZWVUex/42LxftTmdWccRatSZIk32hsL3ixWtXom5dY8JX2sy9PDiJ3bMoBbYrPrhLD61/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/village/NormalVillage/stoneNox-124-480-63,25963776642856_0_95.xml b/imgxml/village/NormalVillage/stoneNox-124-480-63,25963776642856_0_95.xml new file mode 100644 index 000000000..0499c3456 --- /dev/null +++ b/imgxml/village/NormalVillage/stoneNox-124-480-63,25963776642856_0_95.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Onh36uEVsvRdDkMJfiHwvbnnC7Z1gkb7zKR2efJILdsqTYlHZFt35anwEUzBLsd12nPYk6i7pJ30OvYQvBm6whOr3Ns3p6vdNvJsTVFB+cyVg3/4xCqUHw/DrwsUD0x8jfT3ArMr3S2w5+JnsH1B1R5Oe8Yi/AGn7iR36CS+GyxvsH7A+iW85RbpcSj596gZ85lCZ6omUT2z8DBSnEal9pxfbmLboCyzSc02ja6a7aNIkBtFg0SfNLXB7As53HMeAe8Vv+cJA1X8670H682kHC4Cq5m7wAiDldDzWJvzIfNwWppVlgugKxYvYWluCUNsraIOmzMJw800xZVSXmNysYeIfjer4eWLrl4aEj0s14G+t1ogGUUjOLSMNSD7ZV8j8rLWhJ7MFeJ+Q5HraW+OpZr8cTXTROV+Wliq9/w0S2Bshm1Pr9VaCmvg+hP7ot2PltJW6o6IqB7nhp9ULIb4nlxrDaFBLEUdx4nY121d46lF1DuZNKnRk9xIDtp2de6QevmVRHSPUIMqGiijhDIY/dU1F+j9vTrggEuzygf6TstjqM50jUDOz78grm4+eqQRypdJoFL7javFrPG1AEgHx/JSZlcED9/KxjmvzoQwjvXrwYX907dRGOTI1o2iLGvYf9FnOThode6Vi6WXDM5tfHVK6yt8HSWZzsZisBNV3txMwA7hTJjasqe5BYU+34ulEAv3104K/qSuHI+8EO9DiBdD6R61kKy28WNalvyR2qjYkDDoVjkNhhbhMAp0CavVXIoioskX99VBqKNAniSwDup49NDOeevWdloM/v914N8jzOTykD+uCIdlTkuy+xun8g/r2YHjx/aSThwaXkRZTBiquy/v9+NyYyusLUcH4oN1i3j34Y65QMUE0Hvrqj0my1RtFXCgKtoyFOKL41nrne3B8iRueGat/TqnkHQjr0LHgWDwFNVwHyQ5tzX35FupjvqCchgT892tVvruAkYeL2RV5QD+N8Xwe8RVCUg5AvmOnlFKyF2fs72uNqNu5XlF/5ZJAEpq6qGBtRoYwUaEX2SSUYEi+1TWzlj/O7onLQdXeH6uJoFz5CYcJwVFX6N90T96CW1TKNwEKS68r6wqvfWrnAH0aSGlMCmyH6bCEmszlI3t2W6wOOlK81pg6A2HtNkLPOPqSs7mPtoCVNya3tL466j3PPE8BQZDGDqgy8ak6YYkfFCDBRMOxvjoJCJdGUGLpppsWyvrmftPYIofzx1C3NZQkl7tBJdNbHmY+9qJNlokdQDNXvxJ2YSwqcV5GObonUSdiVdty/39zd8tZz8pYWQ/MPNwe21/aOxQRVGX2a4gsrFmjDM \ No newline at end of file diff --git a/imgxml/village/NormalVillage/stoneNox-289-612-86,4_0_95.xml b/imgxml/village/NormalVillage/stoneNox-289-612-86,4_0_95.xml deleted file mode 100644 index e0278ad7f..000000000 --- a/imgxml/village/NormalVillage/stoneNox-289-612-86,4_0_95.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+Oncy02yXjJ50zzjVPlvbKpu42L0+UrdSJacSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWzxiyKyR6dfJF3QcxtekqywJeIuho3LWJML859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh3HjQwxPDRCUVpBsN/FjOommhj/AA0ikAnumXkRDgxWNQp7ey0KmorfPn+eIqqrq0SdLt1onRL2Gv6UIZLjbW2I7QdWakc5z0sdQhLvEiAcfyNmfsj1lDfznoVZagZSd8O1AP1teZcIS5Fi/Pp/QzV43OJPs3YYr+9keli9kVbvbPo5W5E4m2bphZUKTcbGhgEuMW3mXahS+SVNNXqZ/GCDJrteiN//D75Fr8nQMtZNYer4fcr37nk+stJLAtEAQX84luFF7T/9ZRMiuwtv1mtQUbMCM3grIBPlyHVE5MnjxKxMdZbj3xk9nhojl0hTVPX165ceF4DuyJTjc9010RisGNBPX+sdOepTEo9HLlVRO7M/Hnvew+WFrMvTw4id2zKAW2Kz64Sw+tf2jsUEVRl9muILKxZowzA== \ No newline at end of file diff --git a/imgxml/village/NormalVillage/treeNox-605-129-55,675933536059_0_92.xml b/imgxml/village/NormalVillage/treeNox-605-129-55,675933536059_0_92.xml new file mode 100644 index 000000000..5dcb6d0cb --- /dev/null +++ b/imgxml/village/NormalVillage/treeNox-605-129-55,675933536059_0_92.xml @@ -0,0 +1 @@ +LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OkS2vTqCSOgdw2I01y2wsHewC7JMuTbXoecSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWz2AmMkI9WcolUwdtBLHQDur2Zkaqf81l0b859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDh1gNRk745kfnKyPSt1AyRNIaTz1Gx5HG6oomXVnm73r8mw/tm+sRv7u1+40pLWSElA3tunZmwbvWRLfvtt2GAei12wi1nksUCTMOpSK9aZslbENQbR6DyqePnBYrUb0Y1d7FycuVnk96YqB1jQCFLBOqYPD5InpTmIwgsY/n3/pbNLnJ82ywLigTkcMz8VbMaTq5BDxbtKgx8f7W3sVtZ9R20OV/NgO/yj5+MlMA6vVsPuJSydK3WB1p9e34s0LfSzkvXGQS9disVnWWYpQD7YgNLDztC1y96kG4kosehi+azt5tdDyvq1nF65F2Z2+qY+xJlzTYlHEkIf5R751bBvaGrQsYlOqNDoo5ccYovHHwAPguvoP+j8N7vgZoLdYSZ9K38cWILeujjomKzMkqsLoY/egHlb8waS7QK66k62Unt+q9lB6c2OoLvxXavy9gCz2CvJy4bIhFOOlMqYWk5zArRMPVx12/g1Tem159YFucodkQYI/V8WCNpS5qbLZvc/LkS9WdxvREioOWzjspM/O9YxNv2IC5xJb5MGOlrsIJFc0klhIlK/n/NI8A9/ivGFnSw47Pl9R1CjNhFvfw6IH8298FLkB6ESMXMDiYTQ9L/+dUtpu27UC8+LGcOuL31RRMVTaNVeC0OmHFIPi9NffZAtJhRle4JpblTK3T5/wNrMeVSEM933w8yhBee0P3PCRqspcfmtcIGKIXlxPPdfEW2TH3F8tUG/REOvqv5n5qszoN3/yFvRehjzawzJpj9hdz9u/n+A+2jLU8NM4tna4lJnGO3kk7pRoFBhacI23E4OkcWkmNbpR992r6Te9NKM0yhcmIpKSgx525Fc7Qo3w00lpLJqjc0Fzv85mlhPRH29SJQ92w61zS5UCI7XAC59l/B+Z7bLn0USxNCtBR2dXwNKZgYoT5g52oqdAZR6xOqYhO7W6WrPClaWjSorQ6tDRfqfrO5kgW7pxujKV0mt2EG/8zHkNg5mBSgVOt0xZCU4ZOvwfCnsGOa2dgs/VA4/GfGp0PzEEzGZTqNwYcCVb5W+pAzGmHfNv/GIqXCM91sGHkNyFbKE9GhWnr6CKim0SGf3iHlXev6hDUoG0pGH9rLw+bEqvZ36yraGscdVJ5asOGYT9LXR5DXLmh0jPqZp7jFcvKnvE3QuuYEXXXEERI+YxfsQtCw8XdQveMQzvcbrgmN/v//2DW9L0vTcfp+56+PphoScIXCbvfp7R4t/3nfQBaUiFIDO+GwiRIn4Y91RwZf0Ig6rP2Vhn5RVMG2hrQky8exBjMaQA0MHrE6D2z4mLl4I3nCGZGFKpb79mXpBmOHrRYNSdYThEEss5WeNnZU2SRFW2E+MWCyFeHdQMU4vJJYkVou0Q9lXLPcrZOca9JKxN/YHW8TA+RcrPEyDFeB/Hpus/OLevCwXgF4pTkC1iYNqY94juftrFFDFlZj1zlZBBzdE1QEQh60Cvj8abhOmQQ7Iv2JVmHG09ji6Dof9FAuDTz5xdwBX4ZDDul1ZydaFJGRJWne6yFbc+I7AMSmtaZ+mwX \ No newline at end of file diff --git a/imgxml/village/NormalVillage/treeNox-773-244-55_0_92.xml b/imgxml/village/NormalVillage/treeNox-773-244-55_0_92.xml deleted file mode 100644 index 3ea635cb5..000000000 --- a/imgxml/village/NormalVillage/treeNox-773-244-55_0_92.xml +++ /dev/null @@ -1 +0,0 @@ -LO238ELf5AlNAtCoqWpnf9Gbz57a9bZnV7tl4I1aB6a3aGs/YUI1pM+hD0myInL3xcbROsG5Px8DwTpOOOecDPFyhhJOPw+pR9jS+Ivx+OmiKXAvwmbR7Zc1C6y0t1cnRaQk3v0hSIicSGjT+x3SmU1nW5Lxrp2svSOAGhqWzbhJRH0IIVCqJuXoxt/S+M2eoEB2zFdlLbMf3juo2GnWzxiyKyR6dfJF1A6xhiBZkWjRtFTU9DQbmr859Vr3botnY6cxPAX2g2h+xoG+FZkRGUsnJlNkbX4xb29IvjTXgPKrXrJDe9qDhzqvFHfnMVWtELvjI2RTOoFtgx9Pnjz+oZ0ckqZVR/dFmzQJL49eshLI1V/1Jk44yEdOUuRoDZdmyvoWAPDUmUdy7ZK5v1wpnobE4hBzrb9su3Lprd2Iu3kFRK1whkZZL6VhzsAaV/dWN97lrUc1CDAJMeZLW4UlifAUDIvaH+86Ar0Qmc7D8qBvbUmGd/ttfNjrKl6vBl9t7JbS9z1e0Dyg7zZbY7kcSWrn8QARdDO1JBLa+aMl8wdmGE3+iZRHvnUcU2w/Qqs7PjvYReTNfpEYcYPHb+M+jhylfNyLs3Wt3Z9ffUtX/zuCVLuItO6oRWnYo3uxlm+X0M1m9183DlfzhcXAsE36XBFWXOK/6haO6Br7JoKzINuZNiVyIZtrB+8QEYEGLbYtxFgaVZ9eOXyAz4U0B4z3I5JYTl7xDdQyuN0WJRZKH+XK05i4YVR1DdRUKxnxDhCHFXT5L4T2d5F3TaQrobyTheggNzeLjvpsopONh6EpCt5vaikI6ii9AJMsy+uZ+8FQsYkeeRM68qZMmJUfU6H0zqCjk7TgHZi0arVM99tl9MI/KGl5ySmYFnAJFFkdpcHct3fzofQCjKD/HM0fpwTIZlkxu7bUTASWizhhlml2kb8p+tVfpBUlVjycKRELxiXaFb4wqdvBgC1Lx4hOsvPXpeVmS7bwCSO9XMbypOFW1J90y3gox6+QoPfoZuh49GBkLmbnLiZ+fvg3WCcM5Ob3F2e9r8s2dZ9P5GRfqP/Eps+qRwgIJNiFZ/hFvmRiEMcWg3rJz7O9mqnRnbZnc8LueAS9MOH1yUQLnvWnTk0DivXxOl6rChh4qWndV9XdMs37Dfp2Bp+c94g7u11MEcDCAI+kb6hgPxAFvooA4G3H9yh/+9fqlIQAVzzKCgrEyEXcyicAFOCszW94wTIsFcEV/XZZ9dRud8Ii6lx383zlyExeobX0ei2mc23Dpm+SV/Ri6hsRT9LjspEcOjOSq1H45SARWW9chwxIrstDNny8XRqYCIlSyJVO+/ipKyisNLFwhhaEi5lA8YwfnSA0eVzUXmgSRlau6DRn74NHB/GgH33PJ3u1fPlCFgDpSkbq7Hd+f1IrlmxyRZ1P1kVHyz8gaHXlg+PpEpNUwXMj5fAkvUEFyXIwVnW8YLTADO7SaA+G+Wc9EsP3lq2AsVynJE9qfBRbHiH4alk8bR+L0zu7pWaMIk4Bs7GLHRkFSC6Mz3O3IOsi3IhQTrT8i+UeBzFjBUSOV1RmEzXZfPbl/2QhRIPoTqWba/mR8IZ5oa+pVvV3RYNG5wdzxqfIogDMLEjggwThpSHYtfw4WsR6HzeLVPaSdqbThdvlM9b66aKE1DFocSgVyPGqHeuXiZh5wYdMso5VInEVuUBx17GA+hV+NuJ5nn0vFuPFx78SVUEC/e0dsAuyAKsuTGJzBvoOMNOtzAWQC4iMTPqFpzbnvXX35FOf4D9XL6urqOwmcMHWEjpmghLdbEMn7RU0JeLH9/hC/O5xbumdTbgsXCdfJnjUHtDVa/P+yVOdd/FcN/18cbDDgba4aRFxAs6nc4uWuHrBzGaHuei38sj5rpzqPHmqaVGDam/0DsiphYCXPxLaocwYA59lESx65kY6hGfGrKO0AY2Y+GDHddgIvczVBcm24R0Tf5xAlEj2/kxwHkSysL531UxBviWOiwSuR/6/vGbuSy4dvLuBN0K7y7wqnYwkNe+Nm/sbsjMdDAQLJLln6BX7sO1+Vgay72T5XwkmkkzHXS7pyhR+sEu8Ayak6yQOwfQZF+Q0KJmsFOKYqBbTELwYTbNZE8WZjNYcl3W1qyZg/gak7fmeWjjNrT/3Y8IDk8+yNFxah7xciKusneJkRqktM25jblruiDVyI6QnpKH/KHrI6ymhqZbljkhrpa+1kG3h/TTl+flslAWTf9L0RLpemFRpyg/QnTZlzawiKYOVOr0aEv/7uRJoVSNG8eUC0jnF+GrEjYmytZ6AD8UOdQmdaSSFQQFEoNtmWr7UT5yxa/tejRAYg2Zp5FDeJGT6+WLu9EzUTKbFU0oBP1Bwlf6BIKSP9YB5FwmiHB57hMvGsdwOL87j1U4v9K4RV/Ll2GGQ7e/flKrOZ3WLMX+X62e9psIF49Kv8lON/WixDzA0GpaeK3B2avwNw7YIp8gWOrx5BBpyg9kKTYMdZJYK03Bh/KMlzHoMXKNrTk4HeuxfY6BhVjCV2h1YLljz+SneYMgaWEitaAkbCRdwBX4ZDDul1ZydaFJGRJWne6yFbc+I7AMSmtaZ+mwX \ No newline at end of file diff --git a/imgxml/village/Page/BuilderIsland/BuiderBase_100_90.xml b/imgxml/village/Page/BuilderBase_0_90.xml similarity index 100% rename from imgxml/village/Page/BuilderIsland/BuiderBase_100_90.xml rename to imgxml/village/Page/BuilderBase_0_90.xml diff --git a/lib/adb.scripts/shell.init.BlueStacks.script b/lib/adb.scripts/shell.init.BlueStacks.script index 656b4768b..420849bf4 100644 --- a/lib/adb.scripts/shell.init.BlueStacks.script +++ b/lib/adb.scripts/shell.init.BlueStacks.script @@ -1,3 +1,2 @@ echo Android Steady Shell PID=$PPID -# launch su shell /system/xbin/bstk/su \ No newline at end of file diff --git a/lib/adb.scripts/shell.init.BlueStacks2.script b/lib/adb.scripts/shell.init.BlueStacks2.script index 656b4768b..420849bf4 100644 --- a/lib/adb.scripts/shell.init.BlueStacks2.script +++ b/lib/adb.scripts/shell.init.BlueStacks2.script @@ -1,3 +1,2 @@ echo Android Steady Shell PID=$PPID -# launch su shell /system/xbin/bstk/su \ No newline at end of file diff --git a/lib/adb.scripts/shell.init.Nox.script b/lib/adb.scripts/shell.init.Nox.script new file mode 100644 index 000000000..a62d0e655 --- /dev/null +++ b/lib/adb.scripts/shell.init.Nox.script @@ -0,0 +1,2 @@ +echo Android Steady Shell PID=$PPID +mount.vboxsf other /mnt/shell/emulated/0/Others \ No newline at end of file