Skip to content

팁 게시판


쪽지로 답변 드리고 싶었는데.. 이상하게 쪽지 기능이나 정보수정 같은 기능을 하나도 이용할 수가 없네여..
마치 로그인이 안된 것처럼 계속 작동을 해서.. 머가 문젠지..;

저도 잘 아는게 없어서 많은 이야기는 못드리겠고... 대충 스크립트 흐름 보면.. 보스 공격 부분 정의는..

\xp2.3c_v1\scripts\libs\XP\Libs\XP_Incude.d2l 안에 있는

XP_KillBoss() 함수를 우선 호출하고 이 안에서..
...

// Detecting the boss if no target is already provided
if (arguments.length < 6) {
 pTarget = DC_FindMonster( pClassID, pSpectype );
}

// If the boss is detected
 if (pTarget) {

 _monsterx = pTarget.x;
 _monstery = pTarget.y;

 var _monstername = pTarget.name;

 // If the target has a enchantment i want to chicken, log and quit
 if (pCheckImmunities) { XP_DoCheckImmunities( pTarget, true, pUseLoader ); }

 XP_Attack( pTarget ); // << 이부분 주목하고 다시 추적..

.....

....
function XP_Attack(target) {

 switch (me.classid) {

 case 6: XP_AssassinBossAttack(target); break;
 case 5: XP_DruidBossAttack(target); break;
 case 4: XP_BarbBossAttack(target); break;
 case 3: XP_PaladinBossAttack(target); break; // << 다시 추적.. 하면..
 case 2: XP_NecroBossAttack(target); break;
 case 1: XP_SorcBossAttack(target); break;
 case 0: XP_AmazonBossAttack(target); break;
 }
}
.....

결국 다음 함수가 나옵니다..
function XP_PaladinBossAttack(target) {

 // 변수 정의
 var _loop=0;
 var _prevhp = target.hp;

 // 무엇인가 종료를 위해?
 _XP_AttackCompleted=0;

 // 목표물 근처로 이동(단 홀리 볼트나 Fist of the Heavens가 아닐때만) - move to get close to the target
 if (XP_PallyAttack != 101 || XP_PallyAttack != 121) { commAttack.GotoDest(target.x,target.y); }

 // 먼가 위치 지정 하는 듯..;
 _XP_EndPosition = new XP_Coord(me.x,me.y);

 // 이뮨 체크
 // If the target is immune to physical attacks, set the alternate skills
 if (target.getStat(36) > 99) {

 XP_PallyAttack = XP_PallyPhysAttack;
 XP_PallyAura = XP_PallyPhysAura;
 }

 // 오른쪽에 오오라 지정 하기 - Set aura on the right hand
 DC_PutSkill(XP_PallyAura,0);

 // 타겟의 피가 0보다 큰 이상 계속 한다.
 while (target.hp > 0) {

 // 타겟이 544 이고.... 기타등등 -- 죽은경우에 대한 것인듯.. ==> 아템 줍기
 if(target.classid==544 && Math.round(target.hp / 1.28)<=3){ DSN_PickItems(); }

 // 홀리 볼트 공격 - Holy Bolt attack
 if (XP_PallyAttack == 101) {

 // Only attack if target is undead
 if (getBaseStat(1,target.classid,16) || getBaseStat(1,target.classid,17)) {

DC_DoCast(XP_PallyAttack,2,target);
 }

 // Heal player/merc instead
 else { XP_Healing(); }
 }
 else
 { // 일반 공격 - Normal attack
 DC_DoCast(XP_PallyAttack,2,target);
 }

 // 여기서 루프 수를 증가 했다. (왜? 한번 공격 했으니까..)
 _loop +=1;

 // 루프 수가 2 이상이고, 홀리볼트나 피스트 오브 헤븐 공격이 아니라면...
 if (_loop > 2 && (XP_PallyAttack != 101 || XP_PallyAttack != 121)) {

 // 여전히 타겟을 놓치고 있다...(왜? ) - still missing target
 // 타겟의 피 > _prevhp(타겟의 초기 피의 양) - 2000
 // 즉 타겟으 ㅣ피가 타겟의 초기피의 양에서 2000 뺀 것 보다 달지 않았다면
 // 맞고 있지 않은 것으로 간주한다. ( 뎀지가 적어도 2000 이상이어야 유효하다는 결론?)
 if (target.hp > (_prevhp-2000)) {

 // 타겟을 향해 이동한다. - Move to the target
 commAttack.GotoDest(target.x, target.y);

 // 오른쪽 스킬에 오오라를 지정한다.
 // Set the aura on the right hand
 DC_PutSkill(XP_PallyAura,0);
 }
 
 // 이제 다시 때리기 시작할 것이므로.. 루프를 0으로 초기화 하자.
 _loop = 0;
 }
 else
 { // 제대로 맞고 있는경우
 // 위치를 체크 한다.(잘 되는가 점검하는건가.. 아무튼. .무엇인가 필요해서 있을듯..;)
 DM_CheckPosition(target.x, target.y);
 }

 // 여기 까지 왔다면 타겟의 초기 피를 바꾸어 주자..
 // 이 라인을 통해 타겟에 대한 변화에 능동적으로 대응할 수 있을듯.. - Target is hit so reset the prevhp var
 if (target.hp < _prevhp) { _prevhp = target.hp; }

 // 공걱 점검( 아무튼... 있다 치고.. )
 XP_CheckAttacks();

 // 있다 치고..
 if (XP_CheckUtil(target)) { return; }

 // 이것도..;
 XP_CheckDefense();
 }
}


한글 주석은 영어 주석을 토대로 나름대로 적어 보았습니다.. 민공 님이 말씀하신 내용은 아무래도..

 // 여전히 타겟을 놓치고 있다...(왜? ) - still missing target
 // 타겟의 피 > _prevhp(타겟의 초기 피의 양) - 2000
 // 즉 타겟으 ㅣ피가 타겟의 초기피의 양에서 2000 뺀 것 보다 달지 않았다면
 // 맞고 있지 않은 것으로 간주한다. ( 뎀지가 적어도 2000 이상이어야 유효하다는 결론?)
 if (target.hp > (_prevhp-2000)) {

 // 타겟을 향해 이동한다. - Move to the target
 commAttack.GotoDest(target.x, target.y);

 // 오른쪽 스킬에 오오라를 지정한다.
 // Set the aura on the right hand
 DC_PutSkill(XP_PallyAura,0);
 }

이 부분에서 변경 해야 할 것 같습니다.

이 스크립트 에서 좌표에 대한 개념을 확실하게 잡을 수 없어서 무어라 꼭 집어 말씀 드리긴 머하지만..
다음과 같이 한번 바꾸어 보는 것도..

 // 여전히 타겟을 놓치고 있다...(왜? ) - still missing target
 // 타겟의 피 > _prevhp(타겟의 초기 피의 양) - 2000
 // 즉 타겟으 ㅣ피가 타겟의 초기피의 양에서 2000 뺀 것 보다 달지 않았다면
 // 맞고 있지 않은 것으로 간주한다. ( 뎀지가 적어도 2000 이상이어야 유효하다는 결론?)
 //if (target.hp > (_prevhp-2000)) {
 if (target.hp >= _prevhp) {// 이전 피보다 많거나 같다면..
 // 아마도.. 다른 파티원이 공격을 해서 이전 피보다 작아 졌다면..
 // 자신이 때리고 있지 않더라도 움직이지 않겠쬬......
 // 혹시나 혼자 사냥중이라면.. 맞지 않는 경우에만 움직일듯..
 ///////////////////////////////////////////////////////////////////////////
 // 혹시나 해머와 같은 경우 각도의 문제일 수도 있는 것을 감안.. 다른 곳으로 한번
 // 이동했다가 다시 와서 시도해 보자..
 // \xp2.3c_v1\scripts\libs\common\d2jsp-move.d2l 참고
 // 타겟의 위치에서 x, y 좌표 에 대해 각각 랜덤 +/-4의 범위로 이동한다.
 ///////////////////////////////////////////////////////////////////////////

 DM_MoveTo(target.x+rnd(-4,4) , target.y+rnd(-4,4));

 ///////////////////////////////////////////////////////////////////////////
 // 다시 타겟을 향해 이동한다. - Move to the target
 ///////////////////////////////////////////////////////////////////////////
 commAttack.GotoDest(target.x, target.y);


 // 타겟을 향해 이동한다. - Move to the target
 //commAttack.GotoDest(target.x, target.y);

 // 오른쪽 스킬에 오오라를 지정한다.
 // Set the aura on the right hand
 DC_PutSkill(XP_PallyAura,0);

 }

테스트 해봤는데.. 뭐.. 얼추 보기엔.. 제대로 되는듯도...;;;
  • 민공. 2006.03.30 14:12
    아.. 감사합니다.. 이제야 봤네요.. 오늘 한번 고쳐서 해봐야 할꺼 같아요 ^^ 너무 수고 하셨습니다, ^^ 바람도 많이 불고 황사도 심한데 .. 건강 조심 하세요 ^^
  • 구라동자 2006.03.31 10:44
    어아 ㅜ.ㅜ 무슨 말인지 모르겠어요 민공님 되면 저도 좀 알려주세요 ^^ diaimm 님 감사합니다~~ 제가 무지해서 ㅜ.ㅜ
  • 삽질 2006.03.31 11:31
    commAttack.GotoDest(target.x, target.y);=> +- 4 위치 안에 있으면 같은 위치로 보구 이동 안해여 DM_MoveTo(target.x+1 , target.y+1); => 우선 텔레 가능한지 확인 후 텔레 하구 위치 확인 합니다. 무조건 텔레 한다는 뜻 +1씩을 준것은 약간 아래쪽으로 텔하라는 ... 이미 수정해서 쓰고 있지요
  • 삽질 2006.03.31 11:42
    위의 내용은 이름이 있는 유니크 를 잡을 때만 적용되는 함수 입니다. 빠른 바알런 을 위해서는 일반 몬스터를 잡을 때로 (target.x+1 , target.y+1); 을 적용해야 한방에 죽습니다. 또한 일정 거리 이내이면 걸어서 이동후 attack을 하는데 일정 패케 이상의 햄딘 이시라면 버닝 소울, 등 .. 위 험 요소를 생각 하면 무조건 텔 후 공격 하도록 수정 해야 바알 런이 빨라 지더라구요... GotoDest 함수는 일정 범위 이내면 같은 위치로 보는것, 또한 가까우면 걸어가던가? 가물.... DM_MoveTo는 텔레스킬만 있으면 텔레 하구 위치 확인 한다는것 (무조건 텔)
  • 모두[A1L] 2006.03.31 19:52
    글제목을 좀 줄이시면 어떨까요? diaimm님

팁 게시판

번호 분류 제목 글쓴이 날짜 조회
공지   게시판 푸시 알림 / 통합 앱 서비스 31 file 트디개발자 2023.09.20 830.0k
공지 디아관련 에테리얼 벅큐빙 표 219 eunnanoDiablo™ 2008.03.05 140.1k
공지 디아관련 케릭별 갑옷 착용 모습 325 수린[아빠] 2009.06.09 111.3k
공지 디아관련 디아블로 각종 팁과 정보 간추림 입니다 (_ _) 1547 조은아저씨 2010.05.24 211.6k
공지 봇관련 유니크 업글 표 366 file 카인 2013.11.02 412.8k
공지   맨땅 초보자 가이드 597 file 뮤리아 2020.10.16 994.2k
공지   카카오톡 1:1 채팅방 만드는 법 101 트디개발자 2018.05.20 424.2k
661 캐릭 육성 자쓰는 가라!~ 이제는 포액스 무공 시대다 34 다이어트바바 2006.03.31 4.1k
> 봇관련 햄딘(수수기준) 보스 잡다가 안맞으면 위치 바꾸도록 스크립트 약간 바꿔 봤습니다..(민공님 요... 5 diaimm 2006.03.30 2.0k
659 봇관련 아이템 이니 Type 및 옵션 수정,보완(4월10일자 업됨-파일첨부) 24 file 유니크 2006.03.29 12.4k
658 디아관련 렐따 이렇게 한번 해보세요 21 cucuman 2006.03.29 3.8k
657 아이템/앵벌 [Asia I 스탠 카큐시세]3월 24일자 기본시세[펌] 8 구경꾼 2006.03.29 2.1k
656 봇관련 아이템 버리는 현상-순간적으로 경험한 것입니다. 9 창고케릭 2006.03.28 2.3k
655 봇관련 설정은 다 했는데 로그인이 안돼는분들... 3 choy 2006.03.28 1.8k
654 캐릭 육성 파이어오브소순.불사조 끼고 사냥 했을경우. 12 사마리아 2006.03.28 2.9k
653 봇관련 크래쉬를 방지 해보자!![D2JSP조작과 무관;;;] 12 [A1L] Ke2X 2006.03.28 2.2k
652 디아관련 [정보]게임 참가 못할때 이렇게 해보세요. 19 고길동 2006.03.27 6.7k
651 디아관련 엑트1용병을 이용한 홀리파이어 버그 실험기 10 whokilluber 2006.03.27 2.5k
650 아이템/앵벌 휏불 트리용 서민셋팅(극서민도 가능합니다) 12 ( __)v 짜잔 2006.03.27 3.2k
649 디아관련 Udie Too 관련 아이템 에딧법 5 Arimi 2006.03.26 5.9k
648 디아관련 엑트3용병을 이용한 드림버그 실험기(일부수정) 47 whokilluber 2006.03.25 5.1k
647 디아관련 아이템 버리는 일없게하는 작은 팁(수정) 7 고냉수 2006.03.24 2.0k
646 디아관련 팔라딘의 숨겨진 능력 (패시브 스킬) 10 재미난팔라 2006.03.24 5.3k
645 캐릭 육성 계정-케릭-아이템정리에 관해서(이전 글 업뎃.) 6 주몽(朱蒙)[Para] 2006.03.24 2.4k
644 디아관련 초허접정보 창고케릭 아이템 관리 12 아트엔사[A3L] 2006.03.24 2.4k
643 캐릭 육성 제가 만든 "조본넥"을 소개합니다. 35 이루[원로원jr][A2L] 2006.03.24 5.8k
642 디아관련 아이템에서 필요한 옵션 찾기2 3 재미난팔라 2006.03.23 1.6k