쓰로잉밥 일꾼 고용기..
분류
봇관련
조회 수
1,765
추천 수
11
안녕하세요~ 나그네..입니다^^
긴 글 끝까지 읽다가 사냥영상보고 실망하시는 분들을 위해 일단 사냥영상부터 시작하겠습니다..
- 카오스 -
- 쓰론 -
사냥하는 모습이 마음에 드신 분들께서는 아래 내용을 찬찬히 읽어보세요~
뭐이리 느리냐.. 마을을 왜이리 자주가냐.. 이런 생각이 드신다면 지금바로 다른 게시판으로 이동하시면 되구요..^^"
1. 아이템셋팅/스탯/스킬
(1) 아이템 셋팅
- 뚜껑 : 노업슬가 <- 힘을 안찍기 때문에 업글하면 안됩니다..
- 갑옷 : 메이지수수 <- 역시 힘을 안찍기 위함이죠..
- 무기 : "노에테" 윙드나이프 <- 수량떨어지면 수리해야 하기에 무조건 "노에테!!"
- 장갑 : 셋트브렘블미트 <- 넉백장을 써봤으나 윙드나이프 사정거리가 짧아 불편합니다..
- 벨트 : 유닉샤크스킨벨트 <- 윙드나이프에 피어싱 50이 붙어있어서 여기 붙은 33을 더하면 나름 잘 뚫리더군요..
- 부츠 : 고어
- 아뮬/링 : 아트마/레이븐/듀얼링
- 스왑 : 쌍오심
- 인벤 : 횃불/애니/맥피참
* 무기를 왜 윙드나이프를 사용하느냐?? 일단 수량이 많고, 공속도 빠르며, 피어싱 50%, 치타 50%가 붙어있습니다..
다른건?? 윙드액스는 아무리 옵이 좋아도 "몹도망" 이거 하나로 안됩니다..
윙드하푼은 데미지도 좋고 사거리도 길지만.. 치명적 흠.. 수량이 너무 적습니다..
- 용병(마이트) : 자존심/인내/안다
* 로그용병에 신뢰/격노/레어앰플활 다 줘봤지만 데미지가 안나옵니다..
(2) 스텟 배분
- 힘 : 노힘으로 메이지수수 입으면 모든템 착용가능합니다.
- 덱스 : 최대한 몰아주기~
- 바이탈 : 전 샷에 보이는 만큼 찍었으나.. 오더외치고 3500피 정도면 충분할거 같습니다.
(3) 스킬 배분
- 마스터리 : 마스터리 4총사 1개씩, 쓰로잉웨폰마스터리 마스터
- 컴뱃 : 더블스윙/더블쓰로우 마스터
- 워크라이스 : 오더 마스터, 남는 스킬 샤우트에 몰아줄 생각입니다(나도 살고 용병도 살자~).
2. 봇 셋팅
봇 셋팅의 설명에 앞서..
*** 저 역시 프로그래밍에는 문외한입니다.. 그냥 잔머리 쪼금 써서 설정한거니 잘못된 정보일 수 있습니다..
(1) Scripts/libs/common폴더 수정부분
MyAttack.ntj파일 중 바바에 대한 부분 마지막에 아래내용을 복사해서 붙여넣기 합니다.
function MyAt_ThrowingCheckWeapon()
{
var _npcName = ["charsi", "fara", "hratli", "halbu", "larzuk"];
var _npcId = [NTC_NPC_ID_CHARSI, NTC_NPC_ID_FARA, NTC_NPC_ID_HRATLI, NTC_NPC_ID_HALBU, NTC_NPC_ID_LARZUK];
var i;
var _count, _nWeapons;
var _npc;
var _items;
var _result;
var _preAct, _preAreaId;
var _mercLocation, _mercClassId, _storeLocation, _storeX, _storeY;
for (var _tab = 0; _tab < 2; _tab++)
{
if (MyConfig_ThrowingWeapon[_tab][0] == 0)
continue;
_count = 0;
_nWeapons = 0;
_mercLocation = -1;
switch (MyConfig_ThrowingWeapon[_tab][0])
{
case 1:
case 2: _items = me.GetItems(); break;
case 3: _items = me.GetItems(526); break;
case 4: _items = me.GetItems(528); break;
}
if (_items)
{
for (i = 0; i < _items.length; i++)
{
if (_items[i].mode == _MyMI_MODE_ITEM_MERC)
{
if (_items[i].itemloc == ((_tab == 0) ? _MyMI_LOCATION_BODY_RIGHT_ARM : _MyMI_LOCATION_BODY_RIGHT_ARM_2) ||
_items[i].itemloc == ((_tab == 0) ? _MyMI_LOCATION_BODY_LEFT_ARM : _MyMI_LOCATION_BODY_LEFT_ARM_2))
{
if (MyConfig_ThrowingWeapon[_tab][0] < 3)
{
if (_items[i].itemtype == _NTIPAliasType["WingedKnife"] || _items[i].itemtype == _NTIPAliasType["ThrowingWeapons"])
{
_mercLocation = _items[i].itemloc - (_tab * 7);
_count = _items[i].GetStat(70);
if (MyConfig_ThrowingWeapon[_tab][0] == 2)
_mercClassId = _items[i].classid;
break;
}
}
else
{
_result = _items[i].GetStat(70);
_count += _result;
if (_result < ((MyConfig_ThrowingWeapon[_tab][0] == 3) ? 200 : 140))
_mercLocation = _items[i].itemloc - (_tab * 7);
else
{
_mercLocation = 0;
_nWeapons++;
}
}
}
}
else if (MyConfig_ThrowingWeapon[_tab][0] > 2 && _items[i].itemloc == _MyMI_LOCATION_ITEM_INVENTORY)
{
_result = (MyConfig_ThrowingWeapon[_tab][0] == 3) ? 200 : 140;
if (_items[i].GetStat(70) >= _result)
{
_count += _result;
_nWeapons++;
}
}
}
}
if (_count < (NTC_InTown() ? MyConfig_ThrowingWeapon[_tab][1] : MyConfig_ThrowingWeapon[_tab][2]))
{
if (MyConfig_ThrowingWeapon[_tab][0] == 1)
{
if (!NTC_InTown())
{
_preAreaId = me.areaid;
if (!MyMo_MoveToTown())
return false;
}
_NTTMGR_DoRepair = true;
switch (me.act)
{
case 1: NTTMGR_VisitCharsi(); break;
case 2: NTTMGR_VisitFara(); break;
case 3: NTTMGR_VisitHratli(); break;
case 4: NTTMGR_VisitHalbu(); break;
case 5: NTTMGR_VisitLarzuk(); break;
}
MyVi_TownManager(true);
}
else if (MyConfig_ThrowingWeapon[_tab][0] == 2)
{
_items = me.GetItems(_mercClassId);
if (_items && _items.length > 1)
{
for (i = 0; i < _items.length; i++)
{
if (_items[i].mode == _MyMI_MODE_ITEM_STORE && _items[i].GetStat(70) > _count)
{
if (!NTC_InTown())
{
_preAreaId = me.areaid;
if (!MyMo_MoveToTown())
return false;
}
NTC_SwapWeapons(_tab);
if (_items[i].itemloc == _MyMI_LOCATION_ITEM_STASH)
{
if (!MyMI_OpenStash())
return false;
}
else
SetUIState(_MyMI_UI_INVENTORY, true);
_storeLocation = _items[i].itemloc;
_storeX = _items[i].x;
_storeY = _items[i].y;
if (NTC_ItemToCursor(_items[i]))
{
me.ClickItem(_mercLocation);
NTC_PingDelay(500);
for (i = 0; i < 120; i++)
{
if ((i % 40) == 0)
me.ClickItem(0, _storeX, _storeY, _storeLocation);
Delay(100);
if (!me.itemoncursor)
break;
}
}
if (me.itemoncursor)
{
if (NTC_ClearCursor())
{
MyMI_PickItems(true, "", true);
MyCo_CancelMenu();
}
}
MyVi_TownManager(true);
MyCo_CancelMenu();
break;
}
}
}
}
else
{
if (!NTC_InTown())
{
_preAreaId = me.areaid;
if (!MyMo_MoveToTown())
return false;
}
MyVi_TownManager(true);
if (MyMo_TownMove(_npcName[me.act - 1]))
_npc = NTC_FindUnit(NTC_UNIT_NPC, _npcId[me.act - 1], 5);
if (!_npc)
{
if (me.act == 3)
{
_preAct = 3;
MyMo_MoveToTown(4);
if (MyMo_TownMove(_npcName[3]))
_npc = NTC_FindUnit(NTC_UNIT_NPC, _npcId[3], 5);
}
if (!_npc)
return false;
}
if (!MyVi_DoInteract(_npc)) return false;
if (!NTT_DoTrade(_npc)) return false;
if (_mercLocation)
NTC_SwapWeapons(_tab);
if (_mercLocation > 0)
{
for (i = 0; i < 80; i++)
{
if ((i % 40) == 0)
me.ClickItem(_mercLocation);
Delay(100);
if (me.itemoncursor)
{
NTC_PingDelay(200);
break;
}
}
if (i > 79)
return false;
if (!NTC_ClearCursor())
return false;
}
_items = _npc.GetItems((MyConfig_ThrowingWeapon[_tab][0] == 3) ? 526 : 528);
if (!_items || _items.length < 1)
return false;
for (i = _nWeapons; i < MyConfig_ThrowingWeapon[_tab][3]; i++)
{
if (!NTT_ShopItem(_items[0], _npc, 2))
return false;
}
MyCo_CancelMenu();
}
if (_preAct)
{
if (!MyMo_MoveToTown(_preAct))
return false;
}
return (!_preAreaId || (MyMo_TownMove("portalspot") && NTM_UsePortal("BluePortal", _preAreaId)));
}
}
return true;
}
(2) 캐릭이니 설정
1) 공격설정
//##########################################################################
// 공격 설정하기
//---------------
// MyConfig_AttackSkill[X] = [공격 스킬, 몬스터와의 간격, 무기 번호]
// 참고: MyConfig_AttackSkill[1 또는 3]의 공격 스킬이 -1이면 기본값이 적용됩니다.(기본값: 휠윈드)
//==========================================================================
MyConfig_AttackSkill[0] = [140, 15, 1]; // 처음 한 번만 공격할 스킬
MyConfig_AttackSkill[1] = [140, 15, 1]; // 대장을 공격할 스킬
MyConfig_AttackSkill[3] = [140, 15, 1]; // 부하를 공격할 스킬
MyConfig_AttackSkill[5] = [-1, 2, 1]; // 1, 3번 내성 시 공격할 스킬
2) 무기 수리설정 추가 - 공격설정 아래에 아무데나 넣으시면 됩니다..
MyConfig_ThrowingWeapon = [[1, 380, 80, 0], [0, 0, 0, 0]]; //
3) 텔레포트와 함성은 2번 무기로 설정해줍니다.
4) 사냥터설정 수정
NTConfig_Script.push(["MyBaalBot.ntj", []]); 중 아래 부분 소환몹 대기좌표를 수정!!! 반드시 해야합니다!!
MyConfig_BaalBotPortalFirst = false; // 쓰론 오브 디스트럭션에 도착하면 타운포탈부터 열기
MyConfig_BaalBotPortalXy[0] = [15116, 5068]; // 위험한 타운포탈 열 좌표 = [X, Y]
MyConfig_BaalBotPortalXy[1] = [15116, 5068]; // 안전한 타운포탈 열 좌표 = [X, Y]
MyConfig_BaalBotWaitingXy[0] = [15092, 5040]; // 바알이 몬스터를 소환할 때 쫄봇(움직임)이 대기할 좌표 = [X, Y]
***** MyConfig_BaalBotWaitingXy[1] = [15092, 5040]; // 바알이 몬스터를 소환할 때 대기할 좌표 = [X, Y] ***********
MyConfig_BaalBotKill = true; // 바알 잡기
MyConfig_BaalBotInventory = true; // 바알 잡기 전 인벤토리에 있는 아이템 정리하기
이 부분 수정하지 않으면 둘러쌓여서 힘들어집니다..
3. 마무리
정강란에 제가 쓴 글들은 사람들에게 선택받지 못하는 캐릭들을 위주로 만들다보니 조금씩 부족한게 사실입니다..
읽으시다 번뜩이는 아이디어가 있거나 잘못된 부분이 있으면 거침없이 지적해주세요!!
긴 글 읽어주셔서 고맙습니다~