From d5b5797428130753fe9dfc494b19184fadcefb3e Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 5 Dec 2021 11:21:17 +0000 Subject: [PATCH] Fixed offline trader issues. --- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../org/l2jmobius/gameserver/GameServer.java | 2 +- .../org/l2jmobius/gameserver/Shutdown.java | 2 +- .../data/sql/OfflineTraderTable.java | 288 +++++++++--------- .../l2jmobius/gameserver/model/TradeList.java | 4 +- .../gameserver/network/GameClient.java | 2 +- .../org/l2jmobius/gameserver/GameServer.java | 2 +- .../org/l2jmobius/gameserver/Shutdown.java | 2 +- .../data/sql/OfflineTraderTable.java | 288 +++++++++--------- .../l2jmobius/gameserver/model/TradeList.java | 4 +- .../gameserver/network/GameClient.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 3 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 3 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- .../data/sql/OfflineTraderTable.java | 16 +- .../gameserver/model/actor/Player.java | 11 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPrivateStoreBuy.java | 2 +- .../RequestPrivateStoreSell.java | 2 +- .../gameserver/util/OfflineTradeUtil.java | 2 +- 148 files changed, 631 insertions(+), 754 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java index db2b95d9a9..d7e463002a 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.ClassListData; @@ -4131,11 +4132,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5748,8 +5749,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 8a4d9fcce7..2ab48d8c0d 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -594,7 +594,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index d6c0c35c9e..6892b2c4f6 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -133,7 +133,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java index f40f5b4572..ebac4579f9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4133,11 +4134,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5750,8 +5751,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index cf597cc09d..6ec1de19fd 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -599,7 +599,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index d6c0c35c9e..6892b2c4f6 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -133,7 +133,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java index 92af9d5fc4..524ac73d01 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4135,11 +4136,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5752,8 +5753,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index cf597cc09d..6ec1de19fd 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -599,7 +599,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java index b4ab77e2e2..511a97a96d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4131,11 +4132,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5747,8 +5748,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 3082513fae..f2d00352fc 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -599,7 +599,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java index 158131e91e..8d844b0871 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4146,11 +4147,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5764,8 +5765,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index b7670c7314..f1936451c8 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -600,7 +600,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java index 8ab7996a83..7f86b8b56c 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4146,11 +4147,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5764,8 +5765,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 34f72eb25c..9298323f1f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -600,7 +600,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java index 8b8de71a49..4f3ad9e65a 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4147,11 +4148,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5765,8 +5766,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 34f72eb25c..9298323f1f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -600,7 +600,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java index 358b822c3c..0589855de4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4083,11 +4084,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5729,8 +5730,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index c40d00ee14..1dccd31130 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -604,7 +604,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java index c2b7521e41..30ee423467 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4113,11 +4114,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5772,8 +5773,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 8d2c1f46f8..f5b68eaea4 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -614,7 +614,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java index dac006ce74..5a750e2cf7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4130,11 +4131,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5789,8 +5790,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 874c87eadf..2f698b0d55 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -619,7 +619,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index c3a880ba11..564d275801 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -329,7 +329,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -340,14 +340,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -425,7 +423,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -434,23 +431,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -460,15 +456,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java index 3829c31fa2..442f039610 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -64,6 +64,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4163,11 +4164,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5822,8 +5823,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 79195c9cec..e329258bbe 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -623,7 +623,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java index c742579bab..86d503f333 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java @@ -405,7 +405,7 @@ public class GameServer if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS) { - OfflineTraderTable.restoreOfflineTraders(); + OfflineTraderTable.getInstance().restoreOfflineTraders(); } printSection("Protection"); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java index 782a9cfd9c..d14976fb6f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java @@ -413,7 +413,7 @@ public class Shutdown extends Thread { if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS) { - OfflineTraderTable.storeOffliners(); + OfflineTraderTable.getInstance().storeOffliners(); } } catch (Throwable t) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 19ce538fd3..b2bd1a7471 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -19,7 +19,9 @@ package org.l2jmobius.gameserver.data.sql; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.Statement; import java.util.Calendar; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.Config; @@ -34,9 +36,6 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.network.GameClient; -/** - * @author Shyla - */ public class OfflineTraderTable { private static final Logger LOGGER = Logger.getLogger(OfflineTraderTable.class.getName()); @@ -44,39 +43,37 @@ public class OfflineTraderTable // SQL DEFINITIONS private static final String SAVE_OFFLINE_STATUS = "INSERT INTO character_offline_trade (`charId`,`time`,`type`,`title`) VALUES (?,?,?,?)"; private static final String SAVE_ITEMS = "INSERT INTO character_offline_trade_items (`charId`,`item`,`count`,`price`,`enchant`) VALUES (?,?,?,?,?)"; - private static final String DELETE_OFFLINE_TABLE_ALL_ITEMS = "delete from character_offline_trade_items where charId=?"; - private static final String DELETE_OFFLINE_TRADER = "DELETE FROM character_offline_trade where charId=?"; private static final String CLEAR_OFFLINE_TABLE = "DELETE FROM character_offline_trade"; + private static final String CLEAR_OFFLINE_TABLE_PLAYER = "DELETE FROM character_offline_trade WHERE `charId`=?"; private static final String CLEAR_OFFLINE_TABLE_ITEMS = "DELETE FROM character_offline_trade_items"; + private static final String CLEAR_OFFLINE_TABLE_ITEMS_PLAYER = "DELETE FROM character_offline_trade_items WHERE `charId`=?"; private static final String LOAD_OFFLINE_STATUS = "SELECT * FROM character_offline_trade"; - private static final String LOAD_OFFLINE_ITEMS = "SELECT * FROM character_offline_trade_items WHERE charId = ?"; + private static final String LOAD_OFFLINE_ITEMS = "SELECT * FROM character_offline_trade_items WHERE `charId`=?"; - // called when server will go off, different from storeOffliner because - // of store of normal sellers/buyers also if not in offline mode - public static void storeOffliners() + protected OfflineTraderTable() { - try (Connection con = DatabaseFactory.getConnection()) + } + + public void storeOffliners() + { + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE); + PreparedStatement stm2 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS); + PreparedStatement stm3 = con.prepareStatement(SAVE_OFFLINE_STATUS); + PreparedStatement stmItems = con.prepareStatement(SAVE_ITEMS)) { - PreparedStatement stm = con.prepareStatement(CLEAR_OFFLINE_TABLE); - stm.execute(); - stm.close(); - stm = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS); - stm.execute(); - stm.close(); - + stm1.execute(); + stm2.execute(); con.setAutoCommit(false); // avoid halfway done - stm = con.prepareStatement(SAVE_OFFLINE_STATUS); - final PreparedStatement stmItems = con.prepareStatement(SAVE_ITEMS); for (Player pc : World.getInstance().getAllPlayers()) { try { - // without second check, server will store all guys that are in shop mode - if ((pc.getPrivateStoreType() != Player.STORE_PRIVATE_NONE)/* && (pc.isOffline()) */) + if ((pc.getPrivateStoreType() != Player.STORE_PRIVATE_NONE)) { - stm.setInt(1, pc.getObjectId()); // Char Id - stm.setLong(2, pc.getOfflineStartTime()); - stm.setInt(3, pc.getPrivateStoreType()); // store type + stm3.setInt(1, pc.getObjectId()); + stm3.setLong(2, pc.getOfflineStartTime()); + stm3.setInt(3, pc.getPrivateStoreType()); String title = null; switch (pc.getPrivateStoreType()) @@ -142,40 +139,37 @@ public class OfflineTraderTable } default: { - // LOGGER.info( "OfflineTraderTable[storeTradeItems()]: Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); - // no save for this kind of shop + // LOGGER.info(getClass().getSimpleName() + ": Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); continue; } } - stm.setString(4, title); - stm.executeUpdate(); - stm.clearParameters(); - con.commit(); // flush + stm3.setString(4, title); + stm3.executeUpdate(); + stm3.clearParameters(); + con.commit(); } } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeTradeItems()]: Error while saving offline trader: " + pc.getObjectId() + " " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + pc.getObjectId() + " " + e, e); } } - stm.close(); - stmItems.close(); - LOGGER.info("Offline traders stored."); + LOGGER.info(getClass().getSimpleName() + ": Offline traders stored."); } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeTradeItems()]: Error while saving offline traders: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static void restoreOfflineTraders() + public void restoreOfflineTraders() { - LOGGER.info("Loading offline traders..."); + LOGGER.info(getClass().getSimpleName() + ": Loading offline traders..."); int nTraders = 0; - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + Statement stm = con.createStatement(); + ResultSet rs = stm.executeQuery(LOAD_OFFLINE_STATUS)) { - final PreparedStatement stm = con.prepareStatement(LOAD_OFFLINE_STATUS); - final ResultSet rs = stm.executeQuery(); while (rs.next()) { final long time = rs.getLong("time"); @@ -186,7 +180,6 @@ public class OfflineTraderTable cal.add(Calendar.DAY_OF_YEAR, Config.OFFLINE_MAX_DAYS); if (cal.getTimeInMillis() <= Chronos.currentTimeMillis()) { - LOGGER.info("Offline trader with id " + rs.getInt("charId") + " reached OfflineMaxDays, kicked."); continue; } } @@ -198,6 +191,7 @@ public class OfflineTraderTable } Player player = null; + try { final GameClient client = new GameClient(); @@ -215,51 +209,51 @@ public class OfflineTraderTable } player.spawnMe(player.getX(), player.getY(), player.getZ()); LoginServerThread.getInstance().addGameServerLogin(player.getAccountName(), client); - final PreparedStatement stmItems = con.prepareStatement(LOAD_OFFLINE_ITEMS); - stmItems.setInt(1, player.getObjectId()); - final ResultSet items = stmItems.executeQuery(); - - switch (type) + try (PreparedStatement stmItems = con.prepareStatement(LOAD_OFFLINE_ITEMS)) { - case Player.STORE_PRIVATE_BUY: + stmItems.setInt(1, player.getObjectId()); + try (ResultSet items = stmItems.executeQuery()) { - while (items.next()) + switch (type) { - player.getBuyList().addItemByItemId(items.getInt(2), items.getInt(3), items.getInt(4), items.getInt(5)); + case Player.STORE_PRIVATE_BUY: + { + while (items.next()) + { + player.getBuyList().addItemByItemId(items.getInt(2), items.getInt(3), items.getInt(4), items.getInt(5)); + } + player.getBuyList().setTitle(rs.getString("title")); + break; + } + case Player.STORE_PRIVATE_SELL: + case Player.STORE_PRIVATE_PACKAGE_SELL: + { + while (items.next()) + { + player.getSellList().addItem(items.getInt(2), items.getInt(3), items.getInt(4)); + } + player.getSellList().setTitle(rs.getString("title")); + player.getSellList().setPackaged(type == Player.STORE_PRIVATE_PACKAGE_SELL); + break; + } + case Player.STORE_PRIVATE_MANUFACTURE: + { + final ManufactureList createList = new ManufactureList(); + while (items.next()) + { + createList.add(new ManufactureItem(items.getInt(2), items.getInt(4))); + } + player.setCreateList(createList); + player.getCreateList().setStoreName(rs.getString("title")); + break; + } + default: + { + LOGGER.info("Offline trader " + player.getName() + " finished to sell his items"); + } } - player.getBuyList().setTitle(rs.getString("title")); - break; - } - case Player.STORE_PRIVATE_SELL: - case Player.STORE_PRIVATE_PACKAGE_SELL: - { - while (items.next()) - { - player.getSellList().addItem(items.getInt(2), items.getInt(3), items.getInt(4)); - } - player.getSellList().setTitle(rs.getString("title")); - player.getSellList().setPackaged(type == Player.STORE_PRIVATE_PACKAGE_SELL); - break; - } - case Player.STORE_PRIVATE_MANUFACTURE: - { - final ManufactureList createList = new ManufactureList(); - while (items.next()) - { - createList.add(new ManufactureItem(items.getInt(2), items.getInt(4))); - } - player.setCreateList(createList); - player.getCreateList().setStoreName(rs.getString("title")); - break; - } - default: - { - LOGGER.info("Offline trader " + player.getName() + " finished to sell his items"); } } - items.close(); - stmItems.close(); - player.sitDown(); if (Config.OFFLINE_MODE_SET_INVULNERABLE) { @@ -278,57 +272,46 @@ public class OfflineTraderTable } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[loadOffliners()]: Error loading trader: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error loading trader: " + player, e); if (player != null) { player.logout(); } } } - rs.close(); - stm.close(); + World.OFFLINE_TRADE_COUNT = nTraders; - LOGGER.info("Loaded " + nTraders + " offline traders."); + LOGGER.info(getClass().getSimpleName() + ": Loaded " + nTraders + " offline traders."); } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[loadOffliners()]: Error while loading offline traders: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while loading offline traders: ", e); } } - public static void storeOffliner(Player pc) + public void storeOffliner(Player trader) { - if ((pc.getPrivateStoreType() == Player.STORE_PRIVATE_NONE) || (!pc.isInOfflineMode())) + if ((trader.getPrivateStoreType() == Player.STORE_PRIVATE_NONE) || (!trader.isInOfflineMode())) { return; } - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); + PreparedStatement stm2 = con.prepareStatement(CLEAR_OFFLINE_TABLE_PLAYER); + PreparedStatement stm3 = con.prepareStatement(SAVE_ITEMS); + PreparedStatement stm4 = con.prepareStatement(SAVE_OFFLINE_STATUS)) { - PreparedStatement stm = con.prepareStatement(DELETE_OFFLINE_TABLE_ALL_ITEMS); - stm.setInt(1, pc.getObjectId()); - stm.execute(); - stm.clearParameters(); - stm.close(); - stm = con.prepareStatement(DELETE_OFFLINE_TRADER); - stm.setInt(1, pc.getObjectId()); - stm.execute(); - stm.clearParameters(); - stm.close(); - + stm1.setInt(1, trader.getObjectId()); + stm1.execute(); + stm2.setInt(1, trader.getObjectId()); + stm2.execute(); con.setAutoCommit(false); // avoid halfway done - stm = con.prepareStatement(SAVE_OFFLINE_STATUS); - final PreparedStatement stmItems = con.prepareStatement(SAVE_ITEMS); boolean save = true; - try { - stm.setInt(1, pc.getObjectId()); // Char Id - stm.setLong(2, pc.getOfflineStartTime()); - stm.setInt(3, pc.getPrivateStoreType()); // store type String title = null; - - switch (pc.getPrivateStoreType()) + switch (trader.getPrivateStoreType()) { case Player.STORE_PRIVATE_BUY: { @@ -336,16 +319,16 @@ public class OfflineTraderTable { break; } - title = pc.getBuyList().getTitle(); - for (TradeItem i : pc.getBuyList().getItems()) + title = trader.getBuyList().getTitle(); + for (TradeItem i : trader.getBuyList().getItems()) { - stmItems.setInt(1, pc.getObjectId()); - stmItems.setInt(2, i.getItem().getItemId()); - stmItems.setLong(3, i.getCount()); - stmItems.setLong(4, i.getPrice()); - stmItems.setLong(5, i.getEnchant()); - stmItems.executeUpdate(); - stmItems.clearParameters(); + stm3.setInt(1, trader.getObjectId()); + stm3.setInt(2, i.getItem().getItemId()); + stm3.setLong(3, i.getCount()); + stm3.setLong(4, i.getPrice()); + stm3.setLong(5, i.getEnchant()); + stm3.executeUpdate(); + stm3.clearParameters(); } break; } @@ -356,17 +339,17 @@ public class OfflineTraderTable { break; } - title = pc.getSellList().getTitle(); - pc.getSellList().updateItems(); - for (TradeItem i : pc.getSellList().getItems()) + title = trader.getSellList().getTitle(); + trader.getSellList().updateItems(); + for (TradeItem i : trader.getSellList().getItems()) { - stmItems.setInt(1, pc.getObjectId()); - stmItems.setInt(2, i.getObjectId()); - stmItems.setLong(3, i.getCount()); - stmItems.setLong(4, i.getPrice()); - stmItems.setLong(5, i.getEnchant()); - stmItems.executeUpdate(); - stmItems.clearParameters(); + stm3.setInt(1, trader.getObjectId()); + stm3.setInt(2, i.getObjectId()); + stm3.setLong(3, i.getCount()); + stm3.setLong(4, i.getPrice()); + stm3.setLong(5, i.getEnchant()); + stm3.executeUpdate(); + stm3.clearParameters(); } break; } @@ -376,46 +359,59 @@ public class OfflineTraderTable { break; } - title = pc.getCreateList().getStoreName(); - for (ManufactureItem i : pc.getCreateList().getList()) + title = trader.getCreateList().getStoreName(); + for (ManufactureItem i : trader.getCreateList().getList()) { - stmItems.setInt(1, pc.getObjectId()); - stmItems.setInt(2, i.getRecipeId()); - stmItems.setLong(3, 0); - stmItems.setLong(4, i.getCost()); - stmItems.setLong(5, 0); - stmItems.executeUpdate(); - stmItems.clearParameters(); + stm3.setInt(1, trader.getObjectId()); + stm3.setInt(2, i.getRecipeId()); + stm3.setLong(3, 0); + stm3.setLong(4, i.getCost()); + stm3.setLong(5, 0); + stm3.executeUpdate(); + stm3.clearParameters(); } break; } default: { - // LOGGER.info( "OfflineTraderTable[storeOffliner()]: Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); - // no save for this kind of shop + // LOGGER.info(getClass().getSimpleName() + ": Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); save = false; } } if (save) { - stm.setString(4, title); - stm.executeUpdate(); - stm.clearParameters(); - con.commit(); // flush + stm4.setInt(1, trader.getObjectId()); // Char Id + stm4.setLong(2, trader.getOfflineStartTime()); + stm4.setInt(3, trader.getPrivateStoreType()); // store type + stm4.setString(4, title); + stm4.executeUpdate(); + stm4.clearParameters(); + con.commit(); } } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeOffliner()]: Error while saving offline trader: " + pc.getObjectId() + " " + e); + LOGGER.warning(getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e); } - - stm.close(); - stmItems.close(); } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeOffliner()]: Error while saving offline traders: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e); } } + + /** + * Gets the single instance of OfflineTradersTable. + * @return single instance of OfflineTradersTable + */ + public static OfflineTraderTable getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final OfflineTraderTable INSTANCE = new OfflineTraderTable(); + } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/TradeList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/TradeList.java index 5bbc8d13a6..5604d28184 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/TradeList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/TradeList.java @@ -1054,7 +1054,7 @@ public class TradeList if (_owner.isInOfflineMode()) { - OfflineTraderTable.storeOffliner(_owner); + OfflineTraderTable.getInstance().storeOffliner(_owner); } return true; @@ -1303,7 +1303,7 @@ public class TradeList if (_owner.isInOfflineMode()) { - OfflineTraderTable.storeOffliner(_owner); + OfflineTraderTable.getInstance().storeOffliner(_owner); } return true; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java index 1b6dccd8cb..498288987f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java @@ -685,7 +685,7 @@ public class GameClient extends ChannelInboundHandler player.setOfflineStartTime(Chronos.currentTimeMillis()); } - OfflineTraderTable.storeOffliner(player); + OfflineTraderTable.getInstance().storeOffliner(player); World.OFFLINE_TRADE_COUNT++; return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java index c701918ed9..f2396924f1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java @@ -417,7 +417,7 @@ public class GameServer if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS) { - OfflineTraderTable.restoreOfflineTraders(); + OfflineTraderTable.getInstance().restoreOfflineTraders(); } printSection("Protection"); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java index 05b3719f23..77d678bff7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java @@ -415,7 +415,7 @@ public class Shutdown extends Thread { if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS) { - OfflineTraderTable.storeOffliners(); + OfflineTraderTable.getInstance().storeOffliners(); } } catch (Throwable t) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 19ce538fd3..b2bd1a7471 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -19,7 +19,9 @@ package org.l2jmobius.gameserver.data.sql; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.Statement; import java.util.Calendar; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.Config; @@ -34,9 +36,6 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.network.GameClient; -/** - * @author Shyla - */ public class OfflineTraderTable { private static final Logger LOGGER = Logger.getLogger(OfflineTraderTable.class.getName()); @@ -44,39 +43,37 @@ public class OfflineTraderTable // SQL DEFINITIONS private static final String SAVE_OFFLINE_STATUS = "INSERT INTO character_offline_trade (`charId`,`time`,`type`,`title`) VALUES (?,?,?,?)"; private static final String SAVE_ITEMS = "INSERT INTO character_offline_trade_items (`charId`,`item`,`count`,`price`,`enchant`) VALUES (?,?,?,?,?)"; - private static final String DELETE_OFFLINE_TABLE_ALL_ITEMS = "delete from character_offline_trade_items where charId=?"; - private static final String DELETE_OFFLINE_TRADER = "DELETE FROM character_offline_trade where charId=?"; private static final String CLEAR_OFFLINE_TABLE = "DELETE FROM character_offline_trade"; + private static final String CLEAR_OFFLINE_TABLE_PLAYER = "DELETE FROM character_offline_trade WHERE `charId`=?"; private static final String CLEAR_OFFLINE_TABLE_ITEMS = "DELETE FROM character_offline_trade_items"; + private static final String CLEAR_OFFLINE_TABLE_ITEMS_PLAYER = "DELETE FROM character_offline_trade_items WHERE `charId`=?"; private static final String LOAD_OFFLINE_STATUS = "SELECT * FROM character_offline_trade"; - private static final String LOAD_OFFLINE_ITEMS = "SELECT * FROM character_offline_trade_items WHERE charId = ?"; + private static final String LOAD_OFFLINE_ITEMS = "SELECT * FROM character_offline_trade_items WHERE `charId`=?"; - // called when server will go off, different from storeOffliner because - // of store of normal sellers/buyers also if not in offline mode - public static void storeOffliners() + protected OfflineTraderTable() { - try (Connection con = DatabaseFactory.getConnection()) + } + + public void storeOffliners() + { + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE); + PreparedStatement stm2 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS); + PreparedStatement stm3 = con.prepareStatement(SAVE_OFFLINE_STATUS); + PreparedStatement stmItems = con.prepareStatement(SAVE_ITEMS)) { - PreparedStatement stm = con.prepareStatement(CLEAR_OFFLINE_TABLE); - stm.execute(); - stm.close(); - stm = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS); - stm.execute(); - stm.close(); - + stm1.execute(); + stm2.execute(); con.setAutoCommit(false); // avoid halfway done - stm = con.prepareStatement(SAVE_OFFLINE_STATUS); - final PreparedStatement stmItems = con.prepareStatement(SAVE_ITEMS); for (Player pc : World.getInstance().getAllPlayers()) { try { - // without second check, server will store all guys that are in shop mode - if ((pc.getPrivateStoreType() != Player.STORE_PRIVATE_NONE)/* && (pc.isOffline()) */) + if ((pc.getPrivateStoreType() != Player.STORE_PRIVATE_NONE)) { - stm.setInt(1, pc.getObjectId()); // Char Id - stm.setLong(2, pc.getOfflineStartTime()); - stm.setInt(3, pc.getPrivateStoreType()); // store type + stm3.setInt(1, pc.getObjectId()); + stm3.setLong(2, pc.getOfflineStartTime()); + stm3.setInt(3, pc.getPrivateStoreType()); String title = null; switch (pc.getPrivateStoreType()) @@ -142,40 +139,37 @@ public class OfflineTraderTable } default: { - // LOGGER.info( "OfflineTraderTable[storeTradeItems()]: Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); - // no save for this kind of shop + // LOGGER.info(getClass().getSimpleName() + ": Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); continue; } } - stm.setString(4, title); - stm.executeUpdate(); - stm.clearParameters(); - con.commit(); // flush + stm3.setString(4, title); + stm3.executeUpdate(); + stm3.clearParameters(); + con.commit(); } } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeTradeItems()]: Error while saving offline trader: " + pc.getObjectId() + " " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + pc.getObjectId() + " " + e, e); } } - stm.close(); - stmItems.close(); - LOGGER.info("Offline traders stored."); + LOGGER.info(getClass().getSimpleName() + ": Offline traders stored."); } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeTradeItems()]: Error while saving offline traders: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static void restoreOfflineTraders() + public void restoreOfflineTraders() { - LOGGER.info("Loading offline traders..."); + LOGGER.info(getClass().getSimpleName() + ": Loading offline traders..."); int nTraders = 0; - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + Statement stm = con.createStatement(); + ResultSet rs = stm.executeQuery(LOAD_OFFLINE_STATUS)) { - final PreparedStatement stm = con.prepareStatement(LOAD_OFFLINE_STATUS); - final ResultSet rs = stm.executeQuery(); while (rs.next()) { final long time = rs.getLong("time"); @@ -186,7 +180,6 @@ public class OfflineTraderTable cal.add(Calendar.DAY_OF_YEAR, Config.OFFLINE_MAX_DAYS); if (cal.getTimeInMillis() <= Chronos.currentTimeMillis()) { - LOGGER.info("Offline trader with id " + rs.getInt("charId") + " reached OfflineMaxDays, kicked."); continue; } } @@ -198,6 +191,7 @@ public class OfflineTraderTable } Player player = null; + try { final GameClient client = new GameClient(); @@ -215,51 +209,51 @@ public class OfflineTraderTable } player.spawnMe(player.getX(), player.getY(), player.getZ()); LoginServerThread.getInstance().addGameServerLogin(player.getAccountName(), client); - final PreparedStatement stmItems = con.prepareStatement(LOAD_OFFLINE_ITEMS); - stmItems.setInt(1, player.getObjectId()); - final ResultSet items = stmItems.executeQuery(); - - switch (type) + try (PreparedStatement stmItems = con.prepareStatement(LOAD_OFFLINE_ITEMS)) { - case Player.STORE_PRIVATE_BUY: + stmItems.setInt(1, player.getObjectId()); + try (ResultSet items = stmItems.executeQuery()) { - while (items.next()) + switch (type) { - player.getBuyList().addItemByItemId(items.getInt(2), items.getInt(3), items.getInt(4), items.getInt(5)); + case Player.STORE_PRIVATE_BUY: + { + while (items.next()) + { + player.getBuyList().addItemByItemId(items.getInt(2), items.getInt(3), items.getInt(4), items.getInt(5)); + } + player.getBuyList().setTitle(rs.getString("title")); + break; + } + case Player.STORE_PRIVATE_SELL: + case Player.STORE_PRIVATE_PACKAGE_SELL: + { + while (items.next()) + { + player.getSellList().addItem(items.getInt(2), items.getInt(3), items.getInt(4)); + } + player.getSellList().setTitle(rs.getString("title")); + player.getSellList().setPackaged(type == Player.STORE_PRIVATE_PACKAGE_SELL); + break; + } + case Player.STORE_PRIVATE_MANUFACTURE: + { + final ManufactureList createList = new ManufactureList(); + while (items.next()) + { + createList.add(new ManufactureItem(items.getInt(2), items.getInt(4))); + } + player.setCreateList(createList); + player.getCreateList().setStoreName(rs.getString("title")); + break; + } + default: + { + LOGGER.info("Offline trader " + player.getName() + " finished to sell his items"); + } } - player.getBuyList().setTitle(rs.getString("title")); - break; - } - case Player.STORE_PRIVATE_SELL: - case Player.STORE_PRIVATE_PACKAGE_SELL: - { - while (items.next()) - { - player.getSellList().addItem(items.getInt(2), items.getInt(3), items.getInt(4)); - } - player.getSellList().setTitle(rs.getString("title")); - player.getSellList().setPackaged(type == Player.STORE_PRIVATE_PACKAGE_SELL); - break; - } - case Player.STORE_PRIVATE_MANUFACTURE: - { - final ManufactureList createList = new ManufactureList(); - while (items.next()) - { - createList.add(new ManufactureItem(items.getInt(2), items.getInt(4))); - } - player.setCreateList(createList); - player.getCreateList().setStoreName(rs.getString("title")); - break; - } - default: - { - LOGGER.info("Offline trader " + player.getName() + " finished to sell his items"); } } - items.close(); - stmItems.close(); - player.sitDown(); if (Config.OFFLINE_MODE_SET_INVULNERABLE) { @@ -278,57 +272,46 @@ public class OfflineTraderTable } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[loadOffliners()]: Error loading trader: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error loading trader: " + player, e); if (player != null) { player.logout(); } } } - rs.close(); - stm.close(); + World.OFFLINE_TRADE_COUNT = nTraders; - LOGGER.info("Loaded " + nTraders + " offline traders."); + LOGGER.info(getClass().getSimpleName() + ": Loaded " + nTraders + " offline traders."); } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[loadOffliners()]: Error while loading offline traders: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while loading offline traders: ", e); } } - public static void storeOffliner(Player pc) + public void storeOffliner(Player trader) { - if ((pc.getPrivateStoreType() == Player.STORE_PRIVATE_NONE) || (!pc.isInOfflineMode())) + if ((trader.getPrivateStoreType() == Player.STORE_PRIVATE_NONE) || (!trader.isInOfflineMode())) { return; } - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); + PreparedStatement stm2 = con.prepareStatement(CLEAR_OFFLINE_TABLE_PLAYER); + PreparedStatement stm3 = con.prepareStatement(SAVE_ITEMS); + PreparedStatement stm4 = con.prepareStatement(SAVE_OFFLINE_STATUS)) { - PreparedStatement stm = con.prepareStatement(DELETE_OFFLINE_TABLE_ALL_ITEMS); - stm.setInt(1, pc.getObjectId()); - stm.execute(); - stm.clearParameters(); - stm.close(); - stm = con.prepareStatement(DELETE_OFFLINE_TRADER); - stm.setInt(1, pc.getObjectId()); - stm.execute(); - stm.clearParameters(); - stm.close(); - + stm1.setInt(1, trader.getObjectId()); + stm1.execute(); + stm2.setInt(1, trader.getObjectId()); + stm2.execute(); con.setAutoCommit(false); // avoid halfway done - stm = con.prepareStatement(SAVE_OFFLINE_STATUS); - final PreparedStatement stmItems = con.prepareStatement(SAVE_ITEMS); boolean save = true; - try { - stm.setInt(1, pc.getObjectId()); // Char Id - stm.setLong(2, pc.getOfflineStartTime()); - stm.setInt(3, pc.getPrivateStoreType()); // store type String title = null; - - switch (pc.getPrivateStoreType()) + switch (trader.getPrivateStoreType()) { case Player.STORE_PRIVATE_BUY: { @@ -336,16 +319,16 @@ public class OfflineTraderTable { break; } - title = pc.getBuyList().getTitle(); - for (TradeItem i : pc.getBuyList().getItems()) + title = trader.getBuyList().getTitle(); + for (TradeItem i : trader.getBuyList().getItems()) { - stmItems.setInt(1, pc.getObjectId()); - stmItems.setInt(2, i.getItem().getItemId()); - stmItems.setLong(3, i.getCount()); - stmItems.setLong(4, i.getPrice()); - stmItems.setLong(5, i.getEnchant()); - stmItems.executeUpdate(); - stmItems.clearParameters(); + stm3.setInt(1, trader.getObjectId()); + stm3.setInt(2, i.getItem().getItemId()); + stm3.setLong(3, i.getCount()); + stm3.setLong(4, i.getPrice()); + stm3.setLong(5, i.getEnchant()); + stm3.executeUpdate(); + stm3.clearParameters(); } break; } @@ -356,17 +339,17 @@ public class OfflineTraderTable { break; } - title = pc.getSellList().getTitle(); - pc.getSellList().updateItems(); - for (TradeItem i : pc.getSellList().getItems()) + title = trader.getSellList().getTitle(); + trader.getSellList().updateItems(); + for (TradeItem i : trader.getSellList().getItems()) { - stmItems.setInt(1, pc.getObjectId()); - stmItems.setInt(2, i.getObjectId()); - stmItems.setLong(3, i.getCount()); - stmItems.setLong(4, i.getPrice()); - stmItems.setLong(5, i.getEnchant()); - stmItems.executeUpdate(); - stmItems.clearParameters(); + stm3.setInt(1, trader.getObjectId()); + stm3.setInt(2, i.getObjectId()); + stm3.setLong(3, i.getCount()); + stm3.setLong(4, i.getPrice()); + stm3.setLong(5, i.getEnchant()); + stm3.executeUpdate(); + stm3.clearParameters(); } break; } @@ -376,46 +359,59 @@ public class OfflineTraderTable { break; } - title = pc.getCreateList().getStoreName(); - for (ManufactureItem i : pc.getCreateList().getList()) + title = trader.getCreateList().getStoreName(); + for (ManufactureItem i : trader.getCreateList().getList()) { - stmItems.setInt(1, pc.getObjectId()); - stmItems.setInt(2, i.getRecipeId()); - stmItems.setLong(3, 0); - stmItems.setLong(4, i.getCost()); - stmItems.setLong(5, 0); - stmItems.executeUpdate(); - stmItems.clearParameters(); + stm3.setInt(1, trader.getObjectId()); + stm3.setInt(2, i.getRecipeId()); + stm3.setLong(3, 0); + stm3.setLong(4, i.getCost()); + stm3.setLong(5, 0); + stm3.executeUpdate(); + stm3.clearParameters(); } break; } default: { - // LOGGER.info( "OfflineTraderTable[storeOffliner()]: Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); - // no save for this kind of shop + // LOGGER.info(getClass().getSimpleName() + ": Error while saving offline trader: " + pc.getObjectId() + ", store type: "+pc.getPrivateStoreType()); save = false; } } if (save) { - stm.setString(4, title); - stm.executeUpdate(); - stm.clearParameters(); - con.commit(); // flush + stm4.setInt(1, trader.getObjectId()); // Char Id + stm4.setLong(2, trader.getOfflineStartTime()); + stm4.setInt(3, trader.getPrivateStoreType()); // store type + stm4.setString(4, title); + stm4.executeUpdate(); + stm4.clearParameters(); + con.commit(); } } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeOffliner()]: Error while saving offline trader: " + pc.getObjectId() + " " + e); + LOGGER.warning(getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e); } - - stm.close(); - stmItems.close(); } catch (Exception e) { - LOGGER.warning("OfflineTraderTable[storeOffliner()]: Error while saving offline traders: " + e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e); } } + + /** + * Gets the single instance of OfflineTradersTable. + * @return single instance of OfflineTradersTable + */ + public static OfflineTraderTable getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final OfflineTraderTable INSTANCE = new OfflineTraderTable(); + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/TradeList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/TradeList.java index 3a38c7d580..9bf42a7b7d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/TradeList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/TradeList.java @@ -1066,7 +1066,7 @@ public class TradeList if (_owner.isInOfflineMode()) { - OfflineTraderTable.storeOffliner(_owner); + OfflineTraderTable.getInstance().storeOffliner(_owner); } return true; @@ -1323,7 +1323,7 @@ public class TradeList if (_owner.isInOfflineMode()) { - OfflineTraderTable.storeOffliner(_owner); + OfflineTraderTable.getInstance().storeOffliner(_owner); } return true; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java index d60516a936..a0e20b5b71 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java @@ -679,7 +679,7 @@ public class GameClient extends ChannelInboundHandler player.setOfflineStartTime(Chronos.currentTimeMillis()); } - OfflineTraderTable.storeOffliner(player); + OfflineTraderTable.getInstance().storeOffliner(player); World.OFFLINE_TRADE_COUNT++; return; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java index 4ff0a4cd75..21bae090eb 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -61,6 +61,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.ClassListData; @@ -6085,8 +6086,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 5ed56c7dc1..78e99cafe1 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -609,7 +609,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 44d0e27bb1..5ce6e3980e 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -149,7 +149,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index b0e0ce8e4a..e3b6bd2d41 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -138,7 +138,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index dab436433a..aa36e526a8 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -145,7 +145,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java index f0c5a36bb4..da19ceeb62 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -61,6 +61,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.CategoryData; import org.l2jmobius.gameserver.data.xml.ClassListData; @@ -5982,8 +5983,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 475000b46b..6e50d0ed69 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -608,7 +608,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 44d0e27bb1..5ce6e3980e 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -149,7 +149,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index b0e0ce8e4a..e3b6bd2d41 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -138,7 +138,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 2d14de954f..e1d699cf5a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -145,7 +145,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java index 7ba9ebfbb5..2b182e5b3b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -65,6 +65,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4108,11 +4109,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5723,8 +5724,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 9580f167aa..369bc20c4e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -574,7 +574,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java index 78047a1a09..2fd627f016 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -65,6 +65,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4108,11 +4109,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5723,8 +5724,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 6229dace78..04bf851e0c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -574,7 +574,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java index 37418d2741..1e36366187 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -65,6 +65,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4092,11 +4093,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5709,8 +5710,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 60acd1729f..abc244ddcd 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -577,7 +577,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java index ab62866b61..2e63816b25 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -66,6 +66,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4106,11 +4107,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5723,8 +5724,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 60acd1729f..abc244ddcd 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -577,7 +577,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java index e8a0b746dc..fe63e105a1 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -66,6 +66,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4106,11 +4107,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5723,8 +5724,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 60acd1729f..abc244ddcd 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -577,7 +577,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java index 861f9581f8..a798d0c789 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -67,6 +67,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4032,11 +4033,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5677,8 +5678,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 0b31a7b0ff..f03c9a44e2 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -581,7 +581,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java index f6265f44b3..cc06bf2d79 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4089,11 +4090,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5704,8 +5705,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 5e6c35c8df..6c76a72c49 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -569,7 +569,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java index 40c728fbcb..a03bf3fbdf 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -67,6 +67,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4118,11 +4119,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5754,8 +5755,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 16e00620ca..4b80180504 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -584,7 +584,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java index ea8dfb9325..3d8916c490 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -67,6 +67,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4159,11 +4160,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5795,8 +5796,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 1b97ee5f2c..148829e225 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -591,7 +591,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe(); diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java index 71055b52c2..f0e2cf82a3 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/OfflineTraderTable.java @@ -325,7 +325,7 @@ public class OfflineTraderTable } } - public static synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) + public synchronized void onTransaction(Player trader, boolean finished, boolean firstCall) { try (Connection con = DatabaseFactory.getConnection(); PreparedStatement stm1 = con.prepareStatement(CLEAR_OFFLINE_TABLE_ITEMS_PLAYER); @@ -336,14 +336,12 @@ public class OfflineTraderTable String title = null; stm1.setInt(1, trader.getObjectId()); // Char Id stm1.execute(); - stm1.close(); // Trade is done - clear info if (finished) { stm2.setInt(1, trader.getObjectId()); // Char Id stm2.execute(); - stm2.close(); } else { @@ -421,7 +419,6 @@ public class OfflineTraderTable break; } } - stm3.close(); if (firstCall) { stm4.setInt(1, trader.getObjectId()); // Char Id @@ -430,23 +427,22 @@ public class OfflineTraderTable stm4.setString(4, title); stm4.executeUpdate(); stm4.clearParameters(); - stm4.close(); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline trader: " + trader.getObjectId() + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline trader: " + trader.getObjectId() + " " + e, e); } } } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[storeTradeItems()]: Error while saving offline traders: " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while saving offline traders: " + e, e); } } - public static synchronized void removeTrader(int traderObjId) + public synchronized void removeTrader(int traderObjId) { World.OFFLINE_TRADE_COUNT--; @@ -456,15 +452,13 @@ public class OfflineTraderTable { stm1.setInt(1, traderObjId); stm1.execute(); - stm1.close(); stm2.setInt(1, traderObjId); stm2.execute(); - stm2.close(); } catch (Exception e) { - LOGGER.log(Level.WARNING, "OfflineTradersTable[removeTrader()]: Error while removing offline trader: " + traderObjId + " " + e, e); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Error while removing offline trader: " + traderObjId + " " + e, e); } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java index ea8dfb9325..3d8916c490 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -67,6 +67,7 @@ import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.data.sql.CharSummonTable; import org.l2jmobius.gameserver.data.sql.ClanTable; +import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.data.xml.AttendanceRewardData; import org.l2jmobius.gameserver.data.xml.CategoryData; @@ -4159,11 +4160,11 @@ public class Player extends Playable } /** - * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this - * Player state modifications, server just need to go through _knownPlayers to send Server->Client Packet Actions: + * Send a Server->Client packet UserInfo to this Player and CharInfo to all Player in its _KnownPlayers. Concept: Others Player in the detection area of the Player are identified in _knownPlayers. In order to inform other players of this Player state modifications, server + * just need to go through _knownPlayers to send Server->Client Packet Actions: *
  • Send a Server->Client packet UserInfo to this Player (Public and Private Data)
  • - *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, - * STR, DEX... + *
  • Send a Server->Client packet CharInfo to all Player in _KnownPlayers of the Player (Public data only)
  • Caution: DON'T SEND UserInfo packet to other players instead of CharInfo packet. Indeed, UserInfo packet contains PRIVATE DATA as MaxHP, STR, + * DEX... */ public void broadcastUserInfo() { @@ -5795,8 +5796,8 @@ public class Player extends Playable _privateStoreType = privateStoreType; if (Config.OFFLINE_DISCONNECT_FINISHED && (privateStoreType == PrivateStoreType.NONE) && ((_client == null) || _client.isDetached())) { + OfflineTraderTable.getInstance().removeTrader(getObjectId()); Disconnection.of(this).storeMe().deleteMe(); - World.OFFLINE_TRADE_COUNT--; } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 1b97ee5f2c..148829e225 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -591,7 +591,7 @@ public class EnterWorld implements IClientIncomingPacket if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, true, false); + OfflineTraderTable.getInstance().onTransaction(player, true, false); } // Check if expoff is enabled. diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 4d4dbef780..251757c0ba 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -153,7 +153,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index aaf6f2f5ba..9998465898 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -141,7 +141,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket // Update offline trade record, if realtime saving is enabled if (Config.OFFLINE_TRADE_ENABLE && Config.STORE_OFFLINE_TRADE_IN_REALTIME && ((storePlayer.getClient() == null) || storePlayer.getClient().isDetached())) { - OfflineTraderTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false); + OfflineTraderTable.getInstance().onTransaction(storePlayer, storeList.getItemCount() == 0, false); } if (storeList.getItemCount() == 0) diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 183c787ba4..2a9bae4f90 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -151,7 +151,7 @@ public class OfflineTradeUtil // Store trade on exit, if realtime saving is enabled. if (Config.STORE_OFFLINE_TRADE_IN_REALTIME) { - OfflineTraderTable.onTransaction(player, false, true); + OfflineTraderTable.getInstance().onTransaction(player, false, true); } player.storeMe();