2014年8月8日 星期五

【Java教學】3.63C 戒指問題

ItemTable.java

尋找位址

        _useTypes.put("fishing_rod", new Integer(42)); // 釣魚杆

在下面新增 --->

_useTypes.put("ring3", new Integer(79)); <----編號自已想的
_useTypes.put("ring4", new Integer(80)); <----編號自已想的

日後有比較正確的 ~~~請自行改回去

尋找位址
       _armorTypes.put("guarder", new Integer(13));

在下面新增 --->
     
       _armorTypes.put("ring3", new Integer(19)); //未驗證
       _armorTypes.put("ring4", new Integer(20)); //未驗證

在來到 db 創2隻戒指  type 設 ring3、ring4 等級 min_lvl 看你要不要設定

以上是我惡搞的寫法,非正式,如有錯誤或優化代碼的話,請自行修改





------------
if (type == 9) { // type類型為9是戒指可戴2個,其他都只能戴1個
                        int T9c = pcInventory.getTypeEquipped(2, 9); 

                        equipeSpace = T9c <= 3; 
                        if(! armor.isEquipped()){ 
                                if(T9c==2){ 
                                        if(pc.getLevel()<76){ 
                                                pc.sendPackets(new S_ServerMessage("當前級別只能使用2個戒指。")); 
                                                return; 
                                        } 
                                }else if(T9c==3){ 
                                        if(pc.getLevel()<81){ 
                                                pc.sendPackets(new S_ServerMessage("當前級別只能使用3個戒指。")); 
                                                return; 
                                        } 
                                } 
                        } 
                } else { 
                        equipeSpace = pcInventory.getTypeEquipped(2, type) <= 0; 
                }














------------
實裝4戒指後~
如果套裝有戒指的部份,會產洗能力值的bug.
以營養滿分套裝為例 項鍊 腰帶 戒指 ~
全套能力加:
防禦-3點
體質+1、精神+1、魅力+1
魔防+10%
HP+20、MP+10
體力回復+5、魔力回復+3

產生bug的狀況~
1.先穿戴一套 營養滿分套裝
2.第2顆戒指,也裝備 營養滿分金戒指.(這時已經裝備2顆 營養滿分金戒指)
3.隨便準備一顆戒指(第3顆),裝備後會顯示在LV.76戒指欄位.
4.接著重複 脫穿 第2顆 營養滿分金戒指 ,套裝的效果就會重複的疊加...

請問有大大可以指點一下,如何修正這各bug嗎?
麻煩了,謝謝~!


以下為修正的方法:

L1ArmorSet.java

// リングを2つ装備していて、それが両方セット装備か調べる
                if (armor != null && isSetContainRing) {
                        int itemId = armor.getItem().getItemId();
                        if (pcInventory.getTypeEquipped(2, 9) == 2) {
                                L1ItemInstance ring[] = new L1ItemInstance[2];
                                ring = pcInventory.getRingEquipped();
                                if (ring[0].getItem().getItemId() == itemId
                                                && ring[1].getItem().getItemId() == itemId) {
                                        return true;
                                }
                        }
                        //修正戒指
                        if (pcInventory.getTypeEquipped(2, 9) >= 3) {
                                L1ItemInstance ring[] = new L1ItemInstance[4];
                                ring = pcInventory.getRingEquipped();
                                if ((ring[0].getItem().getItemId() == itemId
                                                && ring[1].getItem().getItemId() == itemId)
                                        || (ring[0].getItem().getItemId() == itemId
                                                                && ring[2].getItem().getItemId() == itemId)
                                        || (ring[0].getItem().getItemId() == itemId
                                                                && ring[3].getItem().getItemId() == itemId)                     
                                        || (ring[1].getItem().getItemId() == itemId
                                                                && ring[2].getItem().getItemId() == itemId)
                                        || (ring[1].getItem().getItemId() == itemId
                                                                && ring[3].getItem().getItemId() == itemId)
                                        || (ring[2].getItem().getItemId() == itemId
                                                                && ring[3].getItem().getItemId() == itemId)) {
                                        return true;
                                }
                        }
                        

                }

沒有留言:

張貼留言