Skip to content

팁 게시판

nt봇 로비에러 해결~ㅋ

분류 봇관련 조회 수 4,985 추천 수 39


+++++++++++++++++++++++++++
<디아블러네님의 글 中>
* 로비버그? D2메니져 상엔 in game 상태이나 로비에서 대기하는 버그
* in game버그 ? 방 입장 후 20분 동안 스크립트 수행을 하지 않는 버그

많은 분들이 이제 로비에러 0이라 하시니 로비에러는 확실히 줄었다고 생각되는군요ㅎ
2일간 테스트후 이곳에 올리고 다시 2일이 지나서 총 4일간 테스트..
로비에러는 한번도 나지 않았습니다 각 시스템에 따라 차이가 있겠지만 그건 자신의 시스템에 맞게 시간을 조절하는걸로
해결이 될듯 하군요

현재 제가 쓰고있는 버전에대한 쪽지가 많은 관계로(플러그인 보내달라거나..)
이전까지 쪽지주신 분들께는 개인적으로 몇분 보내드리긴 했습니다만...
제 맘대로 남의자료를 함부로 보내고 하는건 좀 그렇기도하고 저도 너무 손이 많이 가는지라...(저도 이제 게임조금 할께요 ㅎ)
쪽지는 이제부터 받지 않겠습니다.. 죄송합니다(_ _)a
+++++++++++++++++++++++++++


예전 mmbot전성기일때 활동하던 dud입니다.. 머 저 아는사람은 없을듯하네요 ㅎㅎ
워낙 눈팅 유저라.. ㅎㅎ
누군가 해결하신분이있는데 제가 뒷북 치는것일지 모르지만 그래도 시작해 볼께요

우선 제 nt봇 버전을 말씀드리자면
이곳에서 다운받은
nt봇 D2BS 0.9.0.4 버전을 쓰고있습니다
시작한지 얼마 안되어서 헬포지 러쉬용 케릭하나 키우려고 오리소소부터 키우기 시작했는데요
현재 오리에서 돌리고는 있지만 머 확장이나 오리나
이 문제 해결하는건 같으니 상관없습니다

아무튼 테스트해본 결과 47시간동안 인게임 에러는 한번도 안나오네요ㅎㅎ

머 서두는 여기까지 하고

nt봇의 기본적인 스크립트에 대한 이해는 모두들 하고있는것으로 추정하고 본론부터 바로 들어가겠습니다

우선 스크립트 폴더 안에 있는 starter.dbj파일을 메모장이나 에디트 플러스등으로 편집을 합니다

그럼
123번째 라인 즈음 부터 아레와 같은 내용이 나오게 되는데요
switch(lastGameStatus)
 {
 case 0:
 controlData.click(controlData.controls.lobby.button.join);
 delay(100);
 controlData.click(controlData.controls.lobby.button.create);
 nextGameMake = getTickCount() + createGameTimeout; // set our timeout
 sendEventToOOG(127, location.name, 0);
 break;

이건 로비에서 크리에이트 게임을 할경우에 우선 JOIN버튼 한번 클릭후 0.1초 있다가
CREATE를 클릭후 바로 방제 입력하고 방을 만들게 되는 스크립트인데요
여기서
1. controlData.click(controlData.controls.lobby.button.join); 이내용을 삭제하거나 주석 처리해주세요
2. delay(100); 여기의 100을 1000정도로 늘려주시구요
3. controlData.click(controlData.controls.lobby.button.create); 의 다음 줄에 delay(1000);을 추가해주세요
위와 같이 바꾼이유는 우선 제가 볼때 조인 클릭하는건 인게임 에러에 아무런 효과도 없습니다..
대신 방을 빠져 나와서 1초간 기다렸다가 크리에이트 버튼을 클릭하고 1초간 기다렸다가 방제와 비번을 입력하고 방을 만들게 하도록 바꾼것입니다
로비에서 방을 조금 천천히 만들도록한것이죠

5. 같은 파일의 76번째 라인 즈음 부터 다음과 같은 내용이 있을 것입니다
sendEventToOOG(65535, "Maximum game length reached!", 65535);
quit();
이 코드 바로 다음에 delay(2000); 를 추가해 줍니다
이건 제한시간이 다되어서 로비로 나왔을때 2초간 대기하도록 한것입니다

자 이건 진짜 해결된 코드로 고치기위한 준비에 불과하구요(이렇게만한다고 해결되지 않습니다)

6. 이코드를 넣고 인게임 에러가 하나도 안생기게 되었는데요 방법은 이렇습니다(제일 간단합니다)
이 파일의 메인함수 안에 다음과 같은 코드가 있을꺼에요
locationAction(controlData.getLocation());
이걸 분석해보면 이건 현재 케릭이 어디에 있는지를 검사하고 각 위치마다 서로 다른 동작을 하도록 하는 함수입니다
이코드 바로 위에 delay(500);를 추가해 줍니다

이렇게 바꾼이유는 메인함수 전체를 분석해보면 케릭이 방에 있지 않을때 _ingame을 false로 바꾸고
locationAction(controlData.getLocation())이 함수를 불러오는 건데요
케릭이 방에서 나가는 순간 케릭의 현재 위치를 너무 빨리 검사한 나머지 메니져는 케릭이 방에서 나오지 않은걸로 체크 했지만 게임상으로는 로비로 빠져나오는 상황이 만들어 질수 있을듯하더라고요

그래서 locationAction(controlData.getLocation());이 코드 위에 딜레이를 0.5초 정도 주어서 조금 천천히 검사하도록 바꾼거죠

그 이후로는 인게임에러 전혀 없네요

이렇게 다 고처진 소스는 아레와 같습니다

생략.....
function main()
{
 delay(1000);

 var _ingame = false;

 controlData.clickDelay = clickDelay;
 controlData.textDelay = textDelay;
 controlData.clickDelayRandom = clickDelayRandom;
 controlData.textDelayRandom = textDelayRandom;

 while(1)
 { 
 if(me.ingame)
 {
 if(!inGameAt)
 inGameAt = getTickCount();

 if(getTickCount()-lastGameMade < gameMaxLength)
 {
 if(!_ingame)
 {
 _ingame = true;

 sendEventToOOG(126, "In Game", parseInt(gameMinLength/1000));
 lastGameStatus = 2; // in game successful
 }

 delay(1000);
 }
 else
 {
 sendEventToOOG(65535, "Maximum game length reached!", 65535);
 quit();
 delay(2000); //<----********고친부분*******

 while(me.ingame)
 delay(500);
 }
 }
 else
 {
 if(_ingame)
 _ingame = false;

 delay(500); //<----********고친부분******* 이부분이 제일 중요!!!!!!!!!!!!!!!!!!!!!!!
 locationAction(controlData.getLocation());

 delay(500);
 }
 }
}

function locationAction(location)
{
 switch(location.id)
 {
 case 3: // Lobby Chat
 if(!chatActionsDone)
 {
 chatActionsDone = true;
 delay(rnd(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

 if(joinRandomChannel || joinChannelInChat != "")
 {
 say("/join " + (joinRandomChannel ? getRandomString(rnd(3,10)) : joinChannelInChat));
 delay(1000);
 }
 }
 case 1: // Lobby
 if(location.id == 1 && joinChatAfterGame)
 {
 delay(rnd(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
 controlData.click(controlData.controls.lobby.button.enterChat);
 break;
 }

 if(getTickCount() > nextGameMake)
 {
 lastGameFailed = false;

 switch(lastGameStatus)
 {
 case 0:
  delay(1000); //<----********고친부분*******(수정)
 controlData.click(controlData.controls.lobby.button.create);
 delay(1000); //<----********고친부분*******

 nextGameMake = getTickCount() + createGameTimeout; // set our timeout
 sendEventToOOG(127, location.name, 0);
 break;
 case 1: // game failed, rollover to reset timer
 inGameAt = getTickCount(); // reset inGameAt, to wait how long we should have waited..
 lastGameFailed = true;
 case 2:
 outputGameLength();
 lastGameStatus = 0;
 setNextGameMake();
 sendEventToOOG(127, location.name, 0);
 break;
 }
 }
 else
 {
 locationTimeout(nextGameMake-getTickCount(), location);
 }
 break;
생략.........

고수님들 해보시고 해결되셨다 싶으시면 다시 정리해서 올려주시면 감사하겠습니다 (_ _)
제가 말주변이 없다보니 제대로 이해하셨나 몰겠네요.. ㅠㅠ
그럼 성공하시길 빌어요~!!!!!

============================================================
http://tradia.me/diablo2/download/41454
플러그인폴더 통으로 올리려했지만 디아블러네님 조언에따라 스타터파일만 올렸습니다~!!

위 소스 수정된걸로 올렸으니 참고하세요

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

[TEST REPORT]
제 사랑스런 오리래더 봇순이들 두 마리와 d2매니저 단체 사진입니다ㅎㅎ
한마리는 50방을 도는동안 리스타트 4번
한마리는 44방을 도는동안 리스타트 8번
(20방에 한번씩 시디키 교체로 인하여 리스타트를 하기때문에 2를 빼면)
각 2번과 6번이 리스타트가 생겼고
이중 로비에러에 인한 리스타트는 둘다 0번
헤이가이즈에러에 인한 리스타트는 각 2번과 6번입니다..

nt봇 로비에러 해결~ㅋ - 1
댓글110
  • dud 2008.08.22 09:04
    ㅎㅎ 성공 축하드려요^^ 득템하시길 빌어요^^
  • 안녕놔의솨뢍 2008.08.22 17:32
    1000으로 늘려도 안되서 바다가들린다님처럼 수정했는데도... 후.. 902로 돌아가야겠군요^^; 어쩔수없죠 뭐;
  • dud 2008.08.22 18:14
    안녕놔의솨랑//님 그러면 NTloader.dbl파일을 여셔서 보시면 main() 함수 마지막에 quit();라는 문장이있는데 그거 다음에 delay(2000); 나 delay(3000); 을 추가시켜줘 보세요
  • 안녕놔의솨뢍 2008.08.22 20:17
    오홋~ NTLoader에 메인함수부분이 안보이네요^^; 제가 못찾는건가^^; 그리고 바다가들린다님처럼 여러번수정하고 해야할까요? 그냥 수정해야할까요?
  • dud 2008.08.23 08:18
    아 제가 착각했네요 로더가 아니라 default.dbj 이파일이에요 ㅎㅎ
  • 안녕놔의솨뢍 2008.08.23 20:45
    수정했지만 1캐릭은 리스없고 로비에러없더니 2캐릭켰더니.. 후... 그동안 도움주셨던거 감사합니다^^;
  • 낭만_바바 2008.08.24 06:53
    3일전에 볼땐 뭔 소리진 넘 어려웠는데...^^ 오늘은 어느 정도 이해가되네요..2~3초 차이는 큰게 아니니깐..시간을 바다가들린다님 처럼 조금늘여봤습니다 ^^ 지금부터 모니터링 들어갈려구요.부디 만족할만한 결과가 나와야할텐데. //그리고 앵벌이도중에 방에서 최대시간이 되지 않았음에도 불구하고 그냥 리슷을하는건 컴터사양에 관한건가요? 아니면 다른분들도 종종 그런경우가 있는건가요? 3일전 첫변경이후 로비에러는현저히 줄었는데. 리슷은 그래도 잦더라구요. 특히나 사냥하다 그냥 로비로 팅기거나 리슷하거나. ㅜ.ㅜ 일단 오늘 하루 모니터링해보고 다시 질문 좀 드릴께요 ^^ 감사합니다
  • dud 2008.08.24 07:50
    제가 지금 열심히 다른 알고리즘으로 바꾸고있긴한데 잘안되네요ㅠ 암튼 위방법은 로비에러를 줄이는 것이지 리스탓율을 줄이는 방법은 아니에요 그냥 로비에러도 리스탓을 하기때문에 로비에러가 줄면 리스도 줄뿐이지요 오류 경고창이나 헤이가이즈가 떠서 리스타트가 되는건 로더와 코거간의 충돌문제에 가깝기때문에 코어자체가 로더와 완벽한 호환이 되도록 코어 개발자가 바꾸어 주지 않으면 해결방법이 없는 셈이죠..
  • 충팔이 2011.04.06 22:12
    와.. 쩌네요.. 감사합니당 ㅎ
  • 히발유 2011.08.01 09:22
    아직 해보진 않았지만 좋은정보 감사드립니다 ^^

팁 게시판

번호 분류 제목 글쓴이 날짜 조회
공지   게시판 푸시 알림 / 통합 앱 서비스 31 file 트디개발자 2023.09.20 831.8k
공지 디아관련 에테리얼 벅큐빙 표 219 eunnanoDiablo™ 2008.03.05 140.3k
공지 디아관련 케릭별 갑옷 착용 모습 325 수린[아빠] 2009.06.09 111.4k
공지 디아관련 디아블로 각종 팁과 정보 간추림 입니다 (_ _) 1547 조은아저씨 2010.05.24 211.6k
공지 봇관련 유니크 업글 표 366 file 카인 2013.11.02 412.9k
456 봇관련 NT 봇, Dac Farren 잡게 하기[수정] 13 봉구입니다 2008.09.03 1.2k
455 봇관련 NT 봇, 마을 웨이 줄줄이 에러(?) 해결 18 file 봉구입니다 2008.09.03 2.2k
454 봇관련 NT봇 로그인 시 꺼지는 현상 해결법 5 구구단 2008.09.03 1.9k
453 봇관련 NT봇, 타운포탈 관련 8 봉구입니다 2008.09.03 1.6k
452 봇관련 NTbot 리슷율 줄이기? 19 camus 2008.09.02 2.6k
451 봇관련 NTbot 동일명의 봇 스크립트를 케릭별로 사용하기 3 [無情]디아블러네 2008.09.02 1.7k
450 봇관련 Pc방 알바를 위한 Tip 4 댜쟙쟈 2008.09.02 2.2k
449 봇관련 [ntbot] 스태틱 거리수정. 5 file nation 2008.08.29 1.8k
448 봇관련 봇돌이 에러와의 싸움후... 16 트리스트럼™ 2008.08.25 2.8k
447 봇관련 [NTBot] NTBot.ntj (시간설정) 대략적인 설명 20 날퍼맨_2 2008.08.24 8.5k
446 봇관련 NTbot 로비에러 해결(전면 재수정, 테스트 결과) 35 dud 2008.08.24 2.9k
445 봇관련 디아만켜도 자동으로 봇이 켜진다는분. 18 H@ppy 2008.08.23 2.5k
444 봇관련 봇순이 스킬 (파볼체라소서) 추가수정 34 zzz365 2008.08.21 3.4k
443 봇관련 [d2jsp] 핀들 잡은 후 리뎀션 사용하기 2 Kridnia 2008.08.20 1.1k
442 봇관련 [답변글中] NT봇 바알런시 파티원들에게 갇힙니다 2 [無情]디아블러네 2008.08.20 1.4k
> 봇관련 nt봇 로비에러 해결~ㅋ 110 dud 2008.08.19 5.0k
440 봇관련 XP봇, failed snag error 해결방법(추가 사항) 13 봉구입니다 2008.08.18 1.1k
439 봇관련 쫄봇으로 디아런을 즐겨보자 (오리지널 유저 강추) 17 @털남이 2008.08.18 5.6k
438 봇관련 [D2JSP]중저사양컴 멀티봇+nohide무난히 적용하기 14 NoQuestion。[A2L] 2008.08.17 2.9k
437 봇관련 xp봇 + bp메니져 사용자 9 [無情]디아블러네 2008.08.16 2.3k