cai1996 发表于 2019-8-9 22:44:19

點石成金卷軸

天堂java技術教學-點石成金卷軸
    卷軸介紹:
      使用限制:
         1.只對武器有效.
         2.該武器有祝福才可以使用.
      使用成功:
          例:白色的騎士范德之劍的ID(59),會變成祝福的騎士范德之劍ID(100059),對詛咒的物品也可以使用
          使用後會保留原武器的強化等級,屬性(火、地、風、水)

1、核心代碼增加
代碼增加位置:
1). 類位置:com/lineage/server/module/item/etcitem/reel
2).新增加類名字:MIEEctWeaponBless
3).將編譯過的 MIEEctWeaponBless.class文件放入Server_Game.jar中
4).下面是核心代碼

[*]package com.lineage.server.module.item.etcitem.reel;
[*]
[*]import main.clientCheck.C_ItemName;
[*]
[*]import com.lineage.server.datatables.readonly.DTItem;
[*]import com.lineage.server.datatables.readwrite.DTCharItem;
[*]import com.lineage.server.identity.message.IDServerMsg;
[*]import com.lineage.server.interaction.net.packet.server.SPItemStatus;
[*]import com.lineage.server.interaction.net.packet.server.msg.SPMsgServer;
[*]import com.lineage.server.model.Instance.L1ItemInstance;
[*]import com.lineage.server.model.Instance.L1PcInstance;
[*]import com.lineage.server.module.MClsExecutorItem;
[*]import com.lineage.server.templates.TMPItem;
[*]import com.lineage.server.utils.UCirculateItem;
[*]
[*]public class MIEEctWeaponBless extends MClsExecutorItem {
[*]
[*]      private MIEEctWeaponBless() {
[*]      }
[*]
[*]      public static MClsExecutorItem get() {
[*]                return new MIEEctWeaponBless();
[*]      }
[*]
[*]      /**
[*]         * 道具物件執行
[*]         *
[*]         * @param data
[*]         *            參數
[*]         * @param pc
[*]         *            執行者
[*]         * @param item
[*]         *            物件
[*]         */
[*]      @Override
[*]      public void execute(final int[] data, final L1PcInstance pc, final L1ItemInstance item) {
[*]                final int targObjId = data; // 對象OBJID
[*]                final L1ItemInstance tgItem = pc.getInventory().getItem(targObjId); // 目標物品
[*]                if (tgItem == null) {
[*]                        return;
[*]                }
[*]
[*]                final int bless = tgItem.getItem().get_bless();
[*]                boolean isErr = false;
[*]
[*]                // 取得物件觸發事件
[*]                final int use_type = tgItem.getItem().get_useType();
[*]                switch (use_type) {
[*]                case 1:// 武器
[*]                        if (bless == 0) {
[*]                              isErr = true;
[*]                        }
[*]                        break;
[*]
[*]                default:
[*]                        isErr = true;
[*]                        break;
[*]                }
[*]
[*]                if (isErr) {
[*]                        pc.sendPacket(new SPMsgServer(79));// 没有任何事发生
[*]                        return;
[*]                }
[*]
[*]                // 防盜狀態
[*]                if (pc.get_other().get_burglarTmp()) {
[*]                        // 3064 目前人物背包為防盜狀態,物品無法轉移、無法刪除、無法強化。
[*]                        pc.sendPacket(new SPMsgServer(IDServerMsg.BAG_READONLY));
[*]                        return;
[*]                }
[*]
[*]                int blessId = 0;
[*]                if (bless == 1) { // 一般武器 ID前面加1
[*]                        String s = "0";
[*]                        switch (String.valueOf(tgItem.getItemId()).length()) {
[*]                        case 1:
[*]                              s = "10000";
[*]                              break;
[*]                        case 2:
[*]                              s = "1000";
[*]                              break;
[*]                        case 3:
[*]                              s = "100";
[*]                              break;
[*]                        case 4:
[*]                              s = "10";
[*]                              break;
[*]                        case 5:
[*]                              s = "1";
[*]                              break;
[*]                        }
[*]                        blessId = Integer.parseInt(s + String.valueOf(tgItem.getItemId()));
[*]                } else if (bless == 2) { // 詛咒武器 ID前面2換成1
[*]                        String str = String.valueOf(tgItem.getItemId());
[*]                        blessId = Integer.parseInt("1" + str.substring(1));
[*]                }
[*]
[*]                final TMPItem blessItem = DTItem.get().getTemplate(blessId);
[*]                if (blessItem == null) {
[*]                        pc.sendPacket(new SPMsgServer(79));// 没有任何事发生
[*]                        return;
[*]                }
[*]
[*]                pc.getInventory().removeItem(item, 1);
[*]                pc.getInventory().removeItem(tgItem, 1);
[*]
[*]                L1ItemInstance targeItem = DTItem.get().createItem(blessId);
[*]                targeItem.setEnchantLevel(tgItem.getEnchantLevel());
[*]                targeItem.setAttrEnchantLevel(tgItem.getAttrEnchantLevel());
[*]                targeItem.setAttrEnchantKind(tgItem.getAttrEnchantKind());
[*]
[*]                targeItem.setColor(tgItem.getColor());
[*]
[*]                targeItem = UCirculateItem.storeItem(pc.getInventory(), targeItem);
[*]                pc.sendPacket(new C_ItemName(targeItem));
[*]                pc.sendPacket(new SPItemStatus(targeItem));
[*]                try {
[*]                        new DTCharItem().updateItemColor(targeItem);
[*]                } catch (Exception e) {
[*]                        // ...
[*]                }
[*]
[*]      }
[*]
[*]}
[*]

複製代碼

czw520.. 发表于 2019-8-16 12:21:21

感 谢 分 享

kertz1130 发表于 2019-11-8 16:07:31

感謝大大分享

mao188166 发表于 2019-11-9 23:46:07

6666666666666666666

雪山飞鼠 发表于 2019-11-29 16:35:33

厉害厉害厉害厉害厉害

sunlong99 发表于 2019-12-7 14:04:23

       这个可以的

55122542 发表于 2019-12-31 19:14:03

我只会打6666666

nudy 发表于 2020-6-28 19:59:34

謝謝分享哦

pn1117 发表于 2021-2-22 21:48:56

感谢大佬分享

nahljcn 发表于 2021-12-20 16:12:57

感谢分享 学习中
页: [1] 2
查看完整版本: 點石成金卷軸