Skip to content
봇관련다크 모드

쫄봇 자동 텔레보내서 보쌈 - 안다/듀리엘[5/25리플확인하세요]

조회 수
2,492
추천 수
22
등록일

안녕하세요. 오리 카인입니다.

thething님 자료로 보쌈+카오스런 하고 있습니다.

thething님이 아랫글에서 허락해 주셔서 안다&듀리엘 텔레보내서 잡는 법 포스팅합니다.

비번방을 팔라/소서/바바 3케릭만 하기때문에 자주 랠따가 와서 보쌈까지 하고 있습니다.

바바 외에는 모두 공격합니다. 바바는 팔라와 근접해서 쫄하기때문에 기사에게 몹 몰리는걸 방지하고 있습니다.


=1차수정 : 텔레실패시 오류메시지후 바로 다음사냥터로 넘어가게
 오더받고 홀리쉴드 시전하게

=2차수정 : 쫄들 포탈 잘 사들고 다니게 (타운매니저가 아닌 Leechbot.ntj에서 포탈체크)

=3차수정 : 쫄들 처음 방 들어와서 아이템 정리할때 포탈수 10개 이하시 사놓게

==================선행 조건======================

1. thething님 자료로 카오스런이 원활히 되고 있어야 됩니다.

2. D2NT3.1_NTBot4.2_3 날아다녀님 3차 수정봇입니다.
(여기에 thething님 자료 적용)

3. 3케릭이 협동해서 사냥합니다. 쫄 키우려고 하시는분에게는 비추천합니다.
쫄수는 2로 고정입니다. 1이나 3이상은 테스트해보지 못했습니다.

==================개조 방법======================

1. 케릭터.ntj 수정
NTConfig_Paladin_캐릭터이름.ntj 열어서 사냥터 추가해줍니다.

//----------------------------------------------------------TT_Mod
NTConfig_Script.push("MyAndariel.ntj"); // 안다리엘 안전하게 잡기
MyConfig_MyAndarielKill = 1; // 0: 원본 좌표/ 1: 머리 찍기/ 2: 입구 근처 상자 쌓여있는 곳
MyConfig_MyAndarielLeechBot = 2; // 0: 사용 안함/ 1: 쫄봇(멈춤)/ 2: 쫄봇(움직임)
MyConfig_MyAndarielAntidotePotion = 0; // 해독포션 사 먹기

NTConfig_Script.push("MyDuriel.ntj"); // 듀리얼 안전하게 잡기
MyConfig_MyDurielKill = 0; // 0: 맞짱/ 1: 거리 유지하기/ 2: 티리얼 있는 곳으로 유인하기
MyConfig_MyDurielLeechBot = 2; // 0: 사용 안함/ 1: 쫄봇(멈춤)/ 2: 쫄봇(움직임)

NTConfig_Script.push("MyMephisto.ntj"); // 메피스토 안전하게 잡기
MyConfig_MyMephistoKill = 0; // 0: 맞짱/ 1: 강 쪽으로 유인하기
MyConfig_MyMephistoCouncilMember = false; // 카운슬 멤버 잡기
MyConfig_MyMephistoLeechBot = 2; // 0: 사용 안함/ 1: 쫄봇(멈춤)/ 2: 쫄봇(움직임)
//-----------------------------------------------------------TT_mod

사냥 순서는 상관 없지만 듀리엘을 첫번째에 넣지 않기를 추천드립니다. 오더 못받을수 있습니다.


2. 1번 파일을 scripts\NTBot\bots 폴더에 압축을 풀어주세요.
 (bots.jpg를 bots.zip로 확장자 변경해주세요. 강좌란이라 그런지 zip 확장자론 못올리네요.
 (강제로 알집으로 열어도 됩니다.)

또는 아래 처럼 수정하셔도 됩니다. (1번 파일에는 모든 적용된 파일이 있습니다.)


===========안다리얼 scripts\NTBot\bots\MyAndariel.ntj==========

scripts\NTBot\bots\MyAndariel.ntj 파일 열고
아래 구문중 프레캐스트아래에

 if (!NTTM_TownMove("waypoint"))
 return "NTTM_TownMove()";
 if (!MyMo_TakeWaypoint(35))
 return "MyMo_TakeWaypoint()";

 NTP_DoPrecast(true);

 //----------------------------------------------------------> TT_mod
 // 웨이로 이동 후 함성 받기
 if (MyConfig_MyAndarielLeechBot != 0 && MyConfig_LeechBotTeleeName)
 {
 NTM_WalkTo(me.x+2, me.y+1);
 
 if (!NTM_MakeTP())
 return "NTM_MakeTP()";
 Say("보쌈먹습니다 먼저 안다누님 보러갑니다.");
 MyLB_WriteCheckMessage("OUT");

 var _player1, _player2;
 for (var i = 1; i <= 50; i++) // 파티원 검사 20초이던걸 50초로
 {
 _player1 = MyUn_GetPlayerUnit(MyConfig_LeechBotTeleeName, 1, true);
 _player2 = MyUn_GetPlayerUnit(MyConfig_LeechBotWarcryName, 1, true); 

 if (_player1 && _player2)
 break;
 
 Delay(1000);
 }
 
 if (!_player1 || !_player2 )
 return "MyUn_GetPlayerUnit()";
 
 MyLB_WriteMessage("BO");
 Delay(10000);
 MyLB_WriteMessage("ANDA");
 MyTP_UsePortal(me.charname);
 MyLB_WriteMessage("IN"); 

 var _msg;
 for (i = 1; i <= 60; i++)
 {
 _msg = MyIL_File("NTBot/MyData/LeechBot/LeechBotLeechMessage[" + MyConfig_LeechBotTeleeName + "].txt", 0);
 Delay(1000);
 
 if (_msg == "1" )
 {
 MyTP_UsePortal(MyConfig_LeechBotTeleeName)
 NTM_MakeTP();
 MyLB_WriteMessage("ATTACK");
 MyAt_ClearPosition(20);
 break;
 } 
 }
 if (_msg != "1")
 return "Tele Fail:"+_msg;//탤레실패시
 if (!_msg)
 return "LeechBotLeechMessage";

 }
 // <-------------------------------------------------- TT_mod


//이동 부분 주석처리
/*
 if (!MyMo_MoveToStairs([35, 36], [36, 37]))
 return "MyMo_MoveToStairs()";

 if (MyConfig_MyAndarielLeechBot != 0)
 {
 if (!MyMo_MoveTo(me.areaid, 22579, 9595))
 return "MyMo_MoveTo()";

 NTM_MakeTP();

 if (!MyMo_MoveTo(me.areaid, 22571, 9588))
 return "MyMo_MoveTo()";

 MyLB_WriteCheckMessage((MyConfig_MyAndarielLeechBot == 1) ? "OUT" : "ATTACK");

 MyConfig_MyAndarielKill = 2;
 }
 else if (!MyMo_MoveTo(me.areaid, 22580, 9596))
 return "MyMo_MoveTo()";
*/

좀 더 아래로 내려와서

 if (MyConfig_MyAndarielLeechBot != 0)
 MyLB_WriteMessage("IN");

위 부분을 아래처럼 수정합니다.

 if (MyConfig_MyAndarielLeechBot != 0)
 {
 MyLB_WriteMessage("ACT1");
 Delay(5000); //쫄들 마을로 갈 시간 주기
 }

===========듀리엘 scripts\NTBot\bots\MyDuriel.ntj==========

scripts\NTBot\bots\MyDuriel.ntj파일 열고
아래 if문 2개 다음 아래에

 if (!NTTM_TownMove("waypoint"))
 return "NTTM_TownMove()";
 if (!MyMo_TakeWaypoint(46))
 return "MyMo_TakeWaypoint()";

 //----------------------------------------------------------> TT_mod
 // 웨이로 이동 후 함성 받기
 if (MyConfig_MyMephistoLeechBot != 0 && MyConfig_LeechBotTeleeName)
 {
// NTM_WalkTo(me.x+2, me.y+1);
 
 if (!NTM_MakeTP())
 return "NTM_MakeTP()";
 Say("보쌈먹습니다 듀리엘 보러갑니다.");
 MyLB_WriteCheckMessage("OUT");

 var _player1, _player2;
 for (var i = 1; i <= 50; i++) // 파티원 검사 20초이던걸 50초로
 {
 _player1 = MyUn_GetPlayerUnit(MyConfig_LeechBotTeleeName, 1, true);
 _player2 = MyUn_GetPlayerUnit(MyConfig_LeechBotWarcryName, 1, true); 

 if (_player1 && _player2)
 break;
 
 Delay(1000);
 }
 
 if (!_player1 || !_player2 )
 return "MyUn_GetPlayerUnit()";
 
 MyLB_WriteMessage("BO");
 Delay(10000);
 MyLB_WriteMessage("DURI");
 NTP_DoPrecast(true);
 Delay(1000);
 MyTP_UsePortal(me.charname);
 MyLB_WriteMessage("IN"); 

 var _msg;
 for (i = 1; i <= 60; i++)
 {
 _msg = MyIL_File("NTBot/MyData/LeechBot/LeechBotLeechMessage[" + MyConfig_LeechBotTeleeName + "].txt", 0);
 Delay(1000);
 
 if (_msg == "1" )
 {
 MyTP_UsePortal(MyConfig_LeechBotTeleeName)
 NTM_MakeTP();
 MyLB_WriteMessage("ATTACK");
 MyAt_ClearPosition(20);
 break;
 } 
 }
 if (_msg != "1")
 return "Tele Fail:"+_msg;//탤레실패시
 if (!_msg)
 return "LeechBotLeechMessage";

 }
 // <-------------------------------------------------- TT_mod

//이동 부분 주석처리
/*
 _tombs = GetRoom();
 if (!_tombs)
 return "GetRoom()";

 if(!MyMo_MoveToPresetUnit(me.areaid, NTC_UNIT_TILE, _tombs.correcttomb - 28))
 return "MyMo_MoveToPresetUnit()";

 _unit = NTC_FindUnit(NTC_UNIT_TILE, _tombs.correcttomb - 28, 5);
 if(!_unit)
 return "NTC_FindUnit()";

 if(!NTM_TakeStair(_unit.subareaid))
 return "NTM_TakeStair()";
 if (!MyDu_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 152))
 return "MyDu_MoveToPresetUnit()";
 if (!MyDu_TakeStair(100))
 return "MyDu_TakeStair()";
*/

 if (MyConfig_MyDurielLeechBot != 0)
 {
//포탈 새로 여는 부분 주석처리 NTM_MakeTP();


좀 더 아래로 내려와서

 if (MyConfig_MyDurielLeechBot != 0)
 MyLB_WriteMessage("IN");

위 부분을 아래처럼 수정합니다.

 if (MyConfig_MyDurielLeechBot != 0)
 {
 MyLB_WriteMessage("ACT2");
 Delay(5000); //쫄들 마을갈 시간 주기 1000=1초
 }


===========리치봇 scripts\NTBot\bots\MyLeechBot.ntj==========
scripts\NTBot\bots\MyLeechBot.ntj 파일열고

ⓐ thething님 자료중 추가부분에 if문 주석처리
(기존 파티가 잘되던분들은 적용하지 않으셔도 됩니다.)

function MyMain()
{
 LeechBotHelpMsg = -1;

 var i;
 var _portal;
 var _playerMaster, _unitMaster;
 var _attackCount, _pickCount, _precastCount, _mercCount, _errorCount;
 var _myExperience, _experience, _lastExperience;
 var _preAreaId, _preX, _preY;
 var _prePlayer = new Array(3);
 var _result;

 //-------------------------------------------------------->TT_mod
// if (me.charname == MyConfig_LeechBotGameMaker) //주석처리 기사인식 잘하게
 MyIL_File("NTBot/MyData/LeechBot/LeechBotMasterName.txt", 1, MyConfig_LeechBotAutoMaster)
 
 //Load("NTBot/tools/NTToolsThread_MyLeechBot.ntj");
 //<-------------------------------------------------------TT_mod

ⓑ 아래 내려와서 thething님 자료중 카오스 이동 아래에 추가

 //-------------------------------------->TT_mod 추가
 case "BO": // 함성 하기
 if (me.charname == MyConfig_LeechBotWarcryName)
 {
 NTC_SwapWeapons(1) // 2번 무기 슬롯을 이용할 경우 
 while (!NTC_CastSkill(155, NTC_HAND_RIGHT))
 Delay(10)
 while (!NTC_CastSkill(138, NTC_HAND_RIGHT))
 Delay(10)
 while (!NTC_CastSkill(149, NTC_HAND_RIGHT))
 Delay(10)
 NTC_SwapWeapons(0);
 MyLB_WriteMessage(_MyL_Message);
}
break;

 case "CHAOS": // 카오스 중앙으로 이동(텔레)
 if (me.charname == MyConfig_LeechBotTeleeName)
 {
 if( MyMo_MoveTo(108, 7792 + 10, 5292 - 4) )
 {
 if (NTTM_CheckAct(4))
 MyL_WriteMessage("1"); 
 }
 }
 break; 
 //<---------------------------------------------TT_mod
 // case "CHAOS":
 // 에서 이동방법이나 좌표는 MyAutoTeleport.ntj 를 참고하면 됩니다.
 // -------> function MyAT_카오스_생츄어리() 내 이동 방법 참고
 // 이 외에도 모든 사냥터의 좌표를 알 수 있습니다.

//안다
//----------------------------------------------mod
 case "ANDA": // 카타콤 4층으로 이동(텔레)
 if (me.charname == MyConfig_LeechBotTeleeName)
 {
 if (!MyMo_MoveToStairs([35, 36], [36, 37]))
 MyL_WriteMessage("MyMo_MoveToStairs()");

 if (!MyMo_MoveTo(me.areaid, 22579, 9595))
 return "MyMo_MoveTo()";

 if (NTTM_CheckAct(1))
 MyL_WriteMessage("1"); 
 }
 break; 
//----------------------------------------------mod

//듀리엘
//---------------------------------------------ㅡmod
 case "DURI": // 듀리엘방으로 이동(텔레)
 if (me.charname == MyConfig_LeechBotTeleeName)
 {
 _tombs = GetRoom();
 if (!_tombs)
 MyL_WriteMessage("GetRoom()");

 if(!MyMo_MoveToPresetUnit(me.areaid, NTC_UNIT_TILE, _tombs.correcttomb - 28))
 MyL_WriteMessage("MyMo_MoveToPresetUnit()");

 _unit = NTC_FindUnit(NTC_UNIT_TILE, _tombs.correcttomb - 28, 5);
 if(!_unit)
 MyL_WriteMessage("NTC_FindUnit()");

 if(!NTM_TakeStair(_unit.subareaid))
 MyL_WriteMessage("NTM_TakeStair()");
 if (!MyDu_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 152))
 MyL_WriteMessage("MyDu_MoveToPresetUnit()");
 if (!MyDu_TakeStair(100))
 MyL_WriteMessage("MyDu_TakeStair()");

 if (NTTM_CheckAct(2))
 MyL_WriteMessage("1"); 
 }
 break;
//----------------------------------------------mod


ⓒ 3개의 function을 가장 뒤에 복사해 넣습니다.

//---------------------------------------TT_mod
//듀리엘 방 찾아기기
function MyDu_TakeStair(classId)
{
 var i;
 var _unit = NTC_FindUnit(NTC_UNIT_OBJECT, classId, 50);

 if (_unit)
 {
 var _preAreaId = me.areaid;

 for (i = 0; i < 100; i++)
 {
 if ((i % 5) == 0)
 {
 if (NTC_GetSkillLevel(43) && MyMo_MoveCloseInt(_unit, 20))
 NTC_CastSkill(43, NTC_HAND_RIGHT, _unit);
 else if (NTM_GetCloserInt(_unit))
 NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
 }

 Delay(100);

 if (me.areaid != _preAreaId)
 {
 while (me.areaid == 0)
 Delay(200);

 if (me.areaid != _preAreaId)
 {
 NTC_PingDelay(NTConfig_AreaDelay);
 return true;
 }
 else
 return false;
 }
 }
 }

 return false;
}


function MyDu_CheckCoord(x, y)
{
 var i;
 var _unitX, _unitY;
 var _coordList = [[0, x - 11, y - 11], [0, x - 11, y + 3], [0, x - 11, y + 15], [0, x + 7, y - 11], [0, x + 7, y + 3], [0, x + 7, y + 15]];
 var _unit = NTC_FindUnit(NTC_UNIT_MONSTER, null, 5);

 if (!_unit)
 return false;

 do
 {
 if (_unit.IsAttackable())
 {
 _unitX = _unit.x;
 _unitY = _unit.y;

 for (i = 0; i < 6; i++)
 {
 if (GetDistance(_coordList[i][1], _coordList[i][2], _unitX, _unitY) <= 6)
 _coordList[i][0]++;
 }
 }
 } while (_unit.GetNext());

 _coordList.sort(function (a, b) { return (a[0] - b[0]); });

 return MyMo_MoveTo(me.areaid, _coordList[0][1], _coordList[0][2]);
}

function MyDu_MoveToPresetUnit(areaId, unitType, classId, offsetX, offsetY, isClearPath, specType)
{
 var i, j;
 var _oldUnits, _newUnits;

 if (arguments.length < 4) { offsetX = 0;
 offsetY = 0; }
 if (arguments.length < 6) isClearPath = false;
 if (arguments.length < 7) specType = _MyAt_MONSTER_TYPE_ALL;

 for (i = 0; i < 3; i++)
 {
 _oldUnits = GetPresetUnits(areaId, unitType);
 if (_oldUnits)
 {
 for (j = 0; j < _oldUnits.length; j++)
 {
 if (_oldUnits[j].id == classId)
 {
 if (MoveTo(areaId, _oldUnits[j].roomx * 5 + _oldUnits[j].x + offsetX, _oldUnits[j].roomy * 5 + _oldUnits[j].y + offsetY, 3, isClearPath, specType))
 return true;
 else
 {
 switch (me.areaid)
 {
 case 29:
 case 30:
 case 31:
 case 51:
 case 52:
 case 53:
 case 54:
 var _moveXy = [[30, 0], [0, 30], [-30, 0], [0, -30]];

 for (i = 0; i < 4; i++)
 {
 while (true)
 {
 if (!NTM_TeleportTo(me.x + _moveXy[i][0], me.y + _moveXy[i][1]))
 break;
 if (MoveTo(areaId, _oldUnits[j].roomx * 5 + _oldUnits[j].x + offsetX, _oldUnits[j].roomy * 5 + _oldUnits[j].y + offsetY, 0, isClearPath, specType))
 return true;
 }
 }
 break;
 }

 return false;
 }
 }
 }
 }

 if (i < 2)
 Delay(500);
 }

 function MoveTo(areaId, x, y, retry, isClearPath, specType)
 {
 var i, j;
 var _isTeleport;
 var _path, _checkPath;
 var _preX, _preY;
 var _retry = 0;

 if (MyConfig_AttackSkill[1] == 112 || MyConfig_AttackSkill[3] == 112)
 {
 if (me.x == x && me.y == y)
 return true;
 }
 else if (Math.abs(me.x - x) < 2 && Math.abs(me.y - y) < 2)
 return true;

 if (arguments.length < 4) retry = 4;
 if (arguments.length < 5) isClearPath = false;
 if (arguments.length < 6) specType = _MyAt_MONSTER_TYPE_ALL;

 if (NTC_InTown())
 {
 if (isClearPath)
 return false;

 _isTeleport = false;
 isClearPath = false;
 }
 else if (NTC_GetSkillLevel(54))
 _isTeleport = true;
 else
 {
 MyMo_CheckEnigma();

 if (NTC_GetSkillLevel(54))
 _isTeleport = true;
 else
 return MyMo_RunTo(areaId, x, y, retry, isClearPath, specType);
 }

 _path = GetPath(areaId, me.x, me.y, x, y, _isTeleport);
 if (!_path)
 return (NTC_InTown() && (NTM_WalkTo(x, y) || NTTM_TownMoveXY(x, y)));

 for (i = 0; i < _path.length; i++)
 {
 if ((i + 1) >= _path.length)
 return MyDu_CheckCoord(x, y);

 if (!isClearPath || !MyConfig_SafeHunting || MyUn_CheckCowKing() || MyUn_CheckSafe(_path[i][0], _path[i][1], 15, 5))
 {
 for (j = 0; j < 2; j++)
 {
 if (_isTeleport)
 {
 if (NTM_TeleportTo(_path[i][0], _path[i][1]))
 break;
 }
 else if (NTM_WalkTo(_path[i][0], _path[i][1]))
 break;
 else if (NTTM_TownMoveXY(_path[i][0], _path[i][1]))
 break;
 }

 if (j > 1)
 {
 if (_retry++ < retry)
 {
 _path = GetPath(areaId, me.x, me.y, x, y, _isTeleport);
 if (_path)
 {
 i = -1;
 continue;
 }
 }

 return false;
 }
 }
 else if (!MyMo_RunTo(me.areaid, _path[i][0], _path[i][1]))
 return false;

 if (isClearPath && !MyUn_CheckCowKing())
 {
 _preX = me.x;
 _preY = me.y;

 MyAt_ClearPosition(30, specType, true);

 NTP_DoPrecast(false);

 if (_isTeleport && (me.x != _preX || me.y != _preY) && (i + 1) < _path.length)
 {
 _checkPath = GetPath(me.areaid, me.x, me.y, _path[i + 1][0], _path[i + 1][1], _isTeleport);
 if (_checkPath && _checkPath.length > 1)
 {
 if (!MyMo_MoveTo(me.areaid, _preX, _preY))
 return false;
 }
 }
 }

 MyCS_CatchShrine();
 }

 return true;
 }

 return true;
}
//---------------------------------------TT_mod


==================리치봇 MyLeechBot.ntj======================
scripts\NTBot\bots\MyLeechBot.ntj 파일열고

ⓐ 포탈수가 부족하면 상점 들리게

function MyL_CheckPortal(count)
{
 if (arguments.length < 1)
 count = 4; 

 _NTTMGR_BuyTP = !MyTP_CheckBeltScroll() && NTTMGR_CheckScrolls(1) < count;

위 구문을 아래처럼 수정

function MyL_CheckPortal(count)
{
//주석처리 if (arguments.length < 1)
 count = 10; 

 _NTTMGR_BuyTP = !MyTP_CheckBeltScroll() && NTTMGR_CheckScrolls(1) < count;

ⓑ 아이템 정리할때 포탈수 확인하고 사기

 if (MyConfig_LeechBotItem[0])
 {
 StatusText[0] == 1 && MyCo_SetStatusText("ÿc4아이템 정리 중 (ÿc0...ÿc4)");
 MyVi_TownManager(!MyConfig_LeechBotItem[1]);
 }

위 구문을 아래처럼 수정

 if (MyConfig_LeechBotItem[0])
 {
 StatusText[0] == 1 && MyCo_SetStatusText("ÿc4아이템 정리 중 (ÿc0...ÿc4)");
 MyVi_TownManager(!MyConfig_LeechBotItem[1]);
 MyL_CheckPortal(); //아이템 정리중 체크포탈
 }

============================================================


주의 !!!!
1. 이 자료와 관련 없는 질문은 사절합니다.
2. 파일에는 아래 메피자료도 적용되어 있습니다. (1차수정메피 적용중)
3. 제 테스트 환경은 팔라/소서/바바 입니다.
팔라 11K햄딘/ 소서 오브파볼소서/ 바바 오더샤우트마스터
4. 수정하시기 전에 기존 봇폴더를 복사해놓으시길 추천드립니다.


special thk : thething 님
thething님이 더 완벽한 자료 올려주실거라 믿습니다.


ps : 5/17 포탈 문제 해결했습니다. 질문은 리플로 해주세요. 이 자료와 관련된 질문만 받습니다.
 쫄봇 전체적인걸 물어 보시거나, 자료실 렙이 안되서 메일로 봇 보내달란분들 자중좀 해주세요;;
댓글 73
  • 댓글 #239847

    기존에 받아놓은 파일에서 뭔가를 건들였던것 같네요. 지금은 아주 잘 돌아갑니다. 포탈책을 오류가 자꾸나서 지금은 아예 포탈책만 8권씩 사서 넣어놨더니 잘 돌아가네요.^^
  • 댓글 #239850

    상점 정리 하다 늦어서 불러도 안오는 쫄들 있을 경우 이 방법 쓰세요. 제가 테스트해보진 못했습니다. 웨이에서 파티원 검사시 모든 파티원이 모이지 않았다면 오게 부르는겁니다. //----------------------------------------------------------> TT_mod // 웨이로 이동 후 함성 받기 if (MyConfig_MyMephistoLeechBot != 0 && MyConfig_LeechBotTeleeName) { // NTM_WalkTo(me.x+2, me.y+1); if (!NTM_MakeTP()) return "NTM_MakeTP()"; Say("보쌈먹습니다 듀리엘 보러갑니다."); MyLB_WriteCheckMessage("OUT"); var _player1, _player2; for (var i = 1; i <= 50; i++) // 파티원 검사 20초이던걸 50초로 { _player1 = MyUn_GetPlayerUnit(MyConfig_LeechBotTeleeName, 1, true); _player2 = MyUn_GetPlayerUnit(MyConfig_LeechBotWarcryName, 1, true); if (_player1 && _player2) break; //---------------------------------------------TT_mod else if (!_player1 || !_player2 ) MyLB_WriteMessage("RESUME"); //---------------------------------------------TT_mod Delay(1000); } if (!_player1 || !_player2 ) return "MyUn_GetPlayerUnit()"; 포탈문제는 제 자료 문제는 아닌듯 싶습니다. 전 50방돌동안 소서 카오스 치킨외에는 에러가 나지 않거든요. (안다,듀리엘 쫄움직임 // 메피 쫄멈춤) 방 조인하면 포탈 확인하고 사 놓기에 그방 돌동안 모자랄 일은 없고요. ps : 제 글에 리플이 50개가 넘었군요. 참 많이 모자란 자료 테스트 해주신 모든 분들 감사드립니다.
  • 댓글 #239853

    카인님/ 수고가많으셨습니다 좋은자료 테스트잘하고갑니다 액2 듀리엘사냥터에서는 적용하지않으셔도될것같아요 그대신 for (var i = 1; i <= 50; i++) // 파티원 검사는 조금 늘려주시구요 TT_mod추가시 오더받고 포탈을안타고 마을웨이로 바로가는경우도 생겨서 열씸히 달려가요 그러면 사냥끝나고 들어오는경우가 생겨서 다른 액트는 마을웨이하고 포탈여는곳이 가까우니 상관없지만 액2는 거리가있으니 참고만하세요^^수고하셨습니다^^
  • 댓글 #239856

    카인님 고생 많으시고요..자료 감사합니다. Kook~님/바로윗글로 편하게 애들 방입장후 각자템정리후 출발하네요. Kook~님도 고생 많으시네요..
  • 댓글 #239859

    소녀님/감사합니다 저도 테스트하고 자료활용하는 1인중하나입니다 다 똑같지요^^고생은요~만드신분들이 고생이죠^^ 다들 즐거운 하루보내세요^^
  • 댓글 #239865

    네 잘읽었습니다. 유용한정보 감사드립니다 수고 하십시요!!!
  • 댓글 #239868

    좋은정보로 잘 사용하고 있습니다^^ 다른건 모두 잘 작동하는데 가끔 사냥중에 포탈타고 마을다녀오는사이에 기존 인식되었던 몹이 죽은걸 인식못하고 스킬시전을 하고 있습니다. 혹은 기사가 다음사냥터로 가는데 안따라가고 근처있는 잔몹처리하다 시간 다보내고 오류나서 게임끝날때까지 그러다 방나가네요. 설명이 길었는데 보스몹 잡고난뒤 다음사냥터로 강제로 보내는 방법은 없을까요?
  • 댓글 #239871

    카인님 감사합니다. 날아다녀님 4차버젼에 쫄포함 4마리 잘 돌아갑니다. 액1 안다 잡을때 오더밥 말고 망치바바(쫄) 기사가 안다잡을 동안 포탈 위치 바로 아래에 문열라고 왔다갔다하다가 근처몹들한테 신나게 어더터지는데.. 10방중 6방정도 같은증상이 보여서 문의드려봅니다.
  • 댓글 #239874

    쿠울님// 윗 댓글중에 마각님 글 읽어보셔요.. 저도 그문제로 마각님글 참고해서 사용하니 그런현상은 없더군요
  • 댓글 #239877

    5차버전으로 수정하신분 도움좀주세요 4차버전까지는 잘 사용했는데 5차버전은 또 다른부분이 많나보네요 thething님 강좌부터 카인님 강좌까지 다 해놓고 실행하면 안다는 함께 사냥합니다 듀리엘은 기사혼자사냥한뒤 소서가 플라이하는데 듀리엘이 없어서 오류납니다 메피는 또 함께 사냥하구요 디아는 기사가 불강가면 NTDiablo.ntj : MyDi_ClearSeal()오류나면서 로비로 나갑니다 2차부터 수정될때마다 새버전 수정해서 사용했는데 5차는 몇번을 다시 수정해봐도안되네요
  • 댓글 #239880

    오늘 봇게시판 보니 8명넣고 하시는분 있더군요. 3명이 최적이긴한데... 4명이상일 경우, 쫄들에게 막혀서 기사가 움직임이 원활하지 않네요. 그래서 안다와 메피쪽 코드수정 알려드립니다. ==================메피======================= 메피사냥터파일 열어서 제꺼와 비교하시면서 고치세요 소서가 원래 열던곳에 열고 팔라가 메피앞까지 전진한후 포탈엽니다. if (MyConfig_MyMephistoLeechBot != 0) { if (!MyMo_MoveTo(me.areaid, 17592, 8070)) return "MyMo_MoveTo()"; MyMo_MoveTo(me.areaid, 17560, 8069); //위치이동 원좌표 17555-8069 NTM_MakeTP(); MyLB_WriteCheckMessage((MyConfig_MyMephistoLeechBot == 1) ? "OUT" : "ATTACK"); // MyMo_MoveTo(me.areaid, 17555, 8069); MyConfig_MyMephistoKill = 0; } else if(!MyMo_MoveTo(me.areaid, 17564, 8069)) return "MyMo_MoveTo()"; // if (!MyMe_KillMephisto()) // return "MyMe_KillMephisto()"; //----------------------------------TT_mod if (me.classid == NTC_CHAR_CLASS_SORCERESS) { if (!MyMe_KillMephisto()) return "MyMe_KillMephisto()"; } else { if (!MyAt_KillBoss(242)) return "MyAt_KillBoss()"; } //----------------------------------TT_mod if (!MyConfig_MyMephistoCouncilMember && MyConfig_MyMephistoLeechBot != 0) MySI_PickItems(); MySI_PickItems(); MyLB_WriteMessage("ACT3"); Delay(5000); //쫄들 마을갈 시간주기 if (NTConfig_OpenChest) { if (MyMo_MoveTo(me.areaid, 17537, 8064)) { if (MyMe_OpenChest(17513, 8063)) MySI_PickItems(); } } if (MyConfig_MyMephistoCouncilMember) { MyMe_KillCouncilMember(); if (MyConfig_MyMephistoLeechBot != 0) MyLB_WriteMessage("IN"); } return "MyMain()"; } =================안다====================== 4명이상일때 액1마을에서 쫄들에게 막혀 카타콤4층포탈 못들어가는 기사 잘들어가게 하기 안다사냥터 파일 열고 비교하시면서 고치세요. var _player1, _player2; for (var i = 1; i <= 50; i++) // 파티원 검사 20초이던걸 50초로 { _player1 = MyUn_GetPlayerUnit(MyConfig_LeechBotTeleeName, 1, true); _player2 = MyUn_GetPlayerUnit(MyConfig_LeechBotWarcryName, 1, true); if (_player1 && _player2) break; Delay(1000); } if (!_player1 || !_player2 ) return "MyUn_GetPlayerUnit()"; MyLB_WriteMessage("BO"); Delay(10000); MyLB_WriteMessage("ANDA"); NTP_DoPrecast(true); Delay(1000); MyTP_UsePortal(me.charname); NTM_WalkTo(me.x-2, me.y-1); //마을들어간후 위로 살짝움직임 MyLB_WriteMessage("IN");
  • 댓글 #239883

    카인// 듀리엘방 찾아가기<<<요부분은 어디부분에 복사해 넣는건가요? 봐도 이해해가;;
  • 댓글 #239886

    나카시마미카 // ⓒ 말씀인가요? ⓐ한곳과 같은곳에 합니다.
  • 댓글 #239892

    카인님 다 잘 돌아가는데 보쌈만 잡고 계속 나가네요;; 디아블로<<주석풀어도 보쌈만계속 잡네요.ㅠ 어디가 문제인지?;;
  • 댓글 #239907

    나카시마미카 님// 선행조건1이 되시고 있으시다면 안될리 없을텐데요. 다시 확인부탁합니다.
  • 댓글 #239910

    좋은정보 감사합니다. 지금 잘 돌아가고 있습니다. 그런데 한가지 변경하고 싶은것이 있습니다. 보쌈이 끝나고 디아런 갈때 바바만 함성하고 마을로 와서 대기하도록 하고 싶은데 어떻게 해야 하나요? 날아다녀님 2차를 쓰고 있습니다. 즐거운 한주되세요.^^
권한이 없습니다.
다크 모드