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, 그리고 날아다녀님, 디아블러네님 그 외 모든분들 항상 감사합니다.
덕분에 즐겁게 디아를 즐기고 있습니다. ^^