All pastes #170004 Raw Edit

Gestion AFK

public java v1 · immutable
·published 2006-09-14 09:40 UTC
rendered paste body
Index: net/sf/l2j/gameserver/clientpackets/Logout.java===================================================================--- net/sf/l2j/gameserver/clientpackets/Logout.java	(revision 2309)+++ net/sf/l2j/gameserver/clientpackets/Logout.java	(working copy)@@ -92,6 +92,13 @@                 player.getParty().broadcastToPartyMembers(SystemMessage.sendString(player.getName() + " has been removed from the upcoming festival."));         }         +		if (player.isElixirAFK())+		{+			//calcul du gain d'xp en afk+			long gainXP = (player.getStat()).getExp() - player.getElixirXPAvantAFK();+			_log.info("[AFK] "+player.getName()+" n'est plus afk (deco) ("+gainXP+" xp gagne).");+			player.setTitle(player.getElixirTitleAFK());+		}         player.deleteMe();         //save character         ClientThread.saveCharToDisk(player);Index: net/sf/l2j/gameserver/clientpackets/RequestRestart.java===================================================================--- net/sf/l2j/gameserver/clientpackets/RequestRestart.java	(revision 2309)+++ net/sf/l2j/gameserver/clientpackets/RequestRestart.java	(working copy)@@ -115,6 +115,13 @@                                                                   + " has been removed from the upcoming festival."));             } +			if (player.isElixirAFK())+			{+				//calcul du gain d'xp en afk+				long gainXP = (player.getStat()).getExp() - player.getElixirXPAvantAFK();+				_log.info("[AFK] "+player.getName()+" n'est plus afk (restart) ("+gainXP+" xp gagne).");+				player.setTitle(player.getElixirTitleAFK());+			}             player.deleteMe();             ClientThread.saveCharToDisk(getClient().getActiveChar()); Index: net/sf/l2j/gameserver/clientpackets/Say2.java===================================================================--- net/sf/l2j/gameserver/clientpackets/Say2.java	(revision 2309)+++ net/sf/l2j/gameserver/clientpackets/Say2.java	(working copy)@@ -217,30 +217,51 @@                 }                 break; 			case ALL:-				for (L2PcInstance player : activeChar.getKnownList().getKnownPlayers())-				{-                    if (activeChar.isInsideRadius(player, 1250, false, true))-						player.sendPacket(cs);-				}-                activeChar.sendPacket(cs);-				+//elixir+				boolean elixirCommand=false; 				if (_text.startsWith("."))  				{ 					StringTokenizer st = new StringTokenizer(_text); 					String target = st.nextToken().substring(1);-					-					if (st.hasMoreTokens())+					//commande afk+					if (target.equals("afk")) 					{-						String command = st.nextToken();-						IVoicedCommandHandler vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);-						+						elixirCommand=true;+						IVoicedCommandHandler vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(target); 						if (vch != null) -							vch.useVoicedCommand(command, activeChar, target);+							vch.useVoicedCommand(target, activeChar, activeChar.getName()); 						else-							_log.warning("No handler registered for bypass '"+command+"'");+							_log.warning("commande AFK non trouvee !"); 					}+					else+					{+					//fin commande afk+						if (st.hasMoreTokens())+						{+							String command = st.nextToken();+							IVoicedCommandHandler vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);+							if (vch != null)+							{+								elixirCommand=true;+								vch.useVoicedCommand(command, activeChar, target);+							}+							else+								_log.warning("No handler registered for bypass '"+command+"'");+						}+					} 				}++				if (!elixirCommand)+				{+					for (L2PcInstance player : activeChar.getKnownList().getKnownPlayers())+					{+						if (activeChar.isInsideRadius(player, 1250, false, true))+							player.sendPacket(cs);+					}+					activeChar.sendPacket(cs);+				}                 break;+//fin elixir 			case CLAN: 				if (activeChar.getClan() != null) 					activeChar.getClan().broadcastToOnlineMembers(cs);Index: net/sf/l2j/gameserver/communitybbs/Manager/RegionBBSManager.java===================================================================--- net/sf/l2j/gameserver/communitybbs/Manager/RegionBBSManager.java	(revision 2309)+++ net/sf/l2j/gameserver/communitybbs/Manager/RegionBBSManager.java	(working copy)@@ -262,9 +262,20 @@               htmlCode.append("<td align=left valign=top FIXWIDTH=75><a action=\"bypass _bbsloc;playerinfo;"                   + player.getName() + "\">"); -              if (player.isGM()) htmlCode.append("<font color=\"LEVEL\">" + player.getName()-                  + "</font>");-              else htmlCode.append(player.getName());+              if (player.isGM())+				{+				if (player.isElixirAFK())+					htmlCode.append("<font color=\"LEVEL\">[AFK]" + player.getName()+ "</font>");+				else+					htmlCode.append("<font color=\"LEVEL\">" + player.getName()+ "</font>");+				}+              else+				{+				if (player.isElixirAFK())+					htmlCode.append("[AFK]"+player.getName());+				else+					htmlCode.append(player.getName());+				}                htmlCode.append("</a></td>"); Index: net/sf/l2j/gameserver/GameServer.java===================================================================--- net/sf/l2j/gameserver/GameServer.java	(revision 2309)+++ net/sf/l2j/gameserver/GameServer.java	(working copy)@@ -147,6 +147,9 @@ import net.sf.l2j.gameserver.handler.usercommandhandlers.PartyInfo; import net.sf.l2j.gameserver.handler.usercommandhandlers.Time; import net.sf.l2j.gameserver.handler.voicedcommandhandlers.stats;+//elixir+import net.sf.l2j.gameserver.handler.voicedcommandhandlers.afk;+// import net.sf.l2j.gameserver.idfactory.IdFactory; import net.sf.l2j.gameserver.instancemanager.DayNightSpawnManager; import net.sf.l2j.gameserver.instancemanager.Manager;@@ -446,12 +449,14 @@         _userCommandHandler.registerUserCommandHandler(new Mount());         _userCommandHandler.registerUserCommandHandler(new PartyInfo()); 		_userCommandHandler.registerUserCommandHandler(new Time());-        +         _log.config("UserCommandHandler: Loaded " + _userCommandHandler.size() + " handlers.");  		_voicedCommandHandler = VoicedCommandHandler.getInstance(); 		_voicedCommandHandler.registerVoicedCommandHandler(new stats());-		+		//elixir+		_voicedCommandHandler.registerVoicedCommandHandler(new afk());+		//		         _log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers.");          TaskManager.getInstance();Index: net/sf/l2j/gameserver/handler/voicedcommandhandlers/afk.java===================================================================--- net/sf/l2j/gameserver/handler/voicedcommandhandlers/afk.java	(revision 0)+++ net/sf/l2j/gameserver/handler/voicedcommandhandlers/afk.java	(revision 0)@@ -0,0 +1,93 @@+/*++COMMANDE AFK++=>+++ */+package net.sf.l2j.gameserver.handler.voicedcommandhandlers;++import java.util.Iterator;+import java.util.logging.Level;+import java.util.logging.LogRecord;+import java.util.logging.Logger;++import javolution.lang.TextBuilder;++import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;+import net.sf.l2j.gameserver.model.L2World;+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;+import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;+import net.sf.l2j.gameserver.serverpackets.SystemMessage;++/**+ * + *+ */+public class afk implements IVoicedCommandHandler+{+    private static String[] _voicedCommands = { "afk" }; +	private static Logger _log = Logger.getLogger(afk.class.getName());++    public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)+    {+        if (command.equalsIgnoreCase("afk"))+        {+		    L2PcInstance pc = L2World.getInstance().getPlayer(target);+            if(pc!=null)+			{+				if (pc.isElixirAFK()) //perso est afk+				{+					//calcul du gain d'xp en afk+					long gainXP = (pc.getStat()).getExp() - pc.getElixirXPAvantAFK();+					_log.info("[AFK] "+target+" n'est plus afk ("+gainXP+" xp gagne).");+					//restaureation du titre du perso+					pc.setTitle(pc.getElixirTitleAFK());+					pc.setElixirTitleAFK("");+					//dblocage du perso+					pc.setIsImobilised(false);+					//pc.setIsFakeDeath(false);+					pc.setElixirAFK(false);+					pc.enableAllSkills();+					pc.standUp();+					//maj du perso IG+					pc.broadcastUserInfo();+					//message systeme+					SystemMessage sm = new SystemMessage(SystemMessage.S1_S2);+					sm.addString("Vous n'etes plus AFK.");+					activeChar.sendPacket(sm);+				}+				else //perso non afk+				{+					_log.info("[AFK] "+target+" est afk.");+					//sauvegarde de l'xp actuel+					pc.setElixirXPAvantAFK((long)(pc.getStat()).getExp());+					//blocage du perso+					pc.setElixirAFK(true);+					pc.sitDown();+					//pc.setIsFakeDeath(true);+					pc.disableAllSkills();+					pc.setIsImobilised(true);+					//sauvegarde et changement du titre+					pc.setElixirTitleAFK(pc.getTitle());+					pc.setTitle("AFK");+					//maj du perso IG+					pc.broadcastUserInfo();+					//message systeme+					SystemMessage sm = new SystemMessage(SystemMessage.S1_S2);+					sm.addString("Vous etes AFK.");+					activeChar.sendPacket(sm);+				}+	        }+        }+    	return true;+    }++ +    public String[] getVoicedCommandList()+    {+        return _voicedCommands;+    }++}Index: net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java===================================================================--- net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 2309)+++ net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)@@ -536,6 +536,11 @@     /** Flag to disable equipment/skills while wearing formal wear **/     private boolean _IsWearingFormalWear = false;     +//elixir+	private boolean _elixirAFK = false;+	private long _elixirXPAvantAFK = 0;+	private String  _elixirTitleAFK;+//      	/** Skill casting information (used to queue when several skills are cast in a short time) **/     public class SkillDat@@ -8437,6 +8442,33 @@         }     } +//elixir+	public void setElixirAFK (boolean afk)+	{+		_elixirAFK=afk;+	}+	public boolean isElixirAFK ()+	{+		return _elixirAFK;+	}+	public void setElixirXPAvantAFK (long xp)+	{+		_elixirXPAvantAFK=xp;+	}+	public long getElixirXPAvantAFK ()+	{+		return _elixirXPAvantAFK;+	}+	public void setElixirTitleAFK (String title)+	{+		_elixirTitleAFK=title;+	}+	public String getElixirTitleAFK ()+	{+		return _elixirTitleAFK;+	}+//+     private ScheduledFuture _jailTask;     private class JailTask implements Runnable     {