瀏覽代碼

Skills reuse rework part 1: Shared reuse groups core support.

_DS_ 15 年之前
父節點
當前提交
d7acf49585

+ 11 - 0
L2_GameServer/java/com/l2jserver/gameserver/model/L2ShortCut.java

@@ -34,6 +34,7 @@ public class L2ShortCut
 	private final int _id;
 	private final int _id;
 	private final int _level;
 	private final int _level;
 	private final int _characterType;
 	private final int _characterType;
+	private int _sharedReuseGroup = -1;
 
 
 	public L2ShortCut(int slotId, int pageId, int shortcutType,
 	public L2ShortCut(int slotId, int pageId, int shortcutType,
                       int shortcutId, int shortcutLevel, int characterType)
                       int shortcutId, int shortcutLevel, int characterType)
@@ -75,4 +76,14 @@ public class L2ShortCut
     {
     {
     	return _characterType;
     	return _characterType;
     }
     }
+
+    public int getSharedReuseGroup()
+    {
+    	return _sharedReuseGroup;
+    }
+
+    public void setSharedReuseGroup(int g)
+    {
+    	_sharedReuseGroup = g;
+    }
 }
 }

+ 13 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/ShortCuts.java

@@ -69,6 +69,15 @@ public class ShortCuts
 
 
     public synchronized void registerShortCut(L2ShortCut shortcut)
     public synchronized void registerShortCut(L2ShortCut shortcut)
     {
     {
+		// verify shortcut
+		if (shortcut.getType() == L2ShortCut.TYPE_ITEM)
+        {
+			L2ItemInstance item = _owner.getInventory().getItemByObjectId(shortcut.getId());
+			if (item == null)
+				return;
+			if (item.isEtcItem())
+				shortcut.setSharedReuseGroup(item.getEtcItem().getSharedReuseGroup());
+		}
         L2ShortCut oldShortCut = _shortCuts.put(shortcut.getSlot() + 12 * shortcut.getPage(), shortcut);
         L2ShortCut oldShortCut = _shortCuts.put(shortcut.getSlot() + 12 * shortcut.getPage(), shortcut);
         registerShortCutInDb(shortcut, oldShortCut);
         registerShortCutInDb(shortcut, oldShortCut);
     }
     }
@@ -221,8 +230,11 @@ public class ShortCuts
         {
         {
 			if (sc.getType() == L2ShortCut.TYPE_ITEM)
 			if (sc.getType() == L2ShortCut.TYPE_ITEM)
             {
             {
-				if (_owner.getInventory().getItemByObjectId(sc.getId()) == null)
+				L2ItemInstance item = _owner.getInventory().getItemByObjectId(sc.getId());
+				if (item == null)
 					deleteShortCut(sc.getSlot(), sc.getPage());
 					deleteShortCut(sc.getSlot(), sc.getPage());
+				else if (item.isEtcItem())
+					sc.setSharedReuseGroup(item.getEtcItem().getSharedReuseGroup());
             }
             }
 		}
 		}
     }
     }

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/ShortCutInit.java

@@ -57,7 +57,7 @@ public final class ShortCutInit extends L2GameServerPacket
             case L2ShortCut.TYPE_ITEM: //1
             case L2ShortCut.TYPE_ITEM: //1
             	writeD(sc.getId());
             	writeD(sc.getId());
             	writeD(0x01);
             	writeD(0x01);
-            	writeD(-1);
+            	writeD(sc.getSharedReuseGroup());
             	writeD(0x00);
             	writeD(0x00);
             	writeD(0x00);
             	writeD(0x00);
             	writeH(0x00);
             	writeH(0x00);

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/ShortCutRegister.java

@@ -65,7 +65,7 @@ public final class ShortCutRegister extends L2GameServerPacket
         case L2ShortCut.TYPE_ITEM: //1
         case L2ShortCut.TYPE_ITEM: //1
         	writeD(_shortcut.getId());
         	writeD(_shortcut.getId());
         	writeD(_shortcut.getCharacterType());
         	writeD(_shortcut.getCharacterType());
-        	writeD(-1); // here should be item type
+        	writeD(_shortcut.getSharedReuseGroup());
         	writeD(0x00);  // unknown
         	writeD(0x00);  // unknown
         	writeD(0x00);  // unknown
         	writeD(0x00);  // unknown
         	writeD(0x00);  // item augment id
         	writeD(0x00);  // item augment id

+ 8 - 0
L2_GameServer/java/com/l2jserver/gameserver/templates/item/L2EtcItem.java

@@ -28,6 +28,8 @@ public final class L2EtcItem  extends L2Item
 	// private final String[] _skill;
 	// private final String[] _skill;
 	private final String _handler;
 	private final String _handler;
 	private SkillHolder[] _skillHolder;
 	private SkillHolder[] _skillHolder;
+	private int _sharedReuseGroup;
+
 	/**
 	/**
 	 * Constructor for EtcItem.
 	 * Constructor for EtcItem.
 	 * @see L2Item constructor
 	 * @see L2Item constructor
@@ -73,6 +75,7 @@ public final class L2EtcItem  extends L2Item
 		}
 		}
 		
 		
 		_handler = set.getString("handler");
 		_handler = set.getString("handler");
+		_sharedReuseGroup = set.getInteger("shared_reuse_group", -1);
 	}
 	}
 
 
 	/**
 	/**
@@ -118,4 +121,9 @@ public final class L2EtcItem  extends L2Item
 	{
 	{
 		return _handler;
 		return _handler;
 	}
 	}
+
+	public int getSharedReuseGroup()
+	{
+		return _sharedReuseGroup;
+	}
 }
 }