close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

안녕하세요.

 

데불 커스텀 Ver.

 

소스코드에요.

 

 

WeaponSkill.java

  1.     public static void getNewDKSword(L1PcInstance pc, L1Character cha){
  2.         try{
  3.             int chance = RandomUtil.nextInt(100);
  4.             int call = pc.getWeapon().getEnchantLevel();
  5.            
  6.             // 발동 이펙트 번호
  7.             int effectId = 7065;
  8.            
  9.             if(call >= chance){ // 확률은 인챈%
  10.  
  11.                 // 체크 타이머를 시작
  12.                 new NewDeathKnightSwordEffect(pc, cha).begin();
  13.                
  14.                 // 1번 터지면 데이터 입력
  15.                 int count = 0;
  16.                 if(ndkseMap.containsKey(cha.getId())){
  17.                     count = ndkseMap.get(cha.getId());
  18.                 }
  19.                 ndkseMap.put(cha.getId(), count+1);
  20.                
  21.                 // 터진다면 이펙트를 줘서 알 수 있게 한다.
  22.                 pc.sendPackets(new S_SkillSound(cha.getId(), effectId));
  23.                 Broadcaster.broadcastPacket(pc, new S_SkillSound(cha.getId(), effectId));
  24.             }
  25.         }catch(Exception e){
  26.             // TODO Auto-generated catch block
  27.             e.printStackTrace();
  28.         }
  29.     }
  30.    
  31.     static ConcurrentHashMap<Integer, Integer> ndkseMap = new ConcurrentHashMap<Integer, Integer>();
  32.     static class NewDeathKnightSwordEffect implements Runnable{
  33.         private ScheduledFuture<?> _future;
  34.         L1PcInstance pc;
  35.         L1Character cha;
  36.         int pcId;
  37.         int chaId;
  38.        
  39.         int checkTimeSecMillis = 10000; // 해당 시간 만큼 체크한다.
  40.         int checkCount = 5; // 이 숫자 이상 발동을 해야 된다.
  41.        
  42.         public NewDeathKnightSwordEffect(L1PcInstance pc, L1Character cha){
  43.             this.pc = pc;
  44.             this.cha = cha;
  45.             this.pcId = pc.getId();
  46.             this.chaId = cha.getId();
  47.         }
  48.        
  49.         public void run(){
  50.             // 누군가 나가거나, 죽으면 종료
  51.             if(pc == null || cha == null){
  52.                 kill();
  53.                 return;
  54.             }
  55.             if(pc.isDead() || pc.getCurrentHp() <= 0){
  56.                 kill();
  57.                 return;
  58.             }
  59.             if(cha.isDead() || cha.getCurrentHp() <= 0){
  60.                 kill();
  61.                 return;
  62.             }
  63.            
  64.             // 발동된 횟수를 가져오기
  65.             int count = 0;
  66.             if(ndkseMap.containsKey(chaId)){
  67.                 count = ndkseMap.get(chaId);
  68.             }
  69.            
  70.             // 일정 횟수 발동을 하지 않았다면 제외
  71.             if(count < checkCount){
  72.                 kill();
  73.                 return;
  74.             }
  75.            
  76.             // 효과 발동
  77.             new NewDeathKnightSwordDamage(pc, cha).begin();
  78.            
  79.             // 종료되면 리스트에서 제거
  80.             ndkseMap.remove(chaId);
  81.         }
  82.        
  83.         public void begin(){
  84.             // 이미 걸려있다면 return
  85.             if(ndkseMap.containsKey(chaId)){
  86.                 return;
  87.             }
  88.             _future = GeneralThreadPool.getInstance().schedule(this, checkTimeSecMillis);
  89.         }
  90.        
  91.         public void kill(){
  92.             if(_future != null){
  93.                 _future.cancel(false);
  94.             }
  95.            
  96.             // 종료되면 리스트에서 제거
  97.             ndkseMap.remove(chaId);
  98.         }
  99.     }
  100.    
  101.     static class NewDeathKnightSwordDamage implements Runnable{
  102.         private ScheduledFuture<?> _future;
  103.         L1PcInstance pc;
  104.         L1Character cha;
  105.        
  106.         int delayTimeSecMillis = 300; // 해당 딜레이로 친다.(적어도 500은 되야 화려화려)
  107.         int remain = 10; // 해당 횟수만큼 친다.
  108.        
  109.         int effectId = 245; // 해당 이펙트로 나간다.
  110.         int actionCode = 31; // 해당 액션을 사용
  111.        
  112.         String transName = "데스나이트"; // 해당 이름으로 생성
  113.         int gfxId = 9206; // 해당 gfx로 생성
  114.        
  115.         int damage = 100; // 해당 데미지를 준다.(회당 데미지)
  116.        
  117.         // comment
  118.         // 총 데미지 량은 damage * remain 이므로, 알아서 조정을 하시기 바래요!
  119.        
  120.         public NewDeathKnightSwordDamage(L1PcInstance pc, L1Character cha){
  121.             this.pc = pc;
  122.             this.cha = cha;
  123.         }
  124.        
  125.         public void run(){
  126.             try{
  127.                 // 누군가 나가거나, 죽거나, 횟수가 다 되면 종료
  128.                 if(pc == null || cha == null){
  129.                     kill();
  130.                     return;
  131.                 }
  132.                 if(pc.isDead() || pc.getCurrentHp() <= 0){
  133.                     kill();
  134.                     return;
  135.                 }
  136.                 if(cha.isDead() || cha.getCurrentHp() <= 0){
  137.                     kill();
  138.                     return;
  139.                 }
  140.                 if(remain-- <= 0){
  141.                     kill();
  142.                     return;
  143.                 }
  144.                
  145.                 // 좌표는 케릭 주위 1칸 내로
  146.                 int x = cha.getX() + RandomUtil.nextInt(2) - RandomUtil.nextInt(2);
  147.                 int y = cha.getY() + RandomUtil.nextInt(2) - RandomUtil.nextInt(2);
  148.                 int mapId = cha.getMapId();
  149.                
  150.                 // 몹 소환(허수아비를 만들어서 gfx와 이름을 변경..테이블에 또 만들기는 귀ㅊ...이 아니라 효율을 위해서요)
  151.                 L1NpcInstance npc = NpcTable.getInstance().newNpcInstance(45003);
  152.                 npc.setId(ObjectIdFactory.getInstance().nextId());
  153.                 npc.setLocation(x, y, mapId);
  154.                 npc.getGfxId().setGfxId(gfxId);
  155.                 npc.getGfxId().setTempCharGfx(gfxId);
  156.                 npc.setNameId(transName);
  157.                 npc.setHomeX(npc.getX());
  158.                 npc.setHomeY(npc.getY());
  159.                 npc.getMoveState().setHeading(CharPosUtil.targetDirection(npc, cha.getX(), cha.getY()));
  160.                 npc.setActionStatus(actionCode);
  161.                
  162.                 // 오브젝트 등록을 하고(store는 필요 없다. 보이기만 하면 그만..)
  163.                 L1World.getInstance().addVisibleObject(npc);
  164.                
  165.                 // 오브젝트 생성
  166.                 pc.sendPackets(new S_NPCPack(npc));
  167.                 Broadcaster.broadcastPacket(pc, new S_NPCPack(npc));
  168.                
  169.                 // 액션값 전송
  170.                 pc.sendPackets(new S_DoActionGFX(npc.getId(), actionCode));
  171.                 Broadcaster.broadcastPacket(pc, new S_DoActionGFX(npc.getId(), actionCode));
  172.                
  173.                 // 이펙트 전송
  174.                 pc.sendPackets(new S_SkillSound(npc.getId(), effectId));
  175.                 Broadcaster.broadcastPacket(pc, new S_SkillSound(npc.getId(), effectId));
  176.                
  177.                 // 오브젝트 등록 해제
  178.                 L1World.getInstance().removeVisibleObject(npc);
  179.                
  180.                 // 오브젝트 삭제
  181.                 pc.sendPackets(new S_RemoveObject(npc));
  182.                 Broadcaster.broadcastPacket(pc, new S_RemoveObject(npc));
  183.  
  184.                 // 데미지 주기
  185.                 if(cha instanceof L1PcInstance){
  186.                     ((L1PcInstance) cha).receiveDamage(pc, damage, false);
  187.                 }else if(cha instanceof L1MonsterInstance){
  188.                     ((L1MonsterInstance) cha).receiveDamage(pc, damage);
  189.                 }
  190.                 // TODO Auto-generated catch block
  191.                 e.printStackTrace();
  192.             }
  193.         }
  194.        
  195.         public void begin(){
  196.             _future = GeneralThreadPool.getInstance().scheduleAtFixedRate(this, 0, delayTimeSecMillis);
  197.         }
  198.        
  199.         public void kill(){
  200.             if(_future != null){
  201.                 _future.cancel(false);
  202.             }
  203.         }
  204.     }

 

L1Attack.java

 

calcPcPcdamage

calcPcNpcDamage

 

위 두개 메소드 에서

 

if(wepon.getItemId() == 데불번호)

L1WeaponSkill.getNewDKSword(_pc, _target);

 

메소드를 마법검 형식으로 넣어주세요!

 

 

comment

1. 저게 전부에요!

2. 삭제를 원하신다면 삭제요청은 댓글로 올려주세요.

 

 

mod

1.리스트에서 제거가 제대로 되지 않는 문제 수정

 
 

[출처] [수정1] 데스나이트 불검 커스텀 버전 (비공개 카페)

번호 제목 글쓴이 날짜 조회 수
공지 소스자료는 직접 올려주세요 게임존 2017.06.06 550
459 글말 고대물품 준희미니 2016.07.05 35
458 UI6차 [롤코] 글루딘 고대물품 관련 준희미니 2016.07.05 30
457 롤코 소스 간략화 준희미니 2016.07.05 32
456 3.63대만 접속기 옵코드 대만사이트서 공개 되어잇네여 준희미니 2016.07.05 223
455 짜집기 리치인형 준희미니 2016.07.05 49
454 대만옵코드 S_ServerVersion 올려달라는분이 잇어서여~~나머지는 기억부분 소스인듯.. 준희미니 2016.07.05 112
453 S_EquipmentWindow 패킷오류수정에바에맞게 준희미니 2016.07.05 33
452 인형레이스번호 준희미니 2016.07.05 42
451 [수정]18세님꺼 장비 장착 룬 적용 안되시는분... 준희미니 2016.07.05 50
450 계급: %s(으)로 계급 임명함 or 계급: %s을(를) %s(으)로 임명함 file 준희미니 2016.07.05 33
449 3.63c 수호기사 /가입 허용 준희미니 2016.07.05 29
448 몹트렙 준희미니 2016.07.05 74
447 매칭 조금덧붙인부분 준희미니 2016.07.05 58
446 매칭 덧붙인부분 준희미니 2016.07.05 13
445 매칭 덧붙인부분(포기 준희미니 2016.07.05 22
444 .정리 오류나는분 준희미니 2016.07.05 75
443 싸이 인형 입니다 준희미니 2016.07.05 77
442 배틀존 용기사 변신 준희미니 2016.07.05 38
441 짜집기 트리플애로우^^;; 준희미니 2016.07.05 82
440 짜집기 언케니닷지 준희미니 2016.07.05 46
439 짜집기 대마법사의모자 준희미니 2016.07.05 42
438 펌 핫식스 힘이 불끈 준희미니 2016.07.05 31
437 안톤 끝내 포기하면서 허접한 제작 주문서 올랴보아요 준희미니 2016.07.05 64
436 안톤 먹튀하시는분들 보세요 초보소스 준희미니 2016.07.05 61
435 UI6 안톤NPC _ 멸마 제작관련 준희미니 2016.07.05 49
434 인던초기화 준희미니 2016.07.05 61
433 인챈트 웨폰 / 블래스 아머 버프창 표시 준희미니 2016.07.05 130
432 인챈표기실시간 [1] 준희미니 2016.07.05 119
431 속강에 스펠도넣긔-ㅁ-ㅋ 준희미니 2016.07.05 38
430 mapids.sql 준희미니 2016.07.05 43
429 textmapreader 및 mapid 및 map파일 준희미니 2016.07.05 45
428 기억의 구슬 창 패킷 file 준희미니 2016.07.05 77
427 만월의정기나 리퍼같은거 엘원몹인분 준희미니 2016.07.05 27
426 신생아님요청 준희미니 2016.07.05 41
425 던전초기화 준희미니 2016.06.29 114
424 npc삭제하기 준희미니 2016.06.29 133
423 인던초기화(끌어올림 준희미니 2016.06.29 42
» [수정1] 데스나이트 불검 커스텀 버전 준희미니 2016.06.29 193
421 린드비오르 갑옷 라이브화 (7/10 업데이트 적용 준희미니 2016.06.29 111
420 크리티컬 마법이펙트입니다; 고생들하세용 준희미니 2016.06.29 163
419 유저에게 스톰워크를 쓸 수 있도록 해주자 준희미니 2016.06.29 96
418 [UI6] 레벨업 버프 효과 준희미니 2016.06.29 56
417 댄싱 블레이즈 (야매) 준희미니 2016.06.29 62
416 운영자 파티 준희미니 2016.06.29 51
415 지혜의 물약 리뉴얼 준희미니 2016.06.29 65
414 만인첸시 속성 안되시는분들 있으셔서 홧팅 준희미니 2016.06.29 52
413 속성 변환 주문서(보내기는 아이디공개 합니다.) 준희미니 2016.06.29 52
412 10주년 아이템 강화하자 //질문있습니다 준희미니 2016.06.29 28
411 오림시스템[해양전] 준희미니 2016.06.29 68
410 쥬니a님 요청자료 준희미니 2016.06.29 73