Skip to content

팁 게시판

D2NT 1.9.1 and NTBot 3.8.1에 네비기능 추가하기

분류 봇관련 조회 수 2,582 추천 수 24

이번에 HeavenlyStone님께서 업데이트 해주신 D2NT 1.9.1 and NTBot 3.8.1 for Diablo II 1.12버젼에서 2d모드 전체화면팅김버그가 수정됬습니다.
그래서 전체화면 모드로 즐기면서 네비기능도 같이 사용하면 더 좋을거 같아 수정해 봤습니다.

이 글은 최신 D2NT 1.9.1 and NTBot 3.8.1 for Diablo II 1.12 에 Or7r^^I님의 네비기능을 추가하는 방법입니다.
오로지 네비기능(퀘스트지역으로 이동, 다음웨이포인트로 이동)을 추가할 목적으로 수정했으며 clear position기능 작동까지는 확인했습니다.
Or7r^^I님 자료의 다른 기능을 사용하고싶으신분은 직접 수정하시거나 다른자료를 이용하시면 되겠습니다.


혹시나 이글이 문제가 된다면 삭제하겠습니다.



우선 HeavenlyStone님의 D2NT 1.9.1 and NTBot 3.8.1 for Diablo II 1.12와
http://tradia.me/diablo2/download/67053


Or7r^^I님의 네비+봇 [D2NT 1.8.3 and NTBot 3.7.3]를 준비합니다.
http://www.durune.com/2010/zboard.php?id=d2mpds&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1391

Download #1번 파일을 기준으로 작성했습니다.



네비D2NT 1.8.3에서 D2NT 1.9.1로 우선 복사할 파일들 입니다.
두 버젼이 경로가 조금씩 다르지만 폴더를 한번 뒤져보시면 바로 알수 있습니다.

scripts폴더안에 NTNavi.ntj, NTNaviGame.ntj 2개파일을 복사해 붙여넣습니다.
bots폴더안의 NTNavigation.ntj파일을 1.9.1의 NTBos/bots폴더안에 복사해 붙여넣습니다.
libs/config폴더 안의 NTConfig_Navigation.ntl, NTFunctionKey_Navigation.ntl, ItemsManagerSettings.ntl 3개 파일을
NTBot/char_configs폴더안에 복사해 붙여넣습니다.
NTBot/tools폴더안에 NTNToolsThread.ntj파일을 복사해 붙여넣습니다.



폴더추가

scripts폴더안에 ItemLogFile폴더를 추가합니다.

기타 로그폴더들은 한폴더안에 모아주는게 편하겠죠.

예를들어 NTBot폴더안에 Log폴더를 만들어 그안에 여러 로그폴더들을 만들어 스크립트에 경로를 수정해 주시면 되겠습니다.
ex) "NTBot/Log/Data/....."


아래는 스크립트파일 수정내용입니다.


NTNavi.ntj파일
------------------------------------------------------------------------------------------------------------------------------------------------
Include("controlInfo.ntl");

이 부분의 경로 앞에 libs경로를 추가해 줍니다.
-> Include("libs/controlInfo.ntl");



맨 아랫부분에 경로 수정할 부분이 2곳 보이는 군요.

if(_fileHandle = FileOpen("libs/config/Data/GameName.txt", _mode))
이 부분도 원하시는 폴더를 만든후에
-> if(_fileHandle = FileOpen("만든폴더경로/Data/GameName.txt", _mode))
------------------------------------------------------------------------------------------------------------------------------------------------

NTNaviGame.ntj파일
------------------------------------------------------------------------------------------------------------------------------------------------
Include("config/NTFunctionKey_Navigation.ntl");
수정 -> Include("NTBot/char_configs/NTFunctionKey_Navigation.ntl");

Include("common/NTCommon.ntl");
수정 -> Include("libs/common/NTCommon.ntl");

NTSI_LoadNIPFiles();
수정 -> NTSI_LoadNIPFiles("NTBot/item_configs");

Load("tools/NTNToolsThread.ntj");
수정 -> Load("NTBot/tools/NTNToolsThread.ntj");

아래부터
Load("...")부분들 모두 경로 수정
수정-> Load("NTBot/bots/" + NTConfig_Script.......

if(_fileHandle = FileOpen("libs/config/Data/CommandFile[" +_player + "].txt", 1))
수정-> if(_fileHandle = FileOpen("만든폴더경로/Data/CommandFile[" +_player + "].txt", 1))

바로아래함수도 동일합니다.
------------------------------------------------------------------------------------------------------------------------------------------------

NTBot/char_configs폴더안의 NTConfig_Navigation.ntl파일
------------------------------------------------------------------------------------------------------------------------------------------------
Include("config/NTConfig.ntl"); -> 삭제


NTConfig_BeltColMin[0] = 4;
NTConfig_BeltColMin[1] = 4;
NTConfig_BeltColMin[2] = 0;
NTConfig_BeltColMin[3] = 0;

모두 주석처리->
/*
NTConfig_BeltColMin[0] = 4;
NTConfig_BeltColMin[1] = 4;
NTConfig_BeltColMin[2] = 0;
NTConfig_BeltColMin[3] = 0;
*/
------------------------------------------------------------------------------------------------------------------------------------------------

NTBot/bots폴더안의 NTNavigation.ntj파일
------------------------------------------------------------------------------------------------------------------------------------------------
맨처음부분
Include("config/ItemsManagerSettings.ntl");
Include("config/NTFunctionKey_Navigation.ntl");
수정->
Include("NTBot/char_configs/ItemsManagerSettings.ntl");
Include("NTBot/char_configs/NTFunctionKey_Navigation.ntl");


Include("common/NTCommon.ntl");
수정->Include("libs/common/NTCommon.ntl");

NTSI_LoadNIPFiles();
수정-> NTSI_LoadNIPFiles("NTBot/item_configs");


if(_fileHandle = FileOpen("libs/config/Data/CommandFile[" +_player + "].txt", _mode))
수정-> if(_fileHandle = FileOpen("만든폴더경로/Data/CommandFile[" +_player + "].txt", _mode))

if(_fileHandle = FileOpen("libs/config/Data/CommandFile[Common].txt", _mode))
수정-> if(_fileHandle = FileOpen("만든폴더경로/Data/CommandFile[Common].txt", _mode))

NTC_CheckBeltPotion(); -> 찾아서 모두 주석처리
------------------------------------------------------------------------------------------------------------------------------------------------

NTBot/tools폴더안의 NTNToolsThread.ntj파일
------------------------------------------------------------------------------------------------------------------------------------------------
Include("common/NTCommon.ntl");
수정->Include("libs/common/NTCommon.ntl");
------------------------------------------------------------------------------------------------------------------------------------------------

libs/common폴더안의 NTCommon.ntl파일
------------------------------------------------------------------------------------------------------------------------------------------------
아래는 네비안의 NTCommon.ntl파일의 내용을 약간 수정한 내용입니다. function NTC_IncludeConfig(filepath) 함수대신 추가해 주세요.
(function NTC_IncludeConfig(filepath) 함수 전체를 삭제하시거나 주석처리해주세요.)

function NTC_IncludeConfig(_navigation)
{
 var _configname;
 var _configfile;

 if(arguments.length < 1)
 _navigation = false;

 if(_navigation)
 _configname = "NTConfig_Navigation.ntl"
 else
 {
 switch(me.classid)
 {
 case NTC_CHAR_CLASS_AMAZON:
 _configname = "NTConfig_Amazon_" + me.charname + ".ntl"
 break;

 case NTC_CHAR_CLASS_SORCERESS:
 _configname = "NTConfig_Sorceress_" + me.charname + ".ntl"
 break;

 case NTC_CHAR_CLASS_NECROMANCER:
 _configname = "NTConfig_Necromancer_" + me.charname + ".ntl"
 break;

 case NTC_CHAR_CLASS_PALADIN:
 _configname = "NTConfig_Paladin_" + me.charname + ".ntl"
 break;

 case NTC_CHAR_CLASS_BARBARIAN:
 _configname = "NTConfig_Barbarian_" + me.charname + ".ntl"
 break;

 case NTC_CHAR_CLASS_DRUID:
 _configname = "NTConfig_Druid_" + me.charname + ".ntl"
 break;

 case NTC_CHAR_CLASS_ASSASSIN:
 _configname = "NTConfig_Assassin_" + me.charname + ".ntl"
 break;
 }
 }

 _configfile = FileOpen("NTBot/char_configs/" + _configname, 0);

 if(_configfile)
 _configfile.Close();
 else
 Print("ÿc1Can't find " + _configname);

 Include("NTBot/char_configs/NTConfig.ntl");
 Include("NTBot/char_configs/" + _configname);

}
------------------------------------------------------------------------------------------------------------------------------------------------

NTBot폴더안의 NTBotGame.ntj파일
------------------------------------------------------------------------------------------------------------------------------------------------
NTC_IncludeConfig("NTBot/char_configs");
수정 -> NTC_IncludeConfig();
------------------------------------------------------------------------------------------------------------------------------------------------

libs/common폴더안의 NTMove.ntl파일
------------------------------------------------------------------------------------------------------------------------------------------------
아래함수 추가

function NTM_MoveToObject(areaid, unittype, low, high, offsetx, offsety, clearpath)
{
 var _unit;

 if(arguments.length < 4)
 high = low;

 if(arguments.length < 5)
 {
 offsetx = 0;
 offsety = 0;
 }

 if(arguments.length < 7)
 clearpath = false;

 _unit = GetPresetUnits(areaid, unittype);

 if(!_unit)
 return false;

 for(var i = 0 ; i < _unit.length ; i++)
 {
 if(_unit[i].id >= low && _unit[i].id <= high)
 return NTM_MoveTo(areaid, _unit[i].roomx*5+_unit[i].x+offsetx, _unit[i].roomy*5+_unit[i].y+offsety, 3, clearpath);
 }

 return false;
}


아래함수 추가
function NTM_GetStairsInt(lo, hi, area)
{
 var _tile = NTC_GetUnit(NTC_UNIT_TILE);

 if(_tile)
 {
 do
 {
 if(_tile.classid >= lo && _tile.classid <= hi)
 {
 if(!area || _tile.areaid == area)
 return _tile;
 }
 } while(_tile.GetNext());
 }

 return false;
}

아래함수 추가

function NTM_TakeStairs(low, high, area)
{
 var _unit;
 var _prearea;

 if(arguments.length < 3)
 area = me.areaid;

 if(arguments.length < 2)
 _unit = NTC_GetUnit(NTC_UNIT_OBJECT, low);
 else
 _unit = NTM_GetStairsInt(low, high, area);

 if(!_unit)
 return false;

 _prearea = me.areaid;

 for(var i = 0 ; i < 30 ; i++)
 {
 if((i % 10) == 0)
 {
 if(NTM_GetCloserInt(_unit))
 NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
 }

 NTC_Delay(100);

 if(me.areaid != _prearea)
 break;
 }

 while(me.areaid == 0)
 NTC_Delay(100);

 if(me.areaid == _prearea)
 return false;

 NTC_PingDelay(NTConfig_AreaDelay);

 return true;
}
------------------------------------------------------------------------------------------------------------------------------------------------


여기까지 입니다.
시작지점을 NTBot.ntj로 설정했을때 캐릭설정파일 추가시 기본 봇기능 작동까지는 확인 했습니다.
NTcommon.ntl파일 수정으로 캐릭설정파일에 기존버젼(d2nt1.8이하버젼)처럼 캐릭터명을 정확히 써줘야 합니다.

끝에 이 말을 빼먹었군요.;
HeavenlyStone님, Or7r^^I, 그리고 날아다녀님, 디아블러네님 그 외 모든분들 항상 감사합니다.
덕분에 즐겁게 디아를 즐기고 있습니다. ^^


댓글17
  • 바람풍 2009.08.02 10:00
    네비 처음 써보는데 좋네요..좋은정보 감사합니다.
  • ☆조로★[A1L] 2009.08.02 11:14
    이렇게 보니깐 정말 HeavenlyStone님, Or7r^^I, 그리고 날아다녀님, 디아블러네님의 공이 너무나도 크네요^^ 저는 다 만들어놓으시면 그냥 쓰는게 좀 죄송하다는 생각도드네요.ㅠㅠ
  • Lainmir 2009.08.03 19:25
    NTBotGame.ntj : NTC_IncludeConfig() failed 이런 메시지를 출력하면서 방에 머무르지 않습니다. 도무지 어디를 수정해야 할지 모르겠네요.;
  • 언급 2009.08.03 20:25
    NTBotGame.ntj파일과 NTCommon.ntl파일 제대로 수정하셨는지 한번 확인 해 보세요.
  • Lainmir 2009.08.03 23:00
    음.. 나름 확인 열심히 해보고 있는거랑 조합도 해보고 했는데 잘 안되던데요. 더구나 botgame파일은 수정할 부분이 하나뿐이고; common은 복사 붙여넣기만 하면 되지 않습니까;;
  • 언급 2009.08.03 23:02
    NTCommon.ntl에 기존 function NTC_IncludeConfig 함수는 주석처리 해주셔야 합니다.
  • 재키 2009.08.04 10:31
    지금 편집(수정) 중입니다. 위의 내용중 NTBot폴더안의 NTBotGame.ntj파일 ------------------------------------------------------------------------------------------------------------------------------------------------ NTC_IncludeConfig("NTBot/char_configs"); 수정 -> NTC_IncludeConfig(); ------------------------------------------------------------------------------------------------------------------------------------------------ 위의 내용이 맞는 건가요? 소스중에 function NTC_IncludeConfig(_navigation) 인데요 매개변수가 _navigation로 잡혀 있는데 수정 -> NTC_IncludeConfig(); 매개변수가 빠져 있는데 맞는 건가요?
  • 언급 2009.08.04 10:50
    저도 프로그래밍의 '프'자도 잘 모르는지라 아는부분까지만 설명해보겠습니다.;; 밑에 보시면 if(arguments.length < 1) _navigation = false; 로 되어 있습니다. NTC_IncludeConfig(); 이면 arguments.length가 0 이고 NTC_IncludeConfig(true); 이면 arguments.length가 1이 됩니다. 이 부분은 Bot게시판에 Or7r^^I님께서 직접 댓글로 설명해 주셨던 부분입니다.^^; NTC_IncludeConfig();로 되어 있으면 _navigation = false;가 되어 네비설정파일을 읽지 않고 아래 else쪽의 캐릭터 설정파일을 읽습니다. 위와 동일하게 설정했을때 아직 오류메시지는 확인하지 못했습니다.^^;
  • 재키 2009.08.04 12:15
    답변 정말로 고맙습니다. 위의 설명 이해했습니다. 지금 사무실이라 집에서 테스트 해 보겠습니다. 좋은 자료 감사 합니다. 즐거운 하루 되세요..
  • 언급 2009.08.04 22:06
    도움되셨다니 다행입니다. 하지만 자료는 제 것이 아니라 HeavenlyStone님, Or7r^^I님 것이라 제가 감사하다는 말을 들으면 안될거 같습니다. ^^;
  • sesangchangjo 2009.08.06 13:16
    1.9에서 리슷이 줄었다니 함 시도해보고 싶네용... 자료 감사합니다 ^ ^
  • 언급 2009.08.14 00:23
    혹시나 해서 댓글 남겨 봅니다. 적용하다가 사냥터 스크립트 로드할때 자꾸 벨트설정이라던지 기타등등이 자꾸 NTConfig_Navigation.ntl파일에 설정한 대로 적용 될경우 사냥터 스크립트파일을 열어서 NTC_IncludeConfig("NTBot/char_configs);를 NTC_IncludeConfig(); 로 수정해 주시던가 NTcommon.ntl파일에서 캐릭설정파일 로드하는 방법을 살짝 봐꿔주시면 되겠습니다. 별로 신경안쓰고 쓰다가 이제야 발견하게 됬네요. ^^;
  • 닉네임변경요망 2009.08.27 20:25
    봇 생초보들은 이글보고 하다가 화딱지만 나겠네.. ^^ 이 부분도 원하시는 폴더를 만든후에 -> if(_fileHandle = FileOpen("만든폴더경로/Data/GameName.txt", _mode)) ==> 대체 만든폴더경로가 어디라는건지..???????? 뭘 만든폴더라는?????? 예라도 들어주셨으면 좋으련만..
  • 닉네임변경요망 2009.08.27 20:27
    if(_fileHandle = FileOpen("libs/config/Data/CommandFile[" +_player + "].txt", 1)) 수정-> if(_fileHandle = FileOpen("만든폴더경로/Data/CommandFile[" +_player + "].txt", 1)) 바로아래함수도 동일합니다. ===> 만든폴더경로 앞에서 뭔지도 몰라서 짜증나고있는데.. 바로아래함수는 뭘말하는건지 참......... ??? 갈수록 햇갈리게 어영부영알려주시면 뭐.. 에휴.. 난 그냥 허접이라 원본받아서 써야겠네..
  • 언급 2009.08.31 21:25
    댓글을 좀 늦게 확인했네요. 죄송합니다. 위에 보시면 ------ 기타 로그폴더들은 한폴더안에 모아주는게 편하겠죠. 예를들어 NTBot폴더안에 Log폴더를 만들어 그안에 여러 로그폴더들을 만들어 스크립트에 경로를 수정해 주시면 되겠습니다. ex) "NTBot/Log/Data/....." ------ 라고 적혀 있습니다. 그러니까 예를 들어 수정-> if(_fileHandle = FileOpen("만든폴더경로/Data/CommandFile[" +_player + "].txt", 1)) 부분의 경우 원하시는 위치에 폴더를 만드시고 "만든폴더경로" 부분에 폴더 경로를 적어주시면 됩니다. 저 같은 경우는 NTBot폴더 안에 Log라는 폴더를 만들어서 수정-> if(_fileHandle = FileOpen("NTBot/Log/Data/CommandFile[" +_player + "].txt", 1)) 로 수정해서 사용하고 있습니다. 이 글은 아가씨님 자료가 1.9.1에 적용된 버젼이 없었을때(다른사이트는 확인해 보지 못했었습니다.) 작성했습니다. 자료가 있으시다면 굳이 이글보고 수정을 안하셔두 될거 같습니다. ^^;
  • Friedrich 2009.09.03 02:16
    감사합니다. 덕분에 좋은 기능을 신버전에서도 쓸 수 있게 됐네요.
  • 자판 2010.04.27 15:10
    오랫만에 복귀해서 좋으글 보고갑니다 고맙습니다~

팁 게시판

번호 분류 제목 글쓴이 날짜 조회
공지   게시판 푸시 알림 / 통합 앱 서비스 31 file 트디개발자 2023.09.20 830.5k
공지 디아관련 에테리얼 벅큐빙 표 219 eunnanoDiablo™ 2008.03.05 140.2k
공지 디아관련 케릭별 갑옷 착용 모습 325 수린[아빠] 2009.06.09 111.4k
공지 디아관련 디아블로 각종 팁과 정보 간추림 입니다 (_ _) 1547 조은아저씨 2010.05.24 211.6k
공지 봇관련 유니크 업글 표 366 file 카인 2013.11.02 412.8k
576 봇관련 이번 블럭에 관한 워든 스캔방식 추정 42 HeavenlyStone 2009.09.13 4.9k
575 봇관련 자게 공지글 블럭에 대한 설문 조사를 종합해 보면 31 [無情]디아블러네 2009.09.11 3.2k
574 봇관련 [D2NT 1.9.1 and NTBot 3.8.1] 텔레기능이 사라졌을때 대처법 7 [無情]디아블러네 2009.09.09 1.4k
573 봇관련 쫄봇 사용시 "연결이 끊겼습니다"라고 자주 나올때 3 오부 2009.09.09 1.2k
572 봇관련 제가 하고있는 로더 사용법입니다.[D2NT 1.9.1] 5 file 에너지절약 2009.09.09 4.5k
571 봇관련 오리봇-겜블목록추가(전버전 사용가능) 21 다크멋쟁이 2009.09.01 1.9k
570 봇관련 캐릭마다 다른 아이템 이니설정-초간단 잔머리 Tip.(수정) 8 [無情]DeeP 2009.08.31 2.4k
569 봇관련 인터넷 상에서 아이템 로그를 확인하는 방법 11 Masha 2009.08.26 2.1k
568 봇관련 쫄봇 방조인시 엔터눌려져있는분들 해결팁 3 다크멋쟁이 2009.08.25 1.2k
567 봇관련 햄딘 치킨수와 경비를 줄여보자~!! 18 라이토 2009.08.18 2.9k
566 봇관련 왕초보용 크랩설정하기.(중복가능성 ↑↑) 20 [無情]DeeP 2009.08.17 4.4k
565 봇관련 NTM_Takewaypoint() 에러날시...(수정) 13 데드좀비 2009.08.12 1.4k
564 봇관련 1.9.1 D2NT Bot - CPU 사용량을 줄여보자 . 20 anti blue 2009.08.11 3.8k
563 봇관련 nt봇1.91 디아 사냥시 용병 사용 않함.. 3 ilislove 2009.08.07 1.4k
> 봇관련 D2NT 1.9.1 and NTBot 3.8.1에 네비기능 추가하기 17 언급 2009.08.01 2.6k
561 봇관련 봇돌이 매찬위주 세팅 6 캐소문 2009.07.31 2.0k
560 봇관련 [초보용] 1.8에서 1.9.1 로 넘어왓을 때 햄딘 에러 & 해결책 4 S_LUCIFER 2009.07.30 1.9k
559 봇관련 아이템이니와 렉의 관계에 대한 간단한 정보입니다. 13 언급 2009.07.29 2.0k
558 봇관련 컴퓨터 사양이 떨어지는 분에게 권하는 안정적인 봇돌이의 세팅 36 하하루 2009.07.24 3.7k
557 봇관련 크래프트 아이템 중에 법사캐릭이라면 노릴만한 캐스터 아뮬!!!! 19 DiaCafe™ 2009.07.16 6.7k