오리지날 함성바바+블리소서 질문드려봅니다.[날아다녀님11차버젼]
분류
질문
조회 수
1,350
추천 수
0
정강란에 나온대로 그대로했는데 조금 설정이 틀려서 질문드려볼게요
원래 바바+팔라 인데 전 // 바바 + 블리소서로 해보았습니다
사냥터는
액트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("쫄 계정이름");
다소 장문인데 하나하나씩 도와주시면 감사하겠습니다..
최종적으로 이렇게 수정햇구요 해본결과 처음에 어떻게 하다보니깐
바바는 워크라이 라는 문구가 떴지만
지금 다시 해본결과 바바가 대기실까지가고 방 만들기 전에 팅기버립니다..

