< 바바리안 스크립트 수정판 : 휠돌기 가능 >
분류
봇관련
조회 수
1,357
추천 수
2
아래 희찬님이 올리신 바바리안 봇 돌리기 스크립트를 수정 * 보완해보았습니다.
바바로 봇돌리기도 뭐하고 랩업도 빡시고 해서 썩혀둔지 오래였는데
희찬님이 올린글을 바탕으로 바바 봇에 도전해보았으나 바바가 휠을 안돌고 노말 칼질만 하는거였습니다.
다른건 다 문제 없이 잘되는데 왜 휠을 안돌까 고민해봐서 소스를 살펴보니!!
팔라스크립트를 그대로 가져와써서 그런지 타겟이 몹 바로 근처로 되어있더군요.
문제는 바로 바바가 몹바로 앞에서 몹상대로 휠질을 하면 휠은 안하고 칼질만 하게 되어있다는 것입니다.
(열받는건 휠도안하면서 휠질한만큼 마나가 고대로 단다는것...-_-; )
그래서 몹을 공격할때 바로 붇지않고 떨어져서 공격하도록 타겟을 수정해보니
휠을 제대로 하면서 돌아댕기더군요.
(나름 최적의 x축 y축 대각선 길이 정하는데 시간좀 걸렸습니다. 기억도 가물가물한 피타고라스 법칙..ㅠㅠ )
이제 본론으로 어떻게 수정하는지만 적어보겠습니다.
###################################################
첫째, Plugin\scripts\libs\common 폴더에 있는 NTAttack.dbl파일을 메모장으로 열어서
function NTA_GetDamageType(skillid) <---이부분을 찾아
{
switch(skillid)
{
case 151: // Whirlwind
return NTA_DAMAGE_PHYSICAL;
case 152: // Berserk
return NTA_DAMAGE_MAGIC;
case 112: // Blessed Hammer
return NTA_DAMAGE_MAGIC;
case 48: // Nova
case 49: // Lightning
case 53: // Chain Lightning
return NTA_DAMAGE_LIGHTNING;
case 59: // Blizzard
case 64: // Frozen Orb
return NTA_DAMAGE_COLD;
}
원래 위에는 휠윈드와 버서크에 대한 case가 없을것입니다. 거기다가 위에같이 추가해주심됩니다.
두번째, 같은 파일소스안에
function NTA_BarbarianAttackInt(target, boss, maxattacks)
{
return false;
}
위 부분을 찾아서 아래 소스로 덮어쓰기하면됩니다.
function NTA_BarbarianAttackInt(target, boss, maxattacks)
{
var _attackprimary;
var _maxattacks = 0;
var _usehand1, _usehand2;
var _damagetype1, _damagetype2;
var _range1, _range2;
var _prehp1, _prehp2;
var _nohit = true;
_attackprimary = boss ? NTConfig_AttackBoss : NTConfig_AttackOthers;
_usehand1 = NTC_IsLeftSkill(_attackprimary) ? 2 : NTC_HAND_RIGHT;
_damagetype1 = NTA_GetDamageType(_attackprimary);
if(NTConfig_AttackSecondary > 0)
{
_usehand2 = NTC_IsLeftSkill(NTConfig_AttackSecondary) ? 2 : NTC_HAND_RIGHT;
_damagetype2 = NTA_GetDamageType(NTConfig_AttackSecondary);
}
switch(_attackprimary)
{
case 151:
case 152:
_range1 = 20;
break;
default:
_range1 = 2;
break;
}
switch(NTConfig_AttackSecondary)
{
case 151:
case 152:
_range2 = 20;
break;
default:
_range2 = 2;
break;
}
_prehp1 = target.hp;
while(_maxattacks++ < maxattacks && NTA_IsValidTarget(target, true))
{
if(checkCollision(me, target, 3))
{
if(boss)
{
if(_attackprimary == 151 || _attackprimary == 152)
NTA_MoveCloseInt(target+8, Math.round(getDistance(me, target)/2)+4);
}
else if(me.area != 131)
return false;
}
_prehp2 = target.hp;
if(NTA_GetResistance(target, _damagetype1) < 100)
{
if((_maxattacks % 2) == 1 && _nohit)
{
if(_attackprimary == 151)
{
if(!NTM_MoveTo(target.x+8, target.y+3, 0) && !boss)
return false;
}
else
{
if(!NTA_MoveCloseInt(target, _range1) && !boss)
return false;
}
}
NTC_DoCast(_attackprimary, _usehand1, target);
}
else if(NTConfig_AttackSecondary > 0 && NTA_GetResistance(target, _damagetype2) < 100)
{
if((_maxattacks % 2) == 1 && _nohit)
{
if(NTConfig_AttackSecondary == 152)
{
if(!NTM_MoveTo(target.x+1, target.y, 0) && !boss)
return false;
}
else
{
if(!NTA_MoveCloseInt(target, _range2) && !boss)
return false;
}
}
NTC_DoCast(NTConfig_AttackSecondary, _usehand2, target);
}
else
{
if(boss)
{
if((_maxattacks % 2) == 1 && _nohit)
{
if(_attackprimary == 151)
NTM_MoveTo(target.x+8, target.y+3, 0);
else
NTA_MoveCloseInt(target, _range1);
}
NTC_DoCast(_attackprimary, _usehand1, target);
}
else
return false;
}
if(boss)
{
if((_maxattacks % 8) == 0)
{
if(target.hp < _prehp1)
_prehp1 = target.hp;
else
return false;
}
}
else
{
if((_maxattacks % 4) == 0)
{
if(target.hp < _prehp1)
_prehp1 = target.hp;
else
return false;
}
}
_nohit = (target.hp >= _prehp2);
if(NTConfig_CheckSafe)
{
if(!NTTMGR_CheckSafe(1))
return false;
}
}
return true;
}
###############################################
마지막 세번째로 Plugin\scripts\libs\config폴더로 가서
팔라꺼든 소소꺼든 아무거나 추가해서 바바 콘피그 파일을 만듭니다.
그리고 밑에 공격 어케하냐는 소스를
NTConfig_AttackFirst = 151; // Cast your first spell once. Set to 0 if you won't
NTConfig_AttackBoss = 151; // Cast your primary spell to boss.
NTConfig_AttackOthers = 151; // Cast your primary spell to others.
NTConfig_AttackSecondary = 152; // Cast your Secondary spell if monster is immune to your primary spell. Set to 0 if you won't
NTConfig_ClearPosition = true; // Set to true if you want to clear area after killing boss.
NTConfig_CheckSafe = true; // Set to true to check for curses, merc and potion (go to town if needed)
이걸로 교체해줍니다. (참고로 151은 휠윈드, 152는 버서크)
#####################################################
그리고 이 소스를 보면 사냥지역이 나오는데 저같은 경우는 바알, 디아, 액트5얼음 나오는데는 빼고 하게했습니다. 디아가면 아메걸려서 죽을수 있고 바알은 몇방중에 한번꼴로 빡새게 몹이 나오는 경우가 많더군요. 바알죽이는시간도 오래걸리고...액트5 에이션트, 앤야쪽, 프로즌썬더같은데 빼고
주사냥지역을 엘드리치, 나락, 트리빈컬, 피트, 안다리엘등으로 하는 것을 추천합니다.
그리고 세팅은 수수는 거의 필수로 끼고 나머지는 레지 이뮨 적절히 조화되게 세팅하는것을 추천합니다.
액트2 블레시브 에임 용병(노말 오펜스)에 자존심이 좋을까 17메디 통찰이 좋을까 하다가
전 통찰을 쓰고있습니다.
아직 휠돌리는 방법만 찾아을 뿐 완벽히 최적화된건 아닙니다.
더 좋은 수정사항이 생기면 추가해 올리도록하겠습니다 ^^ 그럼 바바 키우시는 분들 힘내세요!!