Skip to content
봇관련다크 모드

수동봇 렐따, 방스틸 및 오류 해결책

조회 수
1,880
추천 수
1
등록일

수동봇(d2jsp.exe)의 starter.d2j 파일을 수정하였습니다.

다음 내용은 추가사항입니다.

첫째. 렐름따운이 걸렸을시 베틀넷을 로그아웃하여 설정한 시간만큼 기다리면서

1분 간격으로 비프음을 3회 발생시키고 시간이 다 되면 베틀넷 접속을 시도합니다.

둘째. 방스틸을 당했을 경우 10초 기다린후 바로 다음방을 만듭니다.(방따시간 설정과 무관)

셋째. 이미 방만들기(Create)버튼이 눌러져 봇이 멈추는 현상을 해결하였습니다.

넷째. Please Wait 메시지와 Lost Connection 메시지로 인해 봇이 멈추는 현상을 해결하였습니다.

다섯째. thething님 정보를 바탕으로 치킨등으로 최소시간이 무시되는 현상을 해결하였습니다.(방따시간 기준)

변수선언부에 다음항목을 추가합니다.

var realm_down_time = 60; // 렐따시 대기시간(분)

var pleaseWaitCancelButton = [6,351,337,96,32];
var ladderButton = [6,614,490,80,20];

var LastGameLength = 0;
var TotalGameCreateDelay = 0;
var realm_down_retry = 5;

다음으로 ChooseCharacter함수를 아래와 같이 바꿉니다.

function ChooseCharacter() {
 dprint("We're at the char select screen. Choosing character for " + d2_game_types[game_type] + ".",1);
 realm_down_retry--;
 if(realm_down_retry==0) {
 dprint("Choose Character Faild to 'Realm Down', Waiting " + realm_down_time + " minutes.", 1);
 if(!find_and_click_control(charbuttons[1])) return false;
 for(i = 0; i <= realm_down_time; i++) {
 beep(3);
 delay(500);
 beep(3);
 delay(500);
 beep(3);
 delay(59000);
 }
 realm_down_retry=5;
 }
 delay( (game_type==SINGLE_PLAYER ? 500 : 3000) );
 if(!find_and_click_control(CharPositions[charposition])) return false;
 if(!find_and_click_control(charbuttons[0])) return false;
}

다음으로 main함수를 아래와 같이 바꿉니다.

function main() {
 var LastGameStarted = -1;
 delay(3000); 
 while(!findLocation()) delay(1000);
 dprint("Successfully logged onto battle.net.");
 dprint("Starting game creations.");

 while(1) {
 LastGameStarted = me.gamestarttime;
 if(createGame(gamename + (++total_games), gamepass)) {
 game_failed = false;
 while(!me.ingame) {
 now = getTickCount();

 if(now - LastGameAttempt > CreateGameTimeout && me.gamestarttime==LastGameStarted) {
 dprint("Last Game Creation timed out. Attempting to create another game in 10 seconds.");
 total_failed++;
 game_failed = true;
 delay(10000);
 break;
 } else {
 delay(500);
 }
 }

 if(!game_failed) {
 while(me.ingame) { // we're in game now, wait till we leave the game.
 delay(500);
 }

 now = getTickCount();
 LastGameLength = now - LastGameAttempt;
 dprint("Game End Detected! Elapsed time: " + (LastGameLength/1000) + " seconds");
 realm_down_retry = 5;
 if(LastGameLength < CreateGameTimeout) {
 TotalGameCreateDelay = CreateGameTimeout - LastGameLength + GameCreateDelay;
 } else {
 TotalGameCreateDelay = GameCreateDelay;
 }

 dprint("Waiting " + (TotalGameCreateDelay/1000) + " seconds before starting next game.");
 delay(TotalGameCreateDelay);
 }
 } else {
 dprint("Failed to find a control for game creation. Will attempt to find location in 10 seconds.");
 delay(4000);
 ladderClick();
 delay(2000);
 pleaseWaitCancel();
 delay(4000);
 while(!findLocation()) delay(1000);
 }
 
 runGC();
 delay(500);
 }
}

다음으로 main함수가 끝나는 부분 아래에 다음의 두가지 함수를 추가합니다.

function ladderClick() {
 if(!find_and_click_control(ladderButton)) return false;
 return true;


function pleaseWaitCancel() {
 if(!find_and_click_control(pleaseWaitCancelButton)) return false;
 dprint("Please Wait Cancel or Lost Connection OK Button Click Success.");
}

마지막으로 createGame함수를 아래와 같이 바꿉니다.

function createGame(name, pass) {

 if(random_gamename) name = TDW_BASIC_GetRandomString(rnd(4,15));
 if(random_password) pass = TDW_BASIC_GetRandomString(rnd(4,15));

 delay(1000);
 if(!find_and_click_control(buttons[0])) return false; 
 delay(1000);
 if(!find_control_and_set_text(editboxes[0], name)) return false;
 delay(500);
 if(!find_control_and_set_text(editboxes[1], pass)) return false;
 delay(500);
 if(!find_and_click_control(radiobuttons[difficulty])) return false; 
 delay(1000);
 if(!find_and_click_control(buttons[1])) return false; 
 delay(2000);
 if(ladderClick()) return false;

 LastGameAttempt = getTickCount();
 
 dprint("Game #" + total_games + " Created, " + total_failed + " fails so far. Now waiting for game to start...");
 return true;
}

위 내용이 적용된 starter.d2j 파일을 압축하여 자료실에 올려놓았습니다.

혹시 문제가 발견되면 댓글 부탁드립니다.
댓글 16
  • 댓글 #152930

    오우 이거오늘함 해봐야겠네요 계속 방만들기 실패했었는데 ㅎㅎ 좋은정보 감사합니다~~
  • 댓글 #152933

    tb빈님 추가함수는 2가지이고 나머지는 변경된 함수입니다. 참고로 자료실에 적용된 starter.d2j 파일 올려놓았습니다. 그 파일에서 캐릭위치, 계정명, 비번, 방제, 방비번, 캐릭명을 바꿔서 적용하면 될것같습니다.
  • 댓글 #152939

    오토로 돌리는 사람들은 어떻게 해여 ㅠㅠ? 저는 일주일에 한 세번은 렐따되는듯..
  • 댓글 #152942

    오토는 검색해보시면 정보가 있을겁니다. 오토는 돌려본 경험이 거의 없는 관계로 저는 잘 모르겠습니다.
  • 댓글 #152945

    오오, 수동봇밖에 못쓰는 저에겐...... 고맙습니다~~~ 자료실가서 다운받고 제 스타터파일에 대체시킴 되는건가요? 그럼 이번 게 밑에밑에 루키아 님이 올려주신거의 최종판인가요?
  • 댓글 #152948

    네, 뭐 별다른 문제가 안생긴다면 이것이 최종판일수도 있겠네요.
  • 댓글 #152951

    네 고맙습니다. 루키아님.... 그런데.... 질문하나만 드려도 괜찮을까요. 제가 잘몰라서 그러는데 루키아님의 파일을 starter. 제 원래 쓰던것을 혹시 몰라서 '내starter'라고 해두었습니다.(이름을 바꿔놨죠) 즉 스타터가 두개인 셈이죠, 이제 제가 앞으로 봇을 돌린다면 루키아님의 파일이 적용되는 건가요?
  • 댓글 #152957

    답변 감사합니다, 이제 맘편히 자도 될듯, 허허 매번 도움을 받네요~
  • 댓글 #152966

    음 어제부턴가 갑자기 렐따가걸리거나 갑자기베넷이팅기면 로긴화면으로 넘어가서대기하여야 하는데 자꾸만 싱글케릭만들기화면으로 넘어가더군요... 뭔가 커서작동이잘못되어 싱글플레이를 잘못누르는것같습니다
권한이 없습니다.
다크 모드