Skip to content
봇관련다크 모드

2기사로 카우방 함께 돌리기

조회 수
2,406
추천 수
15
등록일

글을 시작하기 전에!

전 날아다녀님 D2NT3.1을 구글링을 통해 얻었습니다. 두루네 가입한지는 오래되었으나 글을 많이 쓰지 않은 관계로 렙이 안되는 까닭이고요..

그래도 두루네 좋아하고 활동도 열심히 하고 있으니 너무 미워하지는 말아 주세요 ^^;

그냥 자료실에 파일을 올리는게 가장 편하겠으나 역시 렙이 안되는 관계로, 또한 저처럼 카우방을 2기사 이상으로 빨리 돌고자 하는 분들이 계실지 몰라 여기에 올립니다.

2기사로 봇 돌리는 방법은 다른 분들의 팁을 참고하시고요~
========================================================================



2기사로 디아바알런을 포함한 다른 사냥터를 같이 도는 방법은 순서를 같이 돌기만 하면 되기 때문에 크게 어려운 부분은 없습니다.

하지만 카우방의 경우에는 script자체가 족을 찾아 포탈을 여는 것부터 시작하기 때문에 2기사(또는 그 이상) 체제로 돌리려고 할때 나중에 족을 찾으러 가는 기사의 경우에는 에러가 뜨더군요.

카우방을 혼자 쓰는 것도 가능 하지만, 2기사로 하게 되면 시간도 절약되고 디아바알런 마무리를 카우방으로 할 수 있게 되므로 여러모로 좋습니다. 더군다나 카우방은 재료템의 창고죠! ㅎㅎ

서론이 길었네요

순서대로 따라하시면 됩니다

가정
=====
1기사(방을 만드는 봇), 2기사(만든 방에 조인하는 봇)체제라고 하겠습니다. 3기사 이상은 2기사와 똑같이 설정하시면 됩니다.
1기사가 족을 배달해 포탈을 열고 2기사나 그 이상은 열린 포탈로 따라 들어가 함께 사냥하는 구조입니다.

방법
=====
1. 1기사 캐릭이니를 엽니다. 특별히 설정하실 것은 없겠으나 포탈을 여는 위치는 반드시 [stash앞]으로 설정하십시오.
 NTConfig_Script.push("MySecretCowLevel.ntj"); // 카우봇
 MyConfig_SecretCowLevelGriswold = false; //
 MyConfig_SecretCowLevelChicken = 127; //
 MyConfig_SecretCowLevelPortalXy = 0; // (*)
 MyConfig_SecretCowLevelOpenPortal = false; //

(*) 부분을 0으로 설정하시란 소리입니다.



2. \scripts\NTBot\bots 에 가셔서 MySecretCowLevel.ntj 의 사본을 같은 폴더에 만듭니다. 저 같은 경우는 복사해서 MySecretCowLevel_BB.ntj 로 저장했습니다



3. 2기사 캐릭이니로 갑니다.

 NTConfig_Script.push("MySecretCowLevel_BB.ntj"); // (*)
 MyConfig_SecretCowLevelGriswold = false; //
 MyConfig_SecretCowLevelChicken = 127; //
 MyConfig_SecretCowLevelPortalXy = 0; // (*)
 MyConfig_SecretCowLevelOpenPortal = false; //

(*) 친 부분의 파일명을 저장한 파일명으로 수정해주셔야겠죠.


4. 이제 \scripts\NTBot\bots 에 가셔서 방금전에 저장한 MySecretCowLevel_BB.ntj 파일을 연후 CTRL+A&delete!
모두 지워버립니다.


5. 모두 지워진 것을 확인한 이후 아래것을 복사해 붙여넣고 저장해주면 됩니다.(그대로 긁어서 붙여 넣으세요)




function MyMain()
{
 Delay(15000);

 MyVi_TownManager();

 _MyCu_isTelekinesisStash = false;

 if (!MySC_MakeCowPortal())
 {
 _MyCu_isTelekinesisStash = true;
 return "MySC_MakeCowPortal()";
 }

 if (MyConfig_SecretCowLevelOpenPortal)
 return "MyMain()";

 _MyCu_isTelekinesisStash = true;

 NTP_DoPrecast(true);

 if (!MySC_ClearRooms(_MyAt_MONSTER_TYPE_ALL, 150, NTC_UNIT_MONSTER, 773, 100))
 {
 NTC_StopScript("NTToolsThread_MySecretCowLevel.ntj");
 return "MySC_ClearRooms()";
 }

 NTC_StopScript("NTToolsThread_MySecretCowLevel.ntj");

 Delay(2000);

 return "MyMain()";
}


function MySC_MakeCowPortal()
{
 var _preX, _preY;
 var _fire;


 //MyCo_CancelMenu();


 if (!NTTM_CheckAct(1))
 return false;

 if (!NTTM_TownMove("stash"))
 return false;


 _preX = me.x;
 _preY = me.y;


 if (GetDistance(me.x, me.y, _preX, _preY) > 7)
 {
 if (!MyMo_MoveTo(me.areaid, _preX, _preY))
 return false;
 }

 Load("NTBot/tools/NTToolsThread_MySecretCowLevel.ntj");

 return MyTP_UsePortal("", 15, 10);
}


function MySC_ClearRooms(specType, range, unitType, unitId, distance)
{
 var i;
 var _units;
 var _preRoom;
 var _count;
 var _addRooms = new Array();
 var _removeRooms = new Array();

 if (distance)
 {
 _units = GetPresetUnits(me.areaid, unitType, unitId);
 if (!_units || _units.length < 1)
 return false;
 }

 _preRoom = GetRoom();
 if (!_preRoom)
 return false;

 do
 {
 if (!distance || GetDistance(_preRoom.x * 5, _preRoom.y * 5, _units[0].roomx * 5, _units[0].roomy * 5) > distance)
 _addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
 } while (_preRoom.GetNext());

 _count = _addRooms.length;
 _preRoom = [me.x, me.y];

 while (_addRooms.length > 0)
 {
 _addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });
 _removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);

 for (i = 1; i < _addRooms.length; i++)
 {
 if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
 _removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
 else
 break;
 }

 if (_removeRooms.length > 1)
 {
 _removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
 if (_removeRooms[0][0] <= _preRoom[0])
 {
 _removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
 if (_removeRooms[0][1] <= _preRoom[1])
 {
 _removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
 if (_removeRooms[0][0] >= _preRoom[0])
 _removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
 }
 }
 }

 if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
 {
 if (MyMo_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 2, true, specType))
 _preRoom = _removeRooms[0];
 }

 for (i = 0; i < _addRooms.length; i++)
 {
 if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
 {
 _addRooms.splice(i, 1);

 Say("!사냥 완료 [" + (_count - _addRooms.length) + "/" + _count + "]");
 break;
 }
 }

 _removeRooms.length = 0;
 }

 return true;
}















자! 끝났습니다 (붙여넣는 부분은 위에 까지 인거 아시죠? ㅎㅎ)

맨 위의 Delay 함수는 1기사가 포탈을 여는 시간이 넉넉잡아 15초 정도면 충분하기 때문에 15초를 설정해놓은 것이고요..

만약 그 시간동안 그냥 기다리기 싫고 2기사는 다른방에서 앵벌을 하실거라면(ex:안다, 메피) Delay함수부분은 주석처리하시면 되겠습니다.


디아나 바알을 먼저 할 경우 1기사는 바로 카우방을 시작하게 하시고 2기사 이상은 다른 앵벌장소를 돌게 하셔서 2기사의 카우방 script가 시작할때 포탈이 열려져 있게 하셔도 됩니다. [2기사가 카우봇 시작한 이후 스태쉬앞에 도착할때까지 포탈이 열려져 있기만 하면 됩니다]



Delay 시간 조절이나 다른 앵벌 장소는 모니터링 하셔서 조절하시면 되겠습니다. 1기사가 그 이전방에서 아이템을 많이 먹어 정리하거나할 경우 카우포탈을 오픈하는 시점이 늦어지기 때문에 감안하셔서 모니터링 하십시오.

봇 좀 만질 줄 아시는 분들이 보시면 허접하게 수정한거지만...전 1시간 넘게 걸렸답니다 ㅠㅠ


그럼~즐댜하세요


모르는 부분 질문 주시면 제가 아는 한 답해 드리겠습니다




댓글 24
  • 댓글 #246326

    아직 쫄봇도 이해못했어요 ㅋㅋㅋ 전 왜케 힘들죠.. 머리가 나쁜가 ㅠ
  • 댓글 #246335

    봇을 돌리지 않는 사람인데~~~~~~~ 왜 이렇게 자료실에 들어가보고 싶은지 이해가 않되네요~~~~ 들어가 봐야 받을것도 없는데 ㅎㅎㅎㅎㅎ
  • 댓글 #246344

    이렇게 안해도 그냥 쫄봇으로도 해도 카우이니에서 포탈여는것만 해주니 잘들어가더군요
  • 댓글 #246347

    와 좋네요..-_- 짐 해ㅂㅘㅅ는데.. 잘돌아가네요 전 바바가 기사고 체라,독넥 셋이 돌아댕기는데 진짜 엄청 빠르거든요 디아,바알,카우까지 다해서 10분도안걸리는거같은데 근데... 마지막 카우가는데... 족주으러 갈때 계속 따라가요 -_- 뭐 문제잇는건 아니지만 마을에서 대기하다가 바바가 빨간 포털 열면 가게 할순없을까요?
  • 댓글 #246350

    아 그리고.. 카우에서 바바가 포털을 바로 안열어주네요 potal 귓말 받고 열어주네요.. 그동안 쫄들이 어찌할바를 모름 ㅠ_ㅠ
  • 댓글 #246353

    포탈열때 따라가는 것은 쫄 설정으로 해 놓으셔서 그런겁니다 쫄 설정 없이 양기사 체제로 돌리시면 그런일이 없겟ㅅ져
  • 댓글 #246359

    GG// ^^ 양기사 체제라는것이.. ntbot파일에서 쫄봇 설정을 하지말고 3케릭 모두.. 기사계정 쓰라는 말씀이세요?
  • 댓글 #246362

    로카//네 그렇습니다 ^^ Script/폴더에 있는 NTBOT.ntj에서만 다음과 같이 설정하세요 //############################################################################## // 쫄봇 //============================================================================== leechBotMasterAccount = "xxxxxxxx"; // 여기에 방을 만들 1기사 계정이름을 쓰세요 leechBotMasterIsAuto = true; // leechBotMasterIsChat = [false, false]; // // 쫄 계정이름 설정하기 //---------------------- leechBotLeechAccountList.push("xxxxxxxx"); 여기에는 방에 따라 들어갈 기사계정이름 leechBotLeechAccountList.push("xxxxxxxx"); 여기에는 방에 따라 들어갈 기사계정이름 //leechBotLeechAccountList.push("쫄 계정이름"); 위처럼 설정하시고 각 기사의 캐릭이니에서 쫄봇 설정은 모두 주석처리하십시오. 쫄설정도 하지 마시고요. 그렇게 되면 1기사가 방을 만들면 나머지 기사들은 그 방에 조인하여 설정한 사냥터 순서대로 함께 돈답니다 물론 각 기사별로 어느정도 세팅이 되어야 하지만 쫄 설정으로 하는 것 보다 훨씬 효율적이고 속도가 빠르죠
  • 댓글 #246365

    저 같은 경우는 3기사체제로 돌리는데요 바알-디아-카우방으로 돌립니다 정강란에 쓴 것처럼 할수도 있지만 제가 사용하는 방법은 방을 만드는 기사인 햄딘이 바알런을 나머지 기사들과 함께 돈 이후 디아런을 시작하기 전 카우포탈만 오픈하게 한뒤(사냥x) 바로 디아런에 참여하고요.. 디아런이 끝나면 3기사가 다른 사냥터에 들리지 않고 바로 오픈되어 있는 카우방에 조인하도록 해 놓았죠 여러가지 해 본 결과 이 방법이 가장 효율적인 듯 합니다
  • 댓글 #246368

    이 같은 방법으로 하시려면 일단, 위에 쓰여져 있는 script에서 맨위의 Delay(15000) 부분은 주석처리해서 저장하시고요, 1기사(햄딘) 봇 설정을 순서대로 다음과 같이 하시면 되겠습니다 NTConfig_Script.push("NTBaal.ntj"); // MyConfig_BaalKill = true; // MyConfig_BaalClear = [false, false, false, 1, 0x01]; // MyConfig_BaalCheckMonster = [false, false, false, false]; // MyConfig_BaalOpenPortal = true; // MyConfig_BaalInventory = false; // MyConfig_BaalLeechBotBaal = 0; // MyConfig_BaalLeechBot = 2; // MyConfig_BaalOpenPortalXy = [15112, 5004, 15116, 5068]; // MyConfig_BaalAttackXy = [15092, 5028]; // MyConfig_BaalSafePortal = 30; // MyConfig_BaalMessage = [false, "다음방!"]; // NTConfig_Script.push("MySecretCowLevel.ntj"); // 카우봇 원본입니다 MyConfig_SecretCowLevelGriswold = false; // MyConfig_SecretCowLevelChicken = 127; // MyConfig_SecretCowLevelPortalXy = 0; // MyConfig_SecretCowLevelOpenPortal = true; // --> 이 부분이 키포인트 NTConfig_Script.push("NTDiablo.ntj"); // MyConfig_DiabloClear = [true, true, true, 0x01]; // MyConfig_DiabloInventory = false; // MyConfig_DiabloLeechBot = 2; // MyConfig_DiabloPotion = [0, 0]; // MyConfig_DiabloHelp = 0; // MyConfig_DiabloWait = 15000; // MyConfig_DiabloMessage = [false, "다음방!"]; // NTConfig_Script.push("MySecretCowLevel_PP.ntj"); // 여기에 적는 파일명은 위에script를 저장한 파일이 되겠죠? 바로 포탈로 들어가는 스크립트입니다 물론, 다른 기사의 캐릭이니는 위처럼 하지 마시고 Baal.ntj --> Dia.ntj --> MySecretCowLevel_PP.ntj 이렇게 하시면 되겠네요
  • 댓글 #246383

    가려운곳을 긁어주시는 좋은 글 감사합니다. 발상의 전환을 떠나 코딩을 손수 하신다는것에 경의를 표합니다~
  • 댓글 #246392

    좋은 정보네요.. 이렇게 하면 카우방을 훨씬 빨리 정리하겠네요.
권한이 없습니다.
다크 모드