DofBots : Marche avec la 2.7.

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Status
Not open for further replies.

LyNeCarlat

Membre
Aug 13, 2012
49
0
206
DBG4.png

( Cliquer sur l'image pour l'agrandir. )

Fonctionnalités :

- Optimisé pour le métier de paysan, écrire le nom de la céréale a faucher dans le champ ressource
- Vérifie le niveau de pods toute les 10 fauches
- Va déposer les ressources a la banque tout seul
- Combat n’importe quelle agression
- Referme les ups de lvl métiers ou perso, refuse les invitations, échanges et défis
- Transparent (n'a aucun moyen de voler votre compte puisqu'il se lance après la connexion)
- Possibilité d'ajouter une ressource soi-même
- Banque de Bonta prise en charge
- Possibilité de définir soi-même la couleur a récolter !
- Mode tactique et créature automatique
- Ajout du mode invocations pour le combat
- Paramètres enregistrés pour le prochain lancement du bot
- Ajout d'un "try again" 3 fois pendant le déplacement de map (en cas de clics sur autrechose)
- Récolte plus sure, évitant le clic sur n'importe quoi
- Journal enregistré dans un fichier texte (d'ailleurs il faudra penser a le flush de temps en temps !)
- Un petit module de news ajouté :)
- D'autres petits trucs mineurs par ci par la...
- Plein d'autres petits trucs que je vous laisse découvrir.​

Code source :

#cs
-----------------------------------
NOM PROGRAMME : DOFBOT G4
FONCTION : Automate pour Dofus
PROGRAMMEUR : H@RRY de dofbots.blogspot.com
DATE : 01/08/2012
-----------------------------------
#ce

#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <array.au3>


; === LES VARIABLES =============
; ===============================
#Region ### START VARIABLES ZONE ###
Global $currentVersion = 400
_verifVersion()

; --- INITIALISATIONS ---
Global $modeBot = 0
Global $tempsRecolte = 0
Global $nomPerso = ""
Global $verif = 10
Global $modeAggro = 0
Global $continuer = 0
Global $erreur = 0
Global $colorCheck = 0
Global $nbDeplacements = 0
Global $compteur = 0
Global $nbErreursCsq = 0
Global $popUp = 0
Global $totalRecolte = 0
Global $i = 0
Global $stepDMap = 0
Global $atkPortee = ""
Global $atkKey = ""
Global $nbPM = ""
Global $nbLancerTour = ""
Global $combatState = 0
Global $nbCombats = 0
Global $posDetruire[2], $posValiderDetruire[2], $posAmie[2], $posEnnemy[2] = [0,0]
Global $botOn = 0
Global $distanceEnnemy = 0
Global $posAtkKey[2] = [0,0]
Global $trajetState = 0
Global $couleurInv[26]
Global $sortieDeCombat = 0
Global $optionSlow = 0
Global $optionDebug = 0
Global $stepColorPerso = 0
Global $sortirDuLoopRessourcePerso = 0
Global $optionInvoc = 0
Global $nomBanque = ""
Global $posPorteBanque[2] = [0,0]
Global $posBanquier[2] = [0,0]
Global $posSortieBanque[2] = [0,0]

; --- INITIALISATION 2 ---
Global $maxMapHaut = 42
Global $maxMapBas = 500
Global $maxMapDroite = 680
Global $maxMapGauche = 19
Global $deplacementsMap[100]
Global $iniRecoltesRestantes = 200
Global $recoltesRestantes = $iniRecoltesRestantes

Global $posPorteBanqueAstrub[2] = ["500", "235"]
Global $posBanquierAstrub[2] = ["315","230"]
Global $posSortieBanqueAstrub[2] = ["219", "374"]

Global $posPorteBanqueBonta[2] = ["242", "299"]
Global $posBanquierBonta[2] = ["319", "269"]
Global $posSortieBanqueBonta[2] = ["213", "400"]

; --- COULEURS --
Global $couleurRessource[4]
Global $couleurPreuveRessource[2]=["0xBDBCB2","0xDEDEC7"]

Global $couleurRessourcePerso[4]=["","","",""]

Global $couleurBle[4] = ["0xF8D73E","0xF8E83E","0xF8DF38","0xFAD334"]
Global $couleurOrge[4] = ["0x394F08","0x3F540B","0x385009","0x3D500C"]
Global $couleurHoublon[4] = ["0x96CFAD","0x7EB390","0xA1C8AD","0x8AC19F"]
Global $couleurAvoine[4] = ["0xFCF0DF","0xF1EBA1","0xE8D1B8","0xDDC8B0"]
Global $couleurSeigle[4] = ["0xFCF0DF","0xF1EBA1","0xE8D1B8","0xDDC8B0"] ; A CHANGER PCK APPAREMMENT CST L'AVOINE CA !!
Global $couleurChanvre[4] = ["0xA1A520","0xAEA900","0xAEA800","0x7A9010"]
Global $couleurMalt[4] = ["0xBC7C25","0xB17228","0xB16B1F","0xA66D32"]
Global $couleurLin[4] = ["0xD8D0A6","0xE9D5B0","0xD1CAA4","0xDCD4AD"]

Global $couleurBleInventaire[5] = ["0xD9A910","0xE3BA2E","0xDBA801","0xCF9B00","0xE0B630"]
Global Const $couleurCroix = 0xFF6100
Global Const $theOrangeFight = 0xFF4D00
Global Const $theRed = 0xFF0000
Global Const $theBlue = 0x0000FF
Global Const $theOrange = 0xFF6100
Global Const $theGreenFight = 0x006600
Global Const $couleurInventaireVide = 0x514A3C ; BugInvPlein
Global Const $couleurInventaireVide2 = 0xBDB9A1 ; BugInvPlein
Global Const $couleurInventairePlein = 0xAE0707
; COULEUR PORTE BANQUE CENTRALE BONTA : 237, 300 0x827042 ; BANQUIER : 319, 269

; --- AUTRES VARIBLES ---
Global $magicWordUser = ""
Global $magicWord1 = ""
Global $magicWord2 = ""
; On ouvre le fichier du journal
Global $journalFile = FileOpen(@ScriptDir & "\dofbotJournal.txt",1)
#EndRegion ### END VARIABLES ZONE ###

; === LES GUI BIIIIATCH ===
#Region ### START Koda GUI section ### Form=c:\users\harry\documents\autoit script\dbg4_modele.kxf ; La Gui principale
Global $GUI = GUICreate("DBG" & $currentVersion & "", 595, 539, 191, 126)
Global $Tab1 = GUICtrlCreateTab(8, 8, 577, 513)
Global $TabSheet2 = GUICtrlCreateTabItem("Dofbot G4")
Global $journal = GUICtrlCreateEdit("", 16, 48, 257, 329, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $grpCereales = GUICtrlCreateGroup("Ressource", 280, 40, 129, 49)
Global $btnNfoCereals = GUICtrlCreateButton("Aide", 344, 56, 51, 17)
Global $inputRessource = GUICtrlCreateInput("", 288, 60, 49, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $grpMode = GUICtrlCreateGroup("Mode", 416, 40, 161, 89)
Global $radioClassique = GUICtrlCreateRadio("Classique", 424, 56, 65, 17)
Global $radioFarmer = GUICtrlCreateRadio("Farmer (seulement blé)", 424, 80, 129, 17)
Global $radioBanque = GUICtrlCreateRadio("Banque (reglages sup. )", 424, 104, 137, 17)
Global $btnNfoMode = GUICtrlCreateButton("Aide", 528, 48, 43, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $grpAggro = GUICtrlCreateGroup("Aggro ressources", 416, 136, 161, 65)
Global $radioBip = GUICtrlCreateRadio("Jouer un bip", 424, 152, 145, 17)
Global $radioCombattre = GUICtrlCreateRadio("Combattre (reglages sup.)", 424, 176, 145, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $grpNom = GUICtrlCreateGroup("Nom du personnage", 416, 208, 161, 49)
Global $inputNomPerso = GUICtrlCreateInput("", 424, 228, 145, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $grpTemps = GUICtrlCreateGroup("Temps de recolte (en sec)", 416, 264, 161, 49)
Global $inputTempsRecolte = GUICtrlCreateInput("10", 424, 284, 145, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $btnLancer = GUICtrlCreateButton("Lancer (Echap pour stop)", 416, 328, 159, 41)
Global $btnEffacerJournal = GUICtrlCreateButton("Vider journal", 96, 32, 75, 15)
Global $grpBanque = GUICtrlCreateGroup("Mode Banque", 184, 380, 209, 129)
Global $btnNfoBanque = GUICtrlCreateButton("Aide", 270, 387, 43, 16)
Global $journalD = GUICtrlCreateEdit("", 192, 404, 89, 95, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $btnEffacerJournalD = GUICtrlCreateButton("Effacer", 338, 392, 43, 17)
Global $btnHaut = GUICtrlCreateButton("Haut", 312, 412, 43, 17)
Global $btnGauche = GUICtrlCreateButton("Gauche", 285, 428, 43, 17)
Global $btnDroite = GUICtrlCreateButton("Droite", 339, 428, 43, 17)
Global $btnBas = GUICtrlCreateButton("Bas", 312, 444, 43, 17)
Global $radioBanqueAstrub = GUICtrlCreateRadio("Banque Astrub", 286, 467, 97, 17)
Global $radioBanqueBonta = GUICtrlCreateRadio("Banque Bonta", 286, 488, 97, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $grpCombattre = GUICtrlCreateGroup("Combattre", 400, 380, 177, 129)
Global $btnNfoCombattre = GUICtrlCreateButton("Aide", 464, 388, 43, 17)
Global $chkbInvocs = GUICtrlCreateCheckbox("Invocs", 520, 392, 49, 17)
Global $lblAttaqueKey = GUICtrlCreateLabel("Raccourci :", 408, 412, 59, 17)
Global $radioAtkKey1 = GUICtrlCreateRadio("1", 480, 415, 28, 14)
Global $radioAtkKey2 = GUICtrlCreateRadio("2", 512, 414, 28, 15)
Global $radioAtkKey3 = GUICtrlCreateRadio("3", 544, 414, 28, 15)
Global $lblNbLancerTour = GUICtrlCreateLabel("Nombre attaque/tour :", 408, 436, 109, 17)
Global $inputNbLancerTour = GUICtrlCreateInput("", 520, 436, 49, 21)
Global $lblPortee = GUICtrlCreateLabel("Portée de l'attaque :", 408, 460, 99, 17)
Global $inputPortee = GUICtrlCreateInput("", 520, 460, 49, 21)
Global $lblNbPM = GUICtrlCreateLabel("Ton nombre de PM :", 408, 484, 101, 17)
Global $inputPM = GUICtrlCreateInput("", 520, 484, 49, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $Group2 = GUICtrlCreateGroup("Options (facultatif)", 280, 96, 129, 177)
Global $btnNfoOptions = GUICtrlCreateButton("Aide", 344, 112, 51, 17)
Global $chkbSlow = GUICtrlCreateCheckbox("Slow", 288, 112, 49, 17)
Global $chkbHSlow = GUICtrlCreateCheckbox("Hyper Slow", 288, 136, 81, 17)
Global $chkbDebug = GUICtrlCreateCheckbox("Debug", 288, 160, 81, 17)
Global $btnAjouterRessource = GUICtrlCreateButton("Aj. ressource", 305, 209, 67, 25)
Global $Label2 = GUICtrlCreateLabel("2.", 288, 216, 13, 17)
Global $Label6 = GUICtrlCreateLabel("3.", 288, 248, 13, 17)
Global $btnSetColors = GUICtrlCreateButton("Bientot...", 304, 240, 67, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $Checkbox1 = GUICtrlCreateCheckbox("Craft (réglages sup.)", 288, 184, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $grpCompteurs = GUICtrlCreateGroup("Compteurs", 280, 280, 129, 97)
Global $inputTotalRecoltes = GUICtrlCreateInput("", 288, 297, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
Global $inputTotalPopups = GUICtrlCreateInput("", 288, 320, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
Global $inputTotalCombats = GUICtrlCreateInput("", 288, 344, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
Global $Label1 = GUICtrlCreateLabel("Récoltes", 352, 304, 46, 17)
Global $Label3 = GUICtrlCreateLabel("Popups", 352, 328, 40, 17)
Global $Label4 = GUICtrlCreateLabel("Combats", 352, 352, 45, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $btnCopierJournal = GUICtrlCreateButton("Copier journal", 16, 32, 75, 15)
Global $grpNews = GUICtrlCreateGroup("News", 16, 381, 161, 128)
Global $journalNews = GUICtrlCreateEdit("", 24, 397, 145, 104, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $btnVoirPreviousJournal = GUICtrlCreateButton("Précédent journal", 176, 32, 99, 15)
GUICtrlCreateTabItem("")
Global $lblFooter = GUICtrlCreateLabel("http://dofbots.blogspot.com", 448, 521, 136, 17)
Global $lblTitle = GUICtrlCreateLabel("Dofbot 4e Generation", 232, 0, 144, 23)
GUICtrlSetFont(-1, 12, 400, 0, "Calibri")
GUICtrlSetColor(-1, 0x000080)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

#Region ### START Koda GUI section ### Form=c:\users\harry\documents\autoit script\gui2.kxf
Global $GUI2 = GUICreate("DBG" & $currentVersion & " - Ressource record", 388, 232, 205, 132)
Global $PageControl1 = GUICtrlCreateTab(8, 8, 372, 184)
Global $TabSheet100 = GUICtrlCreateTabItem("Choix des couleurs")
Global $ColorBox = GUICtrlCreateEdit("", 184, 40, 185, 137, BitOR($ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "ColorBox")
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label100 = GUICtrlCreateLabel("Emmènes ton curseur sur la", 16, 40, 139, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label200 = GUICtrlCreateLabel("couleur choisie.", 16, 56, 80, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label300 = GUICtrlCreateLabel("Enregistres la en appuyant sur 'c'", 16, 80, 165, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label400 = GUICtrlCreateLabel("1/4", 80, 104, 19, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label4000 = GUICtrlCreateLabel("Pourquoi 4 couleurs ?", 16, 128, 109, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label500 = GUICtrlCreateLabel("Pour augmenter les chances de", 16, 152, 157, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
Global $Label112 = GUICtrlCreateLabel("trouver votre ressource !", 16, 168, 125, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateTabItem("")
Global $btnValider2 = GUICtrlCreateButton("&Valider", 222, 200, 75, 25)
Global $btnAnnuler2 = GUICtrlCreateButton("&Annuler", 302, 200, 75, 25)
#EndRegion ### END Koda GUI section ###

;=== LETS GO ================
;============================

_trucsAvantLeWhile()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
exit

; Mode bot
Case $btnNfoMode
_infoMode()
Case $radioClassique
_selectRadioClassique()
Case $radioFarmer
_selectRadioFarmer()
Case $radioBanque
_selectRadioBanque()

; Options Bot
Case $btnNfoOptions
_infoOptions()

; Cereale(s)
Case $btnNfoCereals
_infoCereals()
Case $btnAjouterRessource
_enregistrementRessourcePerso()

; Mode combat
Case $btnNfoCombattre
_infoCombattre()
Case $radioBip
_selectRadioBip()
Case $radioCombattre
_selectRadioCombattre()
Case $radioAtkKey1
_selectRadioAtkKey1()
Case $radioAtkKey2
_selectRadioAtkKey2()
Case $radioAtkKey3
_selectRadioAtkKey3()

; Mode Banque
Case $btnNfoBanque
_infoBanque()
Case $btnHaut
_choixDirection("haut")
Case $btnBas
_choixDirection("bas")
Case $btnDroite
_choixDirection("droite")
Case $btnGauche
_choixDirection("gauche")
Case $btnEffacerJournalD
_effacerJournalDMap()
Case $radioBanqueAstrub
_selectRadioBanqueAstrub()
Case $radioBanqueBonta
_selectRadioBanqueBonta()

Case $btnCopierJournal
ClipPut(GUICtrlRead($journal))
MsgBox(64, "Dofbot", "Le contenu du journal a été copié dans le presse papier")
Case $btnEffacerJournal
GUICtrlSetData($journal,"")
Case $btnVoirPreviousJournal
ShellExecute(@ScriptDir & "\dofbotJournal.txt")

Case $btnLancer
_verifsDemarrage()
if $botOn = 0 Then
ContinueCase
EndIf

; == Et maintenant, le coeur de la maison, la cuisine ==
While 1
_allVerifs() ; On verifie un tas de trucs
If $botOn = 1 Then ; Si tout va bien on y va
_recolte()
Else ; Sinon on arrete le bot
journalMsg("Arret du bot")
; On rallume le bouton Lancer
GUICtrlSetState($btnLancer, $GUI_ENABLE)
ContinueCase
EndIf
WEnd
EndSwitch
WEnd

; === Fonctions GUIesques ===
; ===========================
Func _selectRadioClassique()
$modeBot = 1
_disableModeBanque()
EndFunc

func _selectRadioFarmer()
$modeBot = 2
_disableModeBanque()
EndFunc

func _selectRadioBanque()
$modeBot = 3
_enableModeBanque()
EndFunc

func _selectRadioBip()
$modeAggro = 1
_disableModeCombat()
EndFunc

Func _selectRadioCombattre()
$modeAggro = 2
_enableModeCombat()
EndFunc

Func _selectRadioAtkKey1()
$atkKey = 1
$posAtkKey[0] = 428
$posAtkKey[1] = 524
EndFunc

Func _selectRadioAtkKey2()
$atkKey = 2
$posAtkKey[0] = 453
$posAtkKey[1] = 525
EndFunc

Func _selectRadioAtkKey3()
$atkKey = 3
$posAtkKey[0] = 478
$posAtkKey[1] = 525
EndFunc

Func _selectRadioBanqueAstrub()
$nomBanque = "Astrub"
EndFunc

Func _selectRadioBanqueBonta()
$nomBanque = "Bonta"
EndFunc


; === Fonctions generales =======
; ===============================
Func journalMsg($messageJournal, $autresInfos = "")
If $optionDebug = 0 Then
$journalPrevious = GUICtrlRead($journal)
GUICtrlSetData($journal, @HOUR & ":" & @MIN & ":" & @SEC & " : " & $messageJournal & @CRLF & $journalPrevious )
FileWrite($journalFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " : " & $messageJournal & @CRLF )
Else
$journalPrevious = GUICtrlRead($journal)
GUICtrlSetData($journal, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " : " & $messageJournal & " + " & $autresInfos & @CRLF & $journalPrevious )
FileWrite($journalFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " : " & $messageJournal & " + " & $autresInfos & @CRLF )
EndIf
EndFunc

Func stopBot($raison, $autresInfos = "")
journalMsg($raison & ". Arret en cours...")
If $combatState = 1 Then
$combatState = 0
EndIf
$botOn = 0
EndFunc

Func closeBotRac()
If $botOn = 1 Then
journalMsg("Arret en cours...", "Appui sur Echap")
$botOn = 0
If $combatState = 1 Then
$combatState = 0
EndIf
EndIf
EndFunc

Func _pause($lvl)
$sleepingTime = $lvl * 500
If $optionSlow = 0 Then
Sleep($sleepingTime)
; Si on est en slow option
ElseIf $optionSlow = 1 Then
Sleep($sleepingTime * 3)
; Si on est en HYPER slow option
ElseIf $optionSlow = 2 Then
Sleep($sleepingTime * 6)
Else
journalMsg("PAUSE fatal error.")
EndIf
EndFunc

Func _msgBienvenue()
journalMsg("Salut " & @UserName & " ! (OS :" & @OSVersion & ")" )
EndFunc

; === Fonctions de demarrage =====
Func _trucsAvantLeWhile()
_chargement()
_msgBienvenue()
_disableModeBanque()
_disableModeCombat()
_chargementNews()
EndFunc

; ===============================
Func _verifsDemarrage()
$verifsRequises=0
$verifsValidees=0
$errorRessourceInput=0
$ErreursList = "Voici la liste des erreurs :"

; -- Mode Bot ------------------
; ------------------------------
$verifsRequises = $verifsRequises + 1 ; 0/1
If $modeBot <> 0 Then ; Mode bot bien choisi
$verifsValidees = $verifsValidees + 1 ; 1/1
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Le mode n'est pas choisi")
EndIf

If $modeBot = 3 Then ; Mode banque regle
$verifsRequises = $verifsRequises + 1
If $deplacementsMap[0] <> "" Then
$verifsValidees = $verifsValidees + 1
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Deplacements pour le mode banque non enregistres")
EndIf

$verifsRequises = $verifsRequises + 1
If $nomBanque <> "" Then
$verifsValidees = $verifsValidees + 1
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- T'as pas choisi de banque")
EndIf
EndIf


; -- Mode Aggro ----------------
; ------------------------------
$verifsRequises = $verifsRequises + 1 ; ; 1/2
If $modeAggro <> 0 Then ; Mode aggro bien choisi
$verifsValidees = $verifsValidees + 1 ; 2/2
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Tu n'as pas choisi de mode pour les agressions")
EndIf

If $modeAggro = 2 Then ; Mode combat bien regle
$verifsRequises = $verifsRequises + 1 ; 2/3
$atkPortee = GUICtrlRead($inputPortee)
$nbPM = GUICtrlRead($inputPM)
$nbLancerTour = GUICtrlRead($inputNbLancerTour)
If $atkKey <> "" And $nbLancerTour <> "" And $atkPortee <> "" And $nbPM <> "" Then
$verifsValidees = $verifsValidees + 1 ; 3/3
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Tu n'as pas bien rempli les reglages sup. du mode Combattre")
EndIf
EndIf

; -- Nom perso -----------------
; ------------------------------
$verifsRequises = $verifsRequises + 1 ; 2/3
$nomPerso = GUICtrlRead($inputNomPerso)
If WinExists($nomPerso) And $nomPerso <> "" Then
sleep(200)
WinSetState($nomPerso,"",@SW_MINIMIZE)
WinSetState($nomPerso,"",@SW_RESTORE)
WinMove($nomPerso, "", 0, 0, 700, 600)
WinMove($GUI,"",700, 0)
$verifsValidees = $verifsValidees + 1 ; 3/3
ElseIf $nomPerso = "" Then
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Tu n'as pas ecrit de nom de personnage")
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Fenetre de ton personnage introuvable, verifies le Pseudo")
EndIf

; -- Temps de Fauche -----------
; ------------------------------
$verifsRequises = $verifsRequises + 1
$tempsRecolte = GUICtrlRead($inputTempsRecolte)
If $tempsRecolte <> "" And $tempsRecolte > 0 Then
$verifsValidees = $verifsValidees + 1
ElseIf $tempsRecolte = "" Then
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Temps de recolte non renseigne")
Else
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Temps de recolte incorrect")
EndIf

; -- Ressource ----------------
; -----------------------------
$verifsRequises = $verifsRequises + 1

$ressourceUser = GUICtrlRead($inputRessource)
If $ressourceUser = "Blé" Or $ressourceUser = "blé" Then
$couleurRessource = $couleurBle
ElseIf $ressourceUser = "Orge" Or $ressourceUser = "orge" Then
$couleurRessource = $couleurOrge
ElseIf $ressourceUser = "Avoine" Or $ressourceUser = "avoine" Then
$couleurRessource = $couleurAvoine
ElseIf $ressourceUser = "Houblon" Or $ressourceUser = "houblon" Then
$couleurRessource = $couleurHoublon
ElseIf $ressourceUser = "Lin" Or $ressourceUser = "lin" Then
$couleurRessource = $couleurLin

ElseIf $ressourceUser = "Seigle" Or $ressourceUser = "seigle" Then
$couleurRessource = $couleurSeigle

ElseIf $ressourceUser = "Malt" Or $ressourceUser = "malt" Then
$couleurRessource = $couleurMalt
ElseIf $ressourceUser = "Chanvre" Or $ressourceUser = "seigle" Then
$couleurRessource = $couleurChanvre

ElseIf $ressourceUser = "Perso" Or $ressourceUser = "perso" Then
If $couleurRessourcePerso[3] = "" Then
$errorRessourceInput = 39
Else
$couleurRessource = $couleurRessourcePerso
EndIf

; Les erreurs
ElseIf $ressourceUser = "" Then
$errorRessourceInput = 37 ; THE FAMOUS ERROR 37
Else ; = T'as ecrit n'importequoi
$errorRessourceInput = 38 ; Pourquoi 38 ? Je ne sais pas !
EndIf

If $errorRessourceInput = 38 Then
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Orthographe ressource incorrecte")
ElseIf $errorRessourceInput = 37 Then
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Ressource non renseignee")
ElseIf $errorRessourceInput = 39 Then
$PreviousErreursList = $ErreursList
$ErreursList = ( $PreviousErreursList & @CRLF & "- Ressources personnalisees non detectees")
Else
$verifsValidees = $verifsValidees + 1
EndIf

; -- Si tout est bon on lance --
if $verifsValidees = $verifsRequises Then

_preparatifs()
$lancement = MsgBox(64+4, "Dofbot", _
"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 & _
". Tu as bien laisser en place le redimensionnement." & @CRLF & _
". Le nom de ton perso est different du nom d'utilisateur Windows." & @CRLF & _
". Ton theme de couleur d'interface est bien le theme Beige (1.x)." & @CRLF & _
". Tu as desactive la transparence." & @CRLF & _
". Tu es en mode creature + mode tactique pour le mode combat." & @CRLF & _
". Ce n'est pas fini ! Tes raccourcis doivent etre les suivants :" & @CRLF & _
"- Passer son tour : 'CTRL+W'" & @CRLF & _
"- Ouvrir/fermer l'inventaire : 'i'"& @CRLF & @CRLF & _
"Alors, tu n'as rien oublier ? T'es sur de toi ? On peut commencer ?")
If $lancement = 6 Then
_demarrage()
EndIf
; -- Sinon .. Erreur --
Else
MsgBox(48,"Dofbot","Erreur, il manque des informations ou certaines informations sont incorrectes." & @CRLF & _
$ErreursList & @CRLF & @CRLF & _
"Autres precisions : Le bot doit etre lance en mode administrateur.")
EndIf
EndFunc

Func _switchMediumQuality()
sleep(500)
MouseClick("right",478, 120)
sleep(500)
MouseClick("left",534, 166)
sleep(500)
MouseClick("left",610, 177)
EndFunc

Func _preparatifs()
; Les CHKB d'options
$STATEslowOption = GUICtrlRead($chkbSlow)
$STATEhSlowOption = GUICtrlRead($chkbHSlow)
$STATEdebugOption = GUICtrlRead($chkbDebug)

If $STATEhSlowOption = 1 Then
$optionSlow = 2
ElseIf $STATEslowOption = 1 Then
$optionSlow = 1
Else
$optionSlow = 0
EndIf

If $STATEdebugOption = 1 Then
$optionDebug = 1
Else
$optionDebug = 0
EndIf

; La Checkbox pour les invocs
$stateOptionInvoc = GUICtrlRead($chkbInvocs)
If $stateOptionInvoc = 1 Then $optionInvoc = 1
If $stateOptionInvoc <> 1 Then $optionInvoc = 0

; Choix de la banque
$stateBanqueAstrub= GUICtrlRead($radioBanqueAstrub)
$stateBanqueBonta= GUICtrlRead($radioBanqueBonta)
If $stateBanqueAstrub = 1 Then
$posPorteBanque = $posPorteBanqueAstrub
$posBanquier = $posBanquierAstrub
$posSortieBanque = $posSortieBanqueAstrub
ElseIf $stateBanqueBonta = 1 Then
$posPorteBanque = $posPorteBanqueBonta
$posBanquier = $posBanquierBonta
$posSortieBanque = $posSortieBanqueBonta
EndIf

; On sauvegarde pour la next time
_sauvegarde()
EndFunc

Func _sauvegarde()
; 1. LES INPUTS
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nom Personnage", GUICtrlRead($inputNomPerso))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Temps Recolte",GUICtrlRead($inputTempsRecolte))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Ressource", GUICtrlRead($inputRessource))

IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Attaques par tour", GUICtrlRead($inputNbLancerTour))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Portee de l'attaque", GUICtrlRead($inputPortee))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nombre de PM", GUICtrlRead($inputPM))

; 2. Les tableaux
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[0]", $couleurRessourcePerso[0])
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[1]", $couleurRessourcePerso[1])
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[2]", $couleurRessourcePerso[2])
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Tableaux", "Couleur Ressource Perso[3]", $couleurRessourcePerso[3])

; 3. LES RADIOS
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Classique", GUICtrlRead($radioClassique))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Farmer", GUICtrlRead($radioFarmer))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Banque", GUICtrlRead($radioBanque))

IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Bip", GUICtrlRead($radioBip))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Combattre", GUICtrlRead($radioCombattre))

IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Touche d'attaque 1", GUICtrlRead($radioAtkKey1))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Touche d'attaque 2", GUICtrlRead($radioAtkKey2))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Touche d'attaque 3", GUICtrlRead($radioAtkKey3))

IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Banque Astrub", GUICtrlRead($radioBanqueAstrub))
IniWrite(@ScriptDir & "\dofbotSauvegarde.ini", "Radios", "Banque Bonta", GUICtrlRead($radioBanqueBonta))
EndFunc

Func _chargement()
; 1. LES INPUTS
$savedNomPerso = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nom Personnage", "")
$savedTempsRecolte = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Temps Recolte", "")
$savedRessource = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Ressource", "")

$savedNbLancerTour = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Attaques par tour", "")
$savedPortee = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Portee de l'attaque", "")
$savedPM = IniRead(@ScriptDir & "\dofbotSauvegarde.ini", "Inputs", "Nombre de PM", "")

GUICtrlSetData($inputNomPerso, $savedNomPerso, "")
GUICtrlSetData($inputTempsRecolte, $savedTempsRecolte, "")
GUICtrlSetData($inputRessource, $savedRessource, "")

GUICtrlSetData($inputNbLancerTour, $savedNbLancerTour, "")
GUICtrlSetData($inputPortee, $savedPortee, "")
GUICtrlSetData($inputPM, $savedPM, "")

; LES TABLEAUX
$savedCouleurPerso0 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[0]", "")
$savedCouleurPerso1 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[1]", "")
$savedCouleurPerso2 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[2]", "")
$savedCouleurPerso3 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Tableaux", "Couleur Ressource Perso[3]", "")

$couleurRessourcePerso[0] = $savedCouleurPerso0
$couleurRessourcePerso[1] = $savedCouleurPerso1
$couleurRessourcePerso[2] = $savedCouleurPerso2
$couleurRessourcePerso[3] = $savedCouleurPerso3

; LES RADIOS
$savedradioClassique = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Classique", "")
$savedradioFarmer = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Farmer", "")
$savedradioBanque = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Banque", "")

$savedradioBip = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Bip", "")
$savedradioCombattre = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Combattre", "")

$savedradioAtkKey1 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Touche d'attaque 1", "")
$savedradioAtkKey2 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Touche d'attaque 2", "")
$savedradioAtkKey3 = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Touche d'attaque 3", "")

$savedradioBanqueAstrub = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Banque Astrub", "")
$savedradioBanqueBonta = IniRead(@ScriptDir & "\dofbotSauvegarde.ini","Radios", "Banque Bonta", "")

If $savedradioClassique = 1 Then _selectRadioClassique() ; On ajoute ces if pour simuler le vrai clic sur la radio
GUICtrlSetState($radioClassique, $savedradioClassique)
If $savedradioFarmer = 1 Then _selectRadioFarmer()
GUICtrlSetState($radioFarmer, $savedradioFarmer)
If $savedradioBanque = 1 Then _selectRadioBanque()
GUICtrlSetState($radioBanque, $savedradioBanque)

If $savedradioBip = 1 Then _selectRadioCombattre()
GUICtrlSetState($radioBip, $savedradioBip)
If $savedradioCombattre = 1 Then _selectRadioCombattre()
GUICtrlSetState($radioCombattre, $savedradioCombattre)

If $savedradioAtkKey1 = 1 Then _selectRadioAtkKey1()
GUICtrlSetState($radioAtkKey1, $savedradioAtkKey1)
If $savedradioAtkKey2 = 1 Then _selectRadioAtkKey2()
GUICtrlSetState($radioAtkKey2, $savedradioAtkKey2)
If $savedradioAtkKey3 = 1 Then _selectRadioAtkKey3()
GUICtrlSetState($radioAtkKey3, $savedradioAtkKey3)

If $savedradioBanqueAstrub = 1 Then _selectRadioBanqueAstrub()
GUICtrlSetState($radioBanqueAstrub, $savedradioBanqueAstrub)

If $savedradioBanqueBonta = 1 Then _selectRadioBanqueBonta()
GUICtrlSetState($radioBanqueBonta, $savedradioBanqueBonta)

EndFunc

Func _demarrage()
; On transforme le bouton de demarrage
GUICtrlSetState($btnLancer, $GUI_DISABLE)
_switchMediumQuality()
; On desactive les reglages sup.
_disableModeBanque()
_disableModeCombat()
HotKeySet("{ESC}", "closeBotRac" )
journalMsg("Demarrage du bot")
$botOn = 1

; Reinitialisation des valeurs en cas de redemarrage
$nbErreursCsq = 0
EndFunc




; === Fonctions de verifications =
; ================================
Func _allVerifs()
; Forcement, on verifie pas l'aggro si on est deja en combat, pareil pour les pods
If $combatState = 0 Then
_verifAggros()
If $trajetState = 0 Then
_verifPods()
EndIf
EndIf
_verifsPopups()
_pause("2")
EndFunc

Func _verifPods()
; Si le compteur de fauche = la verif, on va jeter un oeil
If $compteur = $verif And $botOn = 1 Then
Send ("i")
journalMsg("Verification de l'inventaire")
$pods = 0
$compteur = 0
$stepNumber = 0
$abscisseEnPlus = 0
_pause("6")

; On releve la temperature de nos pods tranche par tranche
Do
$couleurInv[$stepNumber] = PixelGetColor(540 + $abscisseEnPlus,487)
If $optionDebug = 1 Then
journalMsg("Tranche " & $stepNumber & " = " & $couleurInv[$stepNumber])
EndIf
$stepNumber = $stepNumber + 1
$abscisseEnPlus = $abscisseEnPlus + 5
Until $stepNumber = 26

$stepNumber = 0
Do
$color = $couleurInv[$stepNumber]
$stepNumber = $stepNumber + 1
; Si la couleur est rouge on considere l'inevntaire plein
If $color = $couleurInventairePlein Or $stepNumber = 26 Then
$pods = 1
EndIf
; On considère l'inventaire non plein quand on trouve la couleur d'invetaire vide avant le bout de la barre
Until $color = $couleurInventaireVide Or $color = $couleurInventaireVide2 Or $pods = 1

; =============== QUARTIER DEBUG ==============
; =============================================
If $optionDebug = 1 Then
If $color = $couleurInventairePlein Then
journalMsg("CouleurInventairePlein trouvee a la tranche " & $stepNumber)
ElseIf $stepNumber = 26 Then
journalMsg("CouleurInventairePlein non trouvee")
ElseIf $color = $couleurInventaireVide Then
journalMsg("CouleurInventaireVide trouvee tranche " & $stepNumber)
EndIf
EndIf

; --- INVENTAIRE PLEIN ---
; ------------------------
if $pods = 1 Then
journalMsg("Inventaire plein (25/25)")
; Pour le Mode banque, on fait ce qui suit
if $modeBot = 3 Then
_pause(1)
Send ("i")
_pause(6)
_allerBanque()
_deposerBanque()
_retourBanque()
; Et pour les deux autres modes, on fait les bails t'as vu !
ElseIf $modeBot <> 3 Then
_inventairePlein()
_pause(4)
; Pour ces modes la, faut refermer l'inventaire :)
Send ("i")
_pause(4)
EndIf

; --- INVENTAIRE NON PLEIN ---
; ----------------------------
Else
; On met en pourcentage !
$pleinPourcent = (($stepNumber - 1)/25)*100
journalMsg("Inventaire non plein (rempli a " & $pleinPourcent & "%)")
Send ("i")
_pause(4)
EndIf
EndIf
EndFunc

Func _inventairePlein()
; Mode classique
if $modeBot = 1 Then
stopBot("Mode classique")
EndIf

; Mode farmer
if $modeBot = 2 Then
MouseClick("left",663,133)
sleep(500)
Send("Blé")
sleep(500)
; On clique droit a la position de la premiere ressource trouvee
MouseClick("right", 550, 155)
sleep(500)
$posDetruire[0] = 551 - 20
$posDetruire[1] = 155 + 42
; On clic gauche sur Detruire
MouseClick("left",$posDetruire[0], $posDetruire[1])
sleep(500)
$posValiderDetruire[0] = $posDetruire[0] + 65
$posValiderDetruire[1] = $posDetruire[1] - 15
sleep(500)
; On valide la quantitee
MouseClick("left",$posValiderDetruire[0], $posValiderDetruire[1])
sleep(500)
; Voulez vous vraiment ... OUI !
MouseClick("left",320, 340)
journalMsg("Suppression du ble effectuee")
EndIf
EndFunc

Func _verifAggros()
; On check la couleur a l'endroit qui devient orange quand on est en combat : le bouton pret
$couleur = PixelGetColor(336, 566)
if $couleur = $couleurCroix Then ; (car couleur croix = couleur bouton Pret)
journalMsg("Combat détécté", $couleurCroix & " trouvée en 336, 566")
if $modeAggro = 1 Then
_alerte()
ElseIf $modeAggro = 2 Then
_combattre()
EndIf
Else
If $optionDebug = 1 Then journalMsg("Combat non détécté", $couleur & " trouvée en 336, 566")
EndIf
EndFunc

Func _verifFinCombat()
; On regarde si la croix est dans la place !
$color = PixelSearch(655, 70, 670, 180, $couleurCroix)
If Not @error Then
$nbCombats = $nbCombats + 1
GUICtrlSetData($inputTotalCombats, $nbCombats )
$combatState = 0
journalMsg("Fin du combat")
MouseClick("left", $color[0], $color[1])
; Si on etait en trajet, on recommence la derniere action
If $trajetState = 1 Then
$sortieDeCombat = 1
$stepDMap = $stepDMap - 1
journalMsg("On reprend le trajet aller (" & $stepDMap & "e etape)")
ElseIf $trajetState = 2 Then
$sortieDeCombat = 1
$stepDMap = $stepDMap + 1
journalMsg("On reprend le trajet retour (" & $stepDMap & "e etape)")
EndIf
EndIf
EndFunc

Func _verifsPopups()
_killPopups(370, 343, "Up/Echange/Defi")
_killPopups(486, 245, "Up perso")
; Le reste seulement si on est pas en trajet
If $trajetState = 0 Then
_killPopups(199, 292, "Invitation groupe")
_killPopups(665, 81, "Inventaire")
_killPopups(637, 78, "Fenetre des sorts")
_killPopups(218, 81, "Fenetre des caracs")
_killPopups(671, 67, "Map")
EndIf
EndFunc

Func _verifsFauchesRestantes()
If $recoltesRestantes < 1 Then
stopBot("Fauches restantes < 1")
EndIf
EndFunc

Func _killPopups($x, $y, $sujet)
$couleur = PixelGetColor($x, $y)
if $couleur = $couleurCroix Then
; Pour l'inventaire, on suprimme le mouseclick, car il peut causer des changements de map
If $sujet = "Inventaire" Then
Send("i")
$popUp = $popUp + 1
GUICtrlSetData($inputTotalPopups, $popUp )
journalMsg("Fermeture Popup (" & $sujet & ")")
Else
$popUp = $popUp + 1
GUICtrlSetData($inputTotalPopups, $popUp )
MouseClick("left",$x, $y)
journalMsg("Fermeture Popup (" & $sujet & ")")
EndIf
EndIf
EndFunc

Func _tactiqueAndCreature()
$couleurDisabled = 0x7B7B7B ;304, 512
$couleurEnabled = 0xA1E401

$displayed1 = PixelGetColor(305,512)
$displayed2 = PixelGetColor(297, 525)

If $displayed1 = $couleurDisabled Then
journalMsg("On passe en mode tactique")
MouseClick("left",305,512)
EndIf

If $displayed2 = $couleurDisabled Then
journalMsg("On passe en mode creature")
MouseClick("left", 297, 525)
EndIf
EndFunc




; === Fonctions Aggros ==========
; ===============================
Func _alarmSong()
Beep (200 *3,500)
Beep (300 *3,500)
Beep (400 *3,500)
sleep(500)
Beep (400 *3,500)
Beep (400 *3,500)
Beep (400 *3,500)
EndFunc

Func _alerte()
stopBot("Alerte aggro !!")
_alarmSong()
EndFunc

Func _combattre()
$combatState = 1
journalMsg("Dofbot combat !")
Send("^w") ; Debut du combat
_pause("6")
; On retire le challenge et les cartes !
MouseClick("left", 32, 164)
MouseClick("left", 687, 480)
; ... Et on passe en tactique et creature
_tactiqueAndCreature()
Do
_waitTour()
Until $combatState = 0
EndFunc

Func _waitTour()
Do
_pause("1")
; On passe un petit coup de verifs, ca fait pas de mal
_allVerifs()
; On check la couleur a 4-5 secondes dans l'horloge du tour
$color = PixelGetColor(372, 516)
; Et si celle si est orange, on lance le tour !
If $color = $theOrangeFight Then
journalMsg("A notre tour")
_tour()
; Autrement, on verifie si le combat est fini. Qui sait ?
Else
_verifFinCombat()
EndIf
; Tout cela jusqu'a ce que le combatState soit = 0
Until $combatState = 0

EndFunc

Func _tour()
; Si on est pas en mode invoc !
If $optionInvoc = 0 Then
; On cherche posAmie (position de notre personnage)
_searchAmie()
; On cherche posEnnemy (position de l'ennemi le plus proche)
_searchEnnemy()
; On passe a la suite seulement si les positions sont trouvees (car positions non trouvees = $combatState 0 )
If $combatState = 1 Then
; Si l'ennemi est a portee, on attaque et on passe notre tour
If $distanceEnnemy <= $atkPortee Then
journalMsg("Ennemi a portee (" & $distanceEnnemy & " < " & $atkPortee & ")")
_attaquerEnnemy()
_passerTour()
; S'il n'est pas a portee, on se rapproche !
Else
journalMsg("On se rapproche de l'ennemi")
_seRapprocherEnnemy()
; Puis on reffectue les recherches
_searchAmie()
_searchEnnemy()
; On passe a la suite seulement si les positions sont trouvees (car positions non trouvees = $combatState 0 )
If $combatState = 1 Then
; Puis on attaque et on passe notre tour s'il est portee
If $distanceEnnemy <= $atkPortee Then
journalMsg("Ennemi a portee (" & $distanceEnnemy & " < " & $atkPortee & ")")
_attaquerEnnemy()
_passerTour()
; Ou on passe son tour
Else
_passerTour()
EndIf
EndIf
EndIf
EndIf
; Si on est en mode invoc !
Else
_searchAmie()
_searchEnnemy()
; Si on s'est bien trouve :p
If $combatState = 1 Then
_invocation()
_passerTour()
EndIf
EndIf
; On regarde si le combat est termine.
_verifFinCombat()
EndFunc

Func _passerTour()
Send("^w")
journalMsg("On passe le tour")
_resetPos()
_pause("10")
EndFunc

Func _attaquerEnnemy()
$nombreDeFois = 0
journalMsg("On attaque (" & $nbLancerTour & " fois)")
Do
Mouseclick("left", $posAtkKey[0], $posAtkKey[1])
MouseClick("left", $posEnnemy[0], $posEnnemy[1])
_pause("6")
$nombreDeFois = $nombreDeFois + 1
Until $nombreDeFois = $nbLancerTour
EndFunc

Func _searchAmie()
$posAmie = PixelSearch( $maxMapGauche , $maxMapHaut, $maxMapDroite, $maxMapBas, $theRed, 7)

If $optionDebug = 1 Then
journalMsg("PosAmie = " & $posAmie[0] & "," & $posAmie[1] )
EndIf

; Position non trouvee !
If @error Then
_verifFinCombat()
If $combatState = 0 Then
journalMsg("Nous ne sommes pas en combat !")
Else
stopBot("Position personnage introuvable.")
_alarmSong()
EndIf
EndIf
EndFunc

Func _searchEnnemy()
$distanceEnnemy = 0
$ecartX = 0
$ecartY = 0
$sortiesFenetre = 4
$continuer = 0
Do
$distanceEnnemy = $distanceEnnemy + 1
$ecartX = $ecartX + 20
$ecartY = $ecartY + 10
$SearchEnnemyGauche = $posAmie[0] - $ecartX
$SearchEnnemyDroite = $posAmie[0] + $ecartX
$SearchEnnemyHaut = $posAmie[1] - $ecartY
$SearchEnnemyBas = $posAmie[1] + $ecartY
$posEnnemy = PixelSearch( $SearchEnnemyGauche, $SearchEnnemyHaut, $SearchEnnemyDroite, $SearchEnnemyBas, $theBlue, 7)
; Quand ca marche on verifie que ca se trouve bien dans la fenetre
If Not @error Then
If $posEnnemy[0] > 5 And $posEnnemy[0] < 695 Then $sortiesFenetre = $sortiesFenetre - 2
If $posEnnemy[1] < 510 And $posEnnemy[1] > 30 Then $sortiesFenetre = $sortiesFenetre - 2
If $sortiesFenetre = 0 Then $continuer = 1
EndIf
; Jusqu'a ce que
Until $continuer = 1 Or $distanceEnnemy = 50

If $optionDebug = 1 Then
journalMsg("PosEnnemy = " & $posEnnemy[0] & "," & $posEnnemy[1])
EndIf

; On reagit a la conclusion precedente
If $distanceEnnemy < 50 Then

Else
_verifFinCombat()
If $combatState = 1 Then
stopBot("Position ennemie introuvable")
_alarmSong()
EndIf
EndIf
EndFunc

Func _seRapprocherEnnemy()
; Variables qui definissent la direction a adopter
$DistanceX = $posEnnemy[0] - $posAmie[0] ; Positif = Ennemi a droite , Negatif = Ennemi a gauche
$DistanceY = $posEnnemy[1] - $posAmie[1] ; Positif = Ennemi en bas , Negatif = Ennemi en haut

; Puis on traduit en nombre de pixels les PM disponibles (X=Abcisses , Y=Ordonnes)
$theMoveX = $nbPM * 20 ; 20 pixels (distance entre deux cases en abcisses)
$theMoveY = $nbPM * 10 ; 10 pixels (distance entre deux cases en ordonnees)
; La combinaison de moveX et de moveY donne le deplacement (only en diagonale)

; Le mouvement aura lieu depuis notre position, on associe donc les deux
$XPlus = $posAmie[0] + $theMoveX
$XMoins = $posAmie[0] - $theMoveX
$YPlus = $posAmie[1] + $theMoveY
$YMoins = $posAmie[1] - $theMoveY
; Les 4 variables precedentes contiennent donc l'abcisse et l'ordonnee d'un deplacement dans n'importequelle direction a partir de notre position

; --- Ennemy en Bas Droite -----
If $DistanceX > 0 And $DistanceY > 0 Then
MouseClick("left", $XPlus, $YPlus )

; --- Ennemy en Bas Gauche -----
ElseIf $DistanceX < 0 And $DistanceY > 0 Then
MouseClick("left", $XMoins, $YPlus )

; --- Ennemy en Haut Droite -----
ElseIf $DistanceX > 0 And $DistanceY < 0 Then
MouseClick("left", $XPlus, $YMoins )

; --- Ennemy en Haut Gauche -----
ElseIf $DistanceX < 0 And $DistanceY < 0 Then
MouseClick("left", $XMoins, $YMoins )
EndIf

_resetPos()
_pause("6")
EndFunc

Func _resetPos()
$posAmie[0] = ""
$posAmie[1] = ""
$posEnnemy[0] = ""
$posEnnemy[1] = ""
EndFunc

Func _invocation()
Mouseclick("left", $posAtkKey[0], $posAtkKey[1])
journalMsg("On invoque la bebete")

; Variables qui definissent la direction a adopter
$DistanceX = $posEnnemy[0] - $posAmie[0] ; Positif = Ennemi a droite , Negatif = Ennemi a gauche
$DistanceY = $posEnnemy[1] - $posAmie[1] ; Positif = Ennemi en bas , Negatif = Ennemi en haut

; Puis on traduit en nombre de pixels les PM disponibles (X=Abcisses , Y=Ordonnes)
$theMoveX = 20 ; 20 pixels (distance entre deux cases en abcisses)
$theMoveY = 10 ; 10 pixels (distance entre deux cases en ordonnees)
; La combinaison de moveX et de moveY donne le deplacement (only en diagonale)

; Le clic aura lieu depuis notre position, on associe donc les deux
$XPlus = $posAmie[0] + $theMoveX
$XMoins = $posAmie[0] - $theMoveX
$YPlus = $posAmie[1] + $theMoveY
$YMoins = $posAmie[1] - $theMoveY

; --- Ennemy en Bas Droite -----
If $DistanceX > 0 And $DistanceY > 0 Then
MouseClick("left", $XPlus, $YPlus )

; --- Ennemy en Bas Gauche -----
ElseIf $DistanceX < 0 And $DistanceY > 0 Then
MouseClick("left", $XMoins, $YPlus )

; --- Ennemy en Haut Droite -----
ElseIf $DistanceX > 0 And $DistanceY < 0 Then
MouseClick("left", $XPlus, $YMoins )

; --- Ennemy en Haut Gauche -----
ElseIf $DistanceX < 0 And $DistanceY < 0 Then
MouseClick("left", $XMoins, $YMoins )
EndIf
EndFunc



; === Fonctions de Recolte =======
; ===============================
Func _recolte()
$posRessource = 0
$i = Random(0,3,1)
$posRessource = PixelSearch(0,0,690,500,$couleurRessource[$i],1)
$errorFuncRecolte = 0
If Not @error Then

; Petit paragraphe de verification, grace au petit rectangle gris a droite du pointeur
MouseMove($posRessource[0], $posRessource[1])
$useless = PixelSearch($posRessource[0] + 20, $posRessource[1] - 50, $posRessource[0] + 100, $posRessource[1] + 10, $couleurPreuveRessource[0],1)
If @error Then $errorFuncRecolte = $errorFuncRecolte + 1

$useless2 = PixelSearch($posRessource[0] + 20, $posRessource[1] - 50, $posRessource[0] + 100, $posRessource[1] + 10, $couleurPreuveRessource[1],1)
If @error Then $errorFuncRecolte = $errorFuncRecolte + 1

; Erreur de petit carre gris non trouve alors que la ressource est soit disant trouvee
If $errorFuncRecolte = 2 Then
$nbErreursCsq = $nbErreursCsq + 1
If $optionDebug = 1 Then journalMsg("Mini box grise a droite du curseur introuvable (" & $nbErreursCsq & " fois sur 100 max)")
If $nbErreursCsq > 100 Then
stopbot("Ressource introuvable", "Plus de 100 fois consecutives")
EndIf

Else
journalMsg("Recolte !", $couleurRessource[$i] & " en (" & $posRessource[0] & "," & $posRessource[1] & ")")
$totalRecolte = $totalRecolte + 1
; Mise a jour des compteurs
$compteur = $compteur + 1
GUICtrlSetData($inputTotalRecoltes, $totalRecolte )
; Le clic, biatch !
MouseClick("left")
sleep($tempsRecolte * 1000)
; La pause qui suit correspond au temps d'aller sur le ble par exemple
_pause("2")
$nbErreursCsq = 0
EndIf
; Si la ressource n'est pas trouvee, erreur habituelle
Else
$nbErreursCsq = $nbErreursCsq + 1
If $optionDebug = 1 Then journalMsg("Ressource introuvable (" & $nbErreursCsq & " fois sur 100 max)")
if $nbErreursCsq > 100 Then
stopbot("Ressource introuvable","Plus de 100 fois consecutives")
EndIf
EndIf
EndFunc

Func _enregistrementRessourcePerso()
; Au cas ou c'est la 2e fois dans cette meme session on reinitialise
$sortirDuLoopRessourcePerso = 0
; Pas envie de le mettre en Global plus haut
$validage0 = 0

If $couleurRessourcePerso[3] <> "" Then
$validage0 = MsgBox(48 + 1,"Dofbot", "Attention ! Des couleurs ont deja ete enregistrees dans ce fichier : " & @ScriptDir & "\dofbotSauvegarde.ini" & @CRLF & @CRLF & _
"En continuant, tu vas les ecraser !")
ElseIf $couleurRessourcePerso[3] = "" Then
$validage0 = 1
EndIf

If $validage0 = 1 Then
$validage1 = MsgBox(48 + 1,"Dofbot", "En cliquant sur Ok, tu devras enregistrer 4 couleurs de pixel d'une ou plusieurs ressources, " & _
"ce sera ces 4 couleurs que Dofbot cherchera a recolter :)." & @CRLF & @CRLF & _
"PS : Tes 4 couleurs seront stockees apres lancement dans ce fichier : " & @ScriptDir & "\dofbotSauvegarde.ini")

; Si c'est ok on y va !
If $validage1 = 1 Then
$colorOfPos = 0
GUISetState(@SW_SHOW, $GUI2) ; On sort l'autre GUI
GUISetState(@SW_HIDE, $GUI)
HotKeySet("c", "_capturerCouleur") ; On prend soin de mettre le raccourci pour la fonction _capturerCouleur

While 1
$mousePos = MouseGetPos()
$colorOfPos = PixelGetColor($mousePos[0], $mousePos[1])
GUICtrlSetBkColor($ColorBox, $colorOfPos)
GUICtrlSetData($ColorBox, "Couleur (en hexadecimal) :" & @CRLF & Hex($colorOfPos))
sleep(50)
If $sortirDuLoopRessourcePerso = 1 Then ; ça arrive grace a la fonction _capturerCouleur() qui est appellée
MsgBox(64,"Dofbot","Bravo tu viens d'enregistrer une ressource perso ! Ecris 'perso' dans la case ressource pour l'utiliser :).")
; On desactive le HotKeySet
ExitLoop
EndIf
WEnd
EndIf
EndIf
EndFunc

Func _capturerCouleur()
$mousePos = MouseGetPos()
$couleurPointee = PixelGetColor($mousePos[0], $mousePos[1])
$couleurRessourcePerso[$stepColorPerso] = $couleurPointee
$stepColorPerso = $stepColorPerso + 1
GUICtrlSetData($Label400, $stepColorPerso + 1 &"/4)")
MsgBox(64,"Dofbot","Couleur numero " & $stepColorPerso & "/4 enregistree")
; Si on a terminé, on se barre
If $stepColorPerso = 4 Then
; On desactive le raccourci
HotKeySet("c")
GUISetState(@SW_HIDE, $GUI2)
GUISetState(@SW_SHOW, $GUI)
$sortirDuLoopRessourcePerso = 1
EndIf
EndFunc




; === Fonctions Banque ==========
; ===============================
Func _choixDirection($direction)
_journalDMapWrite($direction)
$deplacementsMap[$stepDMap] = $direction
$stepDMap = $stepDMap + 1
$nbDeplacements = $nbDeplacements + 1
EndFunc

Func _journalDMapWrite($msgJournalDMap)
$journalDPrevious = GUICtrlRead ($journalD)
if $journalDPrevious = "" Then
GUICtrlSetData ($journalD, $stepDMap & ". " & $msgJournalDMap)
Else
GUICtrlSetData ($journalD, $stepDMap & ". " & $msgJournalDMap & @CRLF & $journalDPrevious)
EndIf
EndFunc

Func _effacerJournalDMap()
; On efface seulement si ce n'est pas vide
If $stepDMap > 0 Then
Do
$stepDMap = $stepDMap - 1
$nbDeplacements = $nbDeplacements - 1
$deplacementsMap[$stepDMap] = ""
GUICtrlSetData ($journalD, "")
Until $stepDMap = 0
EndIf
EndFunc

Func _deposerBanque()
If $botOn = 1 Then
; Clic sur porte banque
journalMsg("On rentre dans la banque")
MouseClick("left",$posPorteBanque[0],$posPorteBanque[1])
_pause(15)
; Clic sur banquier
journalMsg("On parle au monsieur")
MouseClick("left",$posBanquier[0],$posBanquier[1])
_pause(6)
; Clic sur parler
journalMsg("On clique sur Parler")
MouseClick("left",$posBanquier[0] + 10,$posBanquier[1] + 25)
_pause(6)
; Clic sur consulter son coffre
journalMsg("On consulte son coffre")
MouseClick("left", 100, 255)
_pause(6)
; Transferer toute les ressources
journalMsg("On balance tout dans le coffre !")
MouseClick("left", 544, 157)
_pause(6)
; Clic sur Transferer tous les objets
MouseClick("left", 451, 166)
_pause(6)
; Fermer interface banque
MouseClick("left", 667, 125)
_pause(6)
; Sortir banque
journalMsg("On ressort de la banque")
MouseClick("left", $posSortieBanque[0], $posSortieBanque[1])
_pause(6)
EndIf
EndFunc

Func _allerBanque()
journalMsg("Debut trajet aller banque")
$trajetState = 1
$stepDMap = 0
Do
; On va a la destination enregistree
if $deplacementsMap[$stepDMap] = "haut" Then
_goMap("haut")
ElseIf $deplacementsMap[$stepDMap] = "bas" Then
_goMap("bas")
ElseIf $deplacementsMap[$stepDMap] = "gauche" Then
_goMap("gauche")
Elseif $deplacementsMap[$stepDMap] = "droite" Then
_goMap("droite")
EndIf
$stepDMap = $stepDMap + 1
Until $deplacementsMap[$stepDMap] = "" Or $botOn = 0
$trajetState = 0
EndFunc

Func _retourBanque()
journalMsg("Debut trajet retour banque")
$trajetState = 2
Do
; On fait tout a l'envers pour revenir sur nos pas
$stepDMap = $stepDMap - 1
if $deplacementsMap[$stepDMap] = "haut" Then
_goMap("bas")
ElseIf $deplacementsMap[$stepDMap] = "bas" Then
_goMap("haut")
ElseIf $deplacementsMap[$stepDMap] = "gauche" Then
_goMap("droite")
Elseif $deplacementsMap[$stepDMap] = "droite" Then
_goMap("gauche")
EndIf
Until $stepDMap = 0 Or $botOn = 0
$trajetState = 0
journalMsg("On est revenus sur la map de fauche.")
EndFunc

Func _goMap($direction)
$erreur = 0
$continuer = 0
If $botOn = 1 Then ; Seulement si le bot marche
if $direction = "gauche" Then
Do
$yRandom = Random($maxMapHaut + 30, $maxMapBas - 30)
MouseMove($maxMapGauche, $yRandom)
sleep(500)
PixelSearch($maxMapGauche, $yRandom - 15, $maxMapGauche + 15, $yRandom + 15, $theOrange)
if Not @error Then
$continuer = 1
sleep(500)
MouseClick("left", $maxMapGauche, $yRandom)
_DMapAttente()
Else
$erreur = $erreur + 1
EndIf
Until $continuer = 1 Or $erreur = 15

ElseIf $direction = "droite" Then
Do
$yRandom = Random($maxMapHaut + 30, $maxMapBas - 30)
MouseMove($maxMapDroite, $yRandom)
sleep(500)
PixelSearch($maxMapDroite - 15, $yRandom - 15, $maxMapDroite, $yRandom + 15, $theOrange) ; A droite donc rectangle de search a gauche
if Not @error Then
$continuer = 1
sleep(500)
MouseClick("left", $maxMapDroite, $yRandom)
_DMapAttente()
Else
$erreur = $erreur + 1
EndIf
Until $continuer = 1 Or $erreur = 15

ElseIf $direction = "haut" Then
Do
$xRandom = Random($maxMapGauche + 30, $maxMapDroite - 50)
MouseMove($xRandom, $maxMapHaut)
sleep(500)
PixelSearch($xRandom - 15, $maxMapHaut, $xRandom + 15, $maxMapHaut +15, $theOrange) ; En bas donc rectangle de search au dessus
if Not @error Then
$continuer = 1
sleep(500)
MouseClick("left",$xRandom, $maxMapHaut)
_DMapAttente()
Else
$erreur = $erreur + 1
EndIf
Until $continuer = 1 Or $erreur = 15

Elseif $direction = "bas" Then
Do
$xRandom = Random($maxMapGauche + 50, $maxMapDroite - 50)
MouseMove($xRandom, $maxMapBas)
sleep(500)
PixelSearch($xRandom - 15, $maxMapBas - 15, $xRandom + 15, $maxMapBas, $theOrange) ; En bas donc rectangle de search au dessus
if Not @error Then
$continuer = 1
sleep(500)
MouseClick("left",$xRandom, $maxMapBas)
_DMapAttente()
Else
$erreur = $erreur + 1
EndIf
Until $continuer = 1 Or $erreur = 15
EndIf
If $erreur = 15 Then
stopBot("Impossible de changer de map")
EndIf
EndIf
EndFunc

Func _DMapAttente()
Local $tryAgain = 0
Local $i = 0
$miniMap = PixelChecksum(325, 530, 370, 565)
Do
$i = $i + 1
_pause("1")
_allVerifs()

; On reessaie si ça dure trop longtemps !
If $i = 25 Then
; Si on etait en trajet, on recommence la derniere action
If $trajetState = 1 Then
$sortieDeCombat = 1
$stepDMap = $stepDMap - 1
journalMsg("On reessaie (" & $stepDMap & "e etape)")
ElseIf $trajetState = 2 Then
$sortieDeCombat = 1
$stepDMap = $stepDMap + 1
journalMsg("On reessaie (" & $stepDMap & "e etape)")
EndIf
$tryAgain = 1
EndIf

Until $minimap <> PixelChecksum(325, 530, 370, 565) Or $botOn = 0 Or $sortieDeCombat = 1 Or $tryAgain = 1

$sortieDeCombat = 0
_pause("2")
EndFunc



;=== Fonctions d'affichages =
;============================
Func _enableModeBanque()
$guiPreviousState = GUICtrlGetState ($btnBas)
if $guiPreviousState = 144 Then
GUICtrlSetState( $btnBas, $GUI_ENABLE)
GUICtrlSetState( $btnHaut, $GUI_ENABLE)
GUICtrlSetState( $btnGauche, $GUI_ENABLE)
GUICtrlSetState( $btnDroite, $GUI_ENABLE)
GUICtrlSetState( $btnEffacerJournalD, $GUI_ENABLE)
GUICtrlSetState( $journalD, $GUI_ENABLE)
GUICtrlSetState( $radioBanqueAstrub, $GUI_ENABLE)
GUICtrlSetState( $radioBanqueBonta, $GUI_ENABLE)
EndIf
EndFunc

Func _disableModeBanque()
$guiPreviousState = GUICtrlGetState ($btnBas)
if $guiPreviousState = 80 Then
GUICtrlSetState( $btnBas, $GUI_DISABLE)
GUICtrlSetState( $btnHaut, $GUI_DISABLE)
GUICtrlSetState( $btnGauche, $GUI_DISABLE)
GUICtrlSetState( $btnDroite, $GUI_DISABLE)
GUICtrlSetState( $btnEffacerJournalD, $GUI_DISABLE)
GUICtrlSetState( $journalD, $GUI_DISABLE)
GUICtrlSetState( $radioBanqueAstrub, $GUI_DISABLE)
GUICtrlSetState( $radioBanqueBonta, $GUI_DISABLE)
EndIf
EndFunc

Func _enableModeCombat()
$guiPreviousState = GUICtrlGetState ($radioAtkKey1)
if $guiPreviousState = 144 Then
GUICtrlSetState( $lblAttaqueKey, $GUI_ENABLE)
GUICtrlSetState( $radioAtkKey1, $GUI_ENABLE)
GUICtrlSetState( $radioAtkKey2, $GUI_ENABLE)
GUICtrlSetState( $radioAtkKey3, $GUI_ENABLE)
GUICtrlSetState( $lblNbLancerTour, $GUI_ENABLE)
GUICtrlSetState( $inputNbLancerTour, $GUI_ENABLE)
GUICtrlSetState( $lblPortee, $GUI_ENABLE)
GUICtrlSetState( $lblNbPM, $GUI_ENABLE)
GUICtrlSetState( $inputPM, $GUI_ENABLE)
GUICtrlSetState( $inputPortee, $GUI_ENABLE)
GUICtrlSetState( $chkbInvocs, $GUI_ENABLE)
EndIf
EndFunc

Func _disableModeCombat()
$guiPreviousState = GUICtrlGetState ($radioAtkKey1)
if $guiPreviousState = 80 Then
GUICtrlSetState( $lblAttaqueKey, $GUI_DISABLE)
GUICtrlSetState( $radioAtkKey1, $GUI_DISABLE)
GUICtrlSetState( $radioAtkKey2, $GUI_DISABLE)
GUICtrlSetState( $radioAtkKey3, $GUI_DISABLE)
GUICtrlSetState( $lblNbLancerTour, $GUI_DISABLE)
GUICtrlSetState( $inputNbLancerTour, $GUI_DISABLE)
GUICtrlSetState( $lblPortee, $GUI_DISABLE)
GUICtrlSetState( $lblNbPM, $GUI_DISABLE)
GUICtrlSetState( $inputPM, $GUI_DISABLE)
GUICtrlSetState( $inputPortee, $GUI_DISABLE)
GUICtrlSetState( $chkbInvocs, $GUI_DISABLE)
EndIf
EndFunc



; === Fonctions d'informations =
; ==============================
Func _infoMode()
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 & _
". Mode Classique : " & @CRLF & _
"Quand l'inventaire est plein le bot s'arrete." & @CRLF & @CRLF & _
". Mode Farmer : " & @CRLF & _
"Quand l'inventaire est plein le bot supprime le ble de l'inventaire puis continue de faucher." & @CRLF & @CRLF & _
". Mode Banque : " & @CRLF & _
"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 & _
"D'autres modes a suggerer ? Contactes moi : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! !")
EndFunc

Func _infoOptions()
MsgBox("64","Options", "Pour repondre aux besoins qu'avaient de nombreuses personnes, j'ai installé trois options. " & @CRLF & @CRLF & _
". Slow :" & @CRLF & _
"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 & _
". Hyper Slow :" & @CRLF & _
"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 & _
". Debug :" & @CRLF & _
"J'ai souvent hesiter entre un journal qui en disait beaucoup ou un journal plus leger qui ne rentrait pas dans les details." & @CRLF & _
"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 & _
"D'autres options a suggerer ? Contactes moi : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! !")
EndFunc

Func _infoBanque()
MsgBox("64","Mode Banque", "Pour que ce mode marche, tu dois activer ta minimap et desactiver le zoom d'interieur !" & @CRLF & @CRLF & _
"Le trajet a enregistrer ici est le trajet (MAP SPOT DE CEREALEA) -> (MAP BANQUE)" & @CRLF & _
"Levais bot reviendra au spot de cereales en suivant le meme trajet a l'envers." & @CRLF & @CRLF & _
"Des questions, idees ou des suggestions ? Envoies moi un mail : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! !")
EndFunc

Func _infoCombattre()
MsgBox("64","Mode Combat v1", "Desactives la transparence ! D'autres choses sont a savoir : " & @CRLF & @CRLF & _
"Raccourci 1 : Bouton d'attaque au corps a corps (²)" & @CRLF & _
"Raccourci 2 : Premier sort (é)"& @CRLF & _
'Raccourci 3 : Deuxieme sort (")'& @CRLF & @CRLF & _
". Concernant l'attaque : " & @CRLF & _
"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 & _
"Il est preferable de ne pas etre en groupe" & @CRLF & _
"Des suggestions ? Contactes moi : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! !")
EndFunc

Func _infoCereals()
MsgBox("64","Dofbot","J'ai ajouté quelques céréales moi meme, mais rien ne dit qu'elles fonctionnent chez vous. " & @CRLF & @CRLF & _
"- Blé" & @CRLF & _
"- Orge" & @CRLF & _
"- Houblon" & @CRLF & _
"- Avoine" & @CRLF & _
"- Seigle" & @CRLF & _
"- Chanvre" & @CRLF & _
"- Malt" & @CRLF & _
"- Lin" & @CRLF & @CRLF & _
"+ Absolument tout grace a l'option d'ajout de ressource")
;~ $botOn = 1
;~ _preparatifs()
;~ _deposerBanque()
;~ $botOn = 0
EndFunc



; === Fonctions qui se connectent ===
; ===================================
Func _verifVersion()
; On va chercher deux petits fichiers que j'ai mis en ligne au prealable
$bLien = InetRead("http://harrydotcom.fr/Dofbots/lien.txt",1) ; exemple : "http://bit.ly/JC8BDH"
$bLastVersion = InetRead("http://harrydotcom.fr/Dofbots/version.txt",1) ; exemple : "308"
; On affiche un msg d'erreur si il y a eu un probleme
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")
; On transforme ce qu'on vient de trouver en chaines de caracteres
$lastVersion = BinaryToString($bLastVersion)
$lien = BinaryToString($bLien)
If $lastVersion > $currentVersion Then
$ouvrir_site = MsgBox(64+4, "Dofbot", "Une nouvelle version (" & $lastVersion & ") est en ligne !" & @CRLF & _
"Aller télécharger la nouvelle version?")
If $ouvrir_site = 6 Then
ShellExecute($lien)
Exit
EndIf
EndIf
EndFunc

Func _chargementNews()
$bNews = InetRead("http://harrydotcom.fr/Dofbots/news.txt",1)
If @error Then MsgBox(64,"Dofbot","Impossible de recuperer les News !")
$news = BinaryToString($bNews)
$finalNews = StringSplit($news,"next",1 + 2)
$arraySize = UBound($finalNews)
For $i = 0 To $arraySize - 2 Step + 2
$previousJournalNews = GUICtrlRead($journalNews)
If $previousJournalNews <> "" Then
GUICtrlSetData($journalNews, $finalNews[$i] & @CRLF & $finalNews[$i + 1] & @CRLF & $previousJournalNews)
Else
GUICtrlSetData($journalNews, $finalNews[$i] & @CRLF & $finalNews[$i + 1])
EndIf
Next
EndFunc

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

Virus Scan : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
( Mon ordinateur n'a pas détecté un quelconque virus, puisqu'il y n'y en n'a pas. )
Blog officiel du DofBots : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

Ce n'est évidemment pas moi qui ai crée ce bot !​
 
Last edited:

LyNeCarlat

Membre
Aug 13, 2012
49
0
206
Je l'ai actuellement, et il marche vraiment bien, il retourne à la banque seul, juste pour le trajet, faut mettre le trajet à l'envers, donc depuis la banque et non depuis ta position. ( J'ai fait l'erreur, je l'ai bloqué sur un mur d'Astrub .. )
 

LyNeCarlat

Membre
Aug 13, 2012
49
0
206
On le sait tous sa ... C'est pour sa que j'ai mis l'adresse du blog, ton message n'est pas très utile, mais bon.
 

aQqkz

Membre Banni
Apr 8, 2011
464
0
441
Paris
On le sait tous sa ... C'est pour sa que j'ai mis l'adresse du blog, ton message n'est pas très utile, mais bon.

Ouai peut être, mais à première vue, j'ai eu l'impression que c'est toi qui l'avait créé ...
Je pense que tu devrait le préciser sur ton post ...
 

itachi33

Membre actif
Aug 28, 2011
380
0
321
y a des mise à jours du bot qui peuvent se faire sur le bot, donc mon poste est à jours, merci de ton message
 

damouxx

Nouveau membre
Aug 18, 2012
1
0
201
32
Le mode combat ne marche pour moi. Il ne détecte pas la position, il se met en érreur et se ferme.
 
Dec 4, 2011
680
0
321
Y'a au moins 3 posts similaire. J'vais demander à Harry qu'il vienne créer le posts officiel et vos posts seront supprimés
 

mafiou375

Nouveau membre
Aug 24, 2012
1
0
201
si je le télécharge je ne sai pa comment y fonctionne donc pt me dire comment .



merci ! :D
 

Im_GiGi

Membre
May 30, 2012
9
0
301
Marche du tonnere mais comment on rajoute des ressources, est que ce bot est compatible pour alchimiste ?

---------- Message ajouté à 18h41 ---------- Le message précédent était à 17h24 ----------

Ca fait 40 minutes que je n'arrive pas a ajouter une ressources, je me suis fais alchi' pour test j ai tous bien config' quand je fais ajouter une ressource, je fais un zoom sur une photo de lin ( bien sur pas encore récolter ), je prend les 4 photos différentes, et quand j écris perso puis lancer le curseur de la souris va en haut a gauche et plus rien ...
HEEEEEEEEEEEEEEEEEEEEEELP !
 

Mica59100

Membre
Oct 30, 2010
25
0
561
Bonjour, c'étais pour savoir si on pourrais me renseigner au sujet de mon probleme?

J'écris dans ressources : blé
et dans le journal que je le lance ca m'ecris "
20:41:30:617 : Mini box grise a droite du curseur introuvable (4 fois sur 100 max) +
20:41:30:595 : Arret en cours... + Appui sur Echap
20:41:29:188 : Ressource introuvable (3 fois sur 100 max) +
20:41:28:156 : Ressource introuvable (2 fois sur 100 max) +
20:41:27:133 : Mini box grise a droite du curseur introuvable (1 fois sur 100 max) +
20:41:25:620 : Demarrage du bot + "
ect...

Merci, pour ceux qui voudraient bien m'aider :)
 
Last edited:
Status
Not open for further replies.