스왑완드(로워 레지스트) 사용하기 #2
분류
봇관련
조회 수
5,928
추천 수
12
아래 소스님께서도 활용법을 올려주셨지만,
이 버젼은 제가 사용하는 제 입맛에 맞춘 로레완드 사용 쭤꿔붜 버젼입니다.
이 수정본은, 상점표 로레 2스킬 완드로 테스트한 버젼이라, 1스킬/3스킬은 검증되지 않았습니다.
제가 소서리스를 하는지라 소서리스 기준으로 수정했습니다.
별도의 개별 bot 파일 수정은 필요없으나, 만약 봇 파일을 수정하신분이면 잘 돌아간다고 장담못하겠습니다.
스왑후 로워 레지스트를 사용할 몬스터를 지정할 수 있으나,
로워 사거리상 몹앞에 붙기때문에 되도록 보스만 지정하시길 바랍니다.
로레 완드의 차지 수치가 20이하로 떨어지면 자동 수리합니다.
수정후 약 2시간 모니터링 했으나, 버그가 없다고는 말 못하겠습니다.
사용중 튕김현상이 발생할 경우 완드쪽 스킬이 로레에서 바뀐 경우인지라,
봇을 멈추고 로레쪽의 오른쪽 스킬을 로워 레지스트로 다시 셋팅하여 원복 시켜줘야 됩니다.
가장 문제가 되는게 죽으면서 완드가 떨어지면서 오른쪽 스킬창이 비는것입니다.
물약 먹는 수치를 좀 더 올리고, 치킨도 조금 잡아주셔야 될듯하네요.
튕김이 발생할시 방치하면 무한 튕김이 발생하여 렐따의 원인이 될수 있어,
오른쪽 스킬이 리셋될 경우 그다음부터는 로레는 쓰지 않습니다.
설정했는데 안쓰고 있으면 봇 멈춰서 스킬 다시 설정해주세요.
===== 캐릭터 설정 =====================================
1. 아카라 상점 러시를 통해 로레 완드를 구입한다.(5분정도 하면 나옵니다)
2. 로레완드를 장비 하고, 오른쪽 스킬에 로레를 설정한다.
3. W를 눌러 메인 무기로 스와핑 한다.
4. 설정 완료.
*. 로레완드 장비하고 스킬을 로레로 설정하지 않은 경우 튕김 현상 발생함.
=======================================================
===== 소스 수정 =======================================
1. NTAttack.ntl
NTA_KillMonster 함수를 찾아 아래의 NTA_KillMonster 함수를 통째로 덮어씁니다.
함수의 끝은 function NTA_ClearPosition(range, pickitem, safelevel) 바로 앞까지입니다.
function NTA_KillMonster(classid)
{
var _target;
_target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
if(!_target)
return false;
orgx = me.x;
orgy = me.y;
if(NTConfig_CastLRMon.indexOf(_target.name) != -1)
{
_weapon = me.GetItems();
if(_weapon)
{
for(var i = 0 ; i < _weapon.length ; i++)
{
if(_weapon[i].GetStat(204) >= '19200' && _weapon[i].GetStat(204) < '19300')
{
if(_weapon[i].itemloc == 4 || _weapon[i].itemloc == 5)
_NTP_HaveLRW = 0;
else
_NTP_HaveLRW = 1;
NTM_MoveTo(me.areaid, _target.x, _target.y+5, 1, false);
NTC_SwapWeapons(_NTP_HaveLRW);
break;
}
}
}
if (me.GetSkill(NTC_HAND_RIGHT) == 91)
{
NTC_CastSkill(91, NTC_HAND_RIGHT, me.x, me.y-3);
}
if (_NTP_HaveLRW == 1)
{
NTC_SwapWeapons(0);
}
else
{
NTC_SwapWeapons(1);
}
NTM_MoveTo(me.areaid, orgx, orgy, 1, false);
}
if(NTConfig_AttackSkill[1] < 1)
return false;
if(_target.IsAttackable())
{
var _attackcount = 0;
while(_attackcount < 300 && NTA_IsValidMonster(_target))
{
if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
break;
_attackcount++;
}
}
return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
}
2. NTTown.ntl 수정
NTT_CheckRepair 함수를 찾아 아래부분으로 통째로 엎어씁니다.
함수의 끝은 function NTT_RepairItems(npc) 앞까지입니다.
function NTT_CheckRepair(repairpercent)
{
var _max_dur;
var _percent;
var _items = me.GetItems();
if(!_items)
return false;
for(var i = 0 ; i < _items.length ; i++)
{
if(_items[i].mode == 1 && !(_items[i].itemflag&0x400000) && !_items[i].GetStat(152))
{
if(_items[i].itemtype == 42 || _items[i].itemtype == 43 || _items[i].itemtype == 44 || _items[i].itemtype == 87)
_percent = Math.floor((_items[i].GetStat(70)*100) / (GetBaseStat("weapons.txt", _items[i].classid, 45)+_items[i].GetStat(254)));
else
{
_max_dur = _items[i].GetStat(73);
if(_max_dur == 0)
continue;
_percent = Math.floor((_items[i].GetStat(72)*100) / (_max_dur*(_items[i].GetStat(75)/100 + 1)));
}
if(_percent <= repairpercent)
return true;
if(_items[i].GetStat(204) >= '19200' && _items[i].GetStat(204) <= '19220')
{
return true;
}
}
}
return false;
}
3. NTConfig_Sorceress.ntl 또는 캐릭터별 설정한 경우 NTConfig_Sorceress_캐릭터명.ntl 수정
가장 끝으로 내려가서 아래 내용을 붙여 넣습니다.
NTConfig_CastLRMon = '안다리엘 듀리얼 메피스토 디아블로 바알 Andariel Duriel Mephisto Diablo Baal';
내용에 들어가는 부분은 몬스터 이름이며, 로워 대상의 몬스터를 나열하시면 됩니다.
한글판은 한글이름, 영문판은 영문이름으로 적으시면 됩니다.
4. 봇 시작후, 모니터링~
- 끗 -