• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 리니지 소스자료실
    • 리니지 소스자료실 ()
    • 먹통 웨폰스킬테이블(디비) 작동시키기

      • 준희미니
      • 2016.06.29 - 13:46 140

    WeaponSkillTable.java <<< 없으면 추가

     

    /*
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 2, or (at your option)
     * any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
     * 02111-1307, USA.
     *
     *
    http://www.gnu.org/copyleft/gpl.html
     */

    package l1j.server.server.datatables;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    import l1j.server.L1DatabaseFactory;
    import l1j.server.server.utils.PerformanceTimer;
    import l1j.server.server.utils.SQLUtil;

    public class WeaponSkillTable {
     public class WeaponSkillData {
      public int weapon_id = 0;
      public String name = null;
      public int probability = 0;
      public int fix_damage = 0;
      public int random_damage = 0;
      public int area = 0;
      public int skill_id = 0;
      public int skill_time = 0;
      public int effect_id = 0;
      public int effect_target = 0;
      public int arrow_type = 0;
      public int attr = 0;
     }

     private static Logger _log = Logger.getLogger(WeaponSkillTable.class.getName());

     private static WeaponSkillTable _instance;

     private final Map<Integer, WeaponSkillData> _weaponskill = new HashMap<Integer, WeaponSkillData>();

     public static WeaponSkillTable getInstance() {
      if (_instance == null) {
       _instance = new WeaponSkillTable();
      }
      return _instance;
     }

     private WeaponSkillTable() {
      PerformanceTimer timer = new PerformanceTimer();
      System.out.print("[WeaponSkill] loading WeaponSkill...");  
      weaponSkillList();
      System.out.println("OK! " + timer.get() + " ms"); 
     }

     public void weaponSkillList() {
      Connection con = null;
      PreparedStatement pstm = null;
      ResultSet rs = null;

      try {
       con = L1DatabaseFactory.getInstance().getConnection();
       pstm = con.prepareStatement("select * from weapon_skill");
       rs = pstm.executeQuery();

       WeaponSkillData weaponskilldata = null;
       while (rs.next()) {
        weaponskilldata = new WeaponSkillData();

        int weapon_id = rs.getInt("weapon_id");

        weaponskilldata.weapon_id = rs.getInt("weapon_id");
        weaponskilldata.name = rs.getString("note");
        weaponskilldata.probability = rs.getInt("probability");
        weaponskilldata.fix_damage = rs.getInt("fix_damage");
        weaponskilldata.random_damage = rs.getInt("random_damage");
        weaponskilldata.area = rs.getInt("area");
        weaponskilldata.skill_id = rs.getInt("skill_id");
        weaponskilldata.skill_time = rs.getInt("skill_time");
        weaponskilldata.effect_id = rs.getInt("effect_id");
        weaponskilldata.effect_target = rs.getInt("effect_target");
        weaponskilldata.arrow_type = rs.getInt("arrow_type");
        weaponskilldata.attr = rs.getInt("attr");

        _weaponskill.put(weapon_id, weaponskilldata);
       }

      } catch (SQLException e) {
       _log.log(Level.SEVERE, e.getLocalizedMessage(), e);
      } finally {
       SQLUtil.close(rs);
       SQLUtil.close(pstm);
       SQLUtil.close(con);
      }
     }

     public static void reload() {
      WeaponSkillTable oldInstance = _instance;
      _instance = new WeaponSkillTable();
      if (oldInstance != null)
       oldInstance._weaponskill.clear();
     }

     public Map<Integer, WeaponSkillData> getWeaponSkillList() {
      return _weaponskill;
     }

     public WeaponSkillData getWeaponSkillData(int itemId) {
      WeaponSkillData data = _weaponskill.get(itemId);
      if (data == null) {
       data = new WeaponSkillData();
       data.weapon_id = 0;
      }
      return data;
     }
    }

    L1WeaponSkill.java << 없으면 추가

     

    package l1j.server.server.model;

    import java.util.Random;

    import l1j.server.server.ActionCodes;
    import l1j.server.server.datatables.WeaponSkillTable;
    import l1j.server.server.datatables.WeaponSkillTable.WeaponSkillData;
    import l1j.server.server.model.Instance.L1MonsterInstance;
    import l1j.server.server.model.Instance.L1NpcInstance;
    import l1j.server.server.model.Instance.L1PcInstance;
    import l1j.server.server.model.Instance.L1PetInstance;
    import l1j.server.server.model.Instance.L1SummonInstance;
    import l1j.server.server.serverpackets.S_DoActionGFX;
    import l1j.server.server.serverpackets.S_SkillSound;
    import l1j.server.server.serverpackets.S_UseAttackSkill;

    public class L1WeaponSkill {
     private static Random _random = new Random(System.nanoTime());

     public static double getWeaponSkillDamage(L1PcInstance pc, L1Character cha, int weapon_id, int enchant) {
      double dmg = 0;
      int chance = _random.nextInt(100) + 1;
      int weapondmg = 0;
      int enchantdmg = 0;
      
      //공성지역 마법검안나가게
     //    int castle_id = L1CastleLocation.getCastleIdByArea(pc);
     //    int target_castle_id = L1CastleLocation.getCastleIdByArea(cha);
     ////       if (castle_id != 0 && target_castle_id !=0 && target_castle_id == castle_id ){
     //     return 0;
     //    }
      //공성지역 마법검 안나가게 끝

      try {
       WeaponSkillData weaponskilldata = WeaponSkillTable.getInstance().getWeaponSkillData(weapon_id);
       // System.out.println("무기 : " + weaponskilldata.weapon_id);
       // System.out.println("확률 : " + weaponskilldata.probability);
       // System.out.println("데미지 : " + weaponskilldata.fix_damage);
       // System.out.println("이펙트 : " + weaponskilldata.effect_id);
       // System.out.println("찬스 : " + chance);
       if (weaponskilldata.weapon_id != 0) {
        if (chance <= weaponskilldata.probability) {

         // System.out.println("arrow_type : " +
         // weaponskilldata.arrow_type);

         if (weaponskilldata.area == 0) {
          // System.out.println("dmg1 : " + dmg);
          weapondmg = weaponskilldata.fix_damage;
          if (enchant < 0) {
           enchantdmg = 0;
           enchantdmg = _random.nextInt(enchantdmg + 1);
          } else {
           enchantdmg = _random.nextInt(enchant + 1);
          }
          // System.out.println("enchantdmg : " + enchantdmg);
          dmg = weapondmg + enchantdmg;
          // System.out.println("dmg2 : " + dmg);

          if (weaponskilldata.arrow_type == 0) {
           pc.sendPackets(new S_SkillSound(cha.getId(), weaponskilldata.effect_id));
           Broadcaster.broadcastPacket(pc, new S_SkillSound(cha.getId(), weaponskilldata.effect_id));
          } else if (weaponskilldata.arrow_type == 1) {
           if (weaponskilldata.effect_target == 0) {
            S_UseAttackSkill packet = new S_UseAttackSkill(pc, cha.getId(), weaponskilldata.effect_id, cha.getX(), cha.getY(), ActionCodes.ACTION_Attack, false);
            pc.sendPackets(packet);
            Broadcaster.broadcastPacket(pc, packet);
           } else if (weaponskilldata.effect_target == 1) {
            S_UseAttackSkill packet = new S_UseAttackSkill(cha, cha.getId(), weaponskilldata.effect_id, cha.getX(), cha.getY(), ActionCodes.ACTION_Attack, false);
            pc.sendPackets(packet);
            Broadcaster.broadcastPacket(pc, packet);
           }
          }

          // System.out.println("skill_id : " +
          // weaponskilldata.skill_id);
          if (weaponskilldata.skill_id != 0) {
           if (!cha.getSkillEffectTimerSet().hasSkillEffect(weaponskilldata.skill_id)) {
            cha.getSkillEffectTimerSet().setSkillEffect(weaponskilldata.skill_id, weaponskilldata.skill_time * 1000);
           }
          }
         } else if (weaponskilldata.area != 0) {
          L1Magic magic = new L1Magic(pc, cha);

          dmg = magic.calcMagicDamage(weaponskilldata.skill_id);
          dmg = magic.calcMrDefense((int) dmg);
          if (dmg <= 0) {
           dmg = 0;
          }
          pc.sendPackets(new S_SkillSound(cha.getId(), weaponskilldata.effect_id));
          Broadcaster.broadcastPacket(pc, new S_SkillSound(cha.getId(), weaponskilldata.effect_id));
          L1PcInstance targetPc = null;
          L1NpcInstance targetNpc = null;
          for (L1Object object : L1World.getInstance().getVisibleObjects(cha, weaponskilldata.area)) {
           if (object == null) {
            continue;
           }
           if (!(object instanceof L1Character)) {
            continue;
           }
           if (object.getId() == pc.getId() || object.getId() == cha.getId()) {
            continue;
           }
           if (object instanceof L1PcInstance) {
            targetPc = (L1PcInstance) object;
            if (CharPosUtil.getZoneType(targetPc) == 1) {
             continue;
            }
           }
           if (cha instanceof L1MonsterInstance) {
            if (!(object instanceof L1MonsterInstance)) {
             continue;
            }
           }
           if (cha instanceof L1PcInstance || cha instanceof L1SummonInstance || cha instanceof L1PetInstance) {
            if (!(object instanceof L1PcInstance || object instanceof L1SummonInstance || object instanceof L1PetInstance || object instanceof L1MonsterInstance)) {
             continue;
            }
           }

           if (dmg <= 0) {
            continue;
           }
           if (object instanceof L1PcInstance) {
            targetPc = (L1PcInstance) object;        
            
            if (!pc.getMap().isSafetyZone(pc.getLocation())) {
             if (targetPc.getClanid() != pc.getClanid()) {
              targetPc.sendPackets(new S_DoActionGFX(targetPc.getId(), ActionCodes.ACTION_Damage));
              Broadcaster.broadcastPacket(targetPc, new S_DoActionGFX(targetPc.getId(), ActionCodes.ACTION_Damage));
              targetPc.receiveDamage(pc, (int)dmg, false);
             }
            }
           } else if (object instanceof L1SummonInstance || object instanceof L1PetInstance || object instanceof L1MonsterInstance) {
            targetNpc = (L1NpcInstance) object;
            Broadcaster.broadcastPacket(targetNpc, new S_DoActionGFX(targetNpc.getId(), ActionCodes.ACTION_Damage));
            if (!pc.getMap().isSafetyZone(pc.getLocation())) {
             targetNpc.receiveDamage(pc, (int) dmg);
            }
           }
          }
         }
        }
       }
      } catch (Exception e) {
       System.out.println("WeaponSkill Error");
      }

      return dmg;
     }
    }

    L1Attack.java

    pctopc 부분

    case 415015:
       case 415016:
        dmg += WeaponSkill.getChaserDamage(_pc, _target, 7179);
        break;
       case 413103:
        calcStaffOfMana();
        WeaponSkill.getDiseaseWeapon(_pc, _target, 413101);
        break;
       default:
        /**웨폰스킬 외부화 **/
        dmg += L1WeaponSkill.getWeaponSkillDamage(_pc, _target, _weaponId, _weaponEnchant);
        /**웨폰스킬 외부화 **/

        break; //검색
       }
      }

     

    pctonpc 부분

    case 415015:
      case 415016:
       dmg += WeaponSkill.getChaserDamage(_pc, _target, 7179);
       break;
      case 413103:
       calcStaffOfMana();
       WeaponSkill.getDiseaseWeapon(_pc, _target, 413101);
       break;
      default:
       /**웨폰스킬 외부화 **/
       dmg += L1WeaponSkill.getWeaponSkillDamage(_pc, _target, _weaponId, _weaponEnchant);
       /**웨폰스킬 외부화 **/

       break; //검색후 위에 추가
      }

     

    L1Reload.java

     

    } else if (arg.equalsIgnoreCase("무기퍼센트")) {
       WeaponPersentDamage.reload();
       gm.sendPackets(new S_SystemMessage("WeaponPersentDamage Update Complete..."));
       /** 웨폰퍼센트 데미지  **/
       /** 웨폰스킬 데미지  **/
      } else if (arg.equalsIgnoreCase("무기스킬")) {
       WeaponSkillTable.reload();
       gm.sendPackets(new S_SystemMessage("WeaponSkill Update Complete..."));
       /** 웨폰스킬 데미지  **/

      } else if (arg.equalsIgnoreCase("엔피씨")) {
       NpcTable.reload();
       gm.sendPackets(new S_SystemMessage("NpcTable Update Complete..."));

      

    eva.java << 매니져창인데 하셔도 돼구 안하셔도 됩니다 ^^

     

    JMenuItem bossCycleReload = new JMenuItem("BossCycle");   
        bossCycleReload.setAccelerator(KeyStroke.getKeyStroke('L', InputEvent.SHIFT_DOWN_MASK));   
        bossCycleReload.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
          if (QMsg("BossCycle " + ReloadMSG) == 0) {
           L1BossCycle.load();
           jSystemLogWindow.append(getLogTime() + " [도구 실행] BossCycle Update Complete..." + "\n", "Red");
          }   
         }
        });

        JMenuItem weaponSkillReload = new JMenuItem("WeaponSkill");   
        weaponSkillReload.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.SHIFT_DOWN_MASK));   
        weaponSkillReload.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
          if (QMsg("WeaponSkill " + ReloadMSG) == 0) {
           WeaponSkillTable.reload();
           jSystemLogWindow.append(getLogTime() + " [도구 실행] WeaponSkill Update Complete..." + "\n", "Red");
          }   
         }
        });

     

        jJMenu4.add(skillsReload);
        jJMenu4.add(mobSkillReload);
        jJMenu4.add(mapFixKeyReload);
        jJMenu4.add(itemReload);
        jJMenu4.add(shopReload);
        jJMenu4.add(npcReload);
        jJMenu4.add(bossCycleReload);
        
    jJMenu4.add(weaponSkillReload);

     

    디비는 어느 퍡이든 다 있으니 패스 할게요 ㅎ

    출처: 아시는분 댓글로 달아주시면 감사하겠습니다

    [출처] 먹통 웨폰스킬테이블(디비) 작동시키기 (비공개 카페)

    이 게시물을..
    N
    0
    0
    • 리마스터팩 요정 소울 엠피 수정jstory
    • 0
      준희미니

    준희미니 님의 최근 글

    로한구축성공 283 1 2021 06.14 에오스 구축성공 356 2 2021 04.01 [에바] 나비켓 테이블 관련 설명 747 1 2016 07.29 에바소스인데 오픈대기 켜고 끄는 소스에요~ 70 2016 07.29 퍼플채팅 색(진보라채팅) 59 2016 07.29

    준희미니 님의 최근 댓글

    rt 2021 05.25 ㄳ 2021 05.11 ㄳ 2021 05.11 rt 2021 05.09 rt 2021 04.25
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 리마스터팩 요정 소울 엠피 수정
    • 목록
      view_headline
    × CLOSE
    기본 (1,058) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:14 591
    1058
    아머브레이크 데스티니 시전시 성공 확률 조정하는 소스가 있나요?
    안정환 2024.04.23 - 10:01 102
    1057
    List.spr(변신,몬스터 수정소스)개조방법
    유튜브고도리 2024.04.19 - 05:02 243
    1056
    NPC 외침 멘트 깔끔정리(by.유튜브고도리)
    유튜브고도리 2024.04.11 - 05:57 125
    1055
    디아블로 참 만들기
    유튜브고도리 2024.04.09 - 05:55 114
    1054
    리니지m 처럼 피통 늘리기,오류가 날때
    유튜브고도리 2024.04.09 - 05:18 91
    1053
    욕하면 채금 먹게 하기
    유튜브고도리 2024.04.09 - 04:59 71
    1052
    레벨에 따른 호칭 부여..?
    밤톨이11 2024.04.08 - 04:24 72
    1051
    초보자 보호 시스템
    밤톨이11 2024.04.08 - 04:21 57
    1050
    마법무기 데미지 증가
    밤톨이11 2024.04.08 - 04:19 70
    1049
    레벨 제한 맵
    밤톨이11 2024.04.08 - 04:14 65
    1048
    마법스크롤
    밤톨이11 2024.04.08 - 04:06 32
    1047
    리니지m 아지트 소유중에도 공성선포하기
    유튜브고도리 2024.04.07 - 21:37 41
    1046
    리니지m 마법인형이 마법을 쓰네?
    유튜브고도리 2024.04.07 - 21:36 61
    1045
    드래곤 슬레이어 각반(장비추가소스)
    유튜브고도리 2024.04.07 - 19:08 51
    1044
    린엠 게렝 변신 카드 만들기
    유튜브고도리 2024.04.06 - 06:06 100
    1043
    버프 물약 개별 소스 오래전 소스
    밤톨이11 2024.04.05 - 18:43 57
    1042
    일시 스텟 상승 물약
    밤톨이11 2024.04.05 - 18:42 26
    1041
    성 전환 물약
    밤톨이11 2024.04.05 - 18:37 31
    1040
    MP 물약 소스
    밤톨이11 2024.04.05 - 18:35 41
    1039
    리니지 옛날버젼..이라는데...구동가능여부 확인 부탁드립니다.
    도난차량 2024.03.24 - 04:56 354
    1038
    랭커
    foqwer 2024.03.14 - 10:43 141
    1037
    인첸별
    foqwer 2024.03.14 - 10:42 106
    1036
    몬스터 앞에 레벨 넣기
    프렌치좋아 2024.03.04 - 01:40 370
    1035
    3.63 글루딘 Single 용
    블루블랙3 2024.02.28 - 23:08 411
    1034
    Sprite file doesn`t exist 오류
    하앙비 2023.12.23 - 02:19 229
    1033
    전쟁세율 고정값 15%
    하남궁 2023.11.29 - 17:02 198
    1032
    인형합성사
    Rebecca 2023.10.09 - 22:54 337
    1031
    2.0 레벨업시 HP량 올리기
    Rebecca 2023.10.09 - 22:49 434
    1030
    전사버전 펫 만렙 변경
    Rebecca 2023.10.09 - 22:44 162
    1029
    맵 순간이동 가능 불가능지역 설정하기
    Rebecca 2023.10.09 - 22:39 237
    1028
    트레져박스 업로드입니다.
    린컴충성 2023.10.07 - 04:46 182
    1027
    리마스터 접속기 소스자료
    홍자놀기 2023.09.08 - 05:41 2284
    1026
    대미지 발동시 범위 질문드립니다
    나잇따나읻따 2023.05.21 - 22:26 292
    1025
    리니지 리마스터 몹 스폰수 어디서 줄일 수 있나요?
    001001 2023.04.25 - 16:06 727
    1024
    전사팩 로봇가능
    노력하자 2023.03.16 - 19:14 1113
    1023
    2.7 자동 물약 소스
    퍽퍽띠 2022.11.18 - 00:40 1215
    1022
    2.0 자동칼질소스 (클래스 파일에서 빼왔습니다)
    drumlinek 2022.11.06 - 05:20 930
    1021
    npc가 인겜에서 채팅으로 말하기
    하늘마음 2022.10.06 - 10:04 320
    1020
    유저 아이피보는 소스
    캐빈N.01 2020.12.15 - 21:34 639
    1019
    인공지능
    캐빈N.01 2020.12.15 - 21:27 1125
    1018
    아데나가 19억이 되면 자동으로 1억으로 금괴로 바꾸기
    강우리 2020.12.12 - 01:48 995
    1017
    린올기반 휘장 각반 견갑 장비인식 안되는거 수정함
    신화서버 2020.11.17 - 01:48 295
    1016
    방어구 인챈트별 피 증가 소스
    LGTwins 2020.09.12 - 05:52 688
    1015
    장신구 옵션 변경
    LGTwins 2020.08.31 - 07:00 751
    1014
    자동물약
    legena 2020.07.05 - 02:30 2089
    1013
    리마스터팩 스냅퍼 개방 레벨설정 본섭화 수정(몽양님 요청)
    jstory 2020.06.13 - 07:22 764
    1012
    리마스터팩 룬마력제거 검사 적용안대는 부분 수정
    jstory 2020.06.10 - 04:05 287
    1011
    리마스터팩 쓸모없는 아이템 활용
    jstory 2020.06.10 - 04:01 731
    1010
    리마스터팩 요정 소울 엠피 수정
    jstory 2020.06.10 - 03:54 459
    1009
    리마스터팩 자동공지시간에 버프주기
    jstory 2020.06.10 - 03:15 404
    • 1 2 3 4 5 6 7 8 9 10 .. 22
    • / 22 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay