Código:
Index: data/scripts/handlers/chathandlers/ChatTell.java
===================================================================
--- data/scripts/handlers/chathandlers/ChatTell.java (revision 5944)
+++ data/scripts/handlers/chathandlers/ChatTell.java (working copy)
@@ -76,6 +76,11 @@
activeChar.sendMessage("Player is chat banned.");
return;
}
+ if (receiver.getClient().isDetached())
+ {
+ activeChar.sendMessage("Player is in offline mode.");
+ return;
+ }
if (!receiver.getMessageRefusal())
{
Index: java/config/l2jmods.properties
===================================================================
--- java/config/l2jmods.properties (revision 2917)
+++ java/config/l2jmods.properties (working copy)
@@ -197,6 +197,24 @@
# ---------------------------------------------------------------------------
+# Offline trade/craft
+# ---------------------------------------------------------------------------
+# Option to enable or disable offline trade feature.
+# Enable -> true, Disable -> false
+OfflineTradeEnable = False
+
+# Option to enable or disable offline craft feature.
+# Enable -> true, Disable -> false
+OfflineCraftEnable = False
+
+# If set to True, name color will be changed then entering offline mode
+OfflineSetNameColor = False
+
+# Color of the name in offline mode (if OfflineSetNameColor = True)
+OfflineNameColor = 808080
+
+
+# ---------------------------------------------------------------------------
# Mana Drugs/Potions
# ---------------------------------------------------------------------------
# This option will enable core support for:
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java (revision 2917)
+++ java/net/sf/l2j/Config.java (working copy)
@@ -538,6 +538,10 @@
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_CLAN;
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE;
public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT;
+ public static boolean OFFLINE_TRADE_ENABLE;
+ public static boolean OFFLINE_CRAFT_ENABLE;
+ public static boolean OFFLINE_SET_NAME_COLOR;
+ public static int OFFLINE_NAME_COLOR;
public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
@@ -1716,6 +1720,11 @@
BANKING_SYSTEM_GOLDBARS = Integer.parseInt(L2JModSettings.getProperty("BankingGoldbarCount", "1"));
BANKING_SYSTEM_ADENA = Integer.parseInt(L2JModSettings.getProperty("BankingAdenaCount", "500000000"));
+ OFFLINE_TRADE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("OfflineTradeEnable", "false"));
+ OFFLINE_CRAFT_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("OfflineCraftEnable", "false"));
+ OFFLINE_SET_NAME_COLOR = Boolean.parseBoolean(L2JModSettings.getProperty("OfflineSetNameColor", "false"));
+ OFFLINE_NAME_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("OfflineNameColor", "808080"));
+
L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(L2JModSettings.getProperty("EnableManaPotionSupport", "false"));
}
catch (Exception e)
Index: java/net/sf/l2j/gameserver/network/L2GameClient.java
===================================================================
--- java/net/sf/l2j/gameserver/network/L2GameClient.java (revision 2917)
+++ java/net/sf/l2j/gameserver/network/L2GameClient.java (working copy)
@@ -39,6 +39,7 @@
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.L2Event;
+import net.sf.l2j.gameserver.model.entity.TvTEvent;
import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
import net.sf.l2j.util.EventData;
@@ -580,9 +581,25 @@
{
isDetached(true);
L2PcInstance player = L2GameClient.this.getActiveChar();
- if (player != null && player.isInCombat())
+ if (player != null)
{
- fast = false;
+ if (!player.isInOlympiadMode() && !player.isFestivalParticipant() && !TvTEvent.isPlayerParticipant(player.getObjectId()) && !player.isInJail())
+ {
+ if ((player.isInStoreMode() && Config.OFFLINE_TRADE_ENABLE) || (player.isInCraftMode() && Config.OFFLINE_CRAFT_ENABLE))
+ {
+ player.leaveParty();
+ if (Config.OFFLINE_SET_NAME_COLOR)
+ {
+ player.getAppearance().setNameColor(Config.OFFLINE_NAME_COLOR);
+ player.broadcastUserInfo();
+ }
+ return;
+ }
+ }
+ if (player.isInCombat())
+ {
+ fast = false;
+ }
}
cleanMe(fast);
}
Index: java/net/sf/l2j/gameserver/network/clientpackets/Logout.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (revision 2917)
+++ java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (working copy)
@@ -103,6 +103,13 @@
}
TvTEvent.onLogout(player);
+
+ if ((player.isInStoreMode() && Config.OFFLINE_TRADE_ENABLE) || (player.isInCraftMode() && Config.OFFLINE_CRAFT_ENABLE))
+ {
+ player.closeNetConnection();
+ return;
+ }
+
RegionBBSManager.getInstance().changeCommunityBoard();
player.deleteMe();
Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestJoinParty.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/RequestJoinParty.java (revision 2917)
+++ java/net/sf/l2j/gameserver/network/clientpackets/RequestJoinParty.java (working copy)
@@ -105,6 +105,12 @@
requestor.sendMessage("Player is in Jail");
return;
}
+
+ if (target.getClient().isDetached())
+ {
+ requestor.sendMessage("Player is in offline mode.");
+ return;
+ }
if (target.isInOlympiadMode() || requestor.isInOlympiadMode())
return;
Index: java/net/sf/l2j/gameserver/model/L2ClanMember.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2ClanMember.java (revision 2917)
+++ java/net/sf/l2j/gameserver/model/L2ClanMember.java (working copy)
@@ -143,7 +143,14 @@
public boolean isOnline()
{
- return _player != null;
+ if (_player == null)
+ return false;
+ if (_player.getClient() == null)
+ return false;
+ if (_player.getClient().isDetached())
+ return false;
+
+ return true;
}
/**
Creditos: _DS_
Marcadores