D2NT 오리 디아런 팁
분류
봇관련
조회 수
5,341
추천 수
24
4년여만에 디2로 복귀한 흰여울입니다.
역시나 오리지널(이하 오리) 하고 있습니다.
아이템이 적으니 머리 아플일 없고,
자급자족하며 아이템 장사 안해도 되서 저는 참 만족스럽습니다.
오리 디아런을 봇에서 완벽하게 지원해줘서 참 편하게 쓰고 있습니다.
이렇게 보편화 되기전에 대충 구현해서 사용했던 저로서는 감동이더군요.^^;
거의 모든 사람의 입장을 고려해서 잘 만들어져 있습니다.
몇가지 제 입맛에 맞게 고쳐야 할 부분들이 있는데, 예전만큼 봇에 대한 열정도 시간도 없어서
중요한 부분(생존에 관계된 부분)만 바로 수정해서 사용중입니다.
1. 세컨팔라딘이 로워레지스트 걸리거나 컨빅에 걸리면 세컨팔라딘이 셀베이션 켜고 공격하기.
- 햄딘이 두개 일때 사용하며, 셀베이션을 배워야함.
scripts\libs\common 폴더에서 MyAttack.ntl 파일 사본을 만들어 이름을 MyAttack_SH.ntl로 바꿉니다.
(MyAttack.ntl과 MyAttack_SH.ntl 두개 파일 다 있어야함.)
ⓐ MyAttack_SH.ntl을 메모장 등으로 열어서 아래 부분을 수정합니다.
else if (MyConfig_AttackSkill[index][3] > -1)
NTC_PutSkill(MyConfig_AttackSkill[index][3], NTC_HAND_RIGHT);
위 부분을 아래로 교체
if (MyConfig_AttackSkill[index][3] > -1) // 수정
{
if ((me.GetState(28)) || (me.GetState(28)))
NTC_PutSkill(125, NTC_HAND_RIGHT);
else
NTC_PutSkill(MyConfig_AttackSkill[index][3], NTC_HAND_RIGHT);
}
그리고 아래 부분을 수정합니다.
else if (MyConfig_AttackSkill[index + 1][3] > -1)
NTC_PutSkill(MyConfig_AttackSkill[index + 1][3], NTC_HAND_RIGHT);
위를 아래로 수정
if (MyConfig_AttackSkill[index + 1][3] > -1) // 수정
{
if ((me.GetState(28)) || (me.GetState(28)))
NTC_PutSkill(125, NTC_HAND_RIGHT);
else
NTC_PutSkill(MyConfig_AttackSkill[index + 1][3], NTC_HAND_RIGHT);
}
ⓑ NTCommon.ntl 파일을 열어서 아래 부분을 수정합니다.
function NTC_IncludeLibs()에서
아래 줄 찾아서 삭제하거나 주석처리 합니다.
Include("libs/common/MyAttack.ntl");
그후 function NTC_IncludeLibs()에 아래 부분 추가합니다.
if(me.account == "세컨햄딘 계정명") // 세컨햄딘계정(셀베이션 배운 팔라)
Include("libs/common/MyAttack_SH.ntl"); // 추가
else
Include("libs/common/MyAttack.ntl"); // 추가
2. 카오스 중앙부터 사냥시 7시 방향 사냥하도록 설정
ⓐ scripts\NTBot\bots 폴더에 디아블로.ntj 파일을 수정합니다.
function MyMain()
{
Print(LANGUAGE1_212_);
var _msg;
var _unit;
My_Initialize();
if (MyConfig_DiabloPortalOpen[0])
{
_msg = My_OpenPortal();
if (_msg)
return My_Finish(_msg);
}
else if (MyConfig_DiabloPortalUse[0])
My_UsePortal();
if (!__My.sealPortal)
{
_msg = My_Start();
if (_msg)
return My_Finish(_msg);
if (MyConfig_DiabloTeleport)
MyConfig_TeleportMove = 0;
NT_BonusAttack(); // 7시 사냥 추가
_msg = My_ClearSeal();
if (_msg)
return My_Finish(_msg);
if (MyConfig_DiabloTeleport)
MyConfig_TeleportMove = __My.teleportMove;
}
else if (MyConfig_DiabloDiabloJjolBot[0] == 1 || MyConfig_DiabloJjolBot[0] == 1)
{
My.Portal.CheckMakePortal(me.x, me.y, 10);
if (MyConfig_DiabloDiabloJjolBot[0] == 1)
{
My.Jjol.WriteGisaMessage("");
My.Jjol.WritePortalMessage(108, "쫄");
My.Jjol.WriteClearPositionMessage(me.charname, "");
}
else
My.Jjol.WriteCheckMessage("사냥터_가기");
}
if (MyConfig_DiabloKill[0] < 2)
{
if (MyConfig_DiabloExperience)
__My.experience[1] = me.GetStat(13);
My.Move.isCheckBonePrison = true;
if (!My_KillDiablo())
return My_Finish("My_KillDiablo()");
if (MyConfig_DiabloPotionPick > 0)
{
_unit = NTC_FindUnit(NTC_UNIT_MONSTER, 243);
My.Pick.PickItems(NTConfig_SnagDelay[0], _unit ? { x: _unit.x, y: _unit.y, range: MyConfig_DiabloPotionPick } : { x: me.x, y: me.y, range: MyConfig_DiabloPotionPick });
}
else
My.Pick.PickItems(NTConfig_SnagDelay[0], { x: 0, y: 0, range: 0 });
if (MyConfig_DiabloExperience)
NTC_SendLogToOOG(NTC_LOG_COMMON, My.Common.Format(LANGUAGE1_15_, me.GetStat(13) - __My.experience[1], ((me.GetStat(13) - __My.experience[1]) / (My.Unit.GetExperience() / 100)).toFixed(3), me.GetStat(13) - __My.experience[0], ((me.GetStat(13) - __My.experience[0]) / (My.Unit.GetExperience() / 100)).toFixed(3)));
}
if (NTConfig_PublicMode)
My.Common.SayRandom(MyConfig_DiabloMessage[7]);
return My_Finish("MyMain()");
}
ⓑ 아래 함수를 디아블로.ntj 안 적당한 곳에 추가합니다.
function NT_BonusAttack() // 7시 방향 사냥 추가
{
My.Move.MoveTo(me.areaid, 7808, 5357, 0, true, _UNIT_MONSTER_TYPE_ALL);
My.Attack.ClearPosition(30, _UNIT_MONSTER_TYPE_ALL, true);
My.Pick.PickItems();
My.Move.MoveTo(me.areaid, 7777, 5356, 0, true, _UNIT_MONSTER_TYPE_ALL);
My.Attack.ClearPosition(30, _UNIT_MONSTER_TYPE_ALL, true);
My.Pick.PickItems();
return false;
}
제가 예전에 쓰던 디아런에서 그대로 가져왔습니다.ㅋ
대강의 매커니즘을 보시라고 올렸습니다.
다른 분이 좀더 매끄럽게 수정하면 좋을 거 같네요.
2루는 디펜스가 중요하니 2루 씰몹을 발견하면 세컨팔라는 디파이언스를 켜도록 해도 좋겠죠.
디아블로 잡기전 경험성소 이용할땐 다른 캐릭들은 기다리도록 해도 좋을 거 같구요.
좋은 팁 있으면 공유 좀 해주세요.