Save offline traders in real time.

This commit is contained in:
mobius
2015-01-02 12:18:31 +00:00
parent 13dc95d50b
commit 0a69033fa0
8 changed files with 143 additions and 4 deletions

View File

@@ -44,6 +44,7 @@ import com.l2jserver.gameserver.LoginServerThread.SessionKey;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.datatables.CharNameTable;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.OfflineTradersTable;
import com.l2jserver.gameserver.datatables.SecondaryAuthData;
import com.l2jserver.gameserver.instancemanager.AntiFeedManager;
import com.l2jserver.gameserver.model.CharSelectInfoPackage;
@@ -804,6 +805,12 @@ public final class L2GameClient extends MMOClient<MMOConnection<L2GameClient>> i
getActiveChar().setOfflineStartTime(System.currentTimeMillis());
}
// Store trade on exit, if realtime saving is enabled.
if (Config.STORE_OFFLINE_TRADE_IN_REALTIME)
{
OfflineTradersTable.onTransaction(getActiveChar(), false, true);
}
final LogRecord record = new LogRecord(Level.INFO, "Entering offline mode");
record.setParameters(new Object[]
{

View File

@@ -24,6 +24,7 @@ import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.datatables.AdminTable;
import com.l2jserver.gameserver.datatables.AnnouncementsTable;
import com.l2jserver.gameserver.datatables.BeautyShopData;
import com.l2jserver.gameserver.datatables.OfflineTradersTable;
import com.l2jserver.gameserver.datatables.SkillTreesData;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
@@ -575,6 +576,11 @@ public class EnterWorld extends L2GameClientPacket
activeChar.sendPacket(ExNotifyPremiumItem.STATIC_PACKET);
}
if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.STORE_OFFLINE_TRADE_IN_REALTIME)
{
OfflineTradersTable.onTransaction(activeChar, true, false);
}
activeChar.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(activeChar.getRace(), activeChar.getAppearance().getSexType()))

View File

@@ -22,6 +22,7 @@ import static com.l2jserver.gameserver.model.actor.L2Npc.INTERACTION_DISTANCE;
import javolution.util.FastSet;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.OfflineTradersTable;
import com.l2jserver.gameserver.enums.PrivateStoreType;
import com.l2jserver.gameserver.model.ItemRequest;
import com.l2jserver.gameserver.model.L2Object;
@@ -153,6 +154,12 @@ public final class RequestPrivateStoreBuy extends L2GameClientPacket
return;
}
// 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()))
{
OfflineTradersTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false);
}
if (storeList.getItemCount() == 0)
{
storePlayer.setPrivateStoreType(PrivateStoreType.NONE);

View File

@@ -21,6 +21,7 @@ package com.l2jserver.gameserver.network.clientpackets;
import static com.l2jserver.gameserver.model.actor.L2Npc.INTERACTION_DISTANCE;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.OfflineTradersTable;
import com.l2jserver.gameserver.enums.PrivateStoreType;
import com.l2jserver.gameserver.model.ItemRequest;
import com.l2jserver.gameserver.model.L2World;
@@ -138,6 +139,12 @@ public final class RequestPrivateStoreSell extends L2GameClientPacket
return;
}
// 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()))
{
OfflineTradersTable.onTransaction(storePlayer, storeList.getItemCount() == 0, false);
}
if (storeList.getItemCount() == 0)
{
storePlayer.setPrivateStoreType(PrivateStoreType.NONE);