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();