1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Auto check skill game Dead By Daylight

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi thien ho, 25/1/19.

  1. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    các bác cho iêm hỏi:
    bác nào có cao kiến giúp iêm vấn đề auto check của game deadbydaylight được không ạ
    Iêm cũng lượn lờ trên internet cũng có thấy source auto nhưng nó là ngôn ngữ C++
    Iêm đọc source thì thấy nó cũng dùng imagesearch.iêm cũng dùng imagesearchEx nhưng không làm được.Có lẽ vì delay (iêm chỉ sleep(1) nhưng vẫn bó tay ạ )
    https://www.bottersgonnabot.com/automating-skill-checks-in-dead-by-daylight-part-i/
    https://www.bottersgonnabot.com/automating-skill-checks-in-dead-by-daylight-part-ii/

    Ý tưởng của img là dùng imagesearch để search cái ảnh cây kim đỏ đi vào chỗ trắng , nhưng cái nền của img đó sẽ thay đổi ở mỗi góc nhìn nên Iêm không dùng img search được ạ.Iêm có search trong 1 area rồi ạ

    Iêm viết có gì sai , mong anh chị bỏ qua. Iêm cảm ơn
     
  2. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    104
    Đã được thích:
    60
    Mình thấy cái vùng trắng cố định đó bạn, thử search với chỉ vùng trắng thôi, giới hạn vùng search nhỏ lại chỉ nằm trong vùng trắng đó thôi. Kiểu như còn thấy vùng trắng thì không làm gì cả, cho đến khi không thấy vùng trắng đó nữa thì làm việc gì đó.

    Nếu chỉ vùng trắng nhỏ vậy thôi thì imagesearch có thể tìm thấy trong khoảng thời gian ít hơn 10ms.

    Còn nếu vòng tròn thay đổi vị trí thì search toàn màn hình cho đến khi thấy vùng trắng thì tự động chuyển search vùng giới hạn được chỉ định. Search toàn màn hình thì tầm 600ms đến 800ms.

    Một chút góp ý, hi vọng giúp được :)
    Thân!
     
  3. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    :(
    Iêm đọc đi đọc lại mà vẫn không hiểu ý bác :(
     
  4. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    104
    Đã được thích:
    60
    [​IMG]

    Kiểu như vầy, ảnh search là vùng màu đỏ (nếu nhỏ quá thì có thể dùng PixelSearch() thay vì ImageSearch()), vùng search là vùng màu vàng, nhỏ vậy search sẽ nhanh.

    Nhưng trước tiên search vùng màu xanh lá cho đến khi thấy ảnh search thì chuyển sang search vùng chỉ định là vùng màu vàng. Cái này do bạn code thôi, thấy ảnh search ở đâu thì khoanh vùng search lớn hơn ảnh search khoảng 10 pixel mỗi cạnh là ổn.

    Còn thấy ảnh search thì không làm gì cả, cho đến khi cây kim màu đỏ che khuất ảnh search (là không còn thấy ảnh search) thì "làm gì đó" (send phím Space hay gì đó).

    Ý mình là vậy :)

    ================================



    Tốc độ cây kim chạy quá nhanh, vùng màu trắng lại quá nhỏ :D nhưng được lợi một chút là vùng search luôn luôn cố định ở giữa màn hình.
    Nếu bắt buộc phải bấm phím đúng trong lần quay kim đầu tiên thì khá khó :D Nếu có cơ hội bấm cho lần thứ 2, 3 thì AutoIt có thể làm được.
     
    Chỉnh sửa cuối: 25/1/19
  5. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    Em thật sự không hiểu ý của bác là lần đầu tiên của cái gì bác
     
  6. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    285
    Đã được thích:
    910
    Nơi ở:
    Hà Nội
    thứ 1: cần khoanh vùng lại vùng tìm kiếm trong cái ô vuông nhỏ trước, tránh sử dụng full màn hình sẽ gây ra delay
    thứ 2: bạn nên sử dụng PixelSearch() sẽ ổn định và nhanh hơn là ImageSearch, search ra 1 vùng pixel như hình thì đưa vào vòng lặp, tốt nhất là khỏi cần sleep đi, vòng lặp sẽ check cái pixel chính cái vị trí bạn search ra cái vạch trắng, nếu mà thấy mất cái là ấn Space luôn.
     
    yutijang thích bài này.
  7. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    iêm đã khoanh được vùng search nhưng không biết check làm sẽ để biết cây kim ở vị trí màu trắng , hay là search 10 pixel lúc cây kim đang ở vị trí màu đỏ ?
     
  8. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    https://imgur.com/a/7xCTBs7
    iêm có chụp được vài ảnh cây kim ở gần chỗ màu trắng nhưng cái đó vẫn chưa có ý nghĩa
     
  9. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    Mã (AutoIt):
    #RequireAdmin
    HotKeySet("{ESC}","_exit")
    $color = 0xFDFDFD
    $a = 0
    While $a = 0
    $a = PixelSearch(884, 470,1030, 613,$color)
    WEnd
    Sleep(600)
    Send("{SPACE}")
    MsgBox(0,0,0)


    Func _exit()
        Exit
    EndFunc
    iêm có search được nhưng không cách xác định cây kim ở đâu để nhấn đúng lúc bác ạ
     
  10. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    285
    Đã được thích:
    910
    Nơi ở:
    Hà Nội
    bạn search như này chưa ổn, vì có thể có rất nhiều điểm có pixel màu giống thế, bạn nên search thêm vài pixel cùng màu xung quanh để đảm bảo đúng là khoảng trắng đó
     
    yutijang thích bài này.
  11. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    Mã (Text):
    #RequireAdmin
    HotKeySet("{ESC}","_exit")
    $color = 0xFCE1DF
    While 1
    $a = 0
    While $a = 0
        $a = PixelSearch(884, 470,1030, 613,0x676768) ; kiểm tra vòng tròn đã xuất hiện hay chưa
    WEnd
    $b = 0
    Do
        $b = PixelSearch(884, 470,1030, 613,$color) ;em bị lỗi ở chỗ tìm khoảng trắng lúc tìm được lúc không


    Until UBound($b) = 2

    Send("{SPACE}")
    WEnd

    Func _exit()
        Exit
    EndFunc
     
     
  12. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    iêm sợ check nhiều pixel sẽ có delay.bác có thể giúp em phần check nhiều pixel để tối ưu hóa nhất được không ạ?
     
  13. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
  14. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    104
    Đã được thích:
    60
    Trước tiên hãy check "khi nào thì chế độ pluzze" kích hoạt. Mình thấy vùng màu đen xung quanh chữ SPACE là hoàn toàn đen và không thay đổi. Hãy check vùng đó để chắc chắn rằng "chế độ pluzze" bắt đầu chạy, rồi hãy search bước tiếp theo.
    [​IMG]

    Khi đã vào "chế độ pluzze", bắt đầu search điểm ảnh màu trắng (cái này có vẻ nên dùng PixelCheckSum() PixelSearch()) ở 4 khu vực màu đỏ. Tọa độ vùng search màu đỏ nên cho vào mảng và search với vòng lặp For...Next Trả về giá trị $i nào thì search điểm màu trắng với vùng của $i đó thôi.
    [​IMG]

    Đây là cách của mình, xin được góp ý.

    Còn 1 vấn đề nữa là với Win 7, PixelSearch() có vẻ chạy nhanh hơn Win 10 với tốc độ tìm điểm ảnh trong khu vực 100x100 trả về ~50.000 - ~78.000 kết quả mỗi giây. Còn Win 10 chỉ trả về ~75 kết quả. Thực sự không rõ vấn đề này cho lắm, nhưng diễn đàn AutoItScript.com có topic bàn tán về vấn đề này :)
     
    Chỉnh sửa cuối: 26/1/19
  15. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    285
    Đã được thích:
    910
    Nơi ở:
    Hà Nội
    bạn thử test xem hoạt động không nhé, mình có thử trên ảnh demo của bạn thì work, thật ra cái này phải tinh chỉnh nhiều đó, vì vậy bạn debug thêm, cái này do bạn nữa
    Thật ra cách mình làm hơi ngu =)) nhưng mà cứ thử xem, còn delay thì đừng lo vì mấy hàm này ít delay lắm
    Mã (AutoIt):
    ;~ #RequireAdmin
    HotKeySet("{ESC}", "_exit")
    ;~ $color = 0xFAFCFB
    $color = 0xFAFAFA
    Global $a

    ;~ 886, 466
    While 1
        $a = PixelSearch(865, 453, 1030, 613, $color)
        If IsArray($a) Then ExitLoop
    WEnd
    $check =  PixelChecksum($a[0] - 1, $a[1] - 1, $a[0] + 1, $a[1] + 1)
    ToolTip("White found, waiting for change")
    ;~ MouseMove($a[0],$a[1])
    While $check =  PixelChecksum($a[0] - 1, $a[1] - 1, $a[0] + 1, $a[1] + 1)

    WEnd
    Send("{SPACE}")
    ToolTip("")
    Func _exit()
        Exit
    EndFunc   ;==>_exit

     
     
    yutijang thích bài này.
  16. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    code bị lỗi bác ạ
     
  17. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    theo ý kiến của bản thân iêm là code của bác chưa có phần nào để check cái cây kim màu đỏ đã tới vị trí màu trắng hay chưa mà nó chỉ check là pixel có thay hay không thôi ạ
    còn phần code của em nó có check được cái cây kim ở vị trí màu trắng hay không nhưng đôi khi nó bị lỗi vì mã màu mỗi khi xoay mà hình khác nhau
     
  18. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    với iêm chưa hiểu ý nghĩa của việc dùng hàm pixelchecksum lắm ạ , vì nó khá chung chung , bản thân khi cây kim nó không quay tới chỗ trắng thì pixel cũng đã thay đổi
     
  19. thien ho

    thien ho Thành viên
    • 18/23

    Tham gia ngày:
    24/5/17
    Bài viết:
    62
    Đã được thích:
    40
    Em có Ý tưởng là tìm chỗ màu trắng ,xong pixelchecksum cái đó có thay đổi thì nhấn space
    Nhưng pixelsearch chỉ trả về 2 cái x,y nhưng pixelsearch cần 4 cái thì làm sao ạ?
     
  20. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    285
    Đã được thích:
    910
    Nơi ở:
    Hà Nội
    cụ thể lỗi gì bạn nhỉ
     

Chia sẻ trang này

Đang tải...