ในAutoit เราสามารถหามอนสเตอร์(เป้าหมายต่อไป) ก่อนที่จะกด KEY ใดๆให้โจมตี โดยวิธีอื่นนอกจาก สแกนและอ้างอิงจากค่าสีที่หน้าจอ หรือไม่ครับ
ถ้ามีพอจะมีบทความหรือตัวอย่างให้ศึกษา บ้างไหมครับ
ถ้ามีพอจะมีบทความหรือตัวอย่างให้ศึกษา บ้างไหมครับ
aut พิมพ์ว่า:อานนี้ใช้เป่า [You must be registered and logged in to see this link.]
ขอบคุณครับPOS พิมพ์ว่า:ถ้าแอดเดรสเปลี่ยนทุกครั้งที่เข้าเกมส์ใหม่ ต้องหาค่าพ้อยเตอร์ของแอดเดรสนั้น (ดูวิธีที่บทความหน้าบล็อก)
MON3 DIE
FIND ITEM MON3
Chack Status <----------ทำไมไม่รอเงื่อนไข $Status =0 ก่อน ค่อยCreate Mon
Create MON1
Confarim
Go Attack
MON1 DIE
FIND ITEM MON1
Chack Status
Create MON2
Confarim
Go Attack
MON2 DIE
FIND ITEM MON2
#RequireAdmin
#include <NomadMemoryPSsix.au3>
Opt("MouseClickDownDelay", 200)
Opt("SendKeyDownDelay", 500)
HotKeySet("{ESC}", "stop")
WinWaitActive("XXXXXXX ")
Global $Target = "0x0066119C" ;ค่าพ้อยเตอร์ที่ต้องนำไปใช้คู่กับค่าออฟเซ็ต
Global $ADMON1="0x01350B88"
Global $ADMON2="0x01350418"
Global $ADMON3="0x01350F40"
Global $ADStatus ="0x01349158"
Global $ADHP="0x01349480"
;~ Global $ADMP="0x01349484"
Global $Offset[2]
$Offset[0] = 0 ; ใส่ 0 เป็นค่าเริ่ต้นทุกทครั้ง
$Offset[1] = 0x3CC ; 0x30 เป็นค่าออฟเซ็ตเลขฐาน 16
$memopen = _MEMORYOPEN(ProcessExists("XXXXXXX")) ;เปลี่ยนชื่อไฟล์เกม
If $memopen = 0 Then
ConsoleWrite('ผิดพลาดไม่มีโปรแกรม =' & $memopen & @CRLF)
Exit
EndIf
$MON1 = _MEMORYREAD(($ADMON1), $memopen) ;ค่าที่อ่านได้จะเก็บไว้ในตัวแปร
$MON2 = _MEMORYREAD(($ADMON2), $memopen) ;ค่าที่อ่านได้จะเก็บไว้ในตัวแปร
$MON3 = _MEMORYREAD(($ADMON3), $memopen) ;ค่าที่อ่านได้จะเก็บไว้ในตัวแปร
$Status = _MEMORYREAD(($ADStatus), $memopen) ;ค่าที่อ่านได้จะเก็บไว้ในตัวแปร
$HP = _MEMORYREAD(($ADHP), $memopen) ;ค่าที่อ่านได้จะเก็บไว้ในตัวแปร
;~ $MP = _MEMORYREAD(($MP), $memopen) ;ค่าที่อ่านได้จะเก็บไว้ในตัวแปร
While 1
Attack()
CheckHP()
WEnd
Func Attack()
If $Status = 0 Then
ConsoleWrite('MON3 DIE' & @CRLF)
ConsoleWrite('FIND ITEM MON3' & @CRLF)
Send("{F2}")
Sleep(500)
Send("{F2}")
Sleep(500)
_MemoryPointerWrite($Target, $memopen, $Offset, "0")
Sleep(300)
ConsoleWrite('Chack Status' & @CRLF)
_MemoryPointerWrite($Target, $memopen, $Offset, $MON1) ;เขียนค่า ลงไป
Sleep(500)
ConsoleWrite('Create MON1'& @CRLF)
MouseClick("right",932,453,1,10)
Sleep(500)
ConsoleWrite('Confarim'& @CRLF )
Send("{F1}")
Sleep(500)
ConsoleWrite('Go Attack'& @CRLF)
EndIf
If $Status = 0 Then
ConsoleWrite('MON1 DIE' & @CRLF)
ConsoleWrite('FIND ITEM MON1' & @CRLF)
Send("{F2}")
Sleep(500)
Send("{F2}")
Sleep(500)
_MemoryPointerWrite($Target, $memopen, $Offset, "0")
Sleep(500)
ConsoleWrite('Chack Status' & @CRLF)
_MemoryPointerWrite($Target, $memopen, $Offset, $MON2) ;เขียนค่า ลงไป
Sleep(500)
ConsoleWrite('Create MON2'& @CRLF)
MouseClick("right",932,453,1,10)
Sleep(500)
ConsoleWrite('Confarim'& @CRLF )
Send("{F1}")
Sleep(500)
ConsoleWrite('Go Attack'& @CRLF)
EndIf
If $Status = 0 Then
ConsoleWrite('MON2 DIE' & @CRLF)
ConsoleWrite('FIND ITEM MON2' & @CRLF)
Send("{F2}")
Sleep(500)
Send("{F2}")
Sleep(500)
_MemoryPointerWrite($Target, $memopen, $Offset, "0")
Sleep(500)
ConsoleWrite('Chack Status' & @CRLF)
_MemoryPointerWrite($Target, $memopen, $Offset, $MON3) ;เขียนค่า ลงไป
Sleep(500)
ConsoleWrite('Create MON3'& @CRLF)
MouseClick("right",932,453,1,10)
Sleep(500)
ConsoleWrite('Confarim'& @CRLF )
Send("{F1}")
Sleep(500)
ConsoleWrite('Go Attack'& @CRLF)
EndIf
_MEMORYCLOSE($memopen) ;ปิดการอ่านหน่วยความจำ นำไปวางไว้ท้ายสุดเมื่อไม่ต้องการอ่านหรือเขียนแล้ว เช่น ตอนปิดโปรแกรม
EndFunc
Func CheckHP()
If $HP <=300 Then
Send("{F3}")
ConsoleWrite('USE ITEM HP' & @CRLF)
Sleep(200)
Else
ConsoleWrite('HEALTHY' & @CRLF)
Sleep(200)
EndIf
EndFunc
Func stop()
Exit
EndFunc
aut พิมพ์ว่า:กดบัฟ5นาทีกดคั้งเอาใส่ไว้ตงหัวสคิปนะ
AdlibRegister("buff", 300000)
func buff()
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
Send("1") ;ใส่ปุ่มบัฟ
Send("2") ;ใส่ปุ่มบัฟ
EndFunc
aut พิมพ์ว่า:บางทีมอนมันอยู่ไกลเกินไงนาย ลองสั่งกดเดินไปขึ้นบนลงล่างอะไรแบบนี้ก่อนสังโจมตีอ่านะอาจจะไม่มีปัญหา
|
|