Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #cs
  2. -----------------------------------
  3. NOM PROGRAMME : DOFBOT G4
  4. FONCTION : Automate pour Dofus
  5. PROGRAMMEUR : H@RRY de dofbots.blogspot.com
  6. DATE : 01/08/2012
  7. -----------------------------------
  8. #ce
  9.  
  10. #RequireAdmin
  11. #include <ButtonConstants.au3>
  12. #include <EditConstants.au3>
  13. #include <GUIConstantsEx.au3>
  14. #include <StaticConstants.au3>
  15. #include <TabConstants.au3>
  16. #include <WindowsConstants.au3>
  17. #include <array.au3>
  18.  
  19.  
  20. ; === LES VARIABLES =============
  21. ; ===============================
  22. #Region ### START VARIABLES ZONE ###
  23. Global $currentVersion = 400
  24. _verifVersion()
  25.  
  26. ; --- INITIALISATIONS ---
  27. Global $modeBot = 0
  28. Global $tempsRecolte = 0
  29. Global $nomPerso = ""
  30. Global $verif = 10
  31. Global $modeAggro = 0
  32. Global $continuer = 0
  33. Global $erreur = 0
  34. Global $colorCheck = 0
  35. Global $nbDeplacements = 0
  36. Global $compteur = 0
  37. Global $nbErreursCsq = 0
  38. Global $popUp = 0
  39. Global $totalRecolte = 0
  40. Global $i = 0
  41. Global $stepDMap = 0
  42. Global $atkPortee = ""
  43. Global $atkKey = ""
  44. Global $nbPM = ""
  45. Global $nbLancerTour = ""
  46. Global $combatState = 0
  47. Global $nbCombats = 0
  48. Global $posDetruire[2], $posValiderDetruire[2], $posAmie[2], $posEnnemy[2] = [0,0]
  49. Global $botOn = 0
  50. Global $distanceEnnemy = 0
  51. Global $posAtkKey[2] = [0,0]
  52. Global $trajetState = 0
  53. Global $couleurInv[26]
  54. Global $sortieDeCombat = 0
  55. Global $optionSlow = 0
  56. Global $optionDebug = 0
  57. Global $stepColorPerso = 0
  58. Global $sortirDuLoopRessourcePerso = 0
  59. Global $optionInvoc = 0
  60. Global $nomBanque = ""
  61. Global $posPorteBanque[2] = [0,0]
  62. Global $posBanquier[2] = [0,0]
  63. Global $posSortieBanque[2] = [0,0]
  64.  
  65. ; --- INITIALISATION 2 ---
  66. Global $maxMapHaut = 42
  67. Global $maxMapBas = 500
  68. Global $maxMapDroite = 680
  69. Global $maxMapGauche = 19
  70. Global $deplacementsMap[100]
  71. Global $iniRecoltesRestantes = 200
  72. Global $recoltesRestantes = $iniRecoltesRestantes
  73.  
  74. Global $posPorteBanqueAstrub[2] = ["500", "235"]
  75. Global $posBanquierAstrub[2] = ["315","230"]
  76. Global $posSortieBanqueAstrub[2] = ["219", "374"]
  77.  
  78. Global $posPorteBanqueBonta[2] = ["242", "299"]
  79. Global $posBanquierBonta[2] = ["319", "269"]
  80. Global $posSortieBanqueBonta[2] = ["213", "400"]
  81.  
  82. ; --- COULEURS --
  83. Global $couleurRessource[4]
  84. Global $couleurPreuveRessource[2]=["0xBDBCB2","0xDEDEC7"]
  85.  
  86. Global $couleurRessourcePerso[4]=["","","",""]
  87.  
  88. Global $couleurBle[4] = ["0xF8D73E","0xF8E83E","0xF8DF38","0xFAD334"]
  89. Global $couleurOrge[4] = ["0x394F08","0x3F540B","0x385009","0x3D500C"]
  90. Global $couleurHoublon[4] = ["0x96CFAD","0x7EB390","0xA1C8AD","0x8AC19F"]
  91. Global $couleurAvoine[4] = ["0xFCF0DF","0xF1EBA1","0xE8D1B8","0xDDC8B0"]
  92. Global $couleurSeigle[4] = ["0xFCF0DF","0xF1EBA1","0xE8D1B8","0xDDC8B0"] ; A CHANGER PCK APPAREMMENT CST L'AVOINE CA !!
  93. Global $couleurChanvre[4] = ["0xA1A520","0xAEA900","0xAEA800","0x7A9010"]
  94. Global $couleurMalt[4] = ["0xBC7C25","0xB17228","0xB16B1F","0xA66D32"]
  95. Global $couleurLin[4] = ["0xD8D0A6","0xE9D5B0","0xD1CAA4","0xDCD4AD"]
  96.  
  97. Global $couleurBleInventaire[5] = ["0xD9A910","0xE3BA2E","0xDBA801","0xCF9B00","0xE0B630"]
  98. Global Const $couleurCroix = 0xFF6100
  99. Global Const $theOrangeFight = 0xFF4D00
  100. Global Const $theRed = 0xFF0000
  101. Global Const $theBlue = 0x0000FF
  102. Global Const $theOrange = 0xFF6100
  103. Global Const $theGreenFight = 0x006600
  104. Global Const $couleurInventaireVide = 0x514A3C ; BugInvPlein
  105. Global Const $couleurInventaireVide2 = 0xBDB9A1 ; BugInvPlein
  106. Global Const $couleurInventairePlein = 0xAE0707
  107. ; COULEUR PORTE BANQUE CENTRALE BONTA : 237, 300 0x827042 ; BANQUIER : 319, 269
  108.  
  109. ; --- AUTRES VARIBLES ---
  110. Global $magicWordUser = ""
  111. Global $magicWord1 = ""
  112. Global $magicWord2 = ""
  113. ; On ouvre le fichier du journal
  114. Global $journalFile = FileOpen(@ScriptDir & "\dofbotJournal.txt",1)
  115. #EndRegion ### END VARIABLES ZONE ###
  116.  
  117. ; === LES GUI BIIIIATCH ===
  118. #Region ### START Koda GUI section ### Form=c:\users\harry\documents\autoit script\dbg4_modele.kxf ; La Gui principale
  119. Global $GUI = GUICreate("DBG" & $currentVersion & "", 595, 539, 191, 126)
  120. Global $Tab1 = GUICtrlCreateTab(8, 8, 577, 513)
  121. Global $TabSheet2 = GUICtrlCreateTabItem("Dofbot G4")
  122. Global $journal = GUICtrlCreateEdit("", 16, 48, 257, 329, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
  123. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  124. Global $grpCereales = GUICtrlCreateGroup("Ressource", 280, 40, 129, 49)
  125. Global $btnNfoCereals = GUICtrlCreateButton("Aide", 344, 56, 51, 17)
  126. Global $inputRessource = GUICtrlCreateInput("", 288, 60, 49, 21)
  127. GUICtrlCreateGroup("", -99, -99, 1, 1)
  128. Global $grpMode = GUICtrlCreateGroup("Mode", 416, 40, 161, 89)
  129. Global $radioClassique = GUICtrlCreateRadio("Classique", 424, 56, 65, 17)
  130. Global $radioFarmer = GUICtrlCreateRadio("Farmer (seulement blé)", 424, 80, 129, 17)
  131. Global $radioBanque = GUICtrlCreateRadio("Banque (reglages sup. )", 424, 104, 137, 17)
  132. Global $btnNfoMode = GUICtrlCreateButton("Aide", 528, 48, 43, 17)
  133. GUICtrlCreateGroup("", -99, -99, 1, 1)
  134. Global $grpAggro = GUICtrlCreateGroup("Aggro ressources", 416, 136, 161, 65)
  135. Global $radioBip = GUICtrlCreateRadio("Jouer un bip", 424, 152, 145, 17)
  136. Global $radioCombattre = GUICtrlCreateRadio("Combattre (reglages sup.)", 424, 176, 145, 17)
  137. GUICtrlCreateGroup("", -99, -99, 1, 1)
  138. Global $grpNom = GUICtrlCreateGroup("Nom du personnage", 416, 208, 161, 49)
  139. Global $inputNomPerso = GUICtrlCreateInput("", 424, 228, 145, 21)
  140. GUICtrlCreateGroup("", -99, -99, 1, 1)
  141. Global $grpTemps = GUICtrlCreateGroup("Temps de recolte (en sec)", 416, 264, 161, 49)
  142. Global $inputTempsRecolte = GUICtrlCreateInput("10", 424, 284, 145, 21)
  143. GUICtrlCreateGroup("", -99, -99, 1, 1)
  144. Global $btnLancer = GUICtrlCreateButton("Lancer (Echap pour stop)", 416, 328, 159, 41)
  145. Global $btnEffacerJournal = GUICtrlCreateButton("Vider journal", 96, 32, 75, 15)
  146. Global $grpBanque = GUICtrlCreateGroup("Mode Banque", 184, 380, 209, 129)
  147. Global $btnNfoBanque = GUICtrlCreateButton("Aide", 270, 387, 43, 16)
  148. Global $journalD = GUICtrlCreateEdit("", 192, 404, 89, 95, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
  149. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  150. Global $btnEffacerJournalD = GUICtrlCreateButton("Effacer", 338, 392, 43, 17)
  151. Global $btnHaut = GUICtrlCreateButton("Haut", 312, 412, 43, 17)
  152. Global $btnGauche = GUICtrlCreateButton("Gauche", 285, 428, 43, 17)
  153. Global $btnDroite = GUICtrlCreateButton("Droite", 339, 428, 43, 17)
  154. Global $btnBas = GUICtrlCreateButton("Bas", 312, 444, 43, 17)
  155. Global $radioBanqueAstrub = GUICtrlCreateRadio("Banque Astrub", 286, 467, 97, 17)
  156. Global $radioBanqueBonta = GUICtrlCreateRadio("Banque Bonta", 286, 488, 97, 17)
  157. GUICtrlCreateGroup("", -99, -99, 1, 1)
  158. GUICtrlSetState(-1, $GUI_DISABLE)
  159. Global $grpCombattre = GUICtrlCreateGroup("Combattre", 400, 380, 177, 129)
  160. Global $btnNfoCombattre = GUICtrlCreateButton("Aide", 464, 388, 43, 17)
  161. Global $chkbInvocs = GUICtrlCreateCheckbox("Invocs", 520, 392, 49, 17)
  162. Global $lblAttaqueKey = GUICtrlCreateLabel("Raccourci :", 408, 412, 59, 17)
  163. Global $radioAtkKey1 = GUICtrlCreateRadio("1", 480, 415, 28, 14)
  164. Global $radioAtkKey2 = GUICtrlCreateRadio("2", 512, 414, 28, 15)
  165. Global $radioAtkKey3 = GUICtrlCreateRadio("3", 544, 414, 28, 15)
  166. Global $lblNbLancerTour = GUICtrlCreateLabel("Nombre attaque/tour :", 408, 436, 109, 17)
  167. Global $inputNbLancerTour = GUICtrlCreateInput("", 520, 436, 49, 21)
  168. Global $lblPortee = GUICtrlCreateLabel("Portée de l'attaque :", 408, 460, 99, 17)
  169. Global $inputPortee = GUICtrlCreateInput("", 520, 460, 49, 21)
  170. Global $lblNbPM = GUICtrlCreateLabel("Ton nombre de PM :", 408, 484, 101, 17)
  171. Global $inputPM = GUICtrlCreateInput("", 520, 484, 49, 21)
  172. GUICtrlCreateGroup("", -99, -99, 1, 1)
  173. GUICtrlSetState(-1, $GUI_DISABLE)
  174. Global $Group2 = GUICtrlCreateGroup("Options (facultatif)", 280, 96, 129, 177)
  175. Global $btnNfoOptions = GUICtrlCreateButton("Aide", 344, 112, 51, 17)
  176. Global $chkbSlow = GUICtrlCreateCheckbox("Slow", 288, 112, 49, 17)
  177. Global $chkbHSlow = GUICtrlCreateCheckbox("Hyper Slow", 288, 136, 81, 17)
  178. Global $chkbDebug = GUICtrlCreateCheckbox("Debug", 288, 160, 81, 17)
  179. Global $btnAjouterRessource = GUICtrlCreateButton("Aj. ressource", 305, 209, 67, 25)
  180. Global $Label2 = GUICtrlCreateLabel("2.", 288, 216, 13, 17)
  181. Global $Label6 = GUICtrlCreateLabel("3.", 288, 248, 13, 17)
  182. Global $btnSetColors = GUICtrlCreateButton("Bientot...", 304, 240, 67, 25)
  183. GUICtrlSetState(-1, $GUI_DISABLE)
  184. Global $Checkbox1 = GUICtrlCreateCheckbox("Craft (réglages sup.)", 288, 184, 113, 17)
  185. GUICtrlCreateGroup("", -99, -99, 1, 1)
  186. Global $grpCompteurs = GUICtrlCreateGroup("Compteurs", 280, 280, 129, 97)
  187. Global $inputTotalRecoltes = GUICtrlCreateInput("", 288, 297, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
  188. Global $inputTotalPopups = GUICtrlCreateInput("", 288, 320, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
  189. Global $inputTotalCombats = GUICtrlCreateInput("", 288, 344, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
  190. Global $Label1 = GUICtrlCreateLabel("Récoltes", 352, 304, 46, 17)
  191. Global $Label3 = GUICtrlCreateLabel("Popups", 352, 328, 40, 17)
  192. Global $Label4 = GUICtrlCreateLabel("Combats", 352, 352, 45, 17)
  193. GUICtrlCreateGroup("", -99, -99, 1, 1)
  194. Global $btnCopierJournal = GUICtrlCreateButton("Copier journal", 16, 32, 75, 15)
  195. Global $grpNews = GUICtrlCreateGroup("News", 16, 381, 161, 128)
  196. Global $journalNews = GUICtrlCreateEdit("", 24, 397, 145, 104, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
  197. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  198. GUICtrlCreateGroup("", -99, -99, 1, 1)
  199. Global $btnVoirPreviousJournal = GUICtrlCreateButton("Précédent journal", 176, 32, 99, 15)
  200. GUICtrlCreateTabItem("")
  201. Global $lblFooter = GUICtrlCreateLabel("http://dofbots.blogspot.com", 448, 521, 136, 17)
  202. Global $lblTitle = GUICtrlCreateLabel("Dofbot 4e Generation", 232, 0, 144, 23)
  203. GUICtrlSetFont(-1, 12, 400, 0, "Calibri")
  204. GUICtrlSetColor(-1, 0x000080)
  205. GUISetState(@SW_SHOW)
  206. #EndRegion ### END Koda GUI section ###
  207.  
  208. #Region ### START Koda GUI section ### Form=c:\users\harry\documents\autoit script\gui2.kxf
  209. Global $GUI2 = GUICreate("DBG" & $currentVersion & " - Ressource record", 388, 232, 205, 132)
  210. Global $PageControl1 = GUICtrlCreateTab(8, 8, 372, 184)
  211. Global $TabSheet100 = GUICtrlCreateTabItem("Choix des couleurs")
  212. Global $ColorBox = GUICtrlCreateEdit("", 184, 40, 185, 137, BitOR($ES_READONLY,$ES_WANTRETURN))
  213. GUICtrlSetData(-1, "ColorBox")
  214. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  215. Global $Label100 = GUICtrlCreateLabel("Emmènes ton curseur sur la", 16, 40, 139, 18)
  216. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  217. Global $Label200 = GUICtrlCreateLabel("couleur choisie.", 16, 56, 80, 18)
  218. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  219. Global $Label300 = GUICtrlCreateLabel("Enregistres la en appuyant sur 'c'", 16, 80, 165, 18)
  220. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  221. Global $Label400 = GUICtrlCreateLabel("1/4", 80, 104, 19, 18)
  222. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  223. Global $Label4000 = GUICtrlCreateLabel("Pourquoi 4 couleurs ?", 16, 128, 109, 18)
  224. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  225. Global $Label500 = GUICtrlCreateLabel("Pour augmenter les chances de", 16, 152, 157, 18)
  226. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  227. Global $Label112 = GUICtrlCreateLabel("trouver votre ressource !", 16, 168, 125, 18)
  228. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  229. GUICtrlCreateTabItem("")
  230. Global $btnValider2 = GUICtrlCreateButton("&Valider", 222, 200, 75, 25)
  231. Global $btnAnnuler2 = GUICtrlCreateButton("&Annuler", 302, 200, 75, 25)
  232. #EndRegion ### END Koda GUI section ###
  233.  
  234. ;=== LETS GO ================
  235. ;============================
  236.  
  237. _trucsAvantLeWhile()
  238. While 1
  239.     $nMsg = GUIGetMsg()
  240.     Switch $nMsg
  241.         Case $GUI_EVENT_CLOSE
  242.             exit
  243.  
  244.         ; Mode bot
  245.         Case $btnNfoMode
  246.             _infoMode()
  247.         Case $radioClassique
  248.             _selectRadioClassique()
  249.         Case $radioFarmer
  250.             _selectRadioFarmer()
  251.         Case $radioBanque
  252.             _selectRadioBanque()
  253.  
  254.         ; Options Bot
  255.         Case $btnNfoOptions
  256.             _infoOptions()
  257.  
  258.         ; Cereale(s)
  259.         Case $btnNfoCereals
  260.             _infoCereals()
  261.         Case $btnAjouterRessource
  262.             _enregistrementRessourcePerso()
  263.  
  264.         ; Mode combat
  265.         Case $btnNfoCombattre
  266.             _infoCombattre()
  267.         Case $radioBip
  268.             _selectRadioBip()
  269.         Case $radioCombattre
  270.             _selectRadioCombattre()
  271.         Case $radioAtkKey1
  272.             _selectRadioAtkKey1()
  273.         Case $radioAtkKey2
  274.             _selectRadioAtkKey2()
  275.         Case $radioAtkKey3
  276.             _selectRadioAtkKey3()
  277.  
  278.         ; Mode Banque
  279.         Case $btnNfoBanque
  280.             _infoBanque()
  281.         Case $btnHaut
  282.             _choixDirection("haut")
  283.         Case $btnBas
  284.             _choixDirection("bas")
  285.         Case $btnDroite
  286.             _choixDirection("droite")
  287.         Case $btnGauche
  288.             _choixDirection("gauche")
  289.         Case $btnEffacerJournalD
  290.             _effacerJournalDMap()
  291.         Case $radioBanqueAstrub
  292.             _selectRadioBanqueAstrub()
  293.         Case $radioBanqueBonta
  294.             _selectRadioBanqueBonta()
  295.  
  296.         Case $btnCopierJournal
  297.             ClipPut(GUICtrlRead($journal))
  298.             MsgBox(64, "Dofbot", "Le contenu du journal a été copié dans le presse papier")
  299.         Case $btnEffacerJournal
  300.             GUICtrlSetData($journal,"")
  301.         Case $btnVoirPreviousJournal
  302.             ShellExecute(@ScriptDir & "\dofbotJournal.txt")
  303.  
  304.         Case $btnLancer
  305.             _verifsDemarrage()
  306.             if $botOn = 0 Then
  307.                 ContinueCase
  308.             EndIf
  309.  
  310.             ; == Et maintenant, le coeur de la maison, la cuisine ==
  311.             While 1
  312.                 _allVerifs() ; On verifie un tas de trucs
  313.                 If $botOn = 1 Then ; Si tout va bien on y va
  314.                     _recolte()
  315.                 Else ; Sinon on arrete le bot
  316.                     journalMsg("Arret du bot")
  317.                     ; On rallume le bouton Lancer
  318.                     GUICtrlSetState($btnLancer, $GUI_ENABLE)
  319.                     ContinueCase
  320.                 EndIf
  321.             WEnd
  322.     EndSwitch
  323. WEnd
  324.  
  325. ; === Fonctions GUIesques ===
  326. ; ===========================
  327. Func _selectRadioClassique()
  328.     $modeBot = 1
  329.     _disableModeBanque()
  330. EndFunc
  331.  
  332. func _selectRadioFarmer()
  333.     $modeBot = 2
  334.     _disableModeBanque()
  335. EndFunc
  336.  
  337. func _selectRadioBanque()
  338.     $modeBot = 3
  339.     _enableModeBanque()
  340. EndFunc
  341.  
  342. func _selectRadioBip()
  343.     $modeAggro = 1
  344.     _disableModeCombat()
  345. EndFunc
  346.  
  347. Func _selectRadioCombattre()
  348.     $modeAggro = 2
  349.     _enableModeCombat()
  350. EndFunc
  351.  
  352. Func _selectRadioAtkKey1()
  353.     $atkKey = 1
  354.     $posAtkKey[0] = 428
  355.     $posAtkKey[1] = 524
  356. EndFunc
  357.  
  358. Func _selectRadioAtkKey2()
  359.     $atkKey = 2
  360.     $posAtkKey[0] = 453
  361.     $posAtkKey[1] = 525
  362. EndFunc
  363.  
  364. Func _selectRadioAtkKey3()
  365.     $atkKey = 3
  366.     $posAtkKey[0] = 478
  367.     $posAtkKey[1] = 525
  368. EndFunc
  369.  
  370. Func _selectRadioBanqueAstrub()
  371.     $nomBanque = "Astrub"
  372. EndFunc
  373.  
  374. Func _selectRadioBanqueBonta()
  375.     $nomBanque = "Bonta"
  376. EndFunc
  377.  
  378.  
  379. ; === Fonctions generales =======
  380. ; ===============================
  381. Func journalMsg($messageJournal, $autresInfos = "")
  382.     If $optionDebug = 0 Then
  383.         $journalPrevious = GUICtrlRead($journal)
  384.         GUICtrlSetData($journal, @HOUR & ":" & @MIN & ":" & @SEC & " : " & $messageJournal & @CRLF & $journalPrevious )
  385.         FileWrite($journalFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " : " & $messageJournal & @CRLF )
  386.     Else
  387.         $journalPrevious = GUICtrlRead($journal)
  388.         GUICtrlSetData($journal, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " : " & $messageJournal & " + " & $autresInfos & @CRLF & $journalPrevious )
  389.         FileWrite($journalFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " : " & $messageJournal & " + " & $autresInfos & @CRLF )
  390.     EndIf
  391. EndFunc
  392.  
  393. Func stopBot($raison, $autresInfos = "")
  394.     journalMsg($raison & ". Arret en cours...")
  395.     If $combatState = 1 Then
  396.         $combatState = 0
  397.     EndIf
  398.     $botOn = 0
  399. EndFunc
  400.  
  401. Func closeBotRac()
  402.     If $botOn = 1 Then
  403.         journalMsg("Arret en cours...", "Appui sur Echap")
  404.         $botOn = 0
  405.         If $combatState = 1 Then
  406.             $combatState = 0
  407.         EndIf
  408.     EndIf
  409. EndFunc
  410.  
  411. Func _pause($lvl)
  412.     $sleepingTime = $lvl * 500
  413.     If $optionSlow = 0 Then
  414.         Sleep($sleepingTime)
  415.     ; Si on est en slow option
  416.     ElseIf $optionSlow = 1 Then
  417.         Sleep($sleepingTime * 3)
  418.     ; Si on est en HYPER slow option
  419.     ElseIf $optionSlow = 2 Then
  420.         Sleep($sleepingTime * 6)
  421.     Else
  422.         journalMsg("PAUSE fatal error.")
  423.     EndIf
  424. EndFunc
  425.  
  426. Func _msgBienvenue()
  427.     journalMsg("Salut " & @UserName & " ! (OS :" & @OSVersion & ")" )
  428. EndFunc
  429.  
  430. ; === Fonctions de demarrage =====
  431. Func _trucsAvantLeWhile()
  432.     _chargement()
  433.     _msgBienvenue()
  434.     _disableModeBanque()
  435.     _disableModeCombat()
  436.     _chargementNews()
  437. EndFunc
  438.  
  439. ; ===============================
  440. Func _verifsDemarrage()
  441.     $verifsRequises=0
  442.     $verifsValidees=0
  443.     $errorRessourceInput=0
  444.     $ErreursList = "Voici la liste des erreurs :"
  445.  
  446.     ; -- Mode Bot ------------------
  447.     ; ------------------------------
  448.     $verifsRequises = $verifsRequises + 1 ; 0/1
  449.     If $modeBot <> 0 Then ; Mode bot bien choisi
  450.         $verifsValidees = $verifsValidees + 1 ; 1/1
  451.     Else
  452.         $PreviousErreursList = $ErreursList
  453.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Le mode n'est pas choisi")
  454.     EndIf
  455.  
  456.     If $modeBot = 3 Then ; Mode banque regle
  457.         $verifsRequises = $verifsRequises + 1
  458.         If $deplacementsMap[0] <> "" Then
  459.             $verifsValidees = $verifsValidees + 1
  460.         Else
  461.             $PreviousErreursList = $ErreursList
  462.             $ErreursList = ( $PreviousErreursList & @CRLF & "- Deplacements pour le mode banque non enregistres")
  463.         EndIf
  464.  
  465.         $verifsRequises = $verifsRequises + 1
  466.         If $nomBanque <> "" Then
  467.             $verifsValidees = $verifsValidees + 1
  468.         Else
  469.             $PreviousErreursList = $ErreursList
  470.             $ErreursList = ( $PreviousErreursList & @CRLF & "- T'as pas choisi de banque")
  471.         EndIf
  472.     EndIf
  473.  
  474.  
  475.     ; -- Mode Aggro ----------------
  476.     ; ------------------------------
  477.     $verifsRequises = $verifsRequises + 1 ; ; 1/2
  478.     If $modeAggro <> 0 Then ; Mode aggro bien choisi
  479.         $verifsValidees = $verifsValidees + 1 ; 2/2
  480.     Else
  481.         $PreviousErreursList = $ErreursList
  482.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Tu n'as pas choisi de mode pour les agressions")
  483.     EndIf
  484.  
  485.     If $modeAggro = 2 Then ; Mode combat bien regle
  486.         $verifsRequises = $verifsRequises + 1 ; 2/3
  487.         $atkPortee = GUICtrlRead($inputPortee)
  488.         $nbPM = GUICtrlRead($inputPM)
  489.         $nbLancerTour = GUICtrlRead($inputNbLancerTour)
  490.         If $atkKey <> "" And $nbLancerTour <> "" And $atkPortee <> "" And $nbPM <> "" Then
  491.             $verifsValidees = $verifsValidees + 1 ; 3/3
  492.         Else
  493.             $PreviousErreursList = $ErreursList
  494.             $ErreursList = ( $PreviousErreursList & @CRLF & "- Tu n'as pas bien rempli les reglages sup. du mode Combattre")
  495.         EndIf
  496.     EndIf
  497.  
  498.     ; -- Nom perso -----------------
  499.     ; ------------------------------
  500.     $verifsRequises = $verifsRequises + 1 ; 2/3
  501.     $nomPerso = GUICtrlRead($inputNomPerso)
  502.     If WinExists($nomPerso) And $nomPerso <> "" Then
  503.         sleep(200)
  504.         WinSetState($nomPerso,"",@SW_MINIMIZE)
  505.         WinSetState($nomPerso,"",@SW_RESTORE)
  506.         WinMove($nomPerso, "", 0, 0, 700, 600)
  507.         WinMove($GUI,"",700, 0)
  508.         $verifsValidees = $verifsValidees + 1 ; 3/3
  509.     ElseIf $nomPerso = "" Then
  510.         $PreviousErreursList = $ErreursList
  511.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Tu n'as pas ecrit de nom de personnage")
  512.     Else
  513.         $PreviousErreursList = $ErreursList
  514.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Fenetre de ton personnage introuvable, verifies le Pseudo")
  515.     EndIf
  516.  
  517.     ; -- Temps de Fauche -----------
  518.     ; ------------------------------
  519.     $verifsRequises = $verifsRequises + 1
  520.     $tempsRecolte = GUICtrlRead($inputTempsRecolte)
  521.     If $tempsRecolte <> "" And $tempsRecolte > 0 Then
  522.         $verifsValidees = $verifsValidees + 1
  523.     ElseIf $tempsRecolte = "" Then
  524.         $PreviousErreursList = $ErreursList
  525.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Temps de recolte non renseigne")
  526.     Else
  527.         $PreviousErreursList = $ErreursList
  528.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Temps de recolte incorrect")
  529.     EndIf
  530.  
  531.     ; -- Ressource ----------------
  532.     ; -----------------------------
  533.     $verifsRequises = $verifsRequises + 1
  534.  
  535.     $ressourceUser = GUICtrlRead($inputRessource)
  536.     If $ressourceUser = "Blé" Or $ressourceUser = "blé" Then
  537.         $couleurRessource = $couleurBle
  538.     ElseIf $ressourceUser = "Orge" Or $ressourceUser = "orge" Then
  539.         $couleurRessource = $couleurOrge
  540.     ElseIf $ressourceUser = "Avoine" Or $ressourceUser = "avoine" Then
  541.         $couleurRessource = $couleurAvoine
  542.     ElseIf $ressourceUser = "Houblon" Or $ressourceUser = "houblon" Then
  543.         $couleurRessource = $couleurHoublon
  544.     ElseIf $ressourceUser = "Lin" Or $ressourceUser = "lin" Then
  545.         $couleurRessource = $couleurLin
  546.  
  547.     ElseIf $ressourceUser = "Seigle" Or $ressourceUser = "seigle" Then
  548.         $couleurRessource = $couleurSeigle
  549.  
  550.     ElseIf $ressourceUser = "Malt" Or $ressourceUser = "malt" Then
  551.         $couleurRessource = $couleurMalt
  552.     ElseIf $ressourceUser = "Chanvre" Or $ressourceUser = "seigle" Then
  553.         $couleurRessource = $couleurChanvre
  554.  
  555.     ElseIf $ressourceUser = "Perso" Or $ressourceUser = "perso" Then
  556.         If $couleurRessourcePerso[3] = "" Then
  557.             $errorRessourceInput = 39
  558.         Else
  559.             $couleurRessource = $couleurRessourcePerso
  560.         EndIf
  561.  
  562.     ; Les erreurs
  563.     ElseIf $ressourceUser = "" Then
  564.         $errorRessourceInput = 37 ; THE FAMOUS ERROR 37
  565.     Else ; = T'as ecrit n'importequoi
  566.         $errorRessourceInput = 38 ; Pourquoi 38 ? Je ne sais pas !
  567.     EndIf
  568.  
  569.     If $errorRessourceInput = 38 Then
  570.         $PreviousErreursList = $ErreursList
  571.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Orthographe ressource incorrecte")
  572.     ElseIf $errorRessourceInput = 37 Then
  573.         $PreviousErreursList = $ErreursList
  574.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Ressource non renseignee")
  575.     ElseIf $errorRessourceInput = 39 Then
  576.         $PreviousErreursList = $ErreursList
  577.         $ErreursList = ( $PreviousErreursList & @CRLF & "- Ressources personnalisees non detectees")
  578.     Else
  579.         $verifsValidees = $verifsValidees + 1
  580.     EndIf
  581.  
  582.     ; -- Si tout est bon on lance --
  583.     if $verifsValidees = $verifsRequises Then
  584.  
  585.         _preparatifs()
  586.         $lancement = MsgBox(64+4, "Dofbot", _
  587.         "Avant de m'envoyer un mail ou de laisser un commentaire sur le blog pour dire que ca ne marche pas, verifies bien que :" & @CRLF & @CRLF & _
  588.         ". Tu as bien laisser en place le redimensionnement." & @CRLF & _
  589.         ". Le nom de ton perso est different du nom d'utilisateur Windows." & @CRLF & _
  590.         ". Ton theme de couleur d'interface est bien le theme Beige (1.x)." & @CRLF & _
  591.         ". Tu as desactive la transparence." & @CRLF & _
  592.         ". Tu es en mode creature + mode tactique pour le mode combat." & @CRLF & _
  593.         ". Ce n'est pas fini ! Tes raccourcis doivent etre les suivants :" & @CRLF & _
  594.         "- Passer son tour : 'CTRL+W'" & @CRLF & _
  595.         "- Ouvrir/fermer l'inventaire : 'i'"& @CRLF & @CRLF & _
  596.         "Alors, tu n'as rien oublier ? T'es sur de toi ? On peut commencer ?")
  597.         If $lancement = 6 Then
  598.             _demarrage()
  599.         EndIf
  600.     ; -- Sinon .. Erreur --
  601.     Else
  602.         MsgBox(48,"Dofbot","Erreur, il manque des informations ou certaines informations sont incorrectes." & @CRLF & _
  603.         $ErreursList & @CRLF & @CRLF & _
  604.         "Autres precisions : Le bot doit etre lance en mode administrateur.")
  605.     EndIf
  606. EndFunc
  607.  
  608. Func _switchMediumQuality()
  609.     sleep(500)
  610.     MouseClick("right",478, 120)
  611.     sleep(500)
  612.     MouseClick("left",534, 166)
  613.     sleep(500)
  614.     MouseClick("left",610, 177)
  615. EndFunc
  616.  
  617. Func _preparatifs()
  618.     ; Les CHKB d'options
  619.     $STATEslowOption = GUICtrlRead($chkbSlow)
  620.     $STATEhSlowOption = GUICtrlRead($chkbHSlow)
  621.     $STATEdebugOption = GUICtrlRead($chkbDebug)
  622.  
  623.     If $STATEhSlowOption = 1 Then
  624.         $optionSlow = 2
  625.     ElseIf $STATEslowOption = 1 Then
  626.         $optionSlow = 1
  627.     Else
  628.         $optionSlow = 0
  629.     EndIf
  630.  
  631.     If $STATEdebugOption = 1 Then
  632.         $optionDebug = 1
  633.     Else
  634.         $optionDebug = 0
  635.     EndIf
  636.  
  637.     ; La Checkbox pour les invocs
  638.     $stateOptionInvoc = GUICtrlRead($chkbInvocs)
  639.     If $stateOptionInvoc = 1 Then $optionInvoc = 1
  640.     If $stateOptionInvoc <> 1 Then $optionInvoc = 0
  641.  
  642.     ; Choix de la banque
  643.     $stateBanqueAstrub= GUICtrlRead($radioBanqueAstrub)
  644.     $stateBanqueBonta= GUICtrlRead($radioBanqueBonta)
  645.     If $stateBanqueAstrub = 1 Then
  646.         $posPorteBanque = $posPorteBanqueAstrub
  647.         $posBanquier = $posBanquierAstrub
  648.         $posSortieBanque = $posSortieBanqueAstrub
  649.     ElseIf $stateBanqueBonta = 1 Then
  650.         $posPorteBanque = $posPorteBanqueBonta
  651.         $posBanquier = $posBanquierBonta
  652.         $posSortieBanque = $posSortieBanqueBonta
  653.     EndIf
  654.  
  655.     ; On sauvegarde pour la next time
  656.     _sauvegarde()
  657. EndFunc
  658.  
  659. Func _sauvegarde()
  660.     ; 1. LES INPUTS
  661.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nom Personnage", GUICtrlRead($inputNomPerso))
  662.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Temps Recolte",GUICtrlRead($inputTempsRecolte))
  663.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Ressource", GUICtrlRead($inputRessource))
  664.  
  665.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Attaques par tour", GUICtrlRead($inputNbLancerTour))
  666.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Portee de l'attaque", GUICtrlRead($inputPortee))
  667.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nombre de PM", GUICtrlRead($inputPM))
  668.  
  669.     ; 2. Les tableaux
  670.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[0]", $couleurRessourcePerso[0])
  671.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[1]", $couleurRessourcePerso[1])
  672.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[2]", $couleurRessourcePerso[2])
  673.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[3]", $couleurRessourcePerso[3])
  674.  
  675.     ; 3. LES RADIOS
  676.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Classique", GUICtrlRead($radioClassique))
  677.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Farmer", GUICtrlRead($radioFarmer))
  678.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Banque", GUICtrlRead($radioBanque))
  679.  
  680.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Bip", GUICtrlRead($radioBip))
  681.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Combattre", GUICtrlRead($radioCombattre))
  682.  
  683.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Touche d'attaque 1", GUICtrlRead($radioAtkKey1))
  684.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Touche d'attaque 2", GUICtrlRead($radioAtkKey2))
  685.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Touche d'attaque 3", GUICtrlRead($radioAtkKey3))
  686.  
  687.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Banque Astrub", GUICtrlRead($radioBanqueAstrub))
  688.     IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Banque Bonta", GUICtrlRead($radioBanqueBonta))
  689. EndFunc
  690.  
  691. Func _chargement()
  692.     ; 1. LES INPUTS
  693.     $savedNomPerso = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nom Personnage", "")
  694.     $savedTempsRecolte = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Temps Recolte", "")
  695.     $savedRessource = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Ressource", "")
  696.  
  697.     $savedNbLancerTour = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Attaques par tour", "")
  698.     $savedPortee = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Portee de l'attaque", "")
  699.     $savedPM = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nombre de PM", "")
  700.  
  701.     GUICtrlSetData($inputNomPerso, $savedNomPerso, "")
  702.     GUICtrlSetData($inputTempsRecolte, $savedTempsRecolte, "")
  703.     GUICtrlSetData($inputRessource, $savedRessource, "")
  704.  
  705.     GUICtrlSetData($inputNbLancerTour, $savedNbLancerTour, "")
  706.     GUICtrlSetData($inputPortee, $savedPortee, "")
  707.     GUICtrlSetData($inputPM, $savedPM, "")
  708.  
  709.     ; LES TABLEAUX
  710.     $savedCouleurPerso0 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[0]", "")
  711.     $savedCouleurPerso1 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[1]", "")
  712.     $savedCouleurPerso2 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[2]", "")
  713.     $savedCouleurPerso3 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[3]", "")
  714.  
  715.     $couleurRessourcePerso[0] = $savedCouleurPerso0
  716.     $couleurRessourcePerso[1] = $savedCouleurPerso1
  717.     $couleurRessourcePerso[2] = $savedCouleurPerso2
  718.     $couleurRessourcePerso[3] = $savedCouleurPerso3
  719.  
  720.     ; LES RADIOS
  721.     $savedradioClassique = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Classique", "")
  722.     $savedradioFarmer = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Farmer", "")
  723.     $savedradioBanque = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Banque", "")
  724.  
  725.     $savedradioBip = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Bip", "")
  726.     $savedradioCombattre = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Combattre", "")
  727.  
  728.     $savedradioAtkKey1 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Touche d'attaque 1", "")
  729.     $savedradioAtkKey2 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Touche d'attaque 2", "")
  730.     $savedradioAtkKey3 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Touche d'attaque 3", "")
  731.  
  732.     $savedradioBanqueAstrub = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Banque Astrub", "")
  733.     $savedradioBanqueBonta = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Banque Bonta", "")
  734.  
  735.     If $savedradioClassique = 1 Then _selectRadioClassique() ; On ajoute ces if pour simuler le vrai clic sur la radio
  736.     GUICtrlSetState($radioClassique, $savedradioClassique)
  737.     If $savedradioFarmer = 1 Then _selectRadioFarmer()
  738.     GUICtrlSetState($radioFarmer, $savedradioFarmer)
  739.     If $savedradioBanque = 1 Then _selectRadioBanque()
  740.     GUICtrlSetState($radioBanque, $savedradioBanque)
  741.  
  742.     If $savedradioBip = 1 Then _selectRadioCombattre()
  743.     GUICtrlSetState($radioBip, $savedradioBip)
  744.     If $savedradioCombattre = 1 Then _selectRadioCombattre()
  745.     GUICtrlSetState($radioCombattre, $savedradioCombattre)
  746.  
  747.     If $savedradioAtkKey1 = 1 Then _selectRadioAtkKey1()
  748.     GUICtrlSetState($radioAtkKey1, $savedradioAtkKey1)
  749.     If $savedradioAtkKey2 = 1 Then _selectRadioAtkKey2()
  750.     GUICtrlSetState($radioAtkKey2, $savedradioAtkKey2)
  751.     If $savedradioAtkKey3 = 1 Then _selectRadioAtkKey3()
  752.     GUICtrlSetState($radioAtkKey3, $savedradioAtkKey3)
  753.  
  754.     If $savedradioBanqueAstrub = 1 Then _selectRadioBanqueAstrub()
  755.     GUICtrlSetState($radioBanqueAstrub, $savedradioBanqueAstrub)
  756.  
  757.     If $savedradioBanqueBonta = 1 Then _selectRadioBanqueBonta()
  758.     GUICtrlSetState($radioBanqueBonta, $savedradioBanqueBonta)
  759.  
  760. EndFunc
  761.  
  762. Func _demarrage()
  763.     ; On transforme le bouton de demarrage
  764.     GUICtrlSetState($btnLancer, $GUI_DISABLE)
  765.     _switchMediumQuality()
  766.     ; On desactive les reglages sup.
  767.     _disableModeBanque()
  768.     _disableModeCombat()
  769.     HotKeySet("{ESC}", "closeBotRac" )
  770.     journalMsg("Demarrage du bot")
  771.     $botOn = 1
  772.  
  773.     ; Reinitialisation des valeurs en cas de redemarrage
  774.     $nbErreursCsq = 0
  775. EndFunc
  776.  
  777.  
  778.  
  779.  
  780. ; === Fonctions de verifications =
  781. ; ================================
  782. Func _allVerifs()
  783.     ; Forcement, on verifie pas l'aggro si on est deja en combat, pareil pour les pods
  784.     If $combatState = 0 Then
  785.         _verifAggros()
  786.         If $trajetState = 0 Then
  787.             _verifPods()
  788.         EndIf
  789.     EndIf
  790.     _verifsPopups()
  791.     _pause("2")
  792. EndFunc
  793.  
  794. Func _verifPods()
  795.     ; Si le compteur de fauche = la verif, on va jeter un oeil
  796.     If $compteur = $verif And $botOn = 1 Then
  797.         Send ("i")
  798.         journalMsg("Verification de l'inventaire")
  799.         $pods = 0
  800.         $compteur = 0
  801.         $stepNumber = 0
  802.         $abscisseEnPlus = 0
  803.         _pause("6")
  804.  
  805.         ; On releve la temperature de nos pods tranche par tranche
  806.         Do
  807.             $couleurInv[$stepNumber] = PixelGetColor(540 + $abscisseEnPlus,487)
  808.             If $optionDebug = 1 Then
  809.                 journalMsg("Tranche " & $stepNumber & " = " & $couleurInv[$stepNumber])
  810.             EndIf
  811.             $stepNumber = $stepNumber + 1
  812.             $abscisseEnPlus = $abscisseEnPlus + 5
  813.         Until $stepNumber = 26
  814.  
  815.         $stepNumber = 0
  816.         Do
  817.             $color = $couleurInv[$stepNumber]
  818.             $stepNumber = $stepNumber + 1
  819.             ; Si la couleur est rouge on considere l'inevntaire plein
  820.             If $color = $couleurInventairePlein Or $stepNumber = 26 Then
  821.                 $pods = 1
  822.             EndIf
  823.             ; On considère l'inventaire non plein quand on trouve la couleur d'invetaire vide avant le bout de la barre
  824.         Until $color = $couleurInventaireVide Or $color = $couleurInventaireVide2 Or $pods = 1
  825.  
  826.         ; =============== QUARTIER DEBUG ==============
  827.         ; =============================================
  828.         If $optionDebug = 1 Then
  829.             If $color = $couleurInventairePlein Then
  830.                 journalMsg("CouleurInventairePlein trouvee a la tranche " & $stepNumber)
  831.             ElseIf $stepNumber = 26 Then
  832.                 journalMsg("CouleurInventairePlein non trouvee")
  833.             ElseIf $color = $couleurInventaireVide Then
  834.                 journalMsg("CouleurInventaireVide trouvee tranche " & $stepNumber)
  835.             EndIf
  836.         EndIf
  837.  
  838.         ; --- INVENTAIRE PLEIN ---
  839.         ; ------------------------
  840.         if $pods = 1 Then
  841.             journalMsg("Inventaire plein (25/25)")
  842.             ; Pour le Mode banque, on fait ce qui suit
  843.             if $modeBot = 3 Then
  844.                 _pause(1)
  845.                 Send ("i")
  846.                 _pause(6)
  847.                 _allerBanque()
  848.                 _deposerBanque()
  849.                 _retourBanque()
  850.             ; Et pour les deux autres modes, on fait les bails t'as vu !
  851.             ElseIf $modeBot <> 3 Then
  852.                 _inventairePlein()
  853.                 _pause(4)
  854.                 ; Pour ces modes la, faut refermer l'inventaire :)
  855.                 Send ("i")
  856.                 _pause(4)
  857.             EndIf
  858.  
  859.         ; --- INVENTAIRE NON PLEIN ---
  860.         ; ----------------------------
  861.         Else
  862.             ; On met en pourcentage !
  863.             $pleinPourcent = (($stepNumber - 1)/25)*100
  864.             journalMsg("Inventaire non plein (rempli a " & $pleinPourcent & "%)")
  865.             Send ("i")
  866.             _pause(4)
  867.         EndIf
  868.     EndIf
  869. EndFunc
  870.  
  871. Func _inventairePlein()
  872.     ; Mode classique
  873.     if $modeBot = 1 Then
  874.         stopBot("Mode classique")
  875.     EndIf
  876.  
  877.     ; Mode farmer
  878.     if $modeBot = 2 Then
  879.         MouseClick("left",663,133)
  880.         sleep(500)
  881.         Send("Blé")
  882.         sleep(500)
  883.         ; On clique droit a la position de la premiere ressource trouvee
  884.         MouseClick("right", 550, 155)
  885.         sleep(500)
  886.         $posDetruire[0] = 551 - 20
  887.         $posDetruire[1] = 155 + 42
  888.         ; On clic gauche sur Detruire
  889.         MouseClick("left",$posDetruire[0], $posDetruire[1])
  890.         sleep(500)
  891.         $posValiderDetruire[0] = $posDetruire[0] + 65
  892.         $posValiderDetruire[1] = $posDetruire[1] - 15
  893.         sleep(500)
  894.         ; On valide la quantitee
  895.         MouseClick("left",$posValiderDetruire[0], $posValiderDetruire[1])
  896.         sleep(500)
  897.         ; Voulez vous vraiment ... OUI !
  898.         MouseClick("left",320, 340)
  899.         journalMsg("Suppression du ble effectuee")
  900.     EndIf
  901. EndFunc
  902.  
  903. Func _verifAggros()
  904.     ; On check la couleur a l'endroit qui devient orange quand on est en combat : le bouton pret
  905.     $couleur = PixelGetColor(336, 566)
  906.     if $couleur = $couleurCroix Then ; (car couleur croix = couleur bouton Pret)
  907.         journalMsg("Combat détécté", $couleurCroix & " trouvée en 336, 566")
  908.         if $modeAggro = 1 Then
  909.             _alerte()
  910.         ElseIf $modeAggro = 2 Then
  911.             _combattre()
  912.         EndIf
  913.     Else
  914.         If $optionDebug = 1 Then journalMsg("Combat non détécté", $couleur & " trouvée en 336, 566")
  915.     EndIf
  916. EndFunc
  917.  
  918. Func _verifFinCombat()
  919.     ; On regarde si la croix est dans la place !
  920.     $color = PixelSearch(655, 70, 670, 180, $couleurCroix)
  921.     If Not @error Then
  922.         $nbCombats = $nbCombats + 1
  923.         GUICtrlSetData($inputTotalCombats, $nbCombats )
  924.         $combatState = 0
  925.         journalMsg("Fin du combat")
  926.         MouseClick("left", $color[0], $color[1])
  927.         ; Si on etait en trajet, on recommence la derniere action
  928.         If $trajetState = 1 Then
  929.             $sortieDeCombat = 1
  930.             $stepDMap = $stepDMap - 1
  931.             journalMsg("On reprend le trajet aller (" & $stepDMap & "e etape)")
  932.         ElseIf $trajetState = 2 Then
  933.             $sortieDeCombat = 1
  934.             $stepDMap = $stepDMap + 1
  935.             journalMsg("On reprend le trajet retour (" & $stepDMap & "e etape)")
  936.         EndIf
  937.     EndIf
  938. EndFunc
  939.  
  940. Func _verifsPopups()
  941.     _killPopups(370, 343, "Up/Echange/Defi")
  942.     _killPopups(486, 245, "Up perso")
  943.     ; Le reste seulement si on est pas en trajet
  944.     If $trajetState = 0 Then
  945.         _killPopups(199, 292, "Invitation groupe")
  946.         _killPopups(665, 81, "Inventaire")
  947.         _killPopups(637, 78, "Fenetre des sorts")
  948.         _killPopups(218, 81, "Fenetre des caracs")
  949.         _killPopups(671, 67, "Map")
  950.     EndIf
  951. EndFunc
  952.  
  953. Func _verifsFauchesRestantes()
  954.     If $recoltesRestantes < 1 Then
  955.         stopBot("Fauches restantes < 1")
  956.     EndIf
  957. EndFunc
  958.  
  959. Func _killPopups($x, $y, $sujet)
  960.     $couleur = PixelGetColor($x, $y)
  961.     if $couleur = $couleurCroix Then
  962.         ; Pour l'inventaire, on suprimme le mouseclick, car il peut causer des changements de map
  963.         If $sujet = "Inventaire" Then
  964.             Send("i")
  965.             $popUp = $popUp + 1
  966.             GUICtrlSetData($inputTotalPopups, $popUp )
  967.             journalMsg("Fermeture Popup (" & $sujet & ")")
  968.         Else
  969.             $popUp = $popUp + 1
  970.             GUICtrlSetData($inputTotalPopups, $popUp )
  971.             MouseClick("left",$x, $y)
  972.             journalMsg("Fermeture Popup (" & $sujet & ")")
  973.         EndIf
  974.     EndIf
  975. EndFunc
  976.  
  977. Func _tactiqueAndCreature()
  978.     $couleurDisabled = 0x7B7B7B ;304, 512
  979.     $couleurEnabled = 0xA1E401
  980.  
  981.     $displayed1 = PixelGetColor(305,512)
  982.     $displayed2 = PixelGetColor(297, 525)
  983.  
  984.     If $displayed1 = $couleurDisabled Then
  985.         journalMsg("On passe en mode tactique")
  986.         MouseClick("left",305,512)
  987.     EndIf
  988.  
  989.     If $displayed2 = $couleurDisabled Then
  990.         journalMsg("On passe en mode creature")
  991.         MouseClick("left", 297, 525)
  992.     EndIf
  993. EndFunc
  994.  
  995.  
  996.  
  997.  
  998. ; === Fonctions Aggros ==========
  999. ; ===============================
  1000. Func _alarmSong()
  1001.     Beep (200 *3,500)
  1002.     Beep (300 *3,500)
  1003.     Beep (400 *3,500)
  1004.     sleep(500)
  1005.     Beep (400 *3,500)
  1006.     Beep (400 *3,500)
  1007.     Beep (400 *3,500)
  1008. EndFunc
  1009.  
  1010. Func _alerte()
  1011.     stopBot("Alerte aggro !!")
  1012.     _alarmSong()
  1013. EndFunc
  1014.  
  1015. Func _combattre()
  1016.     $combatState = 1
  1017.     journalMsg("Dofbot combat !")
  1018.     Send("^w") ; Debut du combat
  1019.     _pause("6")
  1020.     ; On retire le challenge et les cartes !
  1021.     MouseClick("left", 32, 164)
  1022.     MouseClick("left", 687, 480)
  1023.     ; ... Et on passe en tactique et creature
  1024.     _tactiqueAndCreature()
  1025.     Do
  1026.         _waitTour()
  1027.     Until $combatState = 0
  1028. EndFunc
  1029.  
  1030. Func _waitTour()
  1031.     Do
  1032.         _pause("1")
  1033.         ; On passe un petit coup de verifs, ca fait pas de mal
  1034.         _allVerifs()
  1035.         ; On check la couleur a 4-5 secondes dans l'horloge du tour
  1036.         $color = PixelGetColor(372, 516)
  1037.         ; Et si celle si est orange, on lance le tour !
  1038.         If $color = $theOrangeFight Then
  1039.             journalMsg("A notre tour")
  1040.             _tour()
  1041.         ; Autrement, on verifie si le combat est fini. Qui sait ?
  1042.         Else
  1043.             _verifFinCombat()
  1044.         EndIf
  1045.     ; Tout cela jusqu'a ce que le combatState soit = 0
  1046.     Until $combatState = 0
  1047.  
  1048. EndFunc
  1049.  
  1050. Func _tour()
  1051.     ; Si on est pas en mode invoc !
  1052.     If $optionInvoc = 0 Then
  1053.         ; On cherche posAmie (position de notre personnage)
  1054.         _searchAmie()
  1055.         ; On cherche posEnnemy (position de l'ennemi le plus proche)
  1056.         _searchEnnemy()
  1057.         ; On passe a la suite seulement si les positions sont trouvees (car positions non trouvees = $combatState 0 )
  1058.         If $combatState = 1 Then
  1059.             ; Si l'ennemi est a portee, on attaque et on passe notre tour
  1060.             If $distanceEnnemy <= $atkPortee Then
  1061.                 journalMsg("Ennemi a portee (" & $distanceEnnemy & " < " & $atkPortee & ")")
  1062.                 _attaquerEnnemy()
  1063.                 _passerTour()
  1064.             ; S'il n'est pas a portee, on se rapproche !
  1065.             Else
  1066.                 journalMsg("On se rapproche de l'ennemi")
  1067.                 _seRapprocherEnnemy()
  1068.                 ; Puis on reffectue les recherches
  1069.                 _searchAmie()
  1070.                 _searchEnnemy()
  1071.                 ; On passe a la suite seulement si les positions sont trouvees (car positions non trouvees = $combatState 0 )
  1072.                 If $combatState = 1 Then
  1073.                     ; Puis on attaque et on passe notre tour s'il est portee
  1074.                     If $distanceEnnemy <= $atkPortee Then
  1075.                         journalMsg("Ennemi a portee (" & $distanceEnnemy & " < " & $atkPortee & ")")
  1076.                         _attaquerEnnemy()
  1077.                         _passerTour()
  1078.                     ; Ou on passe son tour
  1079.                     Else
  1080.                         _passerTour()
  1081.                     EndIf
  1082.                 EndIf
  1083.             EndIf
  1084.         EndIf
  1085.     ; Si on est en mode invoc !
  1086.     Else
  1087.         _searchAmie()
  1088.         _searchEnnemy()
  1089.         ; Si on s'est bien trouve :p
  1090.         If $combatState = 1 Then
  1091.             _invocation()
  1092.             _passerTour()
  1093.         EndIf
  1094.     EndIf
  1095.     ; On regarde si le combat est termine.
  1096.     _verifFinCombat()
  1097. EndFunc
  1098.  
  1099. Func _passerTour()
  1100.     Send("^w")
  1101.     journalMsg("On passe le tour")
  1102.     _resetPos()
  1103.     _pause("10")
  1104. EndFunc
  1105.  
  1106. Func _attaquerEnnemy()
  1107.     $nombreDeFois = 0
  1108.     journalMsg("On attaque (" & $nbLancerTour & " fois)")
  1109.     Do
  1110.         Mouseclick("left", $posAtkKey[0], $posAtkKey[1])
  1111.         MouseClick("left", $posEnnemy[0], $posEnnemy[1])
  1112.         _pause("6")
  1113.         $nombreDeFois = $nombreDeFois + 1
  1114.     Until $nombreDeFois = $nbLancerTour
  1115. EndFunc
  1116.  
  1117. Func _searchAmie()
  1118.     $posAmie = PixelSearch( $maxMapGauche , $maxMapHaut, $maxMapDroite, $maxMapBas, $theRed, 7)
  1119.  
  1120.     If $optionDebug = 1 Then
  1121.         journalMsg("PosAmie = " & $posAmie[0] & "," & $posAmie[1] )
  1122.     EndIf
  1123.  
  1124.     ; Position non trouvee !
  1125.     If @error Then
  1126.         _verifFinCombat()
  1127.         If $combatState = 0 Then
  1128.             journalMsg("Nous ne sommes pas en combat !")
  1129.         Else
  1130.             stopBot("Position personnage introuvable.")
  1131.             _alarmSong()
  1132.         EndIf
  1133.     EndIf
  1134. EndFunc
  1135.  
  1136. Func _searchEnnemy()
  1137.     $distanceEnnemy = 0
  1138.     $ecartX = 0
  1139.     $ecartY = 0
  1140.     $sortiesFenetre = 4
  1141.     $continuer = 0
  1142.     Do
  1143.         $distanceEnnemy = $distanceEnnemy + 1
  1144.         $ecartX = $ecartX + 20
  1145.         $ecartY = $ecartY + 10
  1146.         $SearchEnnemyGauche = $posAmie[0] - $ecartX
  1147.         $SearchEnnemyDroite = $posAmie[0] + $ecartX
  1148.         $SearchEnnemyHaut = $posAmie[1] - $ecartY
  1149.         $SearchEnnemyBas = $posAmie[1] + $ecartY
  1150.         $posEnnemy = PixelSearch( $SearchEnnemyGauche, $SearchEnnemyHaut, $SearchEnnemyDroite, $SearchEnnemyBas, $theBlue, 7)
  1151.         ; Quand ca marche on verifie que ca se trouve bien dans la fenetre
  1152.         If Not @error Then
  1153.             If $posEnnemy[0] > 5 And $posEnnemy[0] < 695 Then $sortiesFenetre = $sortiesFenetre - 2
  1154.             If $posEnnemy[1] < 510 And $posEnnemy[1] > 30 Then $sortiesFenetre = $sortiesFenetre - 2
  1155.             If $sortiesFenetre = 0 Then $continuer = 1
  1156.         EndIf
  1157.     ; Jusqu'a ce que
  1158.     Until $continuer = 1 Or $distanceEnnemy = 50
  1159.  
  1160.     If $optionDebug = 1 Then
  1161.         journalMsg("PosEnnemy = " & $posEnnemy[0] & "," & $posEnnemy[1])
  1162.     EndIf
  1163.  
  1164.     ; On reagit a la conclusion precedente
  1165.     If $distanceEnnemy < 50 Then
  1166.  
  1167.     Else
  1168.         _verifFinCombat()
  1169.         If $combatState = 1 Then
  1170.             stopBot("Position ennemie introuvable")
  1171.             _alarmSong()
  1172.         EndIf
  1173.     EndIf
  1174. EndFunc
  1175.  
  1176. Func _seRapprocherEnnemy()
  1177.     ; Variables qui definissent la direction a adopter
  1178.     $DistanceX = $posEnnemy[0] - $posAmie[0] ; Positif = Ennemi a droite , Negatif = Ennemi a gauche
  1179.     $DistanceY = $posEnnemy[1] - $posAmie[1] ; Positif = Ennemi en bas , Negatif = Ennemi en haut
  1180.  
  1181.     ; Puis on traduit en nombre de pixels les PM disponibles (X=Abcisses , Y=Ordonnes)
  1182.     $theMoveX = $nbPM * 20 ; 20 pixels (distance entre deux cases en abcisses)
  1183.     $theMoveY = $nbPM * 10 ; 10 pixels (distance entre deux cases en ordonnees)
  1184.     ; La combinaison de moveX et de moveY donne le deplacement (only en diagonale)
  1185.  
  1186.     ; Le mouvement aura lieu depuis notre position, on associe donc les deux
  1187.     $XPlus = $posAmie[0] + $theMoveX
  1188.     $XMoins = $posAmie[0] - $theMoveX
  1189.     $YPlus = $posAmie[1] + $theMoveY
  1190.     $YMoins = $posAmie[1] - $theMoveY
  1191.     ; Les 4 variables precedentes contiennent donc l'abcisse et l'ordonnee d'un deplacement dans n'importequelle direction a partir de notre position
  1192.  
  1193.     ; --- Ennemy en Bas Droite -----
  1194.     If $DistanceX > 0 And $DistanceY > 0 Then
  1195.         MouseClick("left", $XPlus, $YPlus )
  1196.  
  1197.     ; --- Ennemy en Bas Gauche -----
  1198.     ElseIf $DistanceX < 0 And $DistanceY > 0 Then
  1199.         MouseClick("left", $XMoins, $YPlus )
  1200.  
  1201.     ; --- Ennemy en Haut Droite -----
  1202.     ElseIf $DistanceX > 0 And $DistanceY < 0 Then
  1203.         MouseClick("left", $XPlus, $YMoins )
  1204.  
  1205.     ; --- Ennemy en Haut Gauche -----
  1206.     ElseIf $DistanceX < 0 And $DistanceY < 0 Then
  1207.         MouseClick("left", $XMoins, $YMoins )
  1208.     EndIf
  1209.  
  1210.     _resetPos()
  1211.     _pause("6")
  1212. EndFunc
  1213.  
  1214. Func _resetPos()
  1215.     $posAmie[0] = ""
  1216.     $posAmie[1] = ""
  1217.     $posEnnemy[0] = ""
  1218.     $posEnnemy[1] = ""
  1219. EndFunc
  1220.  
  1221. Func _invocation()
  1222.     Mouseclick("left", $posAtkKey[0], $posAtkKey[1])
  1223.     journalMsg("On invoque la bebete")
  1224.  
  1225.     ; Variables qui definissent la direction a adopter
  1226.     $DistanceX = $posEnnemy[0] - $posAmie[0] ; Positif = Ennemi a droite , Negatif = Ennemi a gauche
  1227.     $DistanceY = $posEnnemy[1] - $posAmie[1] ; Positif = Ennemi en bas , Negatif = Ennemi en haut
  1228.  
  1229.     ; Puis on traduit en nombre de pixels les PM disponibles (X=Abcisses , Y=Ordonnes)
  1230.     $theMoveX = 20 ; 20 pixels (distance entre deux cases en abcisses)
  1231.     $theMoveY = 10 ; 10 pixels (distance entre deux cases en ordonnees)
  1232.     ; La combinaison de moveX et de moveY donne le deplacement (only en diagonale)
  1233.  
  1234.     ; Le clic aura lieu depuis notre position, on associe donc les deux
  1235.     $XPlus = $posAmie[0] + $theMoveX
  1236.     $XMoins = $posAmie[0] - $theMoveX
  1237.     $YPlus = $posAmie[1] + $theMoveY
  1238.     $YMoins = $posAmie[1] - $theMoveY
  1239.  
  1240.     ; --- Ennemy en Bas Droite -----
  1241.     If $DistanceX > 0 And $DistanceY > 0 Then
  1242.         MouseClick("left", $XPlus, $YPlus )
  1243.  
  1244.     ; --- Ennemy en Bas Gauche -----
  1245.     ElseIf $DistanceX < 0 And $DistanceY > 0 Then
  1246.         MouseClick("left", $XMoins, $YPlus )
  1247.  
  1248.     ; --- Ennemy en Haut Droite -----
  1249.     ElseIf $DistanceX > 0 And $DistanceY < 0 Then
  1250.         MouseClick("left", $XPlus, $YMoins )
  1251.  
  1252.     ; --- Ennemy en Haut Gauche -----
  1253.     ElseIf $DistanceX < 0 And $DistanceY < 0 Then
  1254.         MouseClick("left", $XMoins, $YMoins )
  1255.     EndIf
  1256. EndFunc
  1257.  
  1258.  
  1259.  
  1260. ; === Fonctions de Recolte =======
  1261. ; ===============================
  1262. Func _recolte()
  1263.     $posRessource = 0
  1264.     $i = Random(0,3,1)
  1265.     $posRessource = PixelSearch(0,0,690,500,$couleurRessource[$i],1)
  1266.     $errorFuncRecolte = 0
  1267.     If Not @error Then
  1268.  
  1269.         ; Petit paragraphe de verification, grace au petit rectangle gris a droite du pointeur
  1270.         MouseMove($posRessource[0], $posRessource[1])
  1271.         $useless = PixelSearch($posRessource[0] + 20, $posRessource[1] - 50, $posRessource[0] + 100, $posRessource[1] + 10, $couleurPreuveRessource[0],1)
  1272.         If @error Then $errorFuncRecolte = $errorFuncRecolte + 1
  1273.  
  1274.         $useless2 = PixelSearch($posRessource[0] + 20, $posRessource[1] - 50, $posRessource[0] + 100, $posRessource[1] + 10, $couleurPreuveRessource[1],1)
  1275.         If @error Then $errorFuncRecolte = $errorFuncRecolte + 1
  1276.  
  1277.         ; Erreur de petit carre gris non trouve alors que la ressource est soit disant trouvee
  1278.         If $errorFuncRecolte = 2 Then
  1279.             $nbErreursCsq = $nbErreursCsq + 1
  1280.             If $optionDebug = 1 Then journalMsg("Mini box grise a droite du curseur introuvable (" & $nbErreursCsq & " fois sur 100 max)")
  1281.             If $nbErreursCsq > 100 Then
  1282.                 stopbot("Ressource introuvable", "Plus de 100 fois consecutives")
  1283.             EndIf
  1284.  
  1285.         Else
  1286.             journalMsg("Recolte !", $couleurRessource[$i] & " en (" & $posRessource[0] & "," & $posRessource[1] & ")")
  1287.             $totalRecolte = $totalRecolte + 1
  1288.             ; Mise a jour des compteurs
  1289.             $compteur = $compteur + 1
  1290.             GUICtrlSetData($inputTotalRecoltes, $totalRecolte )
  1291.             ; Le clic, biatch !
  1292.             MouseClick("left")
  1293.             sleep($tempsRecolte * 1000)
  1294.             ; La pause qui suit correspond au temps d'aller sur le ble par exemple
  1295.             _pause("2")
  1296.             $nbErreursCsq = 0
  1297.         EndIf
  1298.     ; Si la ressource n'est pas trouvee, erreur habituelle
  1299.     Else
  1300.         $nbErreursCsq = $nbErreursCsq + 1
  1301.         If $optionDebug = 1 Then journalMsg("Ressource introuvable (" & $nbErreursCsq & " fois sur 100 max)")
  1302.         if $nbErreursCsq > 100 Then
  1303.         stopbot("Ressource introuvable","Plus de 100 fois consecutives")
  1304.         EndIf
  1305.     EndIf
  1306. EndFunc
  1307.  
  1308. Func _enregistrementRessourcePerso()
  1309.     ; Au cas ou c'est la 2e fois dans cette meme session on reinitialise
  1310.     $sortirDuLoopRessourcePerso = 0
  1311.     ; Pas envie de le mettre en Global plus haut
  1312.     $validage0 = 0
  1313.  
  1314.     If $couleurRessourcePerso[3] <> "" Then
  1315.         $validage0 = MsgBox(48 + 1,"Dofbot", "Attention ! Des couleurs ont deja ete enregistrees dans ce fichier : " & @ScriptDir & "\dofbotSauvegarde.ini" & @CRLF & @CRLF & _
  1316.         "En continuant, tu vas les ecraser !")
  1317.     ElseIf $couleurRessourcePerso[3] = "" Then
  1318.         $validage0 = 1
  1319.     EndIf
  1320.  
  1321.     If $validage0 = 1 Then
  1322.         $validage1 = MsgBox(48 + 1,"Dofbot", "En cliquant sur Ok, tu devras enregistrer 4 couleurs de pixel d'une ou plusieurs ressources, " & _
  1323.         "ce sera ces 4 couleurs que Dofbot cherchera a recolter :)." & @CRLF & @CRLF & _
  1324.         "PS : Tes 4 couleurs seront stockees apres lancement dans ce fichier : " & @ScriptDir & "\dofbotSauvegarde.ini")
  1325.  
  1326.         ; Si c'est ok on y va !
  1327.         If $validage1 = 1 Then
  1328.             $colorOfPos = 0
  1329.             GUISetState(@SW_SHOW, $GUI2) ; On sort l'autre GUI
  1330.             GUISetState(@SW_HIDE, $GUI)
  1331.             HotKeySet("c", "_capturerCouleur") ; On prend soin de mettre le raccourci pour la fonction _capturerCouleur
  1332.  
  1333.             While 1
  1334.                 $mousePos = MouseGetPos()
  1335.                 $colorOfPos = PixelGetColor($mousePos[0], $mousePos[1])
  1336.                 GUICtrlSetBkColor($ColorBox, $colorOfPos)
  1337.                 GUICtrlSetData($ColorBox, "Couleur (en hexadecimal) :" & @CRLF & Hex($colorOfPos))
  1338.                 sleep(50)
  1339.                 If $sortirDuLoopRessourcePerso = 1 Then ; ça arrive grace a la fonction _capturerCouleur() qui est appellée
  1340.                     MsgBox(64,"Dofbot","Bravo tu viens d'enregistrer une ressource perso ! Ecris 'perso' dans la case ressource pour l'utiliser :).")
  1341.                     ; On desactive le HotKeySet
  1342.                     ExitLoop
  1343.                 EndIf
  1344.             WEnd
  1345.         EndIf
  1346.     EndIf
  1347. EndFunc
  1348.  
  1349. Func _capturerCouleur()
  1350.     $mousePos = MouseGetPos()
  1351.     $couleurPointee = PixelGetColor($mousePos[0], $mousePos[1])
  1352.     $couleurRessourcePerso[$stepColorPerso] = $couleurPointee
  1353.     $stepColorPerso = $stepColorPerso + 1
  1354.     GUICtrlSetData($Label400, $stepColorPerso + 1 &"/4)")
  1355.     MsgBox(64,"Dofbot","Couleur numero " & $stepColorPerso & "/4 enregistree")
  1356.     ; Si on a terminé, on se barre
  1357.     If $stepColorPerso = 4 Then
  1358.         ; On desactive le raccourci
  1359.         HotKeySet("c")
  1360.         GUISetState(@SW_HIDE, $GUI2)
  1361.         GUISetState(@SW_SHOW, $GUI)
  1362.         $sortirDuLoopRessourcePerso = 1
  1363.     EndIf
  1364. EndFunc
  1365.  
  1366.  
  1367.  
  1368.  
  1369. ; === Fonctions Banque ==========
  1370. ; ===============================
  1371. Func _choixDirection($direction)
  1372.     _journalDMapWrite($direction)
  1373.     $deplacementsMap[$stepDMap] = $direction
  1374.     $stepDMap = $stepDMap + 1
  1375.     $nbDeplacements = $nbDeplacements + 1
  1376. EndFunc
  1377.  
  1378. Func _journalDMapWrite($msgJournalDMap)
  1379.     $journalDPrevious = GUICtrlRead ($journalD)
  1380.     if $journalDPrevious = "" Then
  1381.         GUICtrlSetData ($journalD, $stepDMap & ". " & $msgJournalDMap)
  1382.     Else
  1383.         GUICtrlSetData ($journalD, $stepDMap & ". " & $msgJournalDMap & @CRLF & $journalDPrevious)
  1384.     EndIf
  1385. EndFunc
  1386.  
  1387. Func _effacerJournalDMap()
  1388.     ; On efface seulement si ce n'est pas vide
  1389.     If $stepDMap > 0 Then
  1390.         Do
  1391.             $stepDMap = $stepDMap - 1
  1392.             $nbDeplacements = $nbDeplacements - 1
  1393.             $deplacementsMap[$stepDMap] = ""
  1394.             GUICtrlSetData ($journalD, "")
  1395.         Until $stepDMap = 0
  1396.     EndIf
  1397. EndFunc
  1398.  
  1399. Func _deposerBanque()
  1400.     If $botOn = 1 Then
  1401.         ; Clic sur porte banque
  1402.         journalMsg("On rentre dans la banque")
  1403.         MouseClick("left",$posPorteBanque[0],$posPorteBanque[1])
  1404.         _pause(15)
  1405.         ; Clic sur banquier
  1406.         journalMsg("On parle au monsieur")
  1407.         MouseClick("left",$posBanquier[0],$posBanquier[1])
  1408.         _pause(6)
  1409.         ; Clic sur parler
  1410.         journalMsg("On clique sur Parler")
  1411.         MouseClick("left",$posBanquier[0] + 10,$posBanquier[1] + 25)
  1412.         _pause(6)
  1413.         ; Clic sur consulter son coffre
  1414.         journalMsg("On consulte son coffre")
  1415.         MouseClick("left", 100, 255)
  1416.         _pause(6)
  1417.         ; Transferer toute les ressources
  1418.         journalMsg("On balance tout dans le coffre !")
  1419.         MouseClick("left", 544, 157)
  1420.         _pause(6)
  1421.         ; Clic sur Transferer tous les objets
  1422.         MouseClick("left", 451, 166)
  1423.         _pause(6)
  1424.         ; Fermer interface banque
  1425.         MouseClick("left", 667, 125)
  1426.         _pause(6)
  1427.         ; Sortir banque
  1428.         journalMsg("On ressort de la banque")
  1429.         MouseClick("left", $posSortieBanque[0], $posSortieBanque[1])
  1430.         _pause(6)
  1431.     EndIf
  1432. EndFunc
  1433.  
  1434. Func _allerBanque()
  1435.     journalMsg("Debut trajet aller banque")
  1436.     $trajetState = 1
  1437.     $stepDMap = 0
  1438.     Do
  1439.         ; On va a la destination enregistree
  1440.         if $deplacementsMap[$stepDMap] = "haut" Then
  1441.             _goMap("haut")
  1442.         ElseIf $deplacementsMap[$stepDMap] = "bas" Then
  1443.             _goMap("bas")
  1444.         ElseIf $deplacementsMap[$stepDMap] = "gauche" Then
  1445.             _goMap("gauche")
  1446.         Elseif $deplacementsMap[$stepDMap] = "droite" Then
  1447.             _goMap("droite")
  1448.         EndIf
  1449.         $stepDMap = $stepDMap + 1
  1450.     Until $deplacementsMap[$stepDMap] = "" Or $botOn = 0
  1451.     $trajetState = 0
  1452. EndFunc
  1453.  
  1454. Func _retourBanque()
  1455.     journalMsg("Debut trajet retour banque")
  1456.     $trajetState = 2
  1457.     Do
  1458.         ; On fait tout a l'envers pour revenir sur nos pas
  1459.         $stepDMap = $stepDMap - 1
  1460.         if $deplacementsMap[$stepDMap] = "haut" Then
  1461.             _goMap("bas")
  1462.         ElseIf $deplacementsMap[$stepDMap] = "bas" Then
  1463.             _goMap("haut")
  1464.         ElseIf $deplacementsMap[$stepDMap] = "gauche" Then
  1465.             _goMap("droite")
  1466.         Elseif $deplacementsMap[$stepDMap] = "droite" Then
  1467.             _goMap("gauche")
  1468.         EndIf
  1469.     Until $stepDMap = 0 Or $botOn = 0
  1470.     $trajetState = 0
  1471.     journalMsg("On est revenus sur la map de fauche.")
  1472. EndFunc
  1473.  
  1474. Func _goMap($direction)
  1475.     $erreur = 0
  1476.     $continuer = 0
  1477.     If $botOn = 1 Then ; Seulement si le bot marche
  1478.         if $direction = "gauche" Then
  1479.             Do
  1480.                 $yRandom = Random($maxMapHaut + 30, $maxMapBas - 30)
  1481.                 MouseMove($maxMapGauche, $yRandom)
  1482.                 sleep(500)
  1483.                 PixelSearch($maxMapGauche, $yRandom - 15, $maxMapGauche + 15, $yRandom + 15, $theOrange)
  1484.                 if Not @error Then
  1485.                     $continuer = 1
  1486.                     sleep(500)
  1487.                     MouseClick("left", $maxMapGauche, $yRandom)
  1488.                     _DMapAttente()
  1489.                 Else
  1490.                     $erreur = $erreur + 1
  1491.                 EndIf
  1492.             Until $continuer = 1 Or $erreur = 15
  1493.  
  1494.         ElseIf $direction = "droite" Then
  1495.             Do
  1496.                 $yRandom = Random($maxMapHaut + 30, $maxMapBas - 30)
  1497.                 MouseMove($maxMapDroite, $yRandom)
  1498.                 sleep(500)
  1499.                 PixelSearch($maxMapDroite - 15, $yRandom - 15, $maxMapDroite, $yRandom + 15, $theOrange) ; A droite donc rectangle de search a gauche
  1500.                 if Not @error Then
  1501.                     $continuer = 1
  1502.                     sleep(500)
  1503.                     MouseClick("left", $maxMapDroite, $yRandom)
  1504.                     _DMapAttente()
  1505.                 Else
  1506.                     $erreur = $erreur + 1
  1507.                 EndIf
  1508.             Until $continuer = 1 Or $erreur = 15
  1509.  
  1510.         ElseIf $direction = "haut" Then
  1511.             Do
  1512.                 $xRandom = Random($maxMapGauche + 30, $maxMapDroite - 50)
  1513.                 MouseMove($xRandom, $maxMapHaut)
  1514.                 sleep(500)
  1515.                 PixelSearch($xRandom - 15, $maxMapHaut, $xRandom + 15, $maxMapHaut +15, $theOrange) ; En bas donc rectangle de search au dessus
  1516.                 if Not @error Then
  1517.                     $continuer = 1
  1518.                     sleep(500)
  1519.                     MouseClick("left",$xRandom, $maxMapHaut)
  1520.                     _DMapAttente()
  1521.                 Else
  1522.                     $erreur = $erreur + 1
  1523.                 EndIf
  1524.             Until $continuer = 1 Or $erreur = 15
  1525.  
  1526.         Elseif $direction = "bas" Then
  1527.             Do
  1528.                 $xRandom = Random($maxMapGauche + 50, $maxMapDroite - 50)
  1529.                 MouseMove($xRandom, $maxMapBas)
  1530.                 sleep(500)
  1531.                 PixelSearch($xRandom - 15, $maxMapBas - 15, $xRandom + 15, $maxMapBas, $theOrange) ; En bas donc rectangle de search au dessus
  1532.                 if Not @error Then
  1533.                     $continuer = 1
  1534.                     sleep(500)
  1535.                     MouseClick("left",$xRandom, $maxMapBas)
  1536.                     _DMapAttente()
  1537.                 Else
  1538.                     $erreur = $erreur + 1
  1539.                 EndIf
  1540.             Until $continuer = 1 Or $erreur = 15
  1541.         EndIf
  1542.         If $erreur = 15 Then
  1543.             stopBot("Impossible de changer de map")
  1544.         EndIf
  1545.     EndIf
  1546. EndFunc
  1547.  
  1548. Func _DMapAttente()
  1549.     Local $tryAgain = 0
  1550.     Local $i = 0
  1551.     $miniMap = PixelChecksum(325, 530, 370, 565)
  1552.     Do
  1553.         $i = $i + 1
  1554.         _pause("1")
  1555.         _allVerifs()
  1556.  
  1557.         ; On reessaie si ça dure trop longtemps !
  1558.         If $i = 25 Then
  1559.             ; Si on etait en trajet, on recommence la derniere action
  1560.             If $trajetState = 1 Then
  1561.                 $sortieDeCombat = 1
  1562.                 $stepDMap = $stepDMap - 1
  1563.                 journalMsg("On reessaie (" & $stepDMap & "e etape)")
  1564.             ElseIf $trajetState = 2 Then
  1565.                 $sortieDeCombat = 1
  1566.                 $stepDMap = $stepDMap + 1
  1567.                 journalMsg("On reessaie (" & $stepDMap & "e etape)")
  1568.             EndIf
  1569.             $tryAgain = 1
  1570.         EndIf
  1571.  
  1572.     Until $minimap <> PixelChecksum(325, 530, 370, 565) Or $botOn = 0 Or $sortieDeCombat = 1 Or $tryAgain = 1
  1573.  
  1574.     $sortieDeCombat = 0
  1575.     _pause("2")
  1576. EndFunc
  1577.  
  1578.  
  1579.  
  1580. ;=== Fonctions d'affichages =
  1581. ;============================
  1582. Func _enableModeBanque()
  1583.     $guiPreviousState = GUICtrlGetState ($btnBas)
  1584.     if $guiPreviousState = 144 Then
  1585.         GUICtrlSetState( $btnBas, $GUI_ENABLE)
  1586.         GUICtrlSetState( $btnHaut, $GUI_ENABLE)
  1587.         GUICtrlSetState( $btnGauche, $GUI_ENABLE)
  1588.         GUICtrlSetState( $btnDroite, $GUI_ENABLE)
  1589.         GUICtrlSetState( $btnEffacerJournalD, $GUI_ENABLE)
  1590.         GUICtrlSetState( $journalD, $GUI_ENABLE)
  1591.         GUICtrlSetState( $radioBanqueAstrub, $GUI_ENABLE)
  1592.         GUICtrlSetState( $radioBanqueBonta, $GUI_ENABLE)
  1593.     EndIf
  1594. EndFunc
  1595.  
  1596. Func _disableModeBanque()
  1597.     $guiPreviousState = GUICtrlGetState ($btnBas)
  1598.     if $guiPreviousState = 80 Then
  1599.         GUICtrlSetState( $btnBas, $GUI_DISABLE)
  1600.         GUICtrlSetState( $btnHaut, $GUI_DISABLE)
  1601.         GUICtrlSetState( $btnGauche, $GUI_DISABLE)
  1602.         GUICtrlSetState( $btnDroite, $GUI_DISABLE)
  1603.         GUICtrlSetState( $btnEffacerJournalD, $GUI_DISABLE)
  1604.         GUICtrlSetState( $journalD, $GUI_DISABLE)
  1605.         GUICtrlSetState( $radioBanqueAstrub, $GUI_DISABLE)
  1606.         GUICtrlSetState( $radioBanqueBonta, $GUI_DISABLE)
  1607.     EndIf
  1608. EndFunc
  1609.  
  1610. Func _enableModeCombat()
  1611.     $guiPreviousState = GUICtrlGetState ($radioAtkKey1)
  1612.     if $guiPreviousState = 144 Then
  1613.         GUICtrlSetState( $lblAttaqueKey, $GUI_ENABLE)
  1614.         GUICtrlSetState( $radioAtkKey1, $GUI_ENABLE)
  1615.         GUICtrlSetState( $radioAtkKey2, $GUI_ENABLE)
  1616.         GUICtrlSetState( $radioAtkKey3, $GUI_ENABLE)
  1617.         GUICtrlSetState( $lblNbLancerTour, $GUI_ENABLE)
  1618.         GUICtrlSetState( $inputNbLancerTour, $GUI_ENABLE)
  1619.         GUICtrlSetState( $lblPortee, $GUI_ENABLE)
  1620.         GUICtrlSetState( $lblNbPM, $GUI_ENABLE)
  1621.         GUICtrlSetState( $inputPM, $GUI_ENABLE)
  1622.         GUICtrlSetState( $inputPortee, $GUI_ENABLE)
  1623.         GUICtrlSetState( $chkbInvocs, $GUI_ENABLE)
  1624.     EndIf
  1625. EndFunc
  1626.  
  1627. Func _disableModeCombat()
  1628.     $guiPreviousState = GUICtrlGetState ($radioAtkKey1)
  1629.     if $guiPreviousState = 80 Then
  1630.         GUICtrlSetState( $lblAttaqueKey, $GUI_DISABLE)
  1631.         GUICtrlSetState( $radioAtkKey1, $GUI_DISABLE)
  1632.         GUICtrlSetState( $radioAtkKey2, $GUI_DISABLE)
  1633.         GUICtrlSetState( $radioAtkKey3, $GUI_DISABLE)
  1634.         GUICtrlSetState( $lblNbLancerTour, $GUI_DISABLE)
  1635.         GUICtrlSetState( $inputNbLancerTour, $GUI_DISABLE)
  1636.         GUICtrlSetState( $lblPortee, $GUI_DISABLE)
  1637.         GUICtrlSetState( $lblNbPM, $GUI_DISABLE)
  1638.         GUICtrlSetState( $inputPM, $GUI_DISABLE)
  1639.         GUICtrlSetState( $inputPortee, $GUI_DISABLE)
  1640.         GUICtrlSetState( $chkbInvocs, $GUI_DISABLE)
  1641.     EndIf
  1642. EndFunc
  1643.  
  1644.  
  1645.  
  1646. ; === Fonctions d'informations =
  1647. ; ==============================
  1648. Func _infoMode()
  1649.     MsgBox("64","Modes fauche v3", "Dans les 3 modes, le bot fauche le ble de la map en verifiant l'inventaire toute les 10 fauches. " & @CRLF & @CRLF & _
  1650.     ". Mode Classique : " & @CRLF & _
  1651.     "Quand l'inventaire est plein le bot s'arrete." & @CRLF & @CRLF &  _
  1652.     ". Mode Farmer : " & @CRLF & _
  1653.     "Quand l'inventaire est plein le bot supprime le ble de l'inventaire puis continue de faucher." & @CRLF & @CRLF & _
  1654.     ". Mode Banque : " & @CRLF & _
  1655.     "Quand l'inventaire est plein le bot va poser le ble en banque puis il revient faucher. Plus d'infos dans l'aide associee a ce mode." & @CRLF & @CRLF & _
  1656.     "D'autres modes a suggerer ? Contactes moi : harry.dotcom@hotmail.fr !")
  1657. EndFunc
  1658.  
  1659. Func _infoOptions()
  1660.     MsgBox("64","Options", "Pour repondre aux besoins qu'avaient de nombreuses personnes, j'ai installé trois options. " & @CRLF & @CRLF & _
  1661.     ". Slow :" & @CRLF & _
  1662.     "Tous les temps de pauses sont multiplies par 3 (sauf le temps de fauche), option a activer pour ceux qui ont des lags importants." & @CRLF & @CRLF &  _
  1663.     ". Hyper Slow :" & @CRLF & _
  1664.     "Tous les temps de pauses sont multiplies par 6 (sauf le temps de fauche), option a activer pour ceux qui ont des lags importants." & @CRLF & @CRLF &  _
  1665.     ". Debug :" & @CRLF & _
  1666.     "J'ai souvent hesiter entre un journal qui en disait beaucoup ou un journal plus leger qui ne rentrait pas dans les details." & @CRLF & _
  1667.     "Avec cette option, le journal sera beaucoup plus detaillé, cela t'aideras surement a comprendre par toi meme d'ou vient ton probleme (si tu en as un)."   & @CRLF & @CRLF & _
  1668.     "D'autres options a suggerer ? Contactes moi : harry.dotcom@hotmail.fr !")
  1669. EndFunc
  1670.  
  1671. Func _infoBanque()
  1672.     MsgBox("64","Mode Banque", "Pour que ce mode marche, tu dois activer ta minimap et desactiver le zoom d'interieur !" & @CRLF & @CRLF & _
  1673.     "Le trajet a enregistrer ici est le trajet (MAP SPOT DE CEREALEA) -> (MAP BANQUE)" & @CRLF & _
  1674.     "Levais bot reviendra au spot de cereales en suivant le meme trajet a l'envers." & @CRLF & @CRLF & _
  1675.     "Des questions, idees ou des suggestions ? Envoies moi un mail : harry.dotcom@hotmail.fr !")
  1676. EndFunc
  1677.  
  1678. Func _infoCombattre()
  1679.     MsgBox("64","Mode Combat v1", "Desactives la transparence ! D'autres choses sont a savoir : " & @CRLF & @CRLF & _
  1680.     "Raccourci 1 : Bouton d'attaque au corps a corps (²)" & @CRLF & _
  1681.     "Raccourci 2 : Premier sort (é)"& @CRLF & _
  1682.     'Raccourci 3 : Deuxieme sort (")'& @CRLF & @CRLF & _
  1683.     ". Concernant l'attaque : " & @CRLF & _
  1684.     "Choisis une attaque a portee libre qui n'a pas de restrictions en dehors de sa portee. Plus la portee est grande, moins il y aura de difficultes pour le bot." & @CRLF & @CRLF &  _
  1685.     "Il est preferable de ne pas etre en groupe" & @CRLF & _
  1686.     "Des suggestions ? Contactes moi : harry.dotcom@hotmail.fr !")
  1687. EndFunc
  1688.  
  1689. Func _infoCereals()
  1690.     MsgBox("64","Dofbot","J'ai ajouté quelques céréales moi meme, mais rien ne dit qu'elles fonctionnent chez vous. " & @CRLF & @CRLF & _
  1691.     "- Blé" & @CRLF & _
  1692.     "- Orge" & @CRLF & _
  1693.     "- Houblon" & @CRLF & _
  1694.     "- Avoine" & @CRLF & _
  1695.     "- Seigle" & @CRLF & _
  1696.     "- Chanvre" & @CRLF & _
  1697.     "- Malt" & @CRLF & _
  1698.     "- Lin" & @CRLF & @CRLF &  _
  1699.     "+ Absolument tout grace a l'option d'ajout de ressource")
  1700. ;~  $botOn = 1
  1701. ;~  _preparatifs()
  1702. ;~  _deposerBanque()
  1703. ;~  $botOn = 0
  1704. EndFunc
  1705.  
  1706.  
  1707.  
  1708. ; === Fonctions qui se connectent ===
  1709. ; ===================================
  1710. Func _verifVersion()
  1711.     ; On va chercher deux petits fichiers que j'ai mis en ligne au prealable
  1712.     $bLien = InetRead("http://harrydotcom.fr/Dofbots/lien.txt",1) ; exemple : "http://bit.ly/JC8BDH"
  1713.     $bLastVersion = InetRead("http://harrydotcom.fr/Dofbots/version.txt",1) ; exemple : "308"
  1714.     ; On affiche un msg d'erreur si il y a eu un probleme
  1715.     If @error Then MsgBox(64,"Dofbot","Impossible de verifier si une nouvelle version est disponible ! M'enfin, c'est pas grave ! Tu peux aller voir toi meme sur dofbots.blogspot.com")
  1716.     ; On transforme ce qu'on vient de trouver en chaines de caracteres
  1717.     $lastVersion = BinaryToString($bLastVersion)
  1718.     $lien = BinaryToString($bLien)
  1719.     If $lastVersion > $currentVersion Then
  1720.         $ouvrir_site = MsgBox(64+4, "Dofbot", "Une nouvelle version (" & $lastVersion & ") est en ligne !" & @CRLF & _
  1721.         "Aller télécharger la nouvelle version?")
  1722.         If $ouvrir_site = 6 Then
  1723.             ShellExecute($lien)
  1724.             Exit
  1725.         EndIf
  1726.     EndIf
  1727. EndFunc
  1728.  
  1729. Func _chargementNews()
  1730.     $bNews = InetRead("http://harrydotcom.fr/Dofbots/news.txt",1)
  1731.     If @error Then MsgBox(64,"Dofbot","Impossible de recuperer les News !")
  1732.     $news = BinaryToString($bNews)
  1733.     $finalNews = StringSplit($news,"next",1 + 2)
  1734.     $arraySize = UBound($finalNews)
  1735.     For $i = 0 To $arraySize - 2 Step + 2
  1736.         $previousJournalNews = GUICtrlRead($journalNews)
  1737.         If $previousJournalNews <> "" Then
  1738.             GUICtrlSetData($journalNews, $finalNews[$i] & @CRLF & $finalNews[$i + 1] & @CRLF & $previousJournalNews)
  1739.         Else
  1740.             GUICtrlSetData($journalNews, $finalNews[$i] & @CRLF & $finalNews[$i + 1])
  1741.         EndIf
  1742.     Next
  1743. EndFunc