Skip to content
봇관련다크 모드

대기열이 줄어들지 않고 로비에서 대기만하는 경우 해결해 봅시다.

조회 수
5,154
추천 수
31
등록일

※ 현재 날아다녀님께서 이 문제로 인한 무한대기현상이 발생하지 않도록 보완한 19차버젼을 자료실에 업로드 하셨습니다.
아래 글은 18차 버젼을 기준으로 작성하였습니다. 이 방법이 조금 어려우신분들은 19차버젼을 사용하시면 위 문제를 해결하실수 있습니다.


요즘 대기열이 심상치 않죠

우버이벤등등으로 저는 대기열이 10000이 넘어간 경우도 요즘 보이네요.

이런 대기열이 방이 만들어 질때는 팍팍! 줄어들어 만들어지다가 한참 봇이 돌아가다보면

어느순간 방은 안만들어지고 대기열은 1이라도 줄어들 생각을 안하고 로비에서 대기만 할때가 있습니다.

대기열이 전혀 줄어들지 않고 계속 매니져창에는 로비에서 대기중이라며 시간 카운트만 열심히 새고 로그에는 방 만들기 시도만 잔뜩... 있죠.

이럴때는 보통 중지를 눌렀다 다시 실행을 누르면(재 로그인) 해결되는 경우가 많은데요. 이걸 모니터링하면서 계속 해주기란

여간 귀찮은게 아니겠죠.


날아다녀님 18차기준으로 설명하겠습니다.(19차테스트버젼은 이 문제가 해결됬다죠...)

지금 19차 테스트버젼을 사용하시는 분도 아마 계시겠지만 위 문제를 해결 하려고 18차에서 19차로 다시 넘어 가려면 이것저것 다시

손봐주기 귀찮은분들이 저를 포함해 많이 계실거라 생각하고 적어보겠습니다.


19차 테스트버젼에 scripts폴더안의 NTBot.ntj파일을 그대로 18차로 옮기면 오류가 나는것을 확인 했습니다.

그래서 18차 scripts폴더안의 NTBot.ntj파일을 수정해 보았는데요.

먼저 18차 원본 NTBot.ntj파일을 열어보시면 209번째 줄부터 230번째 줄에 아래와 같은 if문이 보이실겁니다.

 if (_MyOtC_CheckCreateGame[0] && _MyOtC_CheckCreateGame.length > 2)
 {
 checkCreateGame.index++;

 if (_MyOtC_CheckCreateGame[1])
 sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1대기 중 (" + checkCreateGame.index + "번째 게임 참가 실패)", 0);

 checkCreateGame.count = (checkCreateGame.count < (_MyOtC_CheckCreateGame.length - 1)) ? (checkCreateGame.count + 1) : 2;

 for (var i = 1; i <= _MyOtC_CheckCreateGame[checkCreateGame.count]; i++)
 {
 sendEventToOOG(D2NT_MGR_PRINT_STATUS, "대기 중 (" + i + "/" + _MyOtC_CheckCreateGame[checkCreateGame.count] + "초)", 0);

 if ((i % 10) == 0 && location.id == 3)
 Say("Create Game (" + i + "/" + _MyOtC_CheckCreateGame[checkCreateGame.count] + "s)");

 if (me.account == _MyWKC_WarehouseKeeperMode && My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 0))
 break;

 Delay(1000);
 }
 }

이 부분이 scripts\NTBot\MyConfigs 폴더안의 Other.ntl파일의 var _MyOtC_CheckCreateGame을 담당하는 부분으로 보이네요.

위 if문을 19차테스트 버젼에 있는 아래 구문으로 바꿔봤습니다.

 if (_MyOtC_CheckCreateGame[0] && _MyOtC_CheckCreateGame.length > 2)
 {
 checkCreateGame.index++;

 if (_MyOtC_CheckCreateGame[1])
 sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1대기 중 (" + checkCreateGame.index + "번째 게임 참가 실패)", 0);

 checkCreateGame.count = (checkCreateGame.count < (_MyOtC_CheckCreateGame.length - 1)) ? (checkCreateGame.count + 1) : 2;

 if (_MyOtC_CheckCreateGame[checkCreateGame.count] > 0)
 {
 for (var i = 1; i <= _MyOtC_CheckCreateGame[checkCreateGame.count]; i++)
 {
 sendEventToOOG(D2NT_MGR_PRINT_STATUS, "대기 중 (" + i + "/" + _MyOtC_CheckCreateGame[checkCreateGame.count] + "초)", 0);

 if ((i % 10) == 0 && location.id == 3)
 Say("[Countdown] " + i + " / " + _MyOtC_CheckCreateGame[checkCreateGame.count] + "s");

 if (me.account == _MyWKC_WarehouseKeeperMode && My_File("NTBot/MyData/WarehouseKeeper/WarehouseKeeperJoin.txt", 0)[0])
 break;

 Delay(1000);
 }
 }
 else if (_MyOtC_CheckCreateGame[checkCreateGame.count] < 0)
 {
 sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿc1재실행 (게임 참가 실패)", 0);
 sendEventToOOG(D2NT_MGR_RESTART, "", -_MyOtC_CheckCreateGame[checkCreateGame.count]);
 My_Delay();
 }
 }

이제 봐꿨으니 설정을 해봐야 겠죠.

scripts\NTBot\MyConfigs폴더안에 Other.ntl파일을 열어보시면

var _MyOtC_CheckCreateGame = [true, false, 숫자, 숫자, 숫자];부분이 보이네요.

이 설정은 19차 주석을 확인해 보면

// 게임 참가 실패 시 대기 하기 = [사용 여부, 게임 참가 실패 메시지 출력하기, 실패 횟수 별 대기 시간(초) . . .] * 주의: 실패 횟수 별 대기 시간을 0보다 작게 설정하면 멀티로더를 종료한 후 대기합니다. 예로 -30초로 설정했다면 멀티로더 종료 후 30초간 대기합니다. * 참고: 실패 횟수별 대기 시간은 설정한 실패 횟수를 초과하거나 멀티로더가 재실행되면 처음부터 다시 적용됩니다.

그렇죠. 아주 깔끔하고 명쾌하고 완벽하며 사랑스러운 주석이 되겠습니다.

저는 수정한 18차 버젼이 이 주석대로 작동 하는지 확인하기 위해 간단한 테스트를 해봤습니다.

var _MyOtC_CheckCreateGame = [true, false, -30]; 이렇게 설정하고는

NTbot.ntj파일에서

var createGameThreshold = 10000; // 게임 만드는 과정마다 추가 시간(1/1000초)
var waitInLineTimeout = 2000; // 게임 만들기 창에서의 대기 시간(1/1000초)

이렇게 하면 2초동안 방을 못만들면 로비에서 10초간 대기후 디아창은 꺼지고 매니저에서는 재시작(30초)란 글이 뜨겠죠.
(※수정합니다. 방만들기를 한번 실패하면 게임최소시간(var gameMinLength)에 설정한 시간만큼 로비에서 한번 대기후 다시 방을 만듭니다.)

확인결과는 성공이네요.

현재는

var createGameThreshold = 30000; // 게임 만드는 과정마다 추가 시간(1/1000초)
var waitInLineTimeout = 50000; // 게임 만들기 창에서의 대기 시간(1/1000초)

var _MyOtC_CheckCreateGame = [true, false, 10, 30, -30];

이렇게 설정하고 돌리고 있습니다. 5시간채 안돌아가서 로비무한대기가 종종 생기던 제 직원들이 현재 8시간째

로비 무한대기현상은 없습니다. 알아서 재시작을 간간히 해주네요.

이제 로비 무한대기는 저랑 모르는 사이에요...
댓글 68
  • 댓글 #271874

    뜀박질님 // 제가 정확히 이해한것인지는 모르지만. 해당숫자는 게임참가 실패시 대기하는 시간입니다. 1회째는 10초, 2회째는 30초, 3회째는 -30초(* 주의: 실패 횟수 별 대기 시간을 0보다 작게 설정하면 멀티로더를 종료한 후 대기합니다. 예로 -30초로 설정했다면 멀티로더 종료 후 30초간 대기합니다.) 입니다. 즉 [true, false, 10, 30, -30]; 이렇게 설정하면 3회째 참가 실패시 멀티로더 종료후 리스타트 하게 설정해주는것 같습니다. 그리고 추가시키는 것이 아닌 scripts\NTBot\MyConfigs폴더안에 Other.ntl 파일에서 해당부분을 찾아 수정해주시면 되는것 같습니다.
  • 댓글 #271877

    게임만들기 창에서 정해진 시간(var waitInLineTimeout) 안에 방을 못만들경우 다시 방을 만드는 대기시간에는 var createGameTimeout = 15000; // 게임 만들기 실패 시 대기 시간(1/1000초) 부분도 관여하는 것같습니다. 한 예로 NTBot.ntj파일에서 아래와 같이 설정하고 var createGameThreshold = 5000; // 게임 만드는 과정마다 추가 시간(1/1000초) var createGameTimeout = 30000; // 게임 만들기 실패 시 대기 시간(1/1000초) var waitInLineTimeout = 2000; // 게임 만들기 창에서의 대기 시간(1/1000초) Othter.ntj 파일에서 아래와 같이 설정할경우 var _MyOtC_CheckCreateGame = [true, false, 10, 30, -30] 로그인 후 캐릭선택 -> 로비에서 약 5초대기후 게임만듬 -> 2초 안에 방을 못만들 경우 약 25초 대기 -> 10초 추가대기(1회실패에 해당) -> 로비에서 약 5초대기후 게임만듬 -> 2초 안에 방을 못만들 경우 약 25초 대기 -> 20초 추가대기(2회실패에 해당) -> 로비에서 약 5초대기후 게임만듬 -> 2초 안에 방을 못만들경우 25초대기 -> 로더종료후 30초대기(3회실패에 해당) -> 로더리스타트 와 같은 과정을 거치는 것을 확인했습니다. 이는 var createGameTimeout 에 해당되는 시간만 수차례 수정 후 관찰 해본결과 실제로 관련이 있는 것을 확인 할 수 있었습니다. 다만 실제 설정한 시간보다 5초~6초가량 적은 시간이 적용(위의 예제의 경우 30초 설정이지만 약 24~25초만 대기함)되는 이유에 대해서는 확인하지 못했습니다.
  • 댓글 #271880

    먼저 좋은정보 감사합니다 18차에 적용시켜보니 재실형을 하더군요 거의성공이라고 볼수있는데 여기서 궁금한점있는데요 제가 자주이용하는게 12차고 쓰고싶은것도 12차인데 12차엔 적용을 못시키는건가요??
  • 댓글 #271883

    와.. 정말 잘 사용하겠습니다^^ 이제 렐따 걱정만 하면 되겠네요~
  • 댓글 #271886

    봐도 모르겠음 ㅜ.ㅜ~~~~~~~~~~~~~~~~~~~ 스킬 적용 하는 법도 올려 주심 안될가요 좀 쉽게
  • 댓글 #271892

    이거 방안만들어지면 무슨 이상한 오류 확인누르는거 뜨면서 없어지고 대기시간 있다가 다시 재실행되는건가요?
  • 댓글 #271895

    ↑뭐라그러지.. 문구가 뜬다고 하나.. 문구 같은게 뜨고 꺼지는..
  • 댓글 #271898

    좋은 정보 감사 합니다 다른 차수의 봇에서도 되는지 실험해봐야겠네요
  • 댓글 #271904

    이렇게해도 무한대기는 계속 합니다. 3번 만들때까지 안되면 재실행하네요.
  • 댓글 #271907

    유용한 정보 감사드립니다. 이제야 조금씩 답을 알아가네요..^^
  • 댓글 #271910

    봇을 아직 다운받지 못했지만 이부분이 어떻게 해결됐을지 가장 궁금하기는 했습니다. 이런 방식을 사용했군요...
권한이 없습니다.
다크 모드