Skip to content
봇관련다크 모드

트랩+타이거+드탈/드테 어쌔신 스크립트 날아다녀님 14차용 #3

조회 수
1,736
추천 수
19
등록일

14차 버전용입니다.
자세한 내용은 11차 버전용을 참고해 주시기 바랍니다.

11차와 크게 차이가 없더라고요. 그래도 혹시 모르니 올립니다.

== 0. 변경사항 ==

#3 [2010-11-11]
* 트랩깔고 보스가 죽을때까지 타이거킥만 해되는 부분 수정
 - 타이거1/2/3 + 드탈/드테 이렇게 액션횟수가 20회 넘으면 트랩을 다시 깔고 난후 반복합니다.

#2 [2010-11-11]
* 안정성을 위해 스킬설정 변경 [원하시는걸로 ... ]
- 카오스 둠나이트, 언데드소울킬러 때문에 조무래기 공격시엔 마블쓰기로 설정했습니다.
- 물론 원하시는걸로 바꾸시면 됩니다.

== 1. 캐릭터 설정 ==

스킬부분을 아래 처럼 설정해 주세요.

 MyConfig_AttackSkill[0] = [264, 27]; // 처음 한 번만 공격할 스킬 (클락 오브 쉐도우:내 디펜을 올려주고 몹들의 시야를 좁게 만드는 스킬)
 MyConfig_AttackSkill[1] = [271, 27]; // 대장 공격할 스킬 (라이트닝 센트리)
 MyConfig_AttackSkill[2] = [270, 2]; // 1번 쿨타임 동안 공격할 스킬 (드래곤테일)
 MyConfig_AttackSkill[3] = [271, 27]; // 부하 공격할 스킬 (라이트닝 센트리)
 MyConfig_AttackSkill[4] = [273, 27]; // 3번 쿨타임 동안 공격할 스킬 (마인드블라스트)
 MyConfig_AttackSkill[5] = [-1, 27]; // 1, 3번 저항 시 공격할 스킬 (라이트닝 센트리)
 MyConfig_AttackSkill[6] = [-1, 2]; // 5번 쿨타임 동안 공격할 스킬
 MyConfig_AttackSkill[7] = [-1, 27]; // 1, 3, 5번 저항 시 공격할 스킬
 MyConfig_AttackSkill[8] = [-1, 2]; // 7번 쿨타임 동안 공격할 스킬


== 2. MyAttack.ntl - MyAt_AssassinCast 함수 수정 ==

function MyAt_AssassinCast(target, isBoss, index, maxAttacks, conviction, sentryClassId)
{
 var _iAttack = 0;
 var _iRetry = 0;
 var _attacks = isBoss ? 8 : 4;
 var _isFlying = !isBoss && MyUn_IsFlying(target);
 var _isVulture = !isBoss && MyUn_IsVulture(target);
 var _targetHp = target.hp;
 
 var _alreadyPU = me.GetStat(320);
 
 var _fr = target.GetStat(39);
 var _lr = target.GetStat(41);
 var _cr = target.GetStat(43);
 
 // 내성에 따른 챠징횟수를 정한다.
 var _cn = 1;
 if(_fr < 100 ) _cn = 1;
 if(_lr < 100 ) _cn = 2;
 if(_cr < 100 ) _cn = 3;

 while (MyUn_CheckLife(target))
 {
 if (_iAttack > maxAttacks && maxAttacks > 0)
 return false;

 if (!MyAt_CheckCollision(target, isBoss, index, _isFlying, _isVulture))
 return false;

 if ((_iAttack % 3) == 0)
 MyPr_CheckPrecast();

 if (!MyUn_CheckLife(target))
 return true;
 if (target.GetState(53))
 return false;

 if (conviction > 0)
 {
 if (!MyAt_CheckConvictionResistance(target, index, conviction, _iAttack > 2))
 return false;
 }

 // 트랩+타이거드탈신인 경우 index+1이 아닌 index값으로 드탈/드테가 넘어온다.
 // 트랩신+드테(드탈) 이면
 if(MyConfig_AttackSkill[index][0] == 270 || MyConfig_AttackSkill[index][0] == 255)
 {
 //Print("dfdfdf");
 // 챠징값이 없으면 타이거스트라이커를 챠징을 합니다.
 if(me.GetStat(318) >= 3)
 {
 // 피니쉬를 쓴다.
 NTC_SwapWeapons(0);
 NTC_CastSkill(MyConfig_AttackSkill[index][0], _NTA_SkillHand[index], target);
 }
 else
 { 
 // 타이거스트라이커쓰기
 //Print("tigerstriking");
 NTC_SwapWeapons(0);
 NTC_CastSkill(254, NTC_HAND_LEFT, target);
 } 
 } 
 else if(MyConfig_AttackSkill[index][0] == 280)
 {
 // 피닉신이라면
 if(_alreadyPU > 0)
 {
 //Print(" 진입전에 챠징이 이미 되어 있다면 일단 피니쉬 부터 한다. ");
 // 피니쉬를 쓴다.
 NTC_SwapWeapons(0);
 NTC_CastSkill(MyConfig_AttackSkill[index + 1][0], _NTA_SkillHand[index + 1], target);
 
 }
 else
 {
 if(me.GetStat(320) == _cn)
 {
 // 피니쉬를 쓴다.
 NTC_SwapWeapons(0);
 NTC_CastSkill(MyConfig_AttackSkill[index + 1][0], _NTA_SkillHand[index + 1], target);
 }
 else
 {
 NTC_SwapWeapons(0);
 NTC_CastSkill(MyConfig_AttackSkill[index][0], _NTA_SkillHand[index], target);
 }
 }
 }
 else
 {
 NTC_SwapWeapons(0);
 NTC_CastSkill(MyConfig_AttackSkill[index][0], _NTA_SkillHand[index], target);

 if (index == 0)
 return !MyUn_CheckLife(target);

 if (sentryClassId && MyUn_IsClass(sentryClassId, true, target, 20) < 5)
 return !MyUn_CheckLife(target);

 
 
 if (MyConfig_AttackSkill[index + 1][0] > -1 &&
 me.GetSkillStatus(MyConfig_AttackSkill[index][0]) == 8 &&
 MyAt_GetResistance(target, _NTA_SkillDamage[index + 1]) < 100)
 {
 if (MyConfig_AttackSkill[index + 1][0] == 151)
 {
 if (MyUn_IsWhirlwind(target))
 {
 if (MyAt_Whirlwind(target, isBoss, index + 1, maxAttacks, 4, 14, 4) == 1)
 return true;
 }
 }
 else
 {
 switch (MyConfig_AttackSkill[index + 1][0])
 {
 case 261: // Charged Bolt Sentry
 case 262: // Wake of Fire
 case 271: // Lightning Sentry
 case 272: // Wake of Inferno
 case 276: // Death Sentry
 if (MyAt_AssassinTrap(target, isBoss, index + 1, maxAttacks, conviction) == 1)
 return true;
 break;
 default:
 do
 {
 if (!MyUn_CheckLife(target))
 return true;
 if (target.GetState(53))
 return false;

 if (!MyAt_CheckCollision(target, false, index + 1, _isFlying, _isVulture))
 break;

 if (me.GetSkillStatus(MyConfig_AttackSkill[index + 1][0]) != 8)
 {
 NTC_SwapWeapons(0);
 NTC_CastSkill(MyConfig_AttackSkill[index + 1][0], _NTA_SkillHand[index + 1], target);
 }
 else
 Delay(NTC_DELAY_FRAME);
 } while (me.GetSkillStatus(MyConfig_AttackSkill[index][0]) == 8);
 }
 }
 }
 
 }
 

 

 while (me.GetSkillStatus(MyConfig_AttackSkill[index][0]) == 8)
 {
 if (!MyUn_CheckLife(target))
 return true;

 Delay(NTC_DELAY_FRAME);
 }
 
 if(_alreadyPU)
 {
 _alreadyPU = me.GetStat(320); 
 //Print(" 진입전 피니쉬 시도 후 챠징값 은 : " + _alreadyPU);
 }

 if ((++_iAttack % _attacks) == 0 && maxAttacks > 0)
 {
 if (target.hp < _targetHp)
 _targetHp = target.hp;
 else if (_iRetry++ < (isBoss ? 2 : 1))
 {
 if (!MyMo_MoveTo(target.areaid, target.x + 1, target.y + 1, 0))
 return false;
 }
 else
 return false;
 }
 }

 return true;
}

== 3. MyAttack.ntl - MyAt_AssassinTrap 함수 수정 ==

function MyAt_AssassinTrap(target, isBoss, index, maxAttacks, conviction)
{
 var i;
 var _unit;
 var _classId, _range, _count;
 var _isAttack, _isCorpse;
 var _iAttack = 0;
 var _attacks = isBoss ? 8 : 4;
 var _isFlying = !isBoss && MyUn_IsFlying(target);
 var _isVulture = !isBoss && MyUn_IsVulture(target);

 switch (MyConfig_AttackSkill[index][0])
 {
 case 261: // Charged Bolt Sentry
 _classId = 411;
 break;
 case 262: // Wake of Fire
 _classId = 410;
 break;
 case 271: // Lightning Sentry
 _classId = 412;
 break;
 case 272: // Wake of Inferno
 _classId = 415;
 break;
 case 276: // Death Sentry
 _range = 3;
 _count = NTC_GetSkillLevel(276);
 if (_count > 0)
 {
 for (i = 1; i < _count; i += 3)
 _range++;
 }
 else
 return 0;

 _classId = 416;
 break;
 }

 while (MyUn_CheckLife(target))
 {
 if (_iAttack++ > maxAttacks && maxAttacks > 0)
 return -1;

 if (target.GetState(53)) // Conversion
 return 0;

 if (MyConfig_AttackSkill[index][0] == 276)
 {
 _isCorpse = false;

 _unit = NTC_FindUnit(NTC_UNIT_MONSTER);
 if (_unit)
 {
 do
 {
 if (GetDistance(target, _unit) <= _range && MyUn_IsCorpse(_unit, 0))
 {
 _isCorpse = true;
 break;
 }
 } while (_unit.GetNext());
 }

 if (!_isCorpse)
 return -1;
 }
 else if (index == 5 && MyConfig_AttackSkill[isBoss ? 1 : 3][0] == 276)
 {
 if (MyAt_AssassinTrap(target, isBoss, isBoss ? 1 : 3, maxAttacks, conviction) == 1)
 return 1;
 }

 if (!MyAt_CheckCollision(target, isBoss, index, _isFlying, _isVulture))
 return 0;

 _isAttack = false;

 _count = ((index == 3 && MyConfig_AttackSkill[3][0] == 271) ? MyConfig_AssassinLightningSentry : 5) - MyUn_IsClass(_classId, true, target, MyConfig_AttackSkill[index][1]);
 if (_count > 0)
 {
 NTC_SwapWeapons(0);

 for (i = 0; i < _count; i++)
 {
 NTC_CastSkill(MyConfig_AttackSkill[index][0], _NTA_SkillHand[index], target);

 if (!MyUn_CheckLife(target))
 return 1;
 if (target.GetState(53))
 return 0;
 }

 _isAttack = true;
 }

 if (index == 3 && MyConfig_AttackSkill[3][0] == 271 && MyConfig_AssassinLightningSentry < 5)
 {
 _count = 5 - MyConfig_AssassinLightningSentry - MyUn_IsClass(416, true, target, MyConfig_AttackSkill[index][1]);
 if (_count > 0)
 {
 NTC_SwapWeapons(0);

 for (i = 0; i < _count; i++)
 {
 NTC_CastSkill(276, NTC_HAND_RIGHT, target);

 if (!MyUn_CheckLife(target))
 return 1;
 if (target.GetState(53))
 return 0;
 }

 _isAttack = true;
 }
 }

 if (index == 0)
 return (MyUn_CheckLife(target) ? -1 : 1);

 // 트랩씬 쿨타임은 여기 2010-11-5
 if(!_isAttack && (MyConfig_AttackSkill[index + 1][0] == 270 || MyConfig_AttackSkill[index + 1][0] == 255) )
 {
 // 바알처럼 강력한 몬스터의 경우엔 죽을때까지 때리는데 maxAttacks를 조정해야할듯
 // 타겟이 죽으면 트루가 리턴되는 형태이다.
 if (MyAt_AssassinCast(target, isBoss, index + 1, 20, conviction, _classId))
 return 1;
 _isAttack = true;
 } 
 else
 {
 if (!_isAttack && MyConfig_AttackSkill[index + 1][0] > -1 && MyAt_GetResistance(target, _NTA_SkillDamage[index + 1]) < 100)
 {
 if (MyConfig_AttackSkill[index + 1][0] == 151)
 {
 if (MyAt_Whirlwind(target, isBoss, index + 1, maxAttacks, 4, 14, 4, index + 1) == 1)
 return 1;

 _isAttack = true;
 }
 else
 {
 switch (MyConfig_AttackSkill[index + 1][0])
 {
 case 257: // Blade Sentinel
 case 261: // Charged Bolt Sentry
 case 262: // Wake of Fire
 case 271: // Lightning Sentry
 case 272: // Wake of Inferno
 case 276: // Death Sentry
 break;
 default:
 if (MyAt_AssassinCast(target, isBoss, index + 1, maxAttacks, conviction, _classId))
 return 1;
 _isAttack = true;
 }
 }
 }
 }

 if (!_isAttack)
 Delay(200);
 }

 return 1;
}
댓글 18
권한이 없습니다.
다크 모드