Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Dofus Bot - AutoIT


Rekomendowane odpowiedzi

Opublikowano

Witam, jakiś czas temu pisałem bota do gry Dofus w AutoIT. Przestałem grać w tą grę, więc przestałem pisać tego bota. Coprawda nie jest jakiś fajny, ale działać działa. Ostrzegam, że program jest jeszcze nieskończony. Może komuś się przyda.

-Bot potrafi chodzić po mapie (po wcześniejszym wyznaczeniu trasy)

-Ścinać drzewa

-Idzie do banku i chowa drewno po czym wraca na resp (drewno musi być w pasku szybkiego uruchamiania tam na dole)

-Jedynie czego nie umie to walczyć ;p (do tego stworzyłem tą funkcje liczenia dystansu - na tego podstawie można zrobić rysowanie lini względem potwora, a postacią dzięki czemu postać będzie castować czary w tym kierunku na danym pos) - to jest do zrobienia

- Usuwa wyskakujące okienka - do skonfigurowania samemu :) (wystarczy posy zapisać miejsc gdzie będą krzyżyki lub decline na okienkach)

- Zresztą wszystkie funkcje są podpisane, więc wszystko wiadomo co bot potrafi i co już jest gotowe.

 

Bot:

 

 

#include <array.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <GuiStatusBar.au3>
#include <ImageSearch.au3>
#include <Nomad.au3>
#include <WinAPI.au3>
HotKeySet("{F6}","_Main")
HotKeySet("{F7}","_CzyscLog")
Global $sek_wait = 12.4*1000 ;4*1000 - 4 sekundy
Global $KtoraMapa = 0, $MapPosX = 0, $IdOkno = 0, $i = 0, $j = 0, $IdFight = 0, $IdPods = 0, $IdCut = 0, $Error = 0, $CzasSpania = 0, $CzyZnalazlo = 0, $Akt_pods = 0, $Pods_max = 0, $KolorDrzewa = ""
Global $Add_pods_akt = "0x22C8C578"
Global $Add_pods_max= "0x22C8C57C"
Global $JakieDrzewo = "Chestnut"
Global $pid = ProcessExists("DofusMod.exe")

Global $kolorAsh = "0x473A19"
Global $kolorWalnut = "0xF3FF04"
Global $kolorChestnut = "0x454114"
Global $kolorFlax = "0xA49A75"

Global $KolorAkcji = "0xFF6100"
Global $KolorLevelUp = "0xF1671A"
Global $KolorBialy = "0xE0EEFF"
Global $fPaused = False
Global $fRunning = True
Global $fCounting = False
Global $a, $b, $c
Global $GUI = GUICreate("Logi", 310, 390, 0, 40, BitOr($WS_BORDER, $WS_POPUP), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
Global $Logi = GUICtrlCreateEdit("", 0, 0, 310, 320, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
Global $ButtonUruchom = GUICtrlCreateButton("Uruchom bota", 8, 325, 83, 25, $WS_GROUP)
Global $ButtonPauza = GUICtrlCreateButton("Pauza", 104, 325, 75, 25, $WS_GROUP)
Global $ButtonZakoncz = GUICtrlCreateButton("Zakończ", 216, 325, 75, 25, $WS_GROUP)
Global $StatusBar1 = _GUICtrlStatusBar_Create($GUI)
Dim $StatusBar1_PartsWidth[2] = [70, -1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "By exevan", 0)
_GUICtrlStatusBar_SetText($StatusBar1, @ & "Wersja 1.0", 1)
Opt("GUIOnEventMode", 1)
GUICtrlSetOnEvent($ButtonPauza, "_BotPause")
GUICtrlSetOnEvent($ButtonZakoncz, "_Exit")
GUICtrlSetOnEvent($ButtonUruchom, "_Main")
GUISetState(@SW_SHOW)

While $fRunning
    If Not $fPaused Then
        If $fCounting Then
			_SprawdzWszystko()
			if $IdCut = 1 then
				_SzukajDrzewa()
				if $CzyZnalazlo = 1 then
					_Scinaj()
				else
					ContinueLoop
				endif
			endif
        EndIf
    EndIf
    _Spij(0.1)
WEnd

;====================
;===Główne Funkcje===
;====================

Func _Main()
	If _CzyPauza() Then Return 
    $fCounting = True
EndFunc

Func _BotPause()    
    $fPaused = Not $fPaused
	if not $fPaused then
		_NapiszLog("Bot został wznowiony,")
		GUICtrlSetData($ButtonPauza,"Pauza")
	else
		_NapiszLog("Bot jest zapauzowany.")
		GUICtrlSetData($ButtonPauza,"Wznów")
	endif
EndFunc

Func _CzyPauza()
    If $fPaused Then
        _NapiszLog("Nie możesz uruchomić bota.")
        Return True
    EndIf
    Return False
EndFunc   ;==>_CheckIfPaused

Func _Exit()
	$fRunning = False
EndFunc

Func _NapiszLog($TekstLoga)
	$PoprzednieLogi= GUICtrlRead($Logi)
	GUICtrlSetData($Logi, @HOUR & ":" & @ & ":" & @ & " - " & $TekstLoga& @CRLF & $PoprzednieLogi)
EndFunc

;=================
;===Zmiana Mapy===
;=================

Func _ChangeMap()
	$JakaMapa = IniRead ( "Mapa.ini", "Trasa", $KtoraMapa,"Nie ma klucza" )
	if $JakaMapa <> "Nie ma klucza" then
		_ZmienMape($JakaMapa, "Idę w "&$JakaMapa)
		$KtoraMapa = $KtoraMapa + 1
	else
		$KtoraMapa = 0
	endif
EndFunc

Func _ZmienMape($Cel, $OpisCelu = "")
	Local $CelID
	Local $Kontynuuj = 0
	Local $KolorStrzalki = "0xF48D26"
	Local $SzukajStrzalkiX1[4] = [1569, 426, 325, 367]
	Local $SzukajStrzalkiX2[4] = [1593, 1519, 358, 1435]
	Local $SzukajStrzalkiY1[4] = [61, 881, 69, 24]
	Local $SzukajStrzalkiY2[4] = [853, 895, 862, 39]
	
	if $Cel = "Prawo" then $CelID = 0
	if $Cel = "Dół" then $CelID = 1
	if $Cel = "Lewo" then $CelID = 2
	if $Cel = "Góra" then $CelID = 3
	
	Do
		Local $RandomX = Random($SzukajStrzalkiX1[$CelID],$SzukajStrzalkiX2[$CelID],1)
		Local $RandomY = Random($SzukajStrzalkiY1[$CelID],$SzukajStrzalkiY2[$CelID],1)
		MouseMove($RandomX,$RandomY,5)
		_Spij(1)
		$ZnajdzStrzalke = PixelSearch(324, 21,1589, 897, $KolorStrzalki)
		if not @ then
			_NapiszLog($OpisCelu)
			mouseclick("left")
			$Kontynuuj = 1
			$Error = 0
		else
			If Not $fPaused Then ;Only do other stuff when we are not paused
				If $fCounting Then
					_NapiszLog("Nie znalazło strzałki.")
					_Spij(2)
					continueloop
				endif
			endif
		endif
	Until $Kontynuuj = 1
	_Spij(10)
EndFunc

Func Pixel_Distance($x1, $y1, $x2, $y2)
    If $x2 = $x1 And $y2 = $y1 Then
        Return 0
    Else
        $a = $y2 - $y1
        $b = $x2 - $x1
        $c = Sqrt($a * $a + $b * $
        Return $c
    EndIf
EndFunc

Func _Spij($CzasSpania)
	sleep($CzasSpania*1000)
EndFunc

Func _SprawdzOkienka()
	_UsunOkienka(1082, 592, "Challenge")
	_UsunOkienka(1181, 582, "Exchange")
	_UsunOkienka(679, 608, "Invite to group")
	_UsunOkienka(1553, 98, "Inventory")
	_UsunOkienka(1564, 72, "Mapa")
	_UsunOkienka(925, 597, "LevelUp")
EndFunc

Func _UsunOkienka($x, $y, $powod)
	$kolor = PixelGetColor($x, $y)
	if $kolor = $KolorAkcji or $kolor = $KolorLevelUp Then
		MouseClick("left",$x, $y)
		_NapiszLog("Usunąłem okienko (" & $powod & ")")
		$IdOkno = 0
	EndIf
EndFunc

Func _SprawdzWszystko()
    If Not $fPaused Then ;Only do other stuff when we are not paused
        If $fCounting Then
			_CzyWalka()
			if $IdFight = 1 then
				_Walcz()
			else
				_SprawdzPods()
				if $IdPods = 1 then
					;_IdzBank()
				else
					_SprawdzOkienka()
					if $IdOkno = 0 then
						$IdCut = 1
					endif
				endif
			endif
        EndIf
    EndIf
EndFunc

Func _CzyWalka()
    If Not $fPaused Then ;Only do other stuff when we are not paused
        If $fCounting Then
			$CzyWalka = PixelGetColor(926, 1005)
			if $CzyWalka = $KolorAkcji then
				$IdFight = 1
			else
				$IdFight = 0
			endif
		endif
	endif
EndFunc

Func _PasujTure()
    If Not $fPaused Then
        If $fCounting Then
			$KolorPassTura = PixelGetColor(965, 897)
			if $KolorPassTura = "0xFD6711" then
				MouseClick("left", 960, 1011,1)
				_NapiszLog("Spasowałem ture")
				_Spij(1)
			endif
		endif
	endif		
EndFunc

Func _CzyscLog()
	GUICtrlSetData($Logi, "")
EndFunc

Func _SprawdzPods()
    If Not $fPaused Then
        If $fCounting Then
			$Memory = _MemoryOpen($pid)
			$Akt_pods = _MemoryRead($Add_pods_akt,$Memory)
			$Pods_max = _MemoryRead($Add_pods_max,$Memory)
			if $Akt_pods+20 > $Pods_max then
				;$IdPods = 1
			else
				$IdPods = 0
			endif
		endif
	endif
EndFunc

Func _JakieDrzewo()
	if $JakieDrzewo = "Walnut" then
		$KolorDrzewa = $kolorWalnut
	endif
	if $JakieDrzewo = "Ash" then
		$KolorDrzewa = $kolorAsh
	endif
	if $JakieDrzewo = "Chestnut" then
		$KolorDrzewa = $kolorChestnut
	endif
	if $JakieDrzewo = "Flax" then
		$KolorDrzewa = $kolorFlax
	endif
EndFunc

Func _SzukajDrzewa()
    If Not $fPaused Then ;Only do other stuff when we are not paused
        If $fCounting Then
			_JakieDrzewo()
			Global $PosDrzewa = PixelSearch(389, 76,1540, 870,$KolorDrzewa,1)
			if not @ then
				$j=$j+1
				$Error = 0
				$CzyZnalazlo = 1
			else
				$CzyZnalazlo = 0
				$Error = $Error+1
				_NapiszLog("["&$Error&"/10] Nie znalazłem drzewa.")			
				if Mod($error,10)=0 then
					_ChangeMap()
				endif
			endif
		endif
	endif
EndFunc

Func _Komunikat()
    If Not $fPaused Then
        If $fCounting Then
			_NapiszLog("Ścięte drzewa: "&$j&@CRLF&"Pods: "&$Akt_pods&"/"&$Pods_max)
			For $ile = 0 To ($sek_wait/1000)+5 Step +1
				If Not $fPaused Then
					If $fCounting Then
						if isArray($PosDrzewa) then
							ToolTip("Czas: "&$ile&"/"&($sek_wait/1000)+5,0,20)
							_Spij(1)
						endif
					endif
				endif
			Next		
		endif
	endif
EndFunc

Func _Scinaj()
    If Not $fPaused Then ;Only do other stuff when we are not paused
        If $fCounting Then
			if $CzyZnalazlo = 1 then
				mousemove($PosDrzewa[0],$PosDrzewa[1],5)
				$CzyBialy = PixelSearch(389, 76,1540, 870,$KolorBialy,1)
				if not @ then
					sleep(300)
					MouseClick("left")
					_Komunikat()
				else
					_SzukajDrzewa()
				endif
			endif
		endif
	endif
EndFunc

Func _IdzBank()
	_NapiszLog("Idę do banku.")
	MouseClick("left",1095, 928,2)
	sleep(9000)
	MouseClick("left",919, 881,1)
	sleep(8000)
	MouseClick("left",919, 881,1)
	sleep(8000)
	MouseClick("left",919, 881,1)
	sleep(8000)
	MouseClick("left",1217, 403,1)
	sleep(6000)
	MouseClick("left",1121, 469,1)
	sleep(500)
	MouseClick("left",1182, 505,1)
	sleep(1000)
	MouseClick("left",524, 431,1)
	sleep(1000)
	MouseClickDrag("left", 1141, 928, 388, 324)
	Sleep (500)
	MouseClick("left", 584, 297, 1)
	Sleep (500)
	_NapiszLog("Wracam na resp drzew.")
	MouseClick("left", 1552, 186, 1)
	Sleep (500)	
	MouseClick("left", 721, 648, 1)
	Sleep (5000)	
	MouseClick("left", 891, 31, 1)
	Sleep (8000)
	MouseClick("left", 891, 31, 1)
	Sleep (8000)
	MouseClick("left", 891, 31, 1)
	Sleep (8000)
	MouseClick("left", 954, 431, 1)
	Sleep (500)
	MouseClick("left", 992, 469, 1)
	Sleep (4000)	
	MouseClick("left", 854, 450, 2)
	Sleep (7000)
	$KtoraMapa = 0
	_Scinaj()
	sleep(1000)
EndFUnc
 

 

 

 

Wyznacznik mapy (potrzebny do tego aby ustalić trasę jaką ma pokonywać postać - bot głównie zrobiony pod automatyczne zbieranie drzewa)

 

 

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\Moje - informatyka\AutoIT\Dofus Lumberjack Bot\Wyznacznik trasy Form.kxf
$Form1 = GUICreate("Dofus - Wyznacznik trasy", 294, 278, 333, 302)
$Group1 = GUICtrlCreateGroup("Wyznacz trasę", 8, 0, 281, 273)
$Trasa = GUICtrlCreateEdit("", 144, 8, 137, 217, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
$GoUp = GUICtrlCreateButton("/\", 64, 24, 25, 33, $WS_GROUP)
$GoRight = GUICtrlCreateButton(">", 88, 56, 33, 25, $WS_GROUP)
$GoDown = GUICtrlCreateButton("\/", 64, 80, 25, 33, $WS_GROUP)
$GoLeft = GUICtrlCreateButton("<", 32, 56, 33, 25, $WS_GROUP)
$Reset = GUICtrlCreateButton("•", 64, 56, 25, 25, $WS_GROUP)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
Dim $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "Created by exevan", 0)
$Label1 = GUICtrlCreateLabel("Hotkey", 16, 104, 38, 17)
$Label2 = GUICtrlCreateLabel("Góra - strzałka w górę", 16, 128, 109, 17)
$Label3 = GUICtrlCreateLabel("Dół - strzałka w dół", 16, 152, 99, 17)
$Label4 = GUICtrlCreateLabel("Lewo - strzałka w lewo", 16, 176, 113, 17)
$Label5 = GUICtrlCreateLabel("Prawo - strzałka w prawo", 16, 200, 124, 17)
$Zapisz = GUICtrlCreateButton("Zapisz", 16, 224, 123, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Global $deplacementsMap[100], $stepDMap = 0, $WszystkieWpisy = ""
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $GoUp
			_WyznaczTrase("Góra")
		Case $GoDown
			_WyznaczTrase("Dół")
		Case $GoLeft
			_WyznaczTrase("Lewo")
		Case $GoRight
			_WyznaczTrase("Prawo")
		Case $Reset
			_Resetuj()
		Case $Zapisz
			_Mapa(1)
	EndSwitch
WEnd

Func _Resetuj()
	GUICtrlSetData($Trasa,"")
	$WszystkieWpisy = ""
	$stepDMap = 0
EndFunc

Func _WyznaczTrase($CelTrasy)
	_Mapa($CelTrasy)
	$deplacementsMap[$stepDMap] = $CelTrasy
	$stepDMap = $stepDMap + 1
EndFunc

Func _Mapa($Cel)
	$PoprzednieWpisy = GUICtrlRead ($Trasa)
	if $Cel = 1 then
		_Zapisz($WszystkieWpisy)
	else
		$WszystkieWpisy = $WszystkieWpisy&$stepDMap&"="&$Cel&@LF
		if $PoprzednieWpisy = "" Then
			GUICtrlSetData ($Trasa, $stepDMap & ". " & $Cel)
		Else
			GUICtrlSetData ($Trasa, $stepDMap & ". " & $Cel & @CRLF & $PoprzednieWpisy)
		EndIf	
	endif
EndFunc

Func _Zapisz($Wpisy)
	IniWriteSection("Mapa.ini", "Trasa", $Wpisy)
	GUICtrlSetData($Zapisz,"Zapisane")
	sleep(800)
	GUICtrlSetData($Zapisz,"Zapisz")
EndFunc 

 

 

Osobiście pomagam tylko na PW lub e-mail


-----------------------------------------------------------------


https://github.com/smietanka

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...