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

자동물약

2020.07.04 17:30

legena 조회 수:1999

몇일간 소스뜯어보다가 자동물약 구현해봤습니다.

 

커맨드를 통해 자동물약 퍼센트를 설정하면

 

해당 퍼센트 이하로 현재피가 내려가면 자동으로 물약을 사용하는 소스입니다.

/// CommandController.java 추가


 static public boolean toCommand(object o, String cmd){

.

.

.

// 자동물약 
    }else if(key.equalsIgnoreCase("-자동물약")){
     try{
      toAutoPotion(o,st);
     }catch(Exception e){
      if(o!=null)
       ChattingController.toChatting(o, "-자동물약 켬 95 : 농축 강력 체력 회복제를 자동으로 사용합니다.", Lineage.CHATTING_MODE_MESSAGE);
       ChattingController.toChatting(o, "-자동물약 끔 : 자동물약을 종료합니다.", Lineage.CHATTING_MODE_MESSAGE);
     }
     return true;
    }

.

.

.

}

 

 


 static private void toAutoPotion(object o, StringTokenizer st) throws Exception{
  String onoff = st.nextToken();
  PcInstance pc = (PcInstance) o;
  if ("켬".equals(onoff)) {
   int rate = Integer.valueOf(st.nextToken());
   pc.setIsAutoPotion(true);
   pc.setAutoPotionPercent(rate);
   ChattingController.toChatting(o, new StringBuilder().append("현재 HP가 ").append(rate).append("% 이하이면 농축 강력 체력 회복제를 자동으로 사용합니다.").toString(),
     Lineage.CHATTING_MODE_MESSAGE);
  } else if ("끔".equals(onoff)){
   pc.setIsAutoPotion(false);
   pc.setAutoPotionPercent(0);
   ChattingController.toChatting(o, new StringBuilder().append("자동물약을 비활성화 합니다.").toString(),
     Lineage.CHATTING_MODE_MESSAGE);
  }else {
   throw new Exception();
  }
 }

 

 

/// Character.java


public class Character extends object {

.

.

.

// 종료처리


 @Override
 public void close(){
  super.close();
  level = nowHp = maxHp = dynamicHp = nowMp = maxMp = dynamicMp = ac = dynamicAc =
  Str = Con = Dex = Wis = Int = Cha = dynamicInt = dynamicStr = dynamicCon = dynamicDex =
  dynamicWis = dynamicCha = dynamicTicHp = dynamicTicMp = lvStr = lvCon =
  lvDex = lvWis = lvInt = lvCha = dynamicSp = dynamicMr = food = dynamicEarthress = dynamicWaterress =
  dynamicFireress = dynamicWindress = earthress = waterress = fireress = windress = dynamicAddDmg = 0;
  itemWeight = exp = setitemHp =  setitemMp = setitemInt = setitemStr = setitemCon = setitemDex = setitemWis =
  setitemCha = setitemMr = setitemSp = setitemTicHp = setitemTicMp = setitemEarthress = setitemWaterress =
  setitemFireress = setitemWindress = dynamicAddDmgBow = dynamicAddHit = dynamicAddHitBow =
  setitemAc = reduction = dynamicReduction = dynamicEr = dynamicDg =
  dynamicStunlevel=dynamicStunmr = stunlevel = stunmr = autoPotionPercent = 0;
  hpMove = mpMove = hpFight = mpFight = isAutoPotion = false;
  delay_magic = 0;

  TimeHpTic = getHpTime();
  TimeMpTic = getMpTime();
 }

// 자동물약 변수 추가
 private boolean isAutoAttack;
 private boolean isAutoPotion;

// 자동물약 getter/setter
 public boolean getIsAutoPotion() {
  return isAutoPotion;
 }

 public void setIsAutoPotion(boolean isAutoPotion) {
  this.isAutoPotion = isAutoPotion;
 }

 

 

// CharacterController.java


 static public void toTimer(long time){
  // 처리할 객체 순회.
  for(object o : getList()){

   // 자연회복 처리.
   try {
    if(!o.isDead()){
     if(o instanceof Character){
      Character cha = (Character)o;
      ItemInstance item = null;
      int tic_hp = cha.isHpTic() ? cha.hpTic() : 0;
      int tic_mp = cha.isMpTic() ? cha.mpTic() : 0;
      // 사용자일때 확인하기.
      if(cha instanceof PcInstance){
       // 인벤토리 무게오바일때
       if(cha.getInventory()!=null && cha.getInventory().isWeightPercent(50)==false){
        // 여관맵이라면 피 차게해야됨.
        // 엑조틱 바이탈라이즈 시전중일때 차게 해야됨.
        // 여관맵이 아닐때.
        if(!InnController.isInnMap(cha) && !cha.isBuffExoticVitalize() && !cha.isBuffAdditionalFire()) {
         tic_hp = tic_mp = 0;
         // 요정족 망토를 착용중이라면 피차게 해야됨.
         item = cha.getInventory().getSlot(Lineage.SLOT_CLOAK);
         if( item!=null && item instanceof ElvenCloak )
          tic_hp = 1;
        }
       }
       try {
        //자동물약
        if(cha.getIsAutoPotion() && cha.getHpPercent() < cha.getAutoPotionPercent() && cha.getInventory()!=null) {
         ItemInstance ii = cha.getInventory().findDbNameId(1253);
         if(ii != null&& ii.isClick((PcInstance) o)) {
          ii.toClick(cha, null);
         }
        }
       }catch(Exception e) {
        e.printStackTrace();
       }

      }
      // 버서커상태 무시.
      if(o.isBuffBerserks())
       tic_hp = tic_mp = 0;
      // 틱 처리.
      if(tic_hp>0 && cha.getTotalHp()!=cha.getNowHp())
       cha.setNowHp(cha.getNowHp() + tic_hp);
      if(tic_mp>0 && cha.getTotalMp()!=cha.getNowMp())
       cha.setNowMp(cha.getNowMp() + tic_mp);
     }
    }
   } catch (Exception e) {
    lineage.share.System.println("자연회복 처리.");
    lineage.share.System.println(" : "+o.toString());
    lineage.share.System.println(e);
   }

   // 주기적으로 호출에 사용.
   try {
    o.toTimer(time);
   } catch (Exception e) {
    lineage.share.System.println("주기적으로 호출에 사용.");
    lineage.share.System.println(" : "+o.toString());
    lineage.share.System.println(e);
   }

  }

 }
 

 

번호 제목 글쓴이 날짜 조회 수
공지 소스자료는 직접 올려주세요 게임존 2017.06.06 532
1040 리니지 옛날버젼..이라는데...구동가능여부 확인 부탁드립니다. file 도난차량 2024.03.23 107
1039 랭커 foqwer 2024.03.14 96
1038 인첸별 foqwer 2024.03.14 53
1037 몬스터 앞에 레벨 넣기 [6] 프렌치좋아 2024.03.03 227
1036 3.63 글루딘 Single 용 [3] file 블루블랙3 2024.02.28 250
1035 Sprite file doesn`t exist 오류 하앙비 2023.12.22 191
1034 전쟁세율 고정값 15% [2] file 하남궁 2023.11.29 172
1033 인형합성사 [1] Rebecca 2023.10.09 287
1032 2.0 레벨업시 HP량 올리기 [1] Rebecca 2023.10.09 371
1031 전사버전 펫 만렙 변경 Rebecca 2023.10.09 133
1030 맵 순간이동 가능 불가능지역 설정하기 Rebecca 2023.10.09 186
1029 트레져박스 업로드입니다. [1] file 린컴충성 2023.10.06 144
1028 리마스터 접속기 소스자료 [16] file 홍자놀기 2023.09.07 1914
1027 대미지 발동시 범위 질문드립니다 [1] 나잇따나읻따 2023.05.21 261
1026 리니지 리마스터 몹 스폰수 어디서 줄일 수 있나요? [4] file 001001 2023.04.25 662
1025 전사팩 로봇가능 file 노력하자 2023.03.16 1018
1024 2.7 자동 물약 소스 [3] 퍽퍽띠 2022.11.17 1101
1023 2.0 자동칼질소스 (클래스 파일에서 빼왔습니다) [3] drumlinek 2022.11.05 827
1022 npc가 인겜에서 채팅으로 말하기 [1] 하늘마음 2022.10.06 284
1021 유저 아이피보는 소스 [1] 캐빈N.01 2020.12.15 607
1020 인공지능 [4] 캐빈N.01 2020.12.15 1059
1019 아데나가 19억이 되면 자동으로 1억으로 금괴로 바꾸기 [5] 강우리 2020.12.11 927
1018 린올기반 휘장 각반 견갑 장비인식 안되는거 수정함 [1] 신화서버 2020.11.16 276
1017 방어구 인챈트별 피 증가 소스 [5] LGTwins 2020.09.11 659
1016 장신구 옵션 변경 [2] LGTwins 2020.08.30 704
» 자동물약 [11] legena 2020.07.04 1999
1014 리마스터팩 스냅퍼 개방 레벨설정 본섭화 수정(몽양님 요청) [4] jstory 2020.06.12 738
1013 리마스터팩 룬마력제거 검사 적용안대는 부분 수정 [3] jstory 2020.06.09 266
1012 리마스터팩 쓸모없는 아이템 활용 [3] jstory 2020.06.09 687
1011 리마스터팩 요정 소울 엠피 수정 [2] jstory 2020.06.09 390
1010 리마스터팩 자동공지시간에 버프주기 [3] jstory 2020.06.09 381
1009 리마스터팩 유저커맨드에 던전초기화 추가 jstory 2020.05.22 346
1008 리마스터팩 기사단의 주화 드랍 [1] jstory 2020.05.22 377
1007 로테이션 엔피씨 생성 소스 [1] 하날따라 2020.05.12 528
1006 신규캐릭생성시 아이템지급관련.. [1] 박지미 2020.03.05 1012
1005 유저 전체 소환 주혁이 2020.02.26 456
1004 보스몹 리스폰 시 멘트 띄우기 [3] 주혁이 2020.02.26 615
1003 운영자 채팅파티 초대금지 [2] 뜨아 2020.01.22 282
1002 변신시 이펙넣기 [1] 뜨아 2020.01.22 945
1001 스핵방어소스 [1] 뜨아 2020.01.22 787
1000 스트라이커게일 실시간소스 프리린2고 2020.01.14 387
999 파워그립시간 본섭화 소스 프리린2고 2020.01.14 218
998 기란던전 야간에 텔 [1] 코더서버 2020.01.14 363
997 운영자 투명 소스 file 우시기 2020.01.03 655
996 나비켓 db 각 테이블 설명 [5] file 베르니니 2019.12.20 3066
995 HP 영구적 올리는 물약 [4] 스크래치 2019.12.13 823
994 특정맵 경험치 추가하기 [2] 스크래치 2019.12.13 562
993 NPC에게 호칭 달아주기 [1] 린지뽕뽕 2019.11.20 527
992 성혈만 사용할수 있는 주문서 소스 만들기 린지뽕뽕 2019.11.16 371
991 아지트 지급하기 명령어 만들기 린지뽕뽕 2019.11.16 294