หากคุณต้องการจะอ้างอิงที่หน้าต่างเกมเป็นหลัก ต้องเขียนคำสั่งตั้งค่าเพิ่มเข้ไาป 3 คำสั่ง โดยเพิ่มเข้าไปที่ส่วนหัว(บรรทัดบนสุด) ของสคริปต์ คือ
Opt("MouseCoordMode", 2) ;ตั้งค่าเม้าส์ ให้อ้างอิงพิกัดจากหน้าต่างโปรแกรม Opt("PixelCoordMode", 2) ;ตั้งค่าการดึงรหัสสี ให้อ้างอิงพิกัดจากหน้าต่างโปรแกรม Opt("CaretCoordMode", 2) ;ตั้งค่าการอ้างอิงหน้าต่าง สำหรับคำสั่งอื่นๆ ที่ต้องใช้พิกัดอ้างอิง |
1. เปิดโปรแกรม AutoIt Window Info ขึ้นมา คลิกไปที่เมนู Options > Coord Mode > Client
2. ที่โปรแกรม AutoIt Window Info คลิกที่เมนู Options > Magnify
3. คลิกแท็บ mouse เพื่อดู พิกัดและรหัสสี
4. ในตัวอย่างนี้ผมจะใช้โปรแกรม System Configuration เป็นตัวอย่างในการทำ การเปิดโปรแกรมนี้ทำได้ด้วย พิมพ์คำสั่ง msconfig ที่ RUN หรือ Search ในสตาร์ทเมนู
เมื่อโปรแกรมเปิดขึ้นมาแล้ว ลากเป้าที่ Finder Tool ไปยังจุดที่คุณต้องการวัดพิกัดและดึงค่ารหัสสีออกมา ตามตัวอย่างนี้จะได้ค่าพิกัดคือ 38 x 71 และรหัสสีคือ 0x0F83C7
5. ผมจะเขียนสคริปต์สำหรับสั่งคลิกก่อน โดยจะอ้างอิงที่ไปหน้าต่างโปรแกรมก่อนทุกครั้ง (ดูรูปด้านล่าง)
6. ใส่พิกัดสำหรับคลิกลงในคำสั่ง MouseClick เมื่อเขียนเสร็จก็จะได้คำสั่งทั้งหมดดังนี้
วิธีทดสอบการทำงาน ก็ลองขยับหน้าต่างโปรแกรม System Configuration ไปไว้ในตำแหน่งใดก็ได้บนหน้าจอ แล้วกด F5 ที่ SciTE เพื่อรันทดสอบคำสั่ง ถ้าถูกต้องจะเห็นว่าเม้าส์ขยับไปคลิกในตำแหน่งเดิมในหน้าต่าง System Configuration ทุกครั้ง แม้ว่าคุณจะขยับหน้าต่าง System Configuration ไปยังตำแหน่งอื่นก็ตาม
Opt("MouseCoordMode", 2) Opt("PixelCoordMode", 2) Opt("CaretCoordMode", 2) If WinExists("System Configuration") Then WinActivate("System Configuration") MouseClick("",38,71,1,0) |
การทดสอบก็เพียงกด F5 รันสคริปต์ดู ลองขยับหน้าต่าง System Configuration ย้ายไปที่ไหนก็ได้บนหน้าจอ (ต้องให้เห็นจุด ที่คุณจะดึงเอาค่าสีในหน้าต่างนั้นด้วย ไม่ใช่ลากไปซ่อนจนไม่เห็นหน้าต่าง) จะเห็นว่ารหัสสีที่ดึงออกมานั้นเป็นรหัสสีเดียวกันหมด แม้จะย้ายหน้าต่างไปตำแหน่งอื่นแล้วก็ตาม
Opt("MouseCoordMode", 2) Opt("PixelCoordMode", 2) Opt("CaretCoordMode", 2) If WinExists("System Configuration") Then WinActivate("System Configuration") for $i =1 to 10 $color = Hex(PixelGetColor(38,71),6) ConsoleWrite('+ดึงค่าสีรอบที่ ' & $i &' ได้ค่าสีคือ 0x' & $color & @crlf) Sleep(1000) Next |
หมายเหตุ
การอ้างอิงตำแหน่งหน้าต่างด้วยสคริปต์ข้างต้นนี้ต้อง อาศัยหน้าต่างที่มีการทำงาน โดยใช้คำสั่ง WinActivate("ชื่อหน้าต่าง") ก่อนทุกครั้ง แต่บางคำสั่งเช่น PixelGetColor ก็ไม่จำเป็นต้องสั่งให้หน้าต่างทำงาน แต่ต้องใส่ค่า handle อ้างอิงด้วย เช่น PixelGetColor(38,71,$GameHD) ค่าตัวแปร $GameHD หามาได้อย่างไร โปรดกลับไปอ่านในบทที่ 1 หากขี้เกียจทำ หรือแค่จะทำโปรแกรมติดตั้งอัตโนมัติ ไม่ได้ทำบอทก็ไม่ต้องไปเสียเวลาอ่านครับ
หมายเหตุ 2
เนื่องจากผู้อ่านบทความจำนวนหนึ่งเป็นพวก จับเสือมือเปล่า แนะนำหนังสือ AutoIt เบื้องต้น ในบทที่ 1 ไป ก็กลัวเปลืองเงินไม่ซื้อ ทำให้ไม่รู้เรื่องพื้นฐานอะไรเลย บางคนแย่ไปกว่านั้นอ่านข้ามบททั้งที่ไม่เคยเขียนสคริปต์ AutoIt มาก่อน อาศัยก็อปตัดแปะสคริปต์ไปเรื่อย ซึ่งก็ไม่เป็นไรครับ เราไม่ว่ากัน แต่ขอให้ช่วยมีความขยันอีกนิด พยายามอ่านบทความสอน AutoIt หน้าบล็อกนี้ให้หมด อย่าเห็นว่าเป็นบทความที่ไม่ได้ใช้ประโยชน์ หรือเป็นเรื่องที่คุณไม่ต้องการรู้ เนื่องจากการเขียนบทความต่างๆ ผมได้แทรกความรู้เรื่องคำสั่งสคริปต์ เกร็ดเล็กเกร็ดน้อย ซึ่งคำสั่งบางคำสั่งนั้น เมื่ออธิบายไปแล้วผมจะไม่เสียเวลามาอธิบายซ้ำในบทความอื่น เพราะเสียเวลาทั้งตัวผม และเสียเวลาของผู้ที่ตั้งใจเรียนรู้ จะให้อธิบายซ้ำเพื่อคนขี้เกียจไม่กี่คน ที่ขี้เกียจคลิกไปอ่านก็กระไรอยู่
###จบแล้วครับ###
ตรงวิธีเขียนสคิปทำไงหลอ คับ คือจะให้ขึ้นหน้าต่างเขียนโปรแกรมอะ
ReplyDeleteโหลดตรงไหนหว่า
ReplyDelete