Skip to content

정강란에 나온대로 그대로했는데 조금 설정이 틀려서 질문드려볼게요


원래 바바+팔라 인데 전 // 바바 + 블리소서로 해보았습니다
사냥터는
액트1 안다 액트2 소환술사 듀리엘 액트3 메피스토까지입니다.

1. 캐릭설정화일이름바꾸기
D2NT\scripts\NTBot\char_configs\NTConfig_Barbarian_함성바바캐릭명.ntl
D2NT\scripts\NTBot\char_configs\NTConfig_Paladin_블리소서/오리햄딘캐릭명.ntl

일단 캐릭명쓰는 곳에 자기 캐릭 이름을 써넣습니다.

그리고 캐릭설정화일을 엽니다.

2.바바캐릭설정
NTConfig_Barbarian_함성바바캐릭명.ntl

이화일을 열어서 사냥터는 주석처리(//), 아마도 삥바바용 트라빈컬이 설정되어있을겁니다.
 NTConfig_Script.push("MyWarcries.ntj"); // 함성바바("scripts/NTBot/bots/MyWarcries.ntj"에서 설정합니다)
이부분의 주석을 지웁니다.

// 기타 옵션 설정하기
 
 NTConfig_PublicMode = true; // 공방 모드(원래 false라고 되어있습니다)

3.햄딘캐릭설정
NTConfig_Paladin_오리햄딘캐릭명.ntl

이화일을 열어서 다른 사냥터는 주석처리(//)
NTConfig_Script.push("MyQueDrop.ntj"); // 퀘드랍("scripts/NTBot/bots/MyQueDrop.ntj"에서 설정합니다)
이부분의 주석을 지웁니다.
그리고
NTConfig_Script.push("NTDiablo.ntj");
디아블로를 사냥할거니깐 사냥터 디아블로 앞의 주석도 지웁니다.

// 기타 옵션 설정하기
 
 NTConfig_PublicMode = true; // 공방 모드(원래 false라고 되어있습니다)

4.함성바바설정
바바캐릭설정에서 보면 함성바바("scripts/NTBot/bots/MyWarcries.ntj"에서 설정합니다.
라는 부분이 있습니다.
그걸 따라서
MyWarcries.ntj화일을 엽니다
var _MyW_WarcriesName = "오리햄딘캐릭명"; // "함성 받을 캐릭터 이름"
var _MyW_Waypoint = 107; // 함성 할 웨이포인트
var _MyW_isPortal = false; // 포탈 열기
var _MyW_MasterName = ""; // "방을 따라 나갈 캐릭터 이름"
var _MyW_EnchanterName = ""; //

// _MyW_WarcriesName = "함성 받을 캐릭터 이름" 설정했을 경우
// "함성 받을 캐릭터 이름"을 설정한 시간동안 기다리다 파티맺고 함성해준 후 "MyWarcries.ntj"를 끝냅니다.
//------------------------------------------------------------------------------
var _MyW_Delay = [1800, 30, 60, 3]; // 퀘드랍 캐릭터 확인 시간

첫번째줄 오리햄딘캐릭명이라고 쓴곳에 자기 오리햄딘 캐릭명 쓰시면 됩니다.
두번째줄 웨이번호 107로 수정,
마지막줄 원래 var_MyW_Delay = [180,30,60,3]; 로 되어있는데 180을 1800으로 수정합니다(0하나 추가요)

5.퀘드랍설정
역시 햄딘캐릭설정에서 보면 퀘드랍("scripts/NTBot/bots/MyQueDrop.ntj"에서 설정합니다
라는 부분이 있습니다
그걸 따라서
MyQueDrop.ntj화일을 엽니다
var _MyQ_WarcriesName = "오리바바캐릭명";
오리바바캐릭명만 써넣으시면 됩니다.

6. 바바가 방을만들고 햄딘이 그방을 따라가게 하는 작업
D2NT\scripts\NTBot.ntj 화일을 엽니다.

멀티로더 설정다음에 보면
쫄봇 설정이 나옵니다.
거기서.
기사계정입력하기에
leechBotMasterAccount = "오리바바의 계정이름";
쫄계정이름 입력하기에
앞에있던 주석 삭제하고
leechBotLeechAccountList.push("오리햄딘의 계정이름");

이렇게 하시면 됩니다. 캐릭명이 아니라 계정명인것을 주의하세요.

================================================
이제부터 위에것 보고 제가 한 것들입니다.

2번설정하기
// 함성바바와 퀘드랍, 디아런 도우미
 //--------------------------------------------------------------------------
 NTConfig_Script.push("MyWarcries.ntj"); // 함성바바(함성 해 주기) * 참고: "scripts/NTBot/MyConfigs/Warcries.ntl"에서 설정합니다.
 //NTConfig_Script.push("MyQueDrop.ntj"); // 퀘드랍(함성 받기) * 참고: "scripts/NTBot/MyConfigs/QueDrop.ntl"에서 설정합니다.
 //NTConfig_Script.push("MyDiaRunMaster.ntj"); // 디아런 도우미(기사) * 참고: "scripts/NTBot/MyConfigs/Key.ntl"에서 명령키를 설정합니다. "NTConfig_PublicMode = true"로 자동 설정됩니다.
 //NTConfig_Script.push("MyDiaRunWarcries.ntj"); // 디아런 도우미(함성바바) * 참고: "NTConfig_PublicMode = true"로 자동 설정됩니다.
 //NTConfig_Script.push("MyDiaRunTeleport.ntj"); // 디아런 도우미(플라이소서) * 참고: "NTConfig_PublicMode = true"로 자동 설정됩니다.

// 기타 옵션 설정하기
 //==========================================================================
 NTConfig_PublicMode = true; // 공방 모드 * 참고: 자동으로 파티하기, 디아블로 입구부터 잡기와 타운포탈 열기, 바알 타운포탈 열기, 전체 창에 메시지 보내기 등을 합니다. * 주의: 일부 스크립트에서는 자동으로 설정됩니다.

3.소서캐릭설정
// 함성바바와 퀘드랍, 디아런 도우미
 //--------------------------------------------------------------------------
 //NTConfig_Script.push("MyWarcries.ntj"); // 함성바바(함성 해 주기) * 참고: "scripts/NTBot/MyConfigs/Warcries.ntl"에서 설정합니다.
 NTConfig_Script.push("MyQueDrop.ntj"); // 퀘드랍(함성 받기) * 참고: "scripts/NTBot/MyConfigs/QueDrop.ntl"에서 설정합니다.

// 기타 옵션 설정하기
 //==========================================================================
 NTConfig_PublicMode = true; //

밑에 3가지는 글쓴분과 설정자체가 다르기 때문에 파일 통으로 올려볼게요

4.함성바바설정




↓는 scripts/NTBot/bots/MyWarcries.ntj 밑에 파일 통으로 올린글입니다.

const _MyWa_WARCRIES_RANGE = 15;
const _MyWa_HOWL_RANGE = 10;

var _MyWa_WarcriesList = new Array();
var _MyWa_Duration;

Include("NTBot/MyConfigs/Warcries.ntl");


function MyMain()
{
 Print("ÿc5날아다녀의 \"함성봇\" 세계에 오신 것을 환영합니다.");

 var i;
 var _player;

 MyVi_TownManager(true);

 if (_MyWaC_WarcriesName)
 {
 for (i = 1; i <= _MyWaC_Delay[0]; i++)
 {
 MyConfig_StatusText[0] == 1 && MyCo_SetStatusText("ÿc4퀘드랍 캐릭터를 기다리는 중 (ÿc0" + i + "ÿc4/" + _MyWaC_Delay[0] + ")");

 _player = MyUn_GetPlayer(_MyWaC_WarcriesName);
 if (_player)
 break;

 Delay(1000);
 }

 if (!_player)
 return "MyUn_GetPlayer()";
 }

 _MyWaC_WarcriesName && MyConfig_StatusText[0] == 1 && MyCo_SetStatusText("ÿc4웨이포인트로 이동 중 (ÿc0...ÿc4)");
 if (!NTTM_TownMove("waypoint"))
 return "NTTM_TownMove()";
 if (!MyMo_TakeWaypoint(_MyWaC_Waypoint))
 return "MyMo_TakeWaypoint()";

 if (_MyWaC_isPortal)
 NTM_MakeTP();

 if (_MyWaC_WarcriesName)
 {
 for (i = 1; i <= _MyWaC_Delay[1]; i++)
 {
 MyConfig_StatusText[0] == 1 && MyCo_SetStatusText("ÿc4퀘드랍 캐릭터와 파티 맺는 중 (ÿc0" + i + "ÿc4/" + _MyWaC_Delay[1] + ")");

 _player = MyUn_GetParty(_MyWaC_WarcriesName, 1, 10);
 if (_player)
 break;

 Delay(1000);
 }

 if (!_player)
 return "MyUn_GetParty()";

 for (i = 1; i <= _MyWaC_Delay[2]; i++)
 {
 MyConfig_StatusText[0] == 1 && MyCo_SetStatusText("ÿc4퀘드랍 캐릭터가 주위에 있나 확인 중 (ÿc0" + i + "ÿc4/" + _MyWaC_Delay[2] + ")");

 _player = MyUn_GetPlayerUnit(_MyWaC_WarcriesName, 1, true);
 if (_player)
 break;

 Delay(1000);
 }

 if (!_player)
 return "MyUn_GetPlayerUnit()";

 for (i = 1; i <= _MyWaC_Delay[3]; i++)
 {
 MyConfig_StatusText[0] == 1 && MyCo_SetStatusText("ÿc4퀘드랍 캐릭터한테 함성 해주는 중 (ÿc0" + i + "ÿc4/" + _MyWaC_Delay[3] + "번째)");
 MyWa_DoWarcries();

 Delay(1000);

 if (_player.GetState(51) && _player.GetState(26) && _player.GetState(32))
 break;
 }

 MyConfig_StatusText[0] == 1 && MyCo_SetStatusText("ÿc4마을로 이동 중 (ÿc0...ÿc4)");
 if (!MyMo_TakeToTown())
 return "MyMo_TakeToTown()";

 return "MyMain()";
 }
 else
 {
 var _isCheck = false;

 while (true)
 {
 if (!NTC_InTown())
 {
 if (_MyWaC_DoWarcries > 0 || _MyWaC_SendMessage[0] > 0)
 {
 for (i = 0; i < _MyWa_WarcriesList.length; i++)
 {
 if (!MyUn_GetPlayer(_MyWa_WarcriesList[i][0]))
 _MyWa_WarcriesList.splice(i--, 1);
 }
 }

 MyWa_DoWarcries();

 if (_MyWaC_SendMessage[0] > 0)
 MyWa_SendMessage();
 }

 for (i = 0; i < 5; i++)
 {
 if (_MyWaC_MasterName)
 {
 if (!_isCheck)
 {
 if (MyUn_GetPlayer(_MyWaC_MasterName))
 _isCheck = true;
 }
 else if (!MyUn_GetPlayer(_MyWaC_MasterName))
 MyCo_ExitGame();
 }

 Delay(1000);
 }
 }
 }
}

function MyWa_DoWarcries()
{
 var _unit;
 var _iWarcries;

 _unit = NTC_FindUnit(NTC_UNIT_PLAYER);
 if (_unit)
 {
 do
 {
 if (_unit.name != me.charname && GetDistance(me, _unit) <= _MyWa_WARCRIES_RANGE && NTC_InMyParty(_unit.name))
 {
 _iWarcries = MyWa_CheckWarcries(_unit, false);

 if (_iWarcries == -1 ||
 !_unit.GetState(51) ||
 !_unit.GetState(26) ||
 !_unit.GetState(32) ||
 (_unit.name != _MyWaC_EnchanterName && _MyWaC_DoWarcries > 0 && (_MyWa_WarcriesList[_iWarcries][1] - Math.round(GetTickCount() / 1000)) < _MyWaC_DoWarcries))
 {
 NTC_CastSkill(155, NTC_HAND_RIGHT);
 NTC_CastSkill(138, NTC_HAND_RIGHT);
 NTC_CastSkill(149, NTC_HAND_RIGHT);

 if (_MyWa_Duration == undefined)
 _MyWa_Duration = (me.GetSkill(155, false) * 5) + (me.GetSkill(138, false) * 5) + (me.GetSkill(149, true) * 10) + 20;

 MyWa_CheckWarcries(_unit, true);
 }
 }
 } while (_unit.GetNext());
 }

 _unit = NTC_FindUnit(NTC_UNIT_MERC);
 if (_unit)
 {
 do
 {
 if (GetDistance(me, _unit) <= _MyWa_WARCRIES_RANGE &&
 (!_unit.GetState(51) || !_unit.GetState(26) || !_unit.GetState(32)) &&
 MyUn_IsParty(_unit) &&
 MyUn_IsWarcries(_unit))
 {
 NTC_CastSkill(155, NTC_HAND_RIGHT);
 NTC_CastSkill(138, NTC_HAND_RIGHT);
 NTC_CastSkill(149, NTC_HAND_RIGHT);

 if (_MyWa_Duration == undefined)
 _MyWa_Duration = (me.GetSkill(155, false) * 5) + (me.GetSkill(138, false) * 5) + (me.GetSkill(149, true) * 10) + 20;
 }
 else if (_unit.IsAttackable() && GetDistance(me, _unit) <= _MyWa_HOWL_RANGE && MyUn_IsValidMonster(_unit))
 NTC_CastSkill(130, NTC_HAND_RIGHT);
 } while (_unit.GetNext());
 }
}

function MyWa_CheckWarcries(unit, isSet)
{
 for (var i = 0; i < _MyWa_WarcriesList.length; i++)
 {
 if (_MyWa_WarcriesList[i][0] == unit.name)
 {
 if (isSet)
 _MyWa_WarcriesList[i][1] = Math.round(GetTickCount() / 1000) + _MyWa_Duration;

 return i;
 }
 }

 return (isSet ? (_MyWa_WarcriesList.push([unit.name, Math.round(GetTickCount() / 1000) + _MyWa_Duration]) - 1) : -1);
}

function MyWa_SendMessage()
{
 var _iWarcries;
 var _duration;
 var _player = GetPlayerUnit();

 if (_player)
 {
 while (_player.GetNext())
 {
 _iWarcries = MyWa_CheckWarcries(_player, false);
 if (_iWarcries != -1)
 {
 _duration = _MyWa_WarcriesList[_iWarcries][1] - Math.round(GetTickCount() / 1000);
 if (_duration < _MyWaC_SendMessage[0])
 {
 if (_MyWaC_SendMessage[1] < 1 || _duration >= _MyWaC_SendMessage[1])
 {
 Say("함성: " + _player.name + " (" + ((_duration > 0) ? _duration : 0) + "초)");
 NTC_PingDelay(200);
 }
 }
 }
 }
 }
}



그래서 myconfigs 에 잇는 파일을 제가 고쳐보았습니다.
var _MyWaC_WarcriesName = "Sh_dang";
var _MyWaC_Waypoint = 107;
var _MyWaC_isPortal = false;
var _MyWaC_MasterName = "Sh_Bo";
var _MyWaC_EnchanterName;
var _MyWaC_Delay = new Array(4);
var _MyWaC_DoWarcries;
var _MyWaC_SendMessage = new Array(2);


//##############################################################################
// 함성바바 설정하기
//-------------------
// true: 사용, false: 사용 안 함, 0: 사용 안 함, "": 사용 안 함
//==============================================================================
_MyWaC_WarcriesName = "Sh_dang"; // "함성 받을 캐릭터 이름"
_MyWaC_Waypoint = 107; // 함성 할 웨이포인트
_MyWaC_isPortal = false; // 타운포탈 열기
_MyWaC_MasterName = ""; // "방을 따라 나갈 캐릭터 이름" * 참고: _MyWaC_WarcriesName = ""로 설정했을 경우에만 작동합니다.
_MyWaC_EnchanterName = ""; // "_MyWaC_DoWarcries와 _MyWaC_SendMessage를 적용하지 않을 캐릭터 이름"

// _MyWaC_WarcriesName = "함성 받을 캐릭터 이름" 설정했을 경우
// "함성 받을 캐릭터 이름"을 설정한 시간동안 기다리다 파티맺고 함성해준 후 "MyWarcries.ntj"를 끝냅니다.
//------------------------------------------------------------------------------
_MyWaC_Delay = [1800, 30, 60, 3]; // 퀘드랍 캐릭터 확인 시간 = [방에 들어왔는지 여부(초), 파티를 맺었는지 여부(초), 주위에 있는지 여부(초), 함성을 해줬는지 여부(횟수)]

// _MyWaC_WarcriesName = "" 설정했을 경우
// 웨이포인트로 이동 후 게임최대시간까지 함성을 해줍니다.
//------------------------------------------------------------------------------
_MyWaC_DoWarcries = 0; // 배틀 오더스 남은 시간(초)이 설정한 시간(초)보다 적으면 함성 해주기
_MyWaC_SendMessage = [0, 0]; // [메시지 보내기(배틀 오더스 남은 시간(초)이 설정한 시간(초)보다 적으면 메시지를 보냅니다), 메시지 안 보내기(배틀 오더스 남은 시간(초)이 설정한 시간(초)보다 적으면 메시지를 안 보냅니다)]



5.퀘드랍설정
//##############################################################################
// 퀘드랍 캐릭터 설정하기
//==============================================================================
_MyQDC_Warcries = ["Sh_Bo", false]; // 함성바바 = ["함성바바 이름", true: 함성을 받지 못하면 방 나가기/ 함성을 받지 못해도 방 나가지 않기]
_MyQDC_Delay = [10, 30, 90, 30]; // 함성바바 확인 시간 = [방에 있는지 여부(초), 파티를 맺었는지 여부(초), 웨이포인트로 이동했는지 여부(초), 함성을 받았는지 여부(초)]



6. 바바가 방을만들고 햄딘이 그방을 따라가게 하는 작업

//##############################################################################
// 쫄봇
//------
// leechBotAccountList.push([["기사 계정이름", 자동으로 방 만들기, 채팅창에 있으면 방이름 및 방암호 알려주기], ["쫄 계정이름", 방 들어가기 전 지연 시간] . . .])
// "clan_inwoo1" : "캐릭터이름"이 아닌 "계정이름"입니다.
// 자동으로 방 만들기 : true = 자동으로 방 만들기, false = 수동으로 방을 만들거나 들어가기
// 채팅창에 있으면 방이름 및 방암호 알려주기: 0 = 사용 안 함, 1 = 방이름만 알려주기, 2 = 방이름과 방암호 알려주기
//
// "clan_inwoo12" : "캐릭터이름"이 아닌 "계정이름"입니다.
// 방 들어가기 전 지연 시간: 1/1000초
//
// 예) leechBotAccountList.push([["ㄱ", true, 0], ["ㄴ", 0], ["ㄷ", 1000], ["ㄹ", 500]);
// 쫄 "ㄴ", "ㄷ", "ㄹ"은 로비에서 대기하다가 기사 "ㄱ"이 자동으로 방을 만들면 "ㄴ"은 0초, "ㄷ"은 1초, "ㄹ"은 0.5초 지연 후 방에 들어갑니다.
//
// 주의: 시작하기 전 "scripts/NTBot/MyData/LeechBot" 폴더에 있는 파일들을 삭제합니다.
// 기사와 쫄을 운용하는 컴퓨터의 날짜와 시간은 같아야 합니다.
//==============================================================================
//leechBotAccountList.push([["clan_inwoo1", true, 0], ["clan_inwoo12", 0]]);
//leechBotAccountList.push([["기사 계정이름", true, 0], ["쫄 계정이름", 0], ["쫄 계정이름", 0]]);
//leechBotAccountList.push([["기사 계정이름", true, 0], ["쫄 계정이름", 0], ["쫄 계정이름", 0], ["쫄 계정이름", 0]]);


//##############################################################################
// 퀘드랍용 쫄봇
//---------------
// 주의: 시작하기 전 "scripts/NTBot/MyData/LeechBotQueDrop" 폴더에 있는 파일들을 삭제합니다.
// 참고: leechBotQueDropMasterAccount가 방을 만들면 leechBotQueDropLeechAccountList에 설정한 순서대로 한 명의 쫄만 방에 들어갑니다.
//==============================================================================
leechBotQueDropMasterAccount = "clan_inwoo1"; // 기사 계정이름

// 쫄 계정이름 설정하기
//----------------------
leechBotQueDropLeechAccountList.push("clan_inwoo12");
//leechBotQueDropLeechAccountList.push("쫄 계정이름");
//leechBotQueDropLeechAccountList.push("쫄 계정이름");


다소 장문인데 하나하나씩 도와주시면 감사하겠습니다..

최종적으로 이렇게 수정햇구요 해본결과 처음에 어떻게 하다보니깐
바바는 워크라이 라는 문구가 떴지만
지금 다시 해본결과 바바가 대기실까지가고 방 만들기 전에 팅기버립니다..