All pastes #750788 Raw Edit

Untitled

public text v1 · immutable
#750788 ·published 2007-10-26 19:44 UTC
rendered paste body
Index: D:/projectl2j/L2_GameServer_It_1214/java/net/sf/l2j/gameserver/instancemanager/CastleManager.java
===================================================================
--- D:/projectl2j/L2_GameServer_It_1214/java/net/sf/l2j/gameserver/instancemanager/CastleManager.java	(revision 1270)
+++ D:/projectl2j/L2_GameServer_It_1214/java/net/sf/l2j/gameserver/instancemanager/CastleManager.java	(working copy)
@@ -17,16 +17,24 @@
  */
 package net.sf.l2j.gameserver.instancemanager;
 
+import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.List;
 
 import javolution.util.FastList;
+import net.sf.l2j.Config;
 import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.SevenSigns;
 import net.sf.l2j.gameserver.model.L2Clan;
+import net.sf.l2j.gameserver.model.L2ClanMember;
+import net.sf.l2j.gameserver.model.L2ItemInstance;
 import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.model.PcInventory;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.entity.Castle;
-import net.sf.l2j.gameserver.SevenSigns;
 
 
 public class CastleManager
@@ -52,8 +60,19 @@
     
     // =========================================================
     // Constructor
-    private static final int _castleCirclets[] = { 0, 6838, 6835, 6839, 6837, 6840, 6834, 6836, 8182, 8183 };
-    public CastleManager() {}
+    private static final int _castleCirclets[] = new int[10];
+    public CastleManager()
+    {
+    	_castleCirclets[1] = 6838;
+    	_castleCirclets[2] = 6835;
+    	_castleCirclets[3] = 6839;
+    	_castleCirclets[4] = 6837;
+    	_castleCirclets[5] = 6840;
+    	_castleCirclets[6] = 6834;
+    	_castleCirclets[7] = 6836;
+    	_castleCirclets[8] = 8182;
+    	_castleCirclets[9] = 8183;
+    }
 
     // =========================================================
     // Method - Public
@@ -225,4 +244,63 @@
 		
 		return 0;
 	}
+
+	public void removeCirclets(L2Clan clan, int CastleId)
+	{
+		for (L2ClanMember member : clan.getMembers())
+		{		
+			removeCirclets(member.getPlayerInstance(), CastleId);
+		}
+	}
+	public void removeCirclets(L2PcInstance player, int CastleId)
+	{
+		PcInventory inv = player.getInventory();
+		for (int circletId : _castleCirclets)
+		{
+			L2ItemInstance circlet = inv.getItemByItemId(circletId);
+			L2PcInstance playerObj = L2World.getInstance().getPlayer(player);
+ 			if (circlet != null)
+ 				if (circlet.isEquipped())
+ 				{
+                    player.getInventory().unEquipItemInSlotAndRecord(circlet.getEquipSlot());
+ 				}
+ 				if (playerObj != null)
+ 				{
+ 					playerObj.destroyItemByItemId("CastleCircletRemoval", circletId, 1, player, true);
+ 				}
+ 				else
+ 				{
+ 					removeOfflineCirclets(player, circlet);
+ 				}
+		}
+	}
+	private void removeOfflineCirclets(L2PcInstance player, L2ItemInstance circlet)
+	{
+		Connection con = null;
+		try
+		{
+			con = L2DatabaseFactory.getInstance().getConnection();
+
+			PreparedStatement statement = con.prepareStatement("DELETE from items where object_id=? and item_id=?");
+			statement.setInt(1, player.getObjectId());
+			for (int circletId : _castleCirclets)
+				statement.setInt(2, circletId);
+
+				statement.execute();
+				statement.close();
+
+			} 
+			catch (SQLException se)
+			{
+				if (Config.DEBUG) se.printStackTrace();
+			}
+			finally
+			{
+				try { con.close(); } catch (Exception e)
+				{
+					if (Config.DEBUG)
+						e.printStackTrace();
+				}
+			}
+		}
 }