+++++++++++++++++++++++++++ <디아블러네님의 글 中> * 로비버그? 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초 정도 주어서 조금 천천히 검사하도록 바꾼거죠
[TEST REPORT] 제 사랑스런 오리래더 봇순이들 두 마리와 d2매니저 단체 사진입니다ㅎㅎ 한마리는 50방을 도는동안 리스타트 4번 한마리는 44방을 도는동안 리스타트 8번 (20방에 한번씩 시디키 교체로 인하여 리스타트를 하기때문에 2를 빼면) 각 2번과 6번이 리스타트가 생겼고 이중 로비에러에 인한 리스타트는 둘다 0번 헤이가이즈에러에 인한 리스타트는 각 2번과 6번입니다..
철수와박은혜//
게임을 나가는동안 순간렉이 엄청 발생하신다면
sendEventToOOG(65535, "Maximum game length reached!", 65535);
quit();
delay(2000);
이부분의 2000값을 더 크게 잡아보세요 순간렉으로 멈춰있는 시간을 어림잡아 계산하셔서 그보다 좀더 크게 잡으시면 될듯하네요
인철님께서 예전에 올리셨던 080725일자 버전의 nt봇입니다
현재는 드루네 자료실에서는 찾아볼수 없는자료로 생각됩니다
자삭하고 떠나셨다고 하시더군요
또한 자신의 자료 이곳에 올라오는것도 꺼려하신다고 하니
여기선 찾아보기 힘들듯함니다..
그러나 저와 똑같은 환경이 아니더라도
소스코드 어느정도 보실줄 아신다면
이 해결방법의 중요한 팁은
1. 로비에서 크리에이트 버튼을 누르기 전과 후에 1초의 딜레이를 주고
2. 최대게임시간이 지나서 종료시킬때도 quit();함수 바로 다음에 2초이상 딜레이
3. locationAction(controlData.getLocation()); <<--이함수 호출 직전에 0.5초 딜레이를 주는것 입니다
추가로 게임 종료할때 렉이좀 심하시다면 2번에대한 사항의 딜레이를 늘려주시고
default.dbj 파일에 main함수 마지막에있는 quit(); 바로 다음에 2번과 같은 딜레이를 주는것입니다 이게 전부에요 ㅎㅎ
뱃쌀식용유님
만약
if(생략)
function1();
이런 코드가있을때 이 if문에 걸렸을때 수행할 동작을 추가하고 싶다면
if(생략)
{
function1();
function2();
}
이렇게 바꾸어 주어야 합니다
중괄호를 넣지 않는 경우는 if문이나 while문 안쪽의 코드가 한줄로 되어있을때만 가능하고
두줄 이상일때에는 중괄호를 넣어서
if문이 참일때 수행할수 있는 문장이 어디서부터 어디까지인지를 표시해주는
중괄호를 넣어야 하는거죠..
님소스는 제가볼때
Speedful님의 소스와 동일한듯 합니다
Speedful님의 댓글을 찾아보시고
그 아레쪽에 제 댓글을 봐주세요
철수와박은혜 //님 다시한번 확인 부탁드려요 원래 최소시간 설정 이전에 봇이 로비로 빠져나오게되면 스크립트상 최소시간 ㅡ 방에있던시간 만큼 대기함니다
안그러면 연속으로 치킨되었을시에 렐따나 방따위 위험이있기때문이죠
전 최소시간을 185초(3분5초)로 했고 최대시간을 600초(10분)으로 설정해놨습니다
그렇기때문에
그건 로비에러가 아니라 렐따 방지하기위해서 기다리는 거죠
최소시간은 3분5초(기본설정)를 권장합니다
방만드는 간격이 3분이상될대 렐따가 안걸리거든요
님께서 다시한번 확인해보시면 로비에러는 메니져에 IN GAME(~~s) 이렇게되어있지만 케릭은 로비에 있는상태이고
정상적인 상태는 Lobby(~~s) 이렇게 되어있을거에요
철수와박은혜//
6. 이코드를 넣고 인게임 에러가 하나도 안생기게 되었는데요 방법은 이렇습니다(제일 간단합니다)
이 파일의 메인함수 안에 다음과 같은 코드가 있을꺼에요
locationAction(controlData.getLocation());
이걸 분석해보면 이건 현재 케릭이 어디에 있는지를 검사하고 각 위치마다 서로 다른 동작을 하도록 하는 함수입니다
이코드 바로 위에 delay(500);를 추가해 줍니다
부분을 잘 읽어보세요.
순간렉이 좀 길다싶으면delay를 늘려주셔도 됩니다. 전 1000ms로 했구요.
안녕놔의솨뢍//
흠...
6. 이코드를 넣고 인게임 에러가 하나도 안생기게 되었는데요 방법은 이렇습니다(제일 간단합니다)
이 파일의 메인함수 안에 다음과 같은 코드가 있을꺼에요
locationAction(controlData.getLocation());
이걸 분석해보면 이건 현재 케릭이 어디에 있는지를 검사하고 각 위치마다 서로 다른 동작을 하도록 하는 함수입니다
이코드 바로 위에 delay(500);를 추가해 줍니다
이부분에서 500준부분을 조금씩 늘려서 한번 테스트해보세요 1000로 주고 테스트한번해보세요
봉마린
망능리
SIA
철수와박은혜
dud
dud
무한능력™
dud
dud
dud
무한능력™
dud
드류[여우사이]
dud
뱃쌀식용유
dud
dud
dud
뱃쌀식용유
lll나비야청산가자lll
주지육림
랑랑
dud
퍼런하늘
수근
트윈쓰
연풍랑
수졸
섹시킬러
철수와박은혜
dud
dud
철수와박은혜
dud
랑랑
MooJuK™[불운]
봉마린
dud
봉마린
spirit
dud
트리스트럼™
rkrvkdlvm
안녕놔의솨뢍
dud
안녕놔의솨뢍
바다가들린다
바다가들린다
dud
바다가들린다