瀏覽代碼

BETA: Handing [5167:5168] where it should be.

Rumen Nikiforov 13 年之前
父節點
當前提交
93f9ea89cf

+ 16 - 47
L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/IdFactory.java

@@ -19,14 +19,15 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 
+
 /**
  * This class ...
+ * 
  * @version $Revision: 1.3.2.1.2.7 $ $Date: 2005/04/11 10:06:12 $
  */
 public abstract class IdFactory
@@ -34,8 +35,7 @@ public abstract class IdFactory
 	private static Logger _log = Logger.getLogger(IdFactory.class.getName());
 	
 	@Deprecated
-	protected static final String[] ID_UPDATES =
-	{
+	protected static final String[] ID_UPDATES = {
 		"UPDATE items                 SET owner_id = ?    WHERE owner_id = ?",
 		"UPDATE items                 SET object_id = ?   WHERE object_id = ?",
 		"UPDATE character_quests      SET charId = ?     WHERE charId = ?",
@@ -71,11 +71,9 @@ public abstract class IdFactory
 		"UPDATE olympiad_nobles        SET charId = ?     WHERE charId = ?",
 		"UPDATE character_offline_trade SET charId = ?     WHERE charId = ?",
 		"UPDATE character_offline_trade_items SET charId = ? WHERE charId = ?",
-		"UPDATE clanhall             SET ownerId = ?       WHERE ownerId = ?"
-	};
+	"UPDATE clanhall             SET ownerId = ?       WHERE ownerId = ?" };
 	
-	protected static final String[] ID_CHECKS =
-	{
+	protected static final String[] ID_CHECKS = {
 		"SELECT owner_id    FROM items                 WHERE object_id >= ?   AND object_id < ?",
 		"SELECT object_id   FROM items                 WHERE object_id >= ?   AND object_id < ?",
 		"SELECT charId     FROM character_quests      WHERE charId >= ?     AND charId < ?",
@@ -100,13 +98,11 @@ public abstract class IdFactory
 		"SELECT ally_id     FROM clan_data             WHERE ally_id >= ?     AND ally_id < ?",
 		"SELECT leader_id   FROM clan_data             WHERE leader_id >= ?   AND leader_id < ?",
 		"SELECT item_obj_id FROM pets                  WHERE item_obj_id >= ? AND item_obj_id < ?",
-		"SELECT object_id   FROM itemsonground        WHERE object_id >= ?   AND object_id < ?"
-	};
+	"SELECT object_id   FROM itemsonground        WHERE object_id >= ?   AND object_id < ?" };
 	
-	private static final String[] TIMESTAMPS_CLEAN =
-	{
-		"DELETE FROM character_instance_time WHERE time <= ?", "DELETE FROM character_skills_save WHERE restore_type = 1 AND systime <= ?"
-	};
+	private static final String[] TIMESTAMPS_CLEAN = {
+		"DELETE FROM character_instance_time WHERE time <= ?",
+	"DELETE FROM character_skills_save WHERE restore_type = 1 AND systime <= ?"	};
 	
 	protected boolean _initialized;
 	
@@ -119,14 +115,10 @@ public abstract class IdFactory
 	protected IdFactory()
 	{
 		setAllCharacterOffline();
+		
 		if (Config.DATABASE_CLEAN_UP)
-		{
-			if (Config.L2JMOD_ALLOW_WEDDING)
-			{
-				cleanInvalidWeddings();
-			}
 			cleanUpDB();
-		}
+		
 		cleanUpTimeStamps();
 	}
 	
@@ -136,8 +128,8 @@ public abstract class IdFactory
 		{
 			case Compaction:
 				throw new UnsupportedOperationException("Compaction IdFactory is disabled.");
-				// _instance = new CompactionIDFactory();
-				// break;
+				//_instance = new CompactionIDFactory();
+				//break;
 			case BitSet:
 				_instance = new BitSetIDFactory();
 				break;
@@ -167,7 +159,6 @@ public abstract class IdFactory
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.WARNING, "Could not update characters online status: " + e.getMessage(), e);
 		}
 		finally
 		{
@@ -285,34 +276,11 @@ public abstract class IdFactory
 			stmt.executeUpdate("UPDATE clanhall SET ownerId=0, paidUntil=0, paid=0 WHERE clanhall.ownerId NOT IN (SELECT clan_id FROM clan_data);");
 			stmt.executeUpdate("UPDATE fort SET owner=0 WHERE owner NOT IN (SELECT clan_id FROM clan_data);");
 			
-			_log.info("Cleaned " + cleanCount + " elements from database in " + ((System.currentTimeMillis() - cleanupStart) / 1000) + " s");
+			_log.info("Cleaned " + cleanCount + " elements from database in "+((System.currentTimeMillis()-cleanupStart)/1000)+" s");
 			stmt.close();
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.WARNING, "Could not clean up database: " + e.getMessage(), e);
-		}
-		finally
-		{
-			L2DatabaseFactory.close(con);
-		}
-	}
-	
-	private void cleanInvalidWeddings()
-	{
-		Connection con = null;
-		try
-		{
-			con = L2DatabaseFactory.getInstance().getConnection();
-			Statement statement = con.createStatement();
-			statement.executeUpdate("DELETE FROM mods_wedding WHERE (player1Id OR player2Id) NOT IN (SELECT charId FROM characters)");
-			statement.close();
-			
-			_log.info("Cleaned up invalid Weddings.");
-		}
-		catch (SQLException e)
-		{
-			_log.log(Level.WARNING, "Could not clean up invalid Weddings: " + e.getMessage(), e);
 		}
 		finally
 		{
@@ -349,7 +317,7 @@ public abstract class IdFactory
 	
 	/**
 	 * @return
-	 * @throws Exception
+	 * @throws Exception 
 	 * @throws SQLException
 	 */
 	protected final int[] extractUsedObjectIDTable() throws Exception
@@ -435,6 +403,7 @@ public abstract class IdFactory
 	
 	/**
 	 * return a used Object ID back to the pool
+	 * 
 	 * @param id
 	 */
 	public abstract void releaseId(int id);

+ 9 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/L2GameClient.java

@@ -549,6 +549,15 @@ public final class L2GameClient extends MMOClient<MMOConnection<L2GameClient>> i
 			statement.setInt(1, objid);
 			statement.execute();
 			statement.close();
+			
+			if (Config.L2JMOD_ALLOW_WEDDING)
+			{
+				statement = con.prepareStatement("DELETE FROM mods_wedding WHERE player1Id = ? OR player2Id = ?");
+				statement.setInt(1, objid);
+				statement.setInt(2, objid);
+				statement.execute();
+				statement.close();
+			}
 		}
 		catch (Exception e)
 		{