Skip to content
봇관련다크 모드

봇이 물약이 없는데도 물약을 사지 않아요..에 대해

조회 수
1,385
추천 수
11
등록일
랑랑[어울림]
게시글 주소
https://tradia.me/diablo2/diablo2_tips/222820 복사

며칠 전에 어떤 분이 질문하셔서 거기에 장문의 답변(댓글 치곤) 을 했는데요,

끊임없이 질문글이 올라오는 걸로 봐서는 다들 검색을 하지 않으신다고 생각해서 강좌글로도 따로 뺍니다.

****


우선적으로, checksafe 함수를 통해 벨트가 비었는지 아닌지를 체크하는 것은 캐릭설정에서 하실 수 있는데,

그 부분은 가장~~~~ 아래쪽에 있습니다.

// Check self safe in field (NOT in town). Set to 0 if you won't
// 0x01 : Potion, 0x02 : Poison, 0x04 : Amplify Damage, 0x08 : Weaken, 0x10 : Iron Maiden, 0x20 : Decrepify, 0x40 : Lower Resist
NTConfig_CheckSelfSafe = 0x01|0x04|0x40;

이 부분인데요, 위에서처럼 0x01 을 추가시켜주시면 됩니다. 저기서 | 이부분은 OR 연산자인데, 헤븐리스톤님께서 비트 플래그 형태 비스무리하게 해당 변수를 설정하셨나봅니다. ... 뭐 이런 건 알 필요 없구요;;

이렇게 했을 때, 단점이 있습니다. 포션을 하나만 먹어도 checksafe 작동 시 타운에 갑니다.

이를 수정하기 위해서는 libs\common\NTTown.ntj 파일을 여셔서...

NTT_CheckBelt() 함수를 찾습니다.

이를 두 가지 방법으로 변환시켰습니다.

첫 번째 방법은 힐링포션 혹은 마나포션이 도합 7줄 이상 비었을 때 상점으로 가는 형태입니다.

function NTT_CheckBelt()
 {
 var _needpotions = false;
 var _needamount = 0;

 for(var i = 0 ; i < 4 ; i++)
 {
 _NTT_BeltColNeeded[i] = NTT_GetNeededPotionsColInt(NTConfig_BeltColType[i], i);

 if(_NTT_BeltColNeeded[i] > 0 && NTConfig_BeltColType[i] != "rv")
 {
 _needpotions = true;
 _needamount += _NTT_BeltColNeeded[i];
 }
 }
 if(_needamount >= 7)
 {
 return true;
 } else
 {
 return false;
 }
 //return _needpotions;
}

두 번째 방법은 각각의 줄에 대해 값을 차등적으로 주는 것입니다(날아다녀님 버전에서 제공되었었나요? 뭐 아무튼...)

function NTT_CheckBelt()
 {
 var _needpotions = false;
 var _needAmount = new Array(4);
 _needAmount[0] = 3;
 _needAmount[1] = 3;
 _needAmount[2] = 3;
 _needAmount[3] = 3;


 for(var i = 0 ; i < 4 ; i++)
 {
 _NTT_BeltColNeeded[i] = NTT_GetNeededPotionsColInt(NTConfig_BeltColType[i], i);

 if(_NTT_BeltColNeeded[i] >= _needAmount[i] && NTConfig_BeltColType[i] != "rv")
 {
 _needpotions = true;
 }
 }
 return _needpotions;
}

다음과 같이 쓰시면 됩니다.

_needAmount[0,1,2,3] 은 각각 벨트 첫/두/세/네 번째 줄에서 얼마나 비었으면 사러 가느냐를 가리킵니다. 즉, 저 값이 3일 경우, 벨트의 해당 줄에서 세 칸이 비었을 경우 상점에 가는 형태죠.



두 패턴 중 하나를 선택하셔서 함수에 통째로 옮기시면 됩니다.
댓글 13
  • 댓글 #222821

    저도 신경쓰이는 부분이 었는데 좋은 정보네요 ^^ 감사합니다.
  • 댓글 #222833

    랑랑[어울림]님// 감사합니다. 어제 위 방법을 해 보았는데도 물약을 사러가지 않아 아래 방법을 사용해 볼려고 합니다. 현재는 접속을 할 수 없어 글로만 남겨봅니다. 위 방법에 보면 >>> //return _needpotions; 주석처리된 것이 맞는거죠? 오늘은 퇴근하면 캐릭설정맨 아래 부문은 건들지 않은채로 아래 방법대로 수정을 할려고 하는데 벨트의 맨 마지막 부분이 저는 활력포션인데 그렇다면 그 부분을 _needAmount[3] = 0; 이렇게 해야하나요? _needAmount[3] = 3; 이렇게 해도 되나요? 감사합니다. ^^
  • 댓글 #222836

    1. 첫 번째 방법은 주석처리된 게 맞습니다. 2. 두 번째 방법은 활력포션의 경우 무시합니다.
  • 댓글 #222851

    오늘두 하나 배우고 가는군요!! 감사 드리고 즐디아 하십시요!!!
권한이 없습니다.
다크 모드