2013年5月15日 星期三

【Java教學】 武器進化



藉由 底比斯寶箱 && 龜裂之核 語法;進而延伸,可使武器、防具、飾品進化 



開啟 C_ItemUSe  

收尋49092

 || itemId == 49092 //龜裂之核 

複制代碼在下方新增 <進化媒介>


|| itemId == 49092 //龜裂之核  
|| itemId == 700117 //武器進化媒介 



複制代碼然後再找個好位子 再新增 


//ADD 新增 簡易武器進化系統 700117  

} else if (itemId == 700117) { //武器進化媒介編號  

int WeaponId = l1iteminstance1.getItem().getItemId();  

if (WeaponId == 武器編號 || WeaponId == 武器編號) {
 / /進化前的武器;ex: Lv1 絕世好劍 編號:500  

if (_random.nextInt(100) <= 20) { //進化機率,不要就抓掉  

createNewItem(pc, WeaponId + 1, 1);  

//進化後的武器 ;ex: Lv2 絕世好劍 編號:501  

//db 請設定正確;公式如語法 ↑↑  

pc.getInventory().consumeItem(WeaponId, 1); //進化前武器消失  

} else {  

pc.sendPackets(new S_SystemMessage(\"武器進化失敗。 \" ));  

}  

pc.getInventory().consumeItem(700117, 1); //進化媒介消失  

} else {  

pc.sendPackets(new S_ServerMessage(79));  

return;  

}  

//END 



複制代碼DB內 道具700117武器進化石武器進化石materialchoicegemstone0327970900100000000000000010 

複制代碼DB內 武器,上面語法公式沒改,
這邊記得要設定連號500LV1進化前武器Lv1 絕世好劍swordiron4000035245901012161111111100000000000000000001000000 

501LV2進化後武器Lv2 絕世好劍swordiron4000035245901012161111111100000000000000000001000000 
複制代碼0612 增加強化值設定 




打開 L1PcInventory.java 

找到 public int checkAddItem 

在這段上面增加      

//香 武器進化 增加強化值 

      public int checkAddItem_LV(L1ItemInstance item, int count, int EnchantLevel) { 

          return checkAddItem_LV(item, count, EnchantLevel, true); 

      } 



      public int checkAddItem_LV(L1ItemInstance item, int count, int EnchantLevel, boolean message) { 

          if (item == null) { 

                return -1; 

          } 

          if (getSize() > MAX_SIZE 

                      || (getSize() == MAX_SIZE && (!item.isStackable() || !checkItem(item 

                                .getItem().getItemId())))) { // 容量確認 

                if (message) { 

                      sendOverMessage(263); // \f1一人のキャラクターが持って歩けるアイテムは最大180個までです。 

                } 

                return SIZE_OVER; 

          } 



          int weight = getWeight() + item.getItem().getWeight() * count / 1000 + 1; 

          if (weight < 0 || (item.getItem().getWeight() * count / 1000) < 0) { 

                if (message) { 

                      sendOverMessage(82); // アイテムが重すぎて、これ以上持てません。 

                } 

                return WEIGHT_OVER; 

          } 

          if (calcWeight240(weight) >= 240) { 

                if (message) { 

                   
                } 

                return WEIGHT_OVER; 

          }           

          return OK; 

      } 
int rndLV = _random.nextInt(6)+3; //0~5 +3 強化值  
int t_ItemLV = l1iteminstance1.getEnchantLevel(); ***0613修改處 

if (WeaponId == 武器編號 || WeaponId == 武器編號) {  
//進化前的武器;ex: Lv1 絕世好劍 編號:500  
if (_random.nextInt(100) <= 20) { //進化機率,不要就抓掉  

createNewItem_LV(pc, WeaponId + 1, 1, t_ItemLV ); ***0613修改處 

//進化後的武器 ;ex: Lv2 絕世好劍 編號:501  
//db 請設定正確;公式如語法 ↑↑  
pc.getInventory().consumeItem(WeaponId, 1); //進化前武器消失  
} else {  
pc.sendPackets(new S_SystemMessage(\"武器進化失敗。 \" ));  
}  
pc.getInventory().consumeItem( ); //進化媒介消失  
} else {  
pc.sendPackets(new S_ServerMessage( ));  
return;  
}  
//END 

0612 
若要不管+幾去合成,合成出來都是一樣的強化值;就設定(1)+你要的數值。 
_random.nextInt(1)+7 ←這樣就是合成出來都+7 
0613 
t_ItemLV,增加此語法..即可合成出相同強化值的武器 




下列寫法已測試過,可行!! 

加入種類判別           

           
                        } else if (itemId =  ) { // 武器進化系統 

                          int t_ItemId = l1iteminstance1.getItem().getItemId(); 

                          int pc_ItemLV = pc.getWeapon().getEnchantLevel(); 

                          int rndLV = _random.nextInt(6)+3; 

                        if (l1iteminstance1.getItem().getType2() == 1) { // 道具種類判別 1:武器 2:防具 0:道具 

                              if (t_ItemId >=    >= t_ItemId) { 合成武器的區塊 

                                createNewItem_LV(pc, 4, 1, rndLV);//合成為指定道具 

                                pc.getInventory().consumeItem(t_ItemId, ); 

                                pc.getInventory().consumeItem(300053, 1); 

                              } else { 

                                  pc.sendPackets(new S_ServerMessage()); 

                                  return; 

                              } 

                          } else { 

                                pc.sendPackets(new S_ServerMessage( ));  

                                return; 

                          }       



複制代碼補充增加~開啟 C_ItemUSe  

找到      private boolean createNewItem//      香 武器進化 增加強化值 

      private boolean createNewItem_LV(L1PcInstance pc, int item_id, int count, int EnchantLevel) { 

          L1ItemInstance item = ItemTable.getInstance().createItem(item_id); 

          item.setCount(count); 

          item.setEnchantLevel(EnchantLevel); 

          if (item != null) { 

                if (pc.getInventory().checkAddItem_LV(item, count, EnchantLevel) == L1Inventory.OK) { 

                      pc.getInventory().storeItem(item); 

                } else { // 持てない場合は地面に落とす 処理のキャンセルはしない(不正防止) 

                      L1World.getInstance().getInventory(pc.getX(), pc.getY(), 

                                pc.getMapId()).storeItem(item); 

                } 

                pc.sendPackets(new S_ServerMessage(403, item.getLogName())); // %0を手に入れました。 

                return true; 

          } else { 

                return false; 

          } 

      }

沒有留言:

張貼留言