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,64 @@ 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) + { + String playerName = player.getName(); + L2ItemInstance circlet = inv.getItemByItemId(circletId); + L2PcInstance playerObj = L2World.getInstance().getPlayer(playerName); + 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=? and owner_id=?"); + statement.setInt(1, circlet.getObjectId()); + statement.setInt(2, circlet.getItemId()); + statement.setInt(3, circlet.getOwnerId()); + + statement.execute(); + statement.close(); + + } + catch (SQLException se) + { + if (Config.DEBUG) se.printStackTrace(); + } + finally + { + try { con.close(); } catch (Exception e) + { + if (Config.DEBUG) + e.printStackTrace(); + } + } + } }