2014年4月2日 星期三

【Java教學】裝備附加能力

\RevXXXX\src\l1j\server\server\model\Instance\L1ItemInstance  <===檔案位置

在此以追加體質做說明(設定裝備內衣)

第一步驟

新增以下程式碼...

    public byte getcon(){//追加體質(T)
        byte getcon = 0;
        byte conup = 0;
        if((getItemId() >= 20001 && getItemId() <= 22000)
                || (getItemId() >= 120001 && getItemId() <= 122000)
                || (getItemId() >= 220001 && getItemId() <= 222000)){
            if(getItem().getType() == 3 ){//(T)
                if(getEnchantLevel()<= getItem().get_safeenchant()){
                    getcon = 0;
                    return getcon;
                }
                if(getEnchantLevel()> getItem().get_safeenchant()+3){
                    getcon = 0;
                    conup = (byte) (getEnchantLevel() - (getItem().get_safeenchant()+2));
                    getcon += 1 + (conup /2);
                    return getcon;
                }
                if(getEnchantLevel()> getItem().get_safeenchant()){
                    getcon = 1;
                    return getcon;
                }
            }else{
                getcon = 0;
                return getcon;
            }
        }
        getcon = 0;  
        return getcon;
    }


===================================================
第二步驟

找到以下地方.

            if (getItem().get_addstr() != 0 || getstr()!= 0) {
                os.writeC(8);//str力量
                os.writeC(getItem().get_addstr()+ getstr());
            }
            if (getItem().get_adddex() != 0 || getdex()!= 0) {
                os.writeC(9);//dex敏捷
                os.writeC(getItem().get_adddex()+ getdex());
            }
            if (getItem().get_addcon() != 0 || getcon()!= 0) {
                os.writeC(10);//con體質
                os.writeC(getItem().get_addcon()+ getcon());
            }
            if (getItem().get_addwis() != 0 || getwis()!= 0) {
                os.writeC(11);//wis精神
                os.writeC(getItem().get_addwis()+ getwis());
            }
            if (getItem().get_addint() != 0 || getint()!= 0) {
                os.writeC(12);//int智力
                os.writeC(getItem().get_addint()+ getint());
            }



將這些原本的程式碼.
      if (getItem().get_addcon() != 0) {
        os.writeC(10);
        os.writeC(getItem().get_addcon());

修改成這樣.
      if (getItem().get_addcon() != 0 || getcon()!= 0) {
        os.writeC(10);//con體質
        os.writeC(getItem().get_addcon()+ getcon());

完成以上的步驟.裝備過安定值後就會增加所設定的體質(上面設定的裝備是內衣)

不過目前只是好看用.需再修改以下的程式碼.讓能力有實裝.

=====================================================

第三步驟

修改以下的程式碼



\RevXXXX\src\l1j\server\server\model\L1EquipmentSlot  <===檔案位置

裝備時追加能力.

增加<====所標示的程式碼.

    public void set(L1ItemInstance equipment) {
        L1Item item = equipment.getItem();
        if (item.getType2() == 0) {
            return;
        }

        if (item.get_addhp() != 0) {
            _owner.addMaxHp(item.get_addhp());
        }
        if (item.get_addmp() != 0) {
            _owner.addMaxMp(item.get_addmp());
        }                              //追加武防捲能力
        _owner.addStr(item.get_addstr()+ equipment.getstr());<====要修改的位置
        _owner.addCon(item.get_addcon()+ equipment.getcon());<====要修改的位置
        _owner.addDex(item.get_adddex()+ equipment.getdex());<====要修改的位置
        _owner.addInt(item.get_addint()+ equipment.getint());<====要修改的位置
        _owner.addWis(item.get_addwis()+ equipment.getwis());<====要修改的位置
        if (item.get_addwis() != 0) {
            _owner.resetBaseMr();
        }
        _owner.addCha(item.get_addcha()+ equipment.getcha());

        int addMr = 0;





=============================================================
第四步驟

修改以下的程式碼


移除時扣除能力.

增加<====所標示的程式碼.

    public void remove(L1ItemInstance equipment) {
        L1Item item = equipment.getItem();
        if (item.getType2() == 0) {
            return;
        }

        if (item.get_addhp() != 0) {
            _owner.addMaxHp(-item.get_addhp());
        }
        if (item.get_addmp() != 0) {
            _owner.addMaxMp(-item.get_addmp());
        }                                        //追加武防捲能力
        _owner.addStr((byte) -(item.get_addstr()+ equipment.getstr()));
        _owner.addCon((byte) -(item.get_addcon()+ equipment.getcon()));
        _owner.addDex((byte) -(item.get_adddex()+ equipment.getdex()));
        _owner.addInt((byte) -(item.get_addint()+ equipment.getint()));
        _owner.addWis((byte) -(item.get_addwis()+ equipment.getwis()));
        if (item.get_addwis() != 0) {  
            _owner.resetBaseMr();
        }
        _owner.addCha((byte) -(item.get_addcha()+ equipment.getcha()));

        int addMr = 0;
        addMr -= equipment.getMr();



修改完成後..
編譯放入核心即完成..

以上的設定有個小BUG
防具裝在身上時.加防捲過安定值後.沒有即時更新能力(在此並沒有寫這些)
卸裝時會減少能力.
重新登入即可解決..(看不過去想修正也行..請便)

=========================================================================



第一步驟說明..

    public byte getcon(){//追加體質(T)
        byte getcon = 0;
        byte conup = 0;
                判斷裝備是否是防具類型.
        if((getItemId() >= 20001 && getItemId() <= 22000)
                || (getItemId() >= 120001 && getItemId() <= 122000)
                || (getItemId() >= 220001 && getItemId() <= 222000)){
                判斷類型2.哪一種防具.
              1.頭 2.盔甲 3.T 4.鬥篷 5.手套 6.靴 7.盾 8.護身符 9.戒指
              10.腰帶 11.戒指2 12.耳環
            if(getItem().getType() == 3 ){//(T)
                                安定值內不加能力
                if(getEnchantLevel()<= getItem().get_safeenchant()){
                    getcon = 0;
                    return getcon;
                }
                                超過安定值3後.每過2會+1能力
                if(getEnchantLevel()> getItem().get_safeenchant()+3){
                    getcon = 0;
                    conup = (byte) (getEnchantLevel() - (getItem().get_safeenchant()+2));
                    getcon += 1 + (conup /2);
                    return getcon;
                }
                                過安定值體質+1
                if(getEnchantLevel()> getItem().get_safeenchant()){
                    getcon = 1;
                    return getcon;
                }
            }else{
                getcon = 0;
                return getcon;
            }
        }
        getcon = 0;
        return getcon;
    }




建議能力設定不要加太多..
人物本身太強.敵人就需要做修改.多此一舉..
適當就好了.

沒有留言:

張貼留言