Sync with L2JServer Jan 9th 2015.
This commit is contained in:
@ -197,7 +197,8 @@ public final class CursedWeaponsManager
|
||||
|
||||
private final void controlPlayers()
|
||||
{
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("SELECT owner_id FROM items WHERE item_id=?"))
|
||||
{
|
||||
// TODO: See comments below...
|
||||
// This entire for loop should NOT be necessary, since it is already handled by
|
||||
@ -205,55 +206,49 @@ public final class CursedWeaponsManager
|
||||
// then we'd better make sure that it FULLY cleans up inactive cursed weapons!
|
||||
// Undesired effects result otherwise, such as player with no zariche but with karma
|
||||
// or a lost-child entry in the cursed weapons table, without a corresponding one in items...
|
||||
|
||||
// Retrieve the L2PcInstance from the characters table of the database
|
||||
try (PreparedStatement ps = con.prepareStatement("SELECT owner_id FROM items WHERE item_id=?"))
|
||||
for (CursedWeapon cw : _cursedWeapons.values())
|
||||
{
|
||||
for (CursedWeapon cw : _cursedWeapons.values())
|
||||
if (cw.isActivated())
|
||||
{
|
||||
if (cw.isActivated())
|
||||
continue;
|
||||
}
|
||||
|
||||
// Do an item check to be sure that the cursed weapon isn't hold by someone
|
||||
final int itemId = cw.getItemId();
|
||||
ps.setInt(1, itemId);
|
||||
try (ResultSet rset = ps.executeQuery())
|
||||
{
|
||||
if (rset.next())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Do an item check to be sure that the cursed weapon isn't hold by someone
|
||||
int itemId = cw.getItemId();
|
||||
ps.setInt(1, itemId);
|
||||
try (ResultSet rset = ps.executeQuery())
|
||||
{
|
||||
if (rset.next())
|
||||
// A player has the cursed weapon in his inventory ...
|
||||
final int playerId = rset.getInt("owner_id");
|
||||
_log.info("PROBLEM : Player " + playerId + " owns the cursed weapon " + itemId + " but he shouldn't.");
|
||||
|
||||
// Delete the item
|
||||
try (PreparedStatement delete = con.prepareStatement("DELETE FROM items WHERE owner_id=? AND item_id=?"))
|
||||
{
|
||||
// A player has the cursed weapon in his inventory ...
|
||||
int playerId = rset.getInt("owner_id");
|
||||
_log.info("PROBLEM : Player " + playerId + " owns the cursed weapon " + itemId + " but he shouldn't.");
|
||||
|
||||
// Delete the item
|
||||
try (PreparedStatement delete = con.prepareStatement("DELETE FROM items WHERE owner_id=? AND item_id=?"))
|
||||
delete.setInt(1, playerId);
|
||||
delete.setInt(2, itemId);
|
||||
if (delete.executeUpdate() != 1)
|
||||
{
|
||||
delete.setInt(1, playerId);
|
||||
delete.setInt(2, itemId);
|
||||
if (delete.executeUpdate() != 1)
|
||||
{
|
||||
_log.warning("Error while deleting cursed weapon " + itemId + " from userId " + playerId);
|
||||
}
|
||||
_log.warning("Error while deleting cursed weapon " + itemId + " from userId " + playerId);
|
||||
}
|
||||
|
||||
// Restore the player's old karma and pk count
|
||||
try (PreparedStatement update = con.prepareStatement("UPDATE characters SET karma=?, pkkills=? WHERE charId=?"))
|
||||
{
|
||||
update.setInt(1, cw.getPlayerKarma());
|
||||
update.setInt(2, cw.getPlayerPkKills());
|
||||
update.setInt(3, playerId);
|
||||
if (update.executeUpdate() != 1)
|
||||
{
|
||||
_log.warning("Error while updating karma & pkkills for userId " + cw.getPlayerId());
|
||||
}
|
||||
}
|
||||
// clean up the cursed weapons table.
|
||||
removeFromDb(itemId);
|
||||
}
|
||||
|
||||
// Restore the player's old karma and pk count
|
||||
try (PreparedStatement update = con.prepareStatement("UPDATE characters SET karma=?, pkkills=? WHERE charId=?"))
|
||||
{
|
||||
update.setInt(1, cw.getPlayerKarma());
|
||||
update.setInt(2, cw.getPlayerPkKills());
|
||||
update.setInt(3, playerId);
|
||||
if (update.executeUpdate() != 1)
|
||||
{
|
||||
_log.warning("Error while updating karma & pkkills for userId " + cw.getPlayerId());
|
||||
}
|
||||
}
|
||||
// clean up the cursed weapons table.
|
||||
removeFromDb(itemId);
|
||||
}
|
||||
ps.clearParameters();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user