ฟอรั่มของบล็อก http://pssix.blogspot.com


พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

Share

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 16/09/11, 02:35 pm

ในAutoit เราสามารถหามอนสเตอร์(เป้าหมายต่อไป) ก่อนที่จะกด KEY ใดๆให้โจมตี โดยวิธีอื่นนอกจาก สแกนและอ้างอิงจากค่าสีที่หน้าจอ หรือไม่ครับ
ถ้ามีพอจะมีบทความหรือตัวอย่างให้ศึกษา บ้างไหมครับ

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by POS on 17/09/11, 02:18 pm

หัวข้อกับคำถามขัดแย้งกัน

1. หัวข้อ ต้องการหามอนเตอร์โดยไม่ใช้สี

2. แต่คำถามเป็นการหามอนโดยใช้สี

ตกลงคือคุณต้องการจะทำอะไร

1. หามอนเตอร์โดยไม่ใช้สีลองดูวิดีโอตัวอย่างในการอ่าน memory ในกระทู้ด้านล่างครับมีตัวอย่างหนึ่ง ที่คุณ aut นำมาโฟสมีวิธีการหาชื่อมอนเตอร์โดยหาจาก memory น่าจะนำมาประยุกต์ใช้ได้ (แต่ต้องรู้วิธีหาในเกมส์ที่คุณจะใช้ด้วย เพราะแต่ละเกมส์ไม่เหมือนกัน)

2. ในข้อนี้คำถามไม่ชัดเจน ถ้าต้องการหาตำแหน่งของมอนเตอร์ทั้งหน้าจอก่อน แล้วไล่คลิกทีหลัง มีคนเคยถามครับ ลองไล่หาอ่านดูจากกระทู้ (น่าจะอยู่ในกระทู้หน้าแรกๆ)


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 18/09/11, 12:52 pm

ขอบคุณครับ

aut
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by aut on 19/09/11, 06:45 pm

อานนี้ใช้เป่า [You must be registered and logged in to see this link.]

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 19/09/11, 11:29 pm

aut พิมพ์ว่า:อานนี้ใช้เป่า [You must be registered and logged in to see this link.]

ขอบคุณครับ ตามLink คือการ ใช้ค่าสีครับ แล้วคลิกที่ ค่าสีครับ

แต่แนวคิดผม ผมจะลองทำแบบ หาIDมอนรอบๆตัวละครจาก Memory เกมโดยตรงเลย >>> แล้วเขียนID มอน ไปที่ Address Target ที่จะโจมตี >>> send KeY Attack

ระบบของเกมที่เล่นคร่าวๆคือ นำ ID มอนเขียนใน Address Target จะเป็นการเลือกเป้าหมาย

สิ่งที่ หาได้ตอนนี้ คือAddress ที่เก็บค่าของ ID มอนรอบตัว

แต่ปัญหาคือ Address Target ของมันเปลี่ยนไปเรื่อย เข้าเกมทีเปลี่ยนที




POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by POS on 20/09/11, 08:44 am

ถ้าแอดเดรสเปลี่ยนทุกครั้งที่เข้าเกมส์ใหม่ ต้องหาค่าพ้อยเตอร์ของแอดเดรสนั้น (ดูวิธีที่บทความหน้าบล็อก)


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 20/09/11, 12:33 pm

POS พิมพ์ว่า:ถ้าแอดเดรสเปลี่ยนทุกครั้งที่เข้าเกมส์ใหม่ ต้องหาค่าพ้อยเตอร์ของแอดเดรสนั้น (ดูวิธีที่บทความหน้าบล็อก)
ขอบคุณครับ

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 20/09/11, 09:24 pm

ตอนนี้วิ่งตีมอนแล้วครับ แต่ติดปัญหาที่
1.สคริป ไม่รอ เช็คว่ามอนตายหรือไม่ แต่วิ่งจนครบ เลย ไม่แ่ใจว่าเขียนผิดหรือไม่ ^^
Code:
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
2.อยากให้Func CheckHP() ทุก5 นาที โดยไม่ต้องรอจบ Func Attack() เขียนอย่างไรดีครับ
3.ถ้าอันไหนย่อให้สั้นลงได้ หรือ มีเทคนิคเขียน ให้ทำงานง่ายขึ้นรบกวนแนะนำด้วยครับ
ขอบคุณครับ

Code:
#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
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by aut on 21/09/11, 06:57 pm

กดบัฟ5นาทีกดคั้งเอาใส่ไว้ตงหัวสคิปนะ

AdlibRegister("buff", 300000)

func buff()
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
Send("1") ;ใส่ปุ่มบัฟ
Send("2") ;ใส่ปุ่มบัฟ
EndFunc

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 21/09/11, 08:19 pm

aut พิมพ์ว่า:กดบัฟ5นาทีกดคั้งเอาใส่ไว้ตงหัวสคิปนะ

AdlibRegister("buff", 300000)

func buff()
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
;จาให้ทำรัยทุก5นาทีก้อใส่คำสั่งไปตงนี้อะ
Send("1") ;ใส่ปุ่มบัฟ
Send("2") ;ใส่ปุ่มบัฟ
EndFunc

ขอบคุณมากครับ

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 24/09/11, 02:45 am


เง้อ..ในที่สุดก็สำเร็จจนได้ แต่เอาไปตีแล้วตีได้ 2 ตัวก็ เจอ sent error ของระบบเกม อิอิ แต่กะดีใจที่ทำสำเร็จ^^



หาค่ามอนได้เขียนลง พ้อยเตอร์ ได้



แต่ตีได้ 2 ตัวเกมเออเร่อเรย คงเป็นที่ระบบเกม 55+


aut
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by aut on 24/09/11, 10:31 am

บางทีมอนมันอยู่ไกลเกินไงนาย ลองสั่งกดเดินไปขึ้นบนลงล่างอะไรแบบนี้ก่อนสังโจมตีอ่านะอาจจะไม่มีปัญหา

asokura
PSsix Member High Class
PSsix Member High Class

PSsix Game Coder
จำนวนข้อความ : 72
ความนิยม : 11
เข้าร่วมเมื่อ : 03/09/2011

Re: พอจะมีวิธีการค้นหา มอนโดยไม่ใช้วิธีอ้างอิงจากค่าสี หรือไม่

ตั้งหัวข้อ by asokura on 24/09/11, 01:37 pm

aut พิมพ์ว่า:บางทีมอนมันอยู่ไกลเกินไงนาย ลองสั่งกดเดินไปขึ้นบนลงล่างอะไรแบบนี้ก่อนสังโจมตีอ่านะอาจจะไม่มีปัญหา

ใจจ้า เดวลองดู

    เวลาขณะนี้ 07/12/16, 12:56 am