매크로

질문
2015.07.29 11:47

IF 관련 질문입니다

조회 수 302 추천 0 댓글 19
제가 프렙을 혼자 연구하다가 도저히 IF만은 이해가 잘 안가서 이렇게 찾아 왔습니다. 도와주세요 ㅠ.ㅜ


IF를 사용해서 해당 화면이 나오면 기존의 반복되던 루프에서 벗어나서 그 사진을 인식하고 넘기게 할 순 없나요? - 궁금한점


말이 좀 어렵거나 난독증을 일으킬 수 있지만 차근 차근 읽으면서 해결 방법을 가르쳐 주신다면 정말 정말 감사할 것 같습니다.








루프 강좌를 보니까 바람님인가?! 그분 말대로라면 정해진 카운트를 수행하고 벗어나게 하셨던데 그걸 응용해야하는 건지... 이건 정해진 화면만을 인식하고 그 화면을 넘기려는 부분이 필요합니다. 제가 하는 게임은 상당히 눌러야할 버튼이 많다보니... IF가 절실 합니다. 물론 정해진 화면을 인식해서 넘기는 기능이 있는 것도 있었지만 게임의 시간차와 딜레이로 IF를 접목 시키지 않는다면 이게임은 순조롭게 진행시키는게 불가능 했기 때문입니다.



제가 녹화를 쓰지 않고 수동을로 설정해서 게임을 하는 이유에는 네트워크의 문제가 있는지라...도와주세요


  • 지니73 2015.07.29 14:26
    iimage 쓰시면 됩니다
    1 loop
    2
    3
    4 image 성공-6/실패- next
    5 loop
    6
    이런식이면 해당루프가 몇회던지 이미지 인식 성공하면 루프를 빠져 나옵니다
  • 산군 2015.07.29 15:21
    음... 그게 이 이미지란게 상당히 불규칙적으로 뜹니다. 그래서 만약 이 이미지가 뜰 경우 해당화면을 확인을 눌러 다시 반복 되던 곳으로 돌아가서 돌아가게 할 순 없을 까요?
    이게임이 워낙 눌러야 할 버튼도 많고 해서 시간 절약을 시키기 위해서 그 화면이 뜰경우만 그렇게 하도록 해야 할 것 같아서요.
    무엇보다도 시간 싸움의 게임인지라
    image를 쓰면 해당화면을 인식시키는데 10~15초가 소요 되기에 만약 저 화면이 나올 경우를 생각 해야 해서 IF가 필요한게 아닌가 생각이 듭니다.

    어떻게 방법이 없을까요?.?
  • 지니73 2015.07.29 15:34
    if는 변수와 같이 쓰는걸우 압니다
    원하시는 이미지가 나오면 다시 잔복하게 하려면
    4번에서 성공 1 실패 6하면 루프를 반복하는거죠

    이미지 인식 시간은 전 거의 0초로 해서 사용 합니다만 ....
    옵션의 스크린샷 method 항목에서 faster 로 하시면 훨씬 빠른 시간에 인식이 되구요
    만약 동사에 여러 이미지를 비교 하신다면 첫 이미지에는 스크린샷 체크 하시고 밑에 이미지에는 해제 하시면 더 빨리 이미지를 찾을수 있습니다

    게임이나 하시는 작업 내용을 모르니 추상적인 답변밖에.... 도움 되셨으면 좋겠네요
  • 산군 2015.07.29 15:47

    제가 하는 작업은 이렇습니다.

    해당화면 시작- 어려움 - wait 3초 - 싸우기- {wait 3초 - 넘기기 대기중(해당 이미지 인식 나올때 까지 기다리다가 나오면 일부러 인식 실패)- 넘기기 클릭}- wait 5초- take screen shot (no file out put) - 확인 대기중(해당이미지 정상적으로 인식) - 확인을 클릭- wait 4초

    여기서 네트워크 문제로 연결이 불완적적 "재시도"라는 화면이 불규칙적으로 뜨고 있는 상황입니다.
    image기능은 넘기기 대기중과 확인 대기중에서 쓰고 있고요
    {}부분은 전투 중이기에 그 사이에 "재시도"나 다른부분에서 뜰 경우 프렙이 정상적으로 돌지 않고 멈추어 있습니다.

    말했다시피 시간 싸움에 무한 반복 게임인지라
    계속해서 "재시도"를 인식해서 클릭하게 하는 건 너무나 많은 시간이 소요되기에 이렇게 질문 드리고 있는 부분이죠... 혹식 방법이 있을까요?.?

    진짜 이걸 해결하는게 제 소원입니다. ㅠ.ㅜ

    참고로 재시도는 어느구간에서든 무한정 나타나서 괴롭힐 수 있는 부분입니다...ㅠ

  • 지니73 2015.07.29 17:16
    중간에 뜨는 재접속 이라는 팝업창이 문제라는 말씀인거 같은데....
    시간은 요하는 작업이라면 중간에 이미지 인식을 넣으면 창이 떠서 인식 성공하면 바로 넘어가지만 창이 안떠서 인식 실패 하면 주어진 시간만큼 대기 하게 됩니다

    재접속이 뜨는 근본적인 원인 해결이 우선해야 하지 않을까요 ㅠㅜ

    도움 못되어 드려 죄송합니다
  • 산군 2015.07.29 22:21
    음...애초에 녹화대신 수동설정을 만들기 시작한 것도 네트워크 문제도 있지만
    게임의 서버가 렉을 먹어서 그런 경우도 많은지라...
    와이파이가 4칸이어도 서버렉으로 인해서 팝업창이 생겨나는건 어떻게 막을 방법이 없네요..ㅠ.ㅜ
    제가 님말대로 그렇게 하지 못하는 이유는 주어진 시간내에 목표한 점수를 얻어야 원하는 보상을 받을 수 있기 때문입니다만
    이게임을 제가 총 세판의 게임을 한 묶음으로 묶어둔 상태입니다...그 세판을 손으로 했을때는 40초에 달하지만
    현재 매크로는 약 2배가량의 시간이 걸리죠
    만약 님말대로 그 창을 인식 시키려면 1게임 기준 2개의 이미지 인식이 필요합니다. 그런데 중요한건 저 팝업이 등장할 수있는 구간은 1게임 기준 12번인데 각 2개의 이미지 인식라인에서 재접속을 확인 시켜서 초기화면 부터 다시 시작 시키려고 할 때 각 2개의 이미지 라인에서 발생시키는 에러사항이 각기 다르죠...물론 이것도 님 말대로 해본바 있기에 가능한거 압니다.

    그런데 게임의 딜레이 시간과 여러가지 복합해서 너무 많은 시간이 들면 원하는 보상을 제시간에 받아내지 못하기에 이렇게 질문을 던졌던 것이죠

    그렇다면...마지막으로 묻겠습니다.
    불규칙적으로 갑작스럽게 튀어나온 팝업창이 나왔을 경우 이미지를 인식하도록 할 순 없을까요?
    잘돌아 가고 있을 때는 그저 순조롭게만 돌아가게 하고요... 만약 불필요하게 팝업창이 뜨지 않았는데도 이미지 인식을 확인하면... 시간이 상당히 오래 걸리게 됩니다...ㅜㅜ
  • 지니73 2015.07.29 23:30
    불규칙적으로 나오는더라 중간에 이미지 인식을 안넣을수 없죠
    팝업창이 나오면 성공으로 바로 넘어가지마
    팝업창이 안나오면 실패기 때문에 주어진 인식시간만큼 멍 때리고 있겠죠

    될수 있는대로 시간을 짧기 주시는 방법 밖에...
    screenshot method 두번째 faster 로 바꾸시고
    screenshot do not save도 체크 하시면
    좀더 빠른 이미지인식이 됩니다
    참고로 전 0초로 설정해서 씁니다
    여허번 체스트해보시구 시간 설정이니 % 조정해보시길...
  • 지니73 2015.07.29 23:35
    팝업 나오는 곳 배경이 항상 같으면 반대로
    배경을 이미지 인식으로 잡고 팝업창이 안나오면 바로바로 넘어가고 팝업창이 나오면 실패로 인식되게 할수도 있겠죠
  • 산군 2015.07.29 23:54
    음...저로서는 다해본 방법입니다만 일일이 이렇게 다 답해주셔서 정말 감사합니다.
    후... 오랜시간에 걸쳐서 이렇게 성실히 답해주셔서 진심으로 감사합니다.
    다음에도 궁금한게 있다면 물어보겠습니다. 제가 정말 IF의 용도와 기능은 잘 이해가 안가서요...
    몇가지 안해본게 있는데 좋은 팁 감사합니다.
  • 지니73 2015.07.30 00:54
    클리어 시간에 따른 보상이라 참 난감하네요
    다 해보신 방법이었군요
    저도 변수는 시간 설정밖에 모르지만
    if는 지금 상황하고는 안 맞을듯 싶네요
    다른 고수분들이 알려 주세요 ~~~

    좋은 결과 있으시길...
  • 산군 2015.07.31 13:10
    엇 다시 읽어 보니... 팝업 나오는 곳 배경이 항상 같은면 반대로 배경을 이미지 인식으로 잡고 팝업창이 안나오면 바로바로 넘어가고 팝업창이 나오면 실패로 인식되게 할 수 있다고 했는데
    그건 어떻게 하는 거죠?
    바로바로 넘어 간다는건 시간이 적게 들 수 있단거죠?
    오 뭔가 좋은 방법이 있을 것 같은데 가르쳐주세요 ㅠ.ㅜ
  • 지니73 2015.07.31 14:08
    팝업창 나오는 곳의 배경이 같으면 그부분을 웨이트 이미지 하시고 성공 넥스트 하시고 실패 팝업창 닫고
    계속 ... 그러면 이미지인식 성공하면 시간 관계없이 바로 성공 뜨니깐...
    반대로 하시는게 팝업창 뜰때는 어쩔수 없지만 안뜰때는 그나마 빨리 넘어 갈듯 하네요
  • 산군 2015.08.03 10:32
    오 그얘기 듣고 방법이 생겼어요
    마지막에 결집 될 만한 곳을 찾았어요 ㅎ
    팝업창이 뜨지 않으면 실패를 하도록 만들었더니 원활 하게 돌아가네염 ㅎㅎ
  • Hangoon 2015.08.06 13:53

    꼭 웨잇이미지를 써야하나요?

    재시도 버튼의 위치가 항상 같다면 중간중간 재시도 버튼 위치에 탭을 계속 넣어주면 해결되는것 아닌가요?

    다른 조작과 겹치지 않도록 좌표를 잘 설정하면 될것 같은데요

  • 산군 2015.08.24 11:08
    그렇게 간단한 문제였으면 물어보지 않았어요. 딜레이 시간은 불규칙적으로 나오기 때문에 탭을 중간중간 넣다보면 알맞지 않은 구간에서 삑사리가 날 수 있습니다.
  • Hangoon 2015.08.24 11:38

    혹시 눌러야 하는 다른 버튼이나 기능의 위치와 재시도 버턴의 위치가 겹치지 않고, 재시도버튼을 누르는것만으로 팝업창이 닫히고 정상동작이 된다면 재시도버튼 위치에 계속 탭을 넣어주는것만으로 되는게 아니냐는 거였는데요
    위치가 겹친다 할지라도 버튼 사이즈가 다르기 때문에 게임진행 어느 위치에서도 영향을 주지 않으면서 재시도 팝업이 떴을때 버튼클릭만 해줄 수 있는 특정 좌표가 있을 수 있습니다.

    최근에는 이미지인식으로 다들 스마트하게 짜시지만 예전에 탭과 웨이트만 가지고 매크로 짤때는 이런식으로 클릭하는 모든 버튼의 위치과 사이즈들을 한 화면에 겹치게 그려놓고, 어떤 버튼을 누르기 위해 클릭하는 좌표가 다른 화면에서 다른 버튼이나 기능에 영향을 주지 않도록 좌표를 잘 선정하는 것이 매크로 짤때 필수적으로 검토해야 하는 사항이었습니다

  • 산군 2015.08.24 15:36
    제가 하는 게임은 정해진 시간에 눌러야 할버튼이 상당히 많고 겹칠 수 있는 요소가 상당히 많은 게임입니다. 님이 계속 탭을 넣어주는것만으로 되는거 아니냐고 하셨지만 전 불규칙적으로 나오고 딜레이시간 역시도 불규칙 적이라고 앞서서 말씀 드렸었죠
    여러가지 이야기는 앞의 지니님과 얘기했던 부분이고요. 제가 다시 고안안 결과 성공을 한 부분입니다.(지금은 상당히 오랜시간이 지났기에 이 문제는 완전히 해결되었습니다.----시간도 정해진 시간의 30초를 단축시켰고요)
    제가 왜 님의 방법은 안된다고 했냐면 예를들어 a에서 c까지 진행 될떄 중간 중간에 나올 팝업을 위해 계속 버튼을 넣는다고 가정 해봅시다. 순서가 a- 재시도버튼 - b- 재시도버튼 -c -재시도 버튼 만약 재시도 팝업창이 a에서 b로 가는 구간에서 멈췄다고 가정한다면 재시도 버튼은 언제 눌러질지 모르는 상황이죠
    왜냐하면 딜레이 시간은 불규칙 적이기에 재시도 버튼이 언제 불쑥 나타날지 모르기 떄문이죠
    제가 말한 딜레이는 정해진 화면의 연속이 사라지고 화면이 멈추면서 불규칙적으로 튀어나오는 재시도까지의 시간을 의미합니다.
    자 그렇다면 분명 다음에 이어질 부분은 a에서 b로 가는중에 멈췄으니 당연 b를 눌러야 하는데 엉뚱하게도 c를 눌렀다면 이제 제가 건드리지 않는 한 배터리가 없어질 때까지 무의미한 터치가 계속 될 것입니다.

    어떻게 해결했는지는 궁금하시면 그 때 물어봐주시고....
    음... 전 이제 다른 질문을 던지고 싶습니다. 제가 요새 들어 다시 고민중인게 있어요. ㅠㅠ
    if를 이용해서 정해진 순서대로 이어지는 루프를 어떤 팝업이 뜰 경우 정해진 루프를 벗어나서 그 벗어난 예외의 상황에 적합한 또다른 순서의 루프로 넘어 가게 할 순 없나요?
  • Hangoon 2015.08.24 16:30
    웨잇이미지 옵션에 성공/실패 시의 분기를 정할 수 있습니다
    a-b-c 단계로 옮겨가는 과정은 웨잇이미지로 컨트롤 하는게 아닌가요?
    a-b중간에서 멈춘다면 b단계에서 이뤄질 웨잇이미지가 계속 fail이 뜨겠죠
    Fail시 재시도 버턴 탭하게 하고...... 뭐 이런식으로 짜면 되지 싶었는데...
    중간중간 재시도 팝업을 계속 찾자니 웨잇이미지를 많이 쓰게되어 아무래도 폰에 부하가 늘어날 수 있기에 제시해드린 방법이었어요. 실제 게임하시는 분이 어렵다고하면 어려운거겠죠 ㅎㅎ 저야 정확한 상황을 모르니까요

    프렙의 If문은 안써봐서 잘 모르겠지만 여타 프로그래밍에서와 같이 if 뒤의 조건이 참일 경우/ 거짓일 경우 에 대한 분기를 정할 수 있는 거겠죠. 그러자면 변수 사용법을 먼저 알아야겠구요

    웨잇이미지 시 성공/실패 분기를 이용해서,
    팝업창을 찾고 성공 시 var명령을 통해 특정변수에 1이라는 값을 넣어주고 실패 시 그 다음 시퀀스로 가도록 하면 될 거 같은데요
    예를들자면
    1. Wait Image (성공시 2 /실패시 3)
    2. Var (A=1)
    3. If A=1 (참 일 경우 다른 루프 시작점 / 거짓일 경우 Next)

    정확한 변수 사용법이랑 연산자 사용법은 바람처럼님 강좌보셔야 할 것 같네요. 저는 사용해보지 않아서 제가 어설프게 연산자 예를 들어드렸다가 잘못될까봐.. 간략하게 개념만 써봤어요

    그런데, 굳이 If문을 쓰지 않더라도 이정도 기능 구현은 될 것 같은데요, 웨잇이미지가 if를 어느정도 포괄하고 있는지라...
    팝업창을 찾는 웨잇이미지 시퀀스가 실패하는 경우 Next, 성공할 경우 다른 루프 시작점
    이런식으로 짜도 기존 루프탈출이 가능한데, if문을 꼭 써야하는건가요?
  • 산군 2015.08.28 11:35
    맞습니다 ㅎㅎ제가 해결한 부분도 웨잇이미지를 사용해서 해결한 부분입니다. 님 말대로 폰부하로 인해 사용하기 힘듬을 깨닫고 연구하다가 웨잇이미지를 좀 더 잘 활용하면 기존 방식의 순서보다 더 효율적으로 사용할 수 있음을 깨닫고 다시 수정을 했었지요. 그렇게 30~40초를 단축 했습니다. 그리고 꼭 if가 필요한가라고 물으셨는데 이 게임은 필요로하는게임 입니다. 뭔가 if에 기능은 정말 많은 것 같은데 실상 활용은 잘못하고 있는 것 아닌가 해서 계속 실험 중이지요...
    원래 새로운 기술을 갈구하다보면 뭔가 답이 나올 것만 같은 그런 기분탓인지 모르겠지만... 이겜은 기존방식에서 갑작스럽게 뜨는 팝업창에 대처하기위해 기존방식을 벗어나는 방식을 많이 써야하는 게임입니다. 좀 더 편리하기 위해서 말이죠
    예를들어 게임내에선 도시이벤트라고 하는데
    뭔저 탐색을 하다가 마나를 먹는게 무한반복으로하는 기본순서라고 가정하죠. 그런데 갑자기 보스가 떠서 전투를 해야합니다. 물론 탐색의 위치와 전투버튼은 위치가 일치하기에 잘 넘어 갑니다. 그 다음에 나오는 넘기기도 전투를 알아서 다 하기 때문에 상관이 없지요. 하지만 이 전투가 끝나고 나면 다시 탐색을 하던 화면이 나옵니다. 이 보스는 저에게 두번의 전투를 필요로 하는 작업입니다. 따라서 한번도 전투를 해야하죠... 그런데 중요한것은 이 전투가 끝나는 시점에 월드맵으로 귀환하게 됩니다. 그렇다면 결국은 다시 그 자리로 돌아가게 해야하는데 이 과정이 너무 길기에 단축시켜야 했습니다. 결국은 if가 필요해 보였죠...
    보스를 계속잡다 보면 보스를 얻을 수 있습니다. 물론 손으로 하면 족히 2일이 걸리는 작업이죠...
    그런데 중요한건 손으로 했을때 꼬박 2일인데 과연 매크로로 짜면 2일 안에 먹을 수 있을까요? 천운이 아닌이상 불가능합니다. 그 보스카드를 8장 모으는데 말이죠...ㅋㅋㅋ
    자 그럼 순서가 어떻게 되는냐하면
    *제가 원하는 기준
    {(탐색-마나)무한반복-갑작스런 보스등장으로 인해 기존 방식 벗어남- 전투- wait5초-스크린인식 후 넘기기- wait5초- 스크린 인식후 확인-다시 보스 잡기-월드맵-다시 이벤들어가기}
    {}무한반복
    중요한건 보스등장도 불규칙적입니다. 규칙적이었다면 고민도 안했겠죠
    일단 이 불규칙적임을 막기위해 if로 탐색-마나를 숫자로 설정해서 벗어나게 할 순 있죠
    물론 그 다음에 나올 스크린 인식으로 실패 성공의 여부로 다시 무한반복할지 차례로 돌려나갈지는 생각해볼 이야기죠... 그런데 한가지 문득 스쳐지나가는 생각이 있었죠...제가 스크린 인식으로 실패 성공 여부로 다시 돌아올지를 판단한다 했었죠
    그런데 만약 불규칙적으로 나오는 보스가 한번 클릭했을때 나왔다 칩시다. 그런 아직 탐색-마나 루프가 if 설정에 의해서 19번 남았다면?! 물론 전투는 눌려 지곗죠...넘기기도 필요없겠죠
    그 와중에 끝날 수도 있으니까요...그럼 확인 버튼이 나왔죠
    아뿔사
    실패를해서 본 방식으로 돌아오면 이건 중대한 에러가 되는 거죠
    그럼 다음에 나올 확인 스크린에다가 그렇게 해주면 안되냐는 생각이 들겠죠? 생각 해봐요 보스 하나 잡자고 그렇게 시간을 많이 쓰면 2일이 아니라 4일도 더 넘게 걸릴겁니다...
    그럼 좀더 대단한 기술을 써야 한다는겁니다.
    그래서 if를 갈구하게 된거고요
    이쯤오면 이겜 왜하냐 싶겠죠?
    이런거 해결하는 맛에 겜하고 있습니다. ㅋㅋㅋ

    자꾸 다른분들이 굳이 if를 쓰려 하느냐 하는데 이겜은 안쓰면 암걸려서 못할겜입니다. 정말로
    그만큼 더 우수한 기술이 필요로 한단 말이죠...

    if에서 show popup 인가 하는 거 있던데 그거 설명해주시면 정말 감사할것 같네요 ㅋㅋ

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 If 적용하는법좀.가르쳐주세요 3 카스네 2015.05.21 0/0
질문 if 사용해서 강화단계 구별해서 특정수치 강화가능한가요? 2 Herb 2019.09.30 0/0
자유 if 나 var사용해 보신분? 7 울티오 2015.04.23 0/0
질문 IF 관련 질문입니다 19 산군 2015.08.28 0/0
질문 GTX460 그래픽카드 질문좀 드리겠습니다. 18 겨울캠퍼 2014.11.29 0/0
자유 Gpro2프랩 있으신분ㅠㅠ 1 선사미나 2014.10.29 0/0
질문 g4가 내일 오는데요 프렙 잘 되겟죠? 3 서초꽃거지 2015.10.06 0/0
자유 g3입니다 도와주세요 사례합니다 운월임 2016.06.05 0/0
질문 g3이미지인식이안되요 제발도와주세요 2 운월임 2017.03.18 0/0
질문 g3로 안드로이드 win패치 해보신분 계세요? 1 부야 2015.04.17 0/0
질문 g3나 g3 cat63 프랩사용자 계신가요?? 영웅포카카오 사... 2 앙팟 2015.07.11 0/0
자유 G3 세나 DB 2 세나Lab 2015.12.14 0/0
질문 g3 사용자입니다 프랩 버전다르면 db안되나요?? 2 wnwnndkdk 2015.10.20 0/0
자유 g3 사용자분 계신가요?? 6 장쯔이 2015.05.18 0/0
질문 G3 cat.6용 DB구할수있을까요? 몬길니그나 2014.11.20 0/0
질문 g3 cat.6 프렙파일좀 부탁드립니다,, 몬길이짱이여 2015.03.17 0/0
질문 g3 5.0 프렙실행 되나여? 6 세나좀하장 2014.12.30 0/0
질문 g2인데요 갤3꺼 db다운받앗는데 바꾸는방법없나요? 12 메이저으리그 2015.04.12 0/0
질문 g2로 세나 프렙 돌리려하는데 루팅같은거 어디서해야하... 4 구사황1 2015.04.20 0/0
질문 g2나 갤4를 사면 옹스님이나 김밥님꺼 잘쓸수있을까요 3 jotgga 2015.06.17 0/0
Board Pagination Prev 1 ... 189190191192193194195196197 ... 212 Next
/ 212

전체 최신 인기글

전체 주간 인기글