С этим фиксом у вас не получится выйти через КОНТР + АЛЬТ + ДЕЛЕТ с олимпеады
- Код:
Index: /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/network/L2GameClient.java
===================================================================
--- /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/network/L2GameClient.java (revision 12)
+++ /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/network/L2GameClient.java (revision 201)
@@ -32,4 +32,5 @@
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.LoginServerThread;
+import net.sf.l2j.gameserver.Olympiad;
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.LoginServerThread.SessionKey;
@@ -41,5 +42,7 @@
import net.sf.l2j.gameserver.model.entity.L2Event;
import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
+import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.network.serverpackets.UserInfo;
+import net.sf.l2j.gameserver.templates.StatsSet;
import net.sf.l2j.util.EventData;
@@ -473,8 +476,14 @@
@Override
- protected void onForcedDisconnection()
- {
- _log.info("Client "+toString()+" disconnected abnormally.");
- }
+ protected void onForcedDisconnection()
+ {
+ if (Config.DEBUG)
+ _log.info("Client " + toString() + " disconnected abnormally.");
+ if(activeChar.isInOlympiadMode())
+ {
+ Olympiad.processPlayer(activeChar);
+ }
+ }
+
@Override
Index: /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/network/SystemMessageId.java
===================================================================
--- /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/network/SystemMessageId.java (revision 54)
+++ /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/network/SystemMessageId.java (revision 201)
@@ -4755,6 +4755,12 @@
* Message: Observers cannot participate.
*/
- OBSERVERS_CANNOT_PARTICIPATE(781);
-
+ OBSERVERS_CANNOT_PARTICIPATE(781),
+
+ /**
+ * ID: 782<br>
+ * Message: $s1 Has Lost $s2 Olympiad Points.
+ */
+ C1_HAS_LOST_S2_OLYMPIAD_POINTS(782);
+
private int _id;
Index: /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/Olympiad.java
===================================================================
--- /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/Olympiad.java (revision 62)
+++ /trunk/L2JHardCode_GameServer/java/net/sf/l2j/gameserver/Olympiad.java (revision 201)
@@ -2004,3 +2004,37 @@
}
}
+
+ public static void processPlayer(L2PcInstance p)
+ {
+ final String POINTS = "olympiad_points";
+ final int charId = p.getObjectId();
+
+ L2OlympiadGame game = Olympiad.getInstance().getOlympiadGames().get(p.getOlympiadGameId());
+
+
+ L2PcInstance _opponent = L2World.getInstance().getPlayer(p.getName());
+
+ final StatsSet playerStat = getNobleStats(p.getObjectId());
+
+ final int playerPoints = playerStat.getInteger(POINTS);
+ final int lostPoints = playerPoints / 3;
+
+ playerStat.set(POINTS, playerPoints - lostPoints);
+ updateNobleStats(charId, playerStat);
+ SystemMessage sm = new SystemMessage(SystemMessageId.C1_HAS_LOST_S2_OLYMPIAD_POINTS);
+ sm.addString(p.getName());
+ sm.addNumber(lostPoints);
+ _opponent.sendPacket(sm);
+ }
+
+ protected synchronized static void updateNobleStats(int playerId, StatsSet stats)
+ {
+ _nobles.remove(playerId);
+ _nobles.put(playerId, stats);
+ }
+
+ protected static StatsSet getNobleStats(int playerId)
+ {
+ return _nobles.get(playerId);
+ }
}