오토핫키 커뮤니티

조회 수 260 추천 0 댓글 8

안녕하세요, 아래 글에 조언 주신분들 감사합니다.

현재 작업중인 매크로는 '모두의삼국지FREE'라는 앱게임입니다.

그런데 똑같은 '이미지'가 각 스테이지에서 계속나옵니다. 반복되는 '이미지' 하나만 따서 스테이지1에는 '*오차율' 를 줬을때 찾고, 2에서는 '*오차율' 을 찾는 테스트를 노트에 적어가면서 65%라는 적성선을 찾아냈습니다.

근데 또..ㅠ

예를들어 "모든 스테이지에서 이미지1.bmp를 찾으면 클릭해라."

근데  게임시스템 자체적으로 이미지1.bmp가 있는 맵을 임의로 움직이면 이미지1.bmp이 있는데도 불구하고(게임내 UI가 이미지를 가리지도 않음) 인식을 못합니다.


어째됐던 위 문제점은 제가 풀어가야할 숙제고요.


아래 질문글에 올렸던 '소스파일'에서 TellingTrade 기능만 따로 빼서 테스트해봤는데요.

수정 전 소스에서 쓰레드가 쌓인다고 하셔서 break를 줬는데도 똑같은 증상을 보입니다.


혹시 소스가 잘 못 된건가요?

1. 오류창

https://i.imgur.com/5ASlLen.png


2. 소스

수정전

TellingTrade:

{

WinSet, AlwaysOnTop, On, BlueStacks App Player

WishClick2()

}

return



WishClick2() ; 무역호통 간언 제출 함수

{

   Loop, 3

   {

      if(이미지함수(clickX, clickY, "이미지1.bmp", 165, 80, 256, 330))

      if(errorlevel=0)

      {

         clickX:= clickX + 256

         clickY:= clickY + 34

         Click(clickX, clickY) ; ClickSecond는 동작 후 sleep없음

      }

      sleep, 300


      ; 중략


      if(이미지함수(clickX, clickY, "이미지5.bmp", 165, 80, 256, 330))

      {

         clickX:= clickX + 256

         clickY:= clickY + 34

         Click(clickX, clickY)

      }

      sleep, 300


   } ; 3회 검색이 끝나고

SelectRefresh2() ; 새로고침

}

return



SelectRefresh2() ; 간언제출시 새로고침 함수 

{

Click(430, 75)

gosub, TellingTrade

}

return 



수정후

WishClick2() ; 이미지1.bmp ~ 이미지5.bmp 를 찾고 새로고침클릭하고 현재 Loop는 동작중인 빠져나와라.

{

   ; 생략

   Loop 

   {

      if(이미지함수(clickX, clickY, "이미지1.bmp", 165, 80, 256, 330))

      {

         clickX:= clickX + 256

         clickY:= clickY + 34

         Click(clickX, clickY)

      }

      sleep, 300


      ; 중략


      if(이미지함수(clickX, clickY, "이미지5.bmp", 165, 80, 256, 330))

      {

         clickX:= clickX + 256

         clickY:= clickY + 34

         Click(clickX, clickY)

      }

      sleep, 300


      SelectRefresh2() ; 새로고침

      break ; 쓰레드가 계속 쌓이는 걸 깨고자 break를 줬습니다. 

   } 

}

return

추가내용) 12시54분

   sleep, 300

   break

   } 

   

   SelectRefresh2()

}

return

;-----------

아래 부분을 이렇게 바꾸고 다시 테스트 해보겠습니다.



SelectRefresh2() ; 간언제출시 새로고침 함수 

{

Click(430, 75) ; 새로고침 클릭

sleep, 1000

WishClick2()

}

return 


3. 해결소스

TellingTrade: ; 무역호통제출버튼

{

   Loop

   {

      WishClick2()


      if(IsWish1Square(clickX, clickY, "Image\WishList\GoldOut.bmp", 253, 169, 318, 207))

      {

         break

      }

   }

}

return

;-------------------------------------------

; Function 함수선언

WishClick2() ; 무역호통 간언 제출 함수

{

   if(!IsImageSquare(clickX, clickY, "Image\WishList\PopUp.bmp", 348, 111, 430, 305)) ; 자주빛 간언 skip 팝업창이 뜨면

   {

      Click2(350, 270) ; 확인 클릭 (닫기버튼 250, 270)

      sleep, 2000

   }

   if(이미지함수(clickX, clickY, "이미지1.bmp", 165, 80, 256, 330))

   {

      clickX:= clickX + 256

      clickY:= clickY + 34

      Click2(clickX, clickY) ; Click2는 동작 후 sleep없음

   }

   sleep, 250


   ; 중략


   if(이미지함수(clickX, clickY, "이미지5.bmp", 165, 80, 256, 330))

   {

      clickX:= clickX + 256

      clickY:= clickY + 34

      Click2(clickX, clickY) ; Click2는 동작 후 sleep없음

   }

   sleep, 250


   Click2(430, 75) ; 새로고침

   sleep, 1500

}

return 



  • profile
    외치기 2015.07.22 13:10

    이게 구조가 말로 설명하긴 어렵겠지만 일단 설명해볼게요.

    처음에 WishClick2() 를 호출하죠 WishClick2안에서 SelectRefresh2() 를 호출하고 SelectRefresh2에서 또 WishClick2()를 호출하면

    WishClick2()->SelectRefresh2()->WishClick2()->SelectRefresh2()->WishClick2()->SelectRefresh2()->WishClick2()->SelectRefresh2() 이런식으로 탈출없이 계속 파고드는 구조가 되어버립니다.

    return문이 존재하는 의미가 없어요.

  • 마토깽 2015.07.22 13:43
    break를 주면 한번 탈출하고 다시 들어가는건 줄 알았네요...
    아니면 제가 이해를 잘 못하는건지 ..
    이 문제점을 해결하려면 어떻게 하면 좋을까요? 지금으로선 당장 생각이 안나에요.

    여기저기 찾아보다가
    - gosub(해당 레이블로 뛰어서 Return 만날 때 까지 계속 실행. Return을 만나면 불린 곳으로 돌아감
    - Goto(해당 레이블로 뛰어서 계속실행. Return을 만나면 종료)
    이 어떤 역할을 하는지 알아봤는데요.

    질문 본문의 소스에 return이 문제라면 gosub? goto를 사용해서 매크로를 다시 짜야할까요?
  • profile
    외치기 2015.07.22 13:47

    loop

    {

    WishClick2()

    SelectRefresh2()

    }


    이런식으로 함수를 연속적으로 호출하시면 될거같네요.

    각각의 함수안에서 서로를 호출하는 부분은 제거하시고요.

  • 마토깽 2015.07.22 14:10
    버튼:
    {
    Loop
    {
    Function1()
    Function2()
    }
    }
    return

    고쳐보겠습니다 ㅎ 감사합니다.
  • 마토깽 2015.07.22 15:02
    매크로 공부 초기에는 Function()라는 것을 몰랐을 때 였어요.
    그땐 엄청 기초적인 명령어를 다뤄서 매크로를 짰습니다.
    점점 어려운 것을 익히고 소스를 짜보고 하니, 정작 기초적인 것을 잊게 되네요.
    감사합니다.
  • profile
    비밀s2 2015.08.04 02:47

    죄송한데 질문 있습니다! ㅜ

    if(이미지함수(clickX, clickY, "이미지1.bmp", 165, 80, 256, 330)

    에서 끝에 숫자 4개는 무슨 의미 인가요???

    165, 80, 256, 330

  • 마토깽 2015.08.08 17:23
    영역입니다.
    해당 영역안에서만 특정이미지를 찾는거죠.
  • profile
    비밀s2 2015.08.14 15:19
    답변 감사합니다!!!!!!

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 오토핫키 공부 시작했는데 어렵네요 ㅋㅋ 2 craia 2015.07.26 0/0
질문 피파3 오토핫 구동 되나요?? 3 Zhus 2015.07.29 0/0
질문 GDIp로 블루스택이 캡쳐되지 않습니다.. 5 민틸 2017.09.11 0/0
질문 picture에 관해 질문이 있습니다 1 새벽에문득 2015.07.25 0/0
질문 이미지 서치에 대해서 궁금한 것이 있습니다 7 zzxxll 2015.09.21 1/0
질문 마우스 클릭 질문입니다. 3 Zhus 2022.12.14 0/0
질문 레이븐 매크로 다중 이미지 서치 질문 드립니다 9 스피릿치 2022.12.14 0/0
질문 안녕하세요 오토핫키고수분들꼭봐주세요 3 목탁치는신부 2022.12.14 0/0
질문 질문하나 드립니다 13 토스트 2022.12.14 0/0
질문 윈드로이에 키(문자) 보내기 질문드립니다 2 리체 2022.12.14 0/0
질문 블루스택 활성화 질문 드립니다. 11 colt 2022.12.14 0/0
질문 질문 드립니다. 굽신굽신 (--)(__)(--) ~♡♡♡♡♡♡ 5 제발등업좀2 2022.12.14 0/0
질문 오토핫키 변수 변경 질문드려요~ 1 아기수다리 2022.12.14 0/0
자유 오토핫키 정말 물건인것같아요 3 뫙치 2022.12.14 0/0
질문 블루스택 세븐나이츠 비활성 질문드립니다 8 아키만점 2022.12.14 0/0
질문 gui를 이용해서 메크로실행창을 만들어봣는데...저는왜... 4 토고얌세나 2022.12.14 0/0
질문 DDL 질문 5 아잉뿌잉 2022.12.14 0/0
질문 순차적실행 3 세나블텍 2022.12.14 0/0
질문 [해결] 아래 작동중지에 대한 수정소스인데요. 8 마토깽 2022.12.14 0/0
질문 텍스트를 가져오고 싶습니다. 6 _Crash 2022.12.14 3/0
Board Pagination Prev 1 ... 153154155156157158159160161 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글