Fixed offline trader issues.

This commit is contained in:
MobiusDevelopment
2021-12-05 11:21:17 +00:00
parent f24e97f0ba
commit d5b5797428
148 changed files with 631 additions and 754 deletions

View File

@@ -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);
}
}

View File

@@ -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--;
}
}

View File

@@ -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.

View File

@@ -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)

View File

@@ -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)

View File

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