Jump to content

Recommended Posts

Posted

New Away + Back Command System. Is really simple and nice.

 

How it works:

Version 1: When you type .away: You get a Green title " *Away * ", this commands also informs the players that you are away ( See in the Screenshots below ), also it costs 500Milion.

 

Version 2: Added Some useful protections. Changed Announcements text + Message to player.

 

Version 1: When you type .back: Away title is removed, also this command " .back " informs the players that you are back ( See in the Screenshots below ), .back is free.

 

Version 2: Added Some useful protections. Changed Announcements text + Message to player.

 

Screenshots:

Note: Screen is from Version 1, there have been some typos in Announcements and and. in Ver 2.

jfup2e.png

 

Patch:

Version 2.

### Eclipse Workspace Patch 1.0
#P L2JEclipse-Private
Index: trunk/Eclipse-Game/java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/away.java
===================================================================
--- trunk/Eclipse-Game/java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/away.java	(revision 0)
+++ trunk/Eclipse-Game/java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/away.java	(revision 0)
@@ -0,0 +1,114 @@
+package net.sf.l2j.gameserver.handler.voicedcommandhandlers;
+
+import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+public class away implements IVoicedCommandHandler
+{
+    private static final String[] VOICED_COMMANDS = { "away", "back" };
+
+    public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
+    {
+        if (command.equalsIgnoreCase("away"))
+        {
+            else if(activeChar.isInJail())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in Jail!");
+                return false;
+            }
+            else if(activeChar.isInOlympiadMode())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in the Olympiad now.");
+                return false;
+            }
+            else if(activeChar.atEvent)
+            {
+                activeChar.sendMessage("You cannot use this command while you are in an event.");
+                return false;
+            }
+            else  if (activeChar.isInDuel())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in a duel!");
+                return false;
+            }
+            else if (activeChar.inObserverMode())
+            {
+               activeChar.sendMessage("You cannot use this command while you are in Observer Mode.");
+            }
+            else if (activeChar.isFestivalParticipant())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in a festival.");
+                return false;
+            }
+            else if (activeChar.isInParty() && activeChar.getParty().isInDimensionalRift())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in the dimensional rift.");
+                return false;
+            }
+            
+        	if(activeChar.getInventory().getItemByItemId(57) != null && activeChar.getInventory().getItemByItemId(57).getCount() >= 500000000)
+            {
+            activeChar.getInventory().destroyItemByItemId("Away", 57, 500000000, activeChar, activeChar.getTarget());
+			Announcements.getInstance().announceToAll("AWAY: " + activeChar + " is away");
+            activeChar.sendMessage("You are away from keyboard, 500Milion adena dissapeared, players informed.");
+            activeChar.getAppearance().setTitleColor(0xFF000);
+            activeChar.setTitle("*Away*"); // Title text when somebody is away.
+            activeChar.broadcastUserInfo();
+            }
+        }
+    
+        else
+        	
+        if (command.equalsIgnoreCase("back"))
+        {
+            else if(activeChar.isInJail())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in Jail!");
+                return false;
+            }
+            else if(activeChar.isInOlympiadMode())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in the Olympiad now.");
+                return false;
+            }
+            else if(activeChar.atEvent)
+            {
+                activeChar.sendMessage("You cannot use this command while you are in an event.");
+                return false;
+            }
+            else  if (activeChar.isInDuel())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in a duel!");
+                return false;
+            }
+            else if (activeChar.inObserverMode())
+            {
+               activeChar.sendMessage("You cannot use this command while you are in Observer Mode.");
+            }
+            else if (activeChar.isFestivalParticipant())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in a festival.");
+                return false;
+            }
+            else if (activeChar.isInParty() && activeChar.getParty().isInDimensionalRift())
+            {
+                activeChar.sendMessage("You cannot use this command while you are in the dimensional rift.");
+                return false;
+            }
+            
+            Announcements.getInstance().announceToAll("BACK: " + activeChar + " is back.");
+            activeChar.sendMessage("You are back. Players informed.");
+            activeChar.setTitle(" ");
+            activeChar.broadcastUserInfo();
+        }
+        return true;
+         		
+    }
+    
+    public String[] getVoicedCommandList()
+    {
+        return VOICED_COMMANDS;
+    }
+
+}
\ No newline at end of file
Index: trunk/Eclipse-Game/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- trunk/Eclipse-Game/java/net/sf/l2j/gameserver/GameServer.java	(revision 223)
+++ trunk/Eclipse-Game/java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -199,6 +199,7 @@
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.TvT;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.trade;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.pm;
+import net.sf.l2j.gameserver.handler.voicedcommandhandlers.away;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Info;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Cl;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.karma;
@@ -616,6 +617,7 @@
       
       _voicedCommandHandler.registerVoicedCommandHandler(new karma());

+       _voicedCommandHandler.registerVoicedCommandHandler(new away());
                
		_log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers.");

 

Credits: ehh me.

Posted

Yes and then the server will have 294248928492849 announcements in a minute,you could do it without announcements.

Totally useless.

anyway gj.

Posted

Yes and then the server will have 294248928492849 announcements in a minute,you could do it without announcements.

Totally useless.

anyway gj.

You ***, read the code first. ~! AND BTW. Announcements is one Line. You can delete them !. Although theres something you can  do, you can use one item for this command that is rare, only " PROS " can use it.

Posted

Nice share . But BS® say is a bit true. If you have a server whit lot of people on you will have 2323232 announcements.But i think this no is a problem because if you have 300 players online . not all go on away mode.

Anyway nice share.

Posted

Nice share . But BS® say is a bit true. If you have a server whit lot of people on you will have 2323232 announcements.But i think this no is a problem because if you have 300 players online . not all go on away mode.

Anyway nice share.

as i said before, if you use for this command a rare item. One server with 300 Players online will have 1-2 Announcements per minute.

Posted

You nab, read the code first. ~!

 

You can't flame him w/o reason.

What he tells is true.

You haven't added even 1 simple protection, for example "Away can't be used out of peace zone" or "Players can't hit other players that are away" etc.

So, it's exploitable from many sides.

 

Not to mention that credits do not go to you.

Give more than half of credits to the real away author.

Posted

You can't flame him w/o reason.

What he tells is true.

You haven't added even 1 simple protection, for example "Away can't be used out of peace zone" or "Players can't hit other players that are away" etc.

So, it's exploitable from many sides.

 

Not to mention that credits do not go to you.

Give more than half of credits to the real away author.

I think this is the first time i can PROVE YOU Wrong. The author made many modifications in L2Attackble etc. I Haven't stole a line from his code. I made everything by my self. I was thinking what to add and then i was seaching the code from other Java files.. And Bum.

 

And i think is Kinda useful ! Players can farm and apart from custom armors etc. They can buy the item this command wants.

Posted

I think this is the first time i can PROVE YOU Wrong. The author made many modifications in L2Attackble etc. I Haven't stole a line from his code. I made everything by my self. I was thinking what to add and then i was seaching the code from other Java files.. And Bum.

 

Still, you can't prove me wrong on the fact that this is exploitable.

Posted

Still, you can't prove me wrong on the fact that this is exploitable.

Updated * With some protections.

 

 

"Players can't hit other players that are away" etc.

to make this i have to modify L2Attackable, like the real Away system. This is something else ^^. You just informing the players that you are away, and if someone haven't seen the announcement then he can see obviously a different color Title with text *Away*.

 

 

btw, i can show you many shares " Commands " That they don't have protections at all, and they need them ! So why you don't go and say the others to do the same. This thing shows that you have something with me ??... I don't have but you..

Posted

Here is the First away system.

Index: config/altsettings.properties
===================================================================
--- config/altsettings.properties	(revision 4757)
+++ config/altsettings.properties	(working copy)
@@ -520,3 +520,20 @@
# -------------------------------------------------------------
# Allow usage of mana potions
AllowManaPotions = False
+
+# -------------------------------------------------------------
+# Away System Config
+# -------------------------------------------------------------
+# Allow Players to change status Away
+AllowAwayStatus = True
+AwayOnlyInPeaceZone = True
+#Allow other Player target Away Player's
+AwayAllowInterference = False
+# Player take mobs aggro if he is Away
+AwayPlayerTakeAggro = False
+# Away status title Color (red 0000FF)
+AwayTitleColor = 0000FF
+# how many sec till player goes in away mode
+AwayTimer = 30
+# how many sec till player goes back from away mode
+BackTimer = 30
\ No newline at end of file
Index: src/main/java/com/l2jfree/Config.java
===================================================================
--- src/main/java/com/l2jfree/Config.java	(revision 4757)
+++ src/main/java/com/l2jfree/Config.java	(working copy)
@@ -1449,6 +1449,13 @@
	public static boolean				ALT_ITEM_SKILLS_NOT_INFLUENCED;
	public static boolean				ALT_MANA_POTIONS;
	public static int					ALT_AUTOCHAT_DELAY;
+	public static boolean				ALT_ALLOW_AWAY_STATUS;
+	public static int					ALT_AWAY_TIMER;
+	public static int					ALT_BACK_TIMER;
+	public static int					ALT_AWAY_TITLE_COLOR;
+	public static boolean				ALT_AWAY_ALLOW_INTERFERENCE;
+	public static boolean				ALT_AWAY_PLAYER_TAKE_AGGRO;
+	public static boolean				ALT_AWAY_PEACE_ZONE;

	// *******************************************************************************************
	// *******************************************************************************************
@@ -1662,6 +1669,13 @@

			ALT_MANA_POTIONS = Boolean.parseBoolean(altSettings.getProperty("AllowManaPotions", "false"));
			ALT_AUTOCHAT_DELAY = Integer.parseInt(altSettings.getProperty("AutoChatDelay", "30000"));
+			ALT_ALLOW_AWAY_STATUS = Boolean.parseBoolean(altSettings.getProperty("AllowAwayStatus", "False"));
+			ALT_AWAY_ALLOW_INTERFERENCE = Boolean.parseBoolean(altSettings.getProperty("AwayAllowInterference", "False"));
+			ALT_AWAY_PLAYER_TAKE_AGGRO = Boolean.parseBoolean(altSettings.getProperty("AwayPlayerTakeAggro", "False"));
+			ALT_AWAY_TITLE_COLOR = Integer.decode("0x" + altSettings.getProperty("AwayTitleColor", "0000FF"));
+			ALT_AWAY_TIMER = Integer.parseInt(altSettings.getProperty("AwayTimer", "30"));
+			ALT_BACK_TIMER = Integer.parseInt(altSettings.getProperty("BackTimer", "30"));
+			ALT_AWAY_PEACE_ZONE = Boolean.parseBoolean(altSettings.getProperty("AwayOnlyInPeaceZone", "False"));
		}
		catch (Exception e)
		{
Index: src/main/java/com/l2jfree/gameserver/ai/L2AttackableAI.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/ai/L2AttackableAI.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/ai/L2AttackableAI.java	(working copy)
@@ -200,10 +200,12 @@
			//event playere are also ignored
			if(player.isInFunEvent())
				return false;
-				
			// check if the target is within the grace period for JUST getting up from fake death
			if (player.isRecentFakeDeath())
				return false;
+			// check player is in away mod
+			if(player.isAway() && !Config.ALT_AWAY_PLAYER_TAKE_AGGRO)
+				return false;
		}
		// Check if the target is a L2Summon
		if (target instanceof L2Summon)
Index: src/main/java/com/l2jfree/gameserver/communitybbs/Manager/RegionBBSManager.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/communitybbs/Manager/RegionBBSManager.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/communitybbs/Manager/RegionBBSManager.java	(working copy)
@@ -225,6 +225,11 @@
					return;
				}

+				if (receiver.isAway())
+				{
+					activeChar.sendMessage(receiver.getName() + " is Away please try again later.");
+					return;
+				}
				if (Config.LOG_CHAT)
				{
					LogRecord record = new LogRecord(Level.INFO, ar3);
@@ -452,6 +457,8 @@

					if (player.isGM())
						htmlCode.append("<font color=\"LEVEL\">" + player.getName() + "</font>");
+					else if(player.isAway() && Config.ALT_ALLOW_AWAY_STATUS)
+						htmlCode.append(player.getName() + "*Away*");
					else if (player.getClan() != null && player.isClanLeader() && Config.SHOW_CLAN_LEADER
							&& player.getClan().getLevel() >= Config.SHOW_CLAN_LEADER_CLAN_LEVEL)
						htmlCode.append("<font color=\"00FF00\">" + player.getName() + "</font>");
Index: src/main/java/com/l2jfree/gameserver/GameServer.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/GameServer.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/GameServer.java	(working copy)
@@ -67,6 +67,7 @@
import com.l2jfree.gameserver.handler.VoicedCommandHandler;
import com.l2jfree.gameserver.idfactory.IdFactory;
import com.l2jfree.gameserver.instancemanager.AuctionManager;
+import com.l2jfree.gameserver.instancemanager.AwayManager;
import com.l2jfree.gameserver.instancemanager.BoatManager;
import com.l2jfree.gameserver.instancemanager.CastleManager;
import com.l2jfree.gameserver.instancemanager.CastleManorManager;
@@ -328,6 +329,11 @@
			FactionManager.getInstance();
			FactionQuestManager.getInstance();
		}
+		if (Config.ALT_ALLOW_AWAY_STATUS)
+		{
+			Util.printSection("Away System");
+			AwayManager.getInstance();
+		}
		try
		{
			DynamicExtension.getInstance();
Index: src/main/java/com/l2jfree/gameserver/handler/chathandlers/ChatWhisper.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/handler/chathandlers/ChatWhisper.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/handler/chathandlers/ChatWhisper.java	(working copy)
@@ -52,6 +52,14 @@
		{
			if ((!receiver.getMessageRefusal() && !BlockList.isBlocked(receiver, activeChar)) || activeChar.isGM())
			{
+				if (receiver.isAway())
+				{
+					receiver.sendPacket(new CreatureSay(activeChar.getObjectId(), chatType.getId(), activeChar.getName(), text));
+					activeChar.sendPacket(new CreatureSay(activeChar.getObjectId(),  chatType.getId(), "->" + receiver.getName(), text));
+					SystemMessage sm = new SystemMessage(SystemMessageId.S1);
+					sm.addString(target + " is Away try again later");
+					activeChar.sendPacket(sm);
+				}
				if (Config.JAIL_DISABLE_CHAT && receiver.isInJail())
				{
					activeChar.sendMessage(receiver.getName()+" is currently in jail.");
Index: src/main/java/com/l2jfree/gameserver/handler/VoicedCommandHandler.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/handler/VoicedCommandHandler.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/handler/VoicedCommandHandler.java	(working copy)
@@ -45,6 +45,10 @@
	private VoicedCommandHandler()
	{
		_datatable = new FastMap<String, IVoicedCommandHandler>();
+		if (Config.ALT_ALLOW_AWAY_STATUS)
+		{
+			registerVoicedCommandHandler(new Away());
+		}
		registerVoicedCommandHandler(new CastleDoors());
		registerVoicedCommandHandler(new Hellbound());
		registerVoicedCommandHandler(new VersionInfo());
Index: src/main/java/com/l2jfree/gameserver/handler/voicedcommandhandlers/Away.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/handler/voicedcommandhandlers/Away.java	(revision 0)
+++ src/main/java/com/l2jfree/gameserver/handler/voicedcommandhandlers/Away.java	(revision 0)
@@ -0,0 +1,152 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jfree.gameserver.handler.voicedcommandhandlers;
+
+import com.l2jfree.Config;
+import com.l2jfree.gameserver.handler.IVoicedCommandHandler;
+import com.l2jfree.gameserver.instancemanager.AwayManager;
+import com.l2jfree.gameserver.instancemanager.SiegeManager;
+import com.l2jfree.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfree.gameserver.model.entity.Siege;
+import com.l2jfree.gameserver.model.zone.L2Zone;
+
+/** 
+ * @author Michiru
+ * 
+ */
+public class Away implements IVoicedCommandHandler
+{
+	private static final String[]	VOICED_COMMANDS	=
+													{ "away", "back" };
+
+	/* (non-Javadoc)
+	 * @see com.l2jfree.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(String, com.l2jfree.gameserver.model.L2PcInstance), String)
+	 */
+	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String text)
+	{
+		if (command.startsWith("away"))
+			return away(activeChar, text);
+		else if (command.startsWith("back"))
+			return back(activeChar);
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.l2jfree.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
+	 */
+
+	private boolean away(L2PcInstance activeChar, String text)
+	{
+		Siege siege = SiegeManager.getInstance().getSiege(activeChar);
+		//check char is all ready in away mode
+		if (activeChar.isAway())
+		{
+			activeChar.sendMessage("You are allready Away");
+			return false;
+		}
+		
+		if (!activeChar.isInsideZone(L2Zone.FLAG_PEACE) && Config.ALT_AWAY_PEACE_ZONE)
+		{
+			activeChar.sendMessage("You can only Away in Peace Zone");
+			return false;
+		}
+		if (activeChar.isTransformed())
+		{
+			activeChar.sendMessage("You cannot go Away while transformed");
+			return false;
+		}
+		//check player is death/fake death and movement disable
+		if (activeChar.isMovementDisabled() || activeChar.isAlikeDead())
+			return false;
+		// Check if player is in Siege
+		if (siege != null && siege.getIsInProgress())
+		{
+			activeChar.sendMessage("You are in siege, you can't go Afk.");
+			return false;
+		}
+		// Check if player is a Cursed Weapon owner
+		if (activeChar.isCursedWeaponEquipped())
+		{
+			activeChar.sendMessage("You can't go Afk! You are currently holding a cursed weapon.");
+			return false;
+		}
+		// Check if player is in Duel
+		if (activeChar.isInDuel())
+		{
+			activeChar.sendMessage("You can't go Afk! You are in a duel!");
+			return false;
+		}
+		//check is in DimensionsRift
+		if (activeChar.isInParty() && activeChar.getParty().isInDimensionalRift())
+		{
+			activeChar.sendMessage("You can't go Afk! You are in the dimensional rift.");
+			return false;
+		}
+		// Check to see if the player is in an event
+		if (activeChar.isInFunEvent())
+		{
+			activeChar.sendMessage("You can't go Afk! You are in event now.");
+			return false;
+		}
+		//check player is in Olympiade
+		if (activeChar.isInOlympiadMode() || activeChar.getOlympiadGameId() != -1)
+		{
+			activeChar.sendMessage("You can't go Afk! Your are fighting in Olympiad!");
+			return false;
+		}
+		// Check player is in observer mode
+		if (activeChar.inObserverMode())
+		{
+			activeChar.sendMessage("You can't go Afk in Observer mode!");
+			return false;
+		}
+		//check player have karma/pk/pvp status
+		if (activeChar.getKarma() > 0 || activeChar.getPvpFlag() > 0)
+		{
+			activeChar.sendMessage("Player in PVP or with Karma can't use the Away command!");
+			return false;
+		}
+		if (activeChar.isImmobilized())
+			return false;
+		//check away text have not more then 10 letter
+		if (text.length() > 10)
+		{
+			activeChar.sendMessage("You can't set your status Away with more then 10 letters");
+			return false;
+		}
+		// check if player have no one in target
+		if (activeChar.getTarget() == null && text.length() <= 1 || text.length() <= 10)
+
+			//set this Player status away in AwayManager
+			AwayManager.getInstance().setAway(activeChar, text);
+		return true;
+	}
+
+	private boolean back(L2PcInstance activeChar)
+	{
+		if (!activeChar.isAway())
+		{
+			activeChar.sendMessage("You are not Away!");
+			return false;
+		}
+		AwayManager.getInstance().setBack(activeChar);
+		return true;
+	}
+
+	public String[] getVoicedCommandList()
+	{
+		return VOICED_COMMANDS;
+	}
+}
Index: src/main/java/com/l2jfree/gameserver/instancemanager/AwayManager.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/instancemanager/AwayManager.java	(revision 0)
+++ src/main/java/com/l2jfree/gameserver/instancemanager/AwayManager.java	(revision 0)
@@ -0,0 +1,186 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jfree.gameserver.instancemanager;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import com.l2jfree.Config;
+import com.l2jfree.gameserver.ThreadPoolManager;
+import com.l2jfree.gameserver.ai.CtrlIntention;
+import com.l2jfree.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfree.gameserver.network.serverpackets.SetupGauge;
+import com.l2jfree.gameserver.network.serverpackets.SocialAction;
+
+/**
+ * @author Michiru
+ *
+ */
+public final class AwayManager
+{
+	private static final Log				_log	= LogFactory.getLog(AwayManager.class.getName());
+	private static AwayManager				_instance;
+	private Map<L2PcInstance, RestoreData>	_awayPlayers;
+
+	public static final AwayManager getInstance()
+	{
+		if (_instance == null)
+		{
+			_instance = new AwayManager();
+			_log.info("AwayManager: initialized.");
+		}
+		return _instance;
+	}
+
+	private final class RestoreData
+	{
+		private final String	_originalTitle;
+		private final int		_originalTitleColor;
+		private final boolean	_sitForced;
+
+		public RestoreData(L2PcInstance activeChar)
+		{
+			_originalTitle = activeChar.getTitle();
+			_originalTitleColor = activeChar.getAppearance().getTitleColor();
+			_sitForced = !activeChar.isSitting();
+		}
+
+		public boolean isSitForced()
+		{
+			return _sitForced;
+		}
+
+		public void restore(L2PcInstance activeChar)
+		{
+			activeChar.getAppearance().setTitleColor(_originalTitleColor);
+			activeChar.setTitle(_originalTitle);
+		}
+	}
+
+	private AwayManager()
+	{
+		_awayPlayers = Collections.synchronizedMap(new WeakHashMap<L2PcInstance, RestoreData>());
+	}
+
+	/**
+	 * @param activeChar
+	 * @param text
+	 */
+	public void setAway(L2PcInstance activeChar, String text)
+	{
+		activeChar.broadcastPacket(new SocialAction(activeChar.getObjectId(), 9));
+		activeChar.sendMessage("Your status is Away in " + Config.ALT_AWAY_TIMER + " Sec.");
+		activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
+		SetupGauge sg = new SetupGauge(SetupGauge.BLUE, Config.ALT_AWAY_TIMER * 1000);
+		activeChar.sendPacket(sg);
+		activeChar.setIsImmobilized(true);
+		ThreadPoolManager.getInstance().scheduleGeneral(new setPlayerAwayTask(activeChar, text), Config.ALT_AWAY_TIMER * 1000);
+	}
+
+	/**
+	 * @param activeChar
+	 */
+	public void setBack(L2PcInstance activeChar)
+	{
+		activeChar.sendMessage("You are back from Away Status in " + Config.ALT_BACK_TIMER + " Sec.");
+		SetupGauge sg = new SetupGauge(SetupGauge.BLUE, Config.ALT_BACK_TIMER * 1000);
+		activeChar.sendPacket(sg);
+		ThreadPoolManager.getInstance().scheduleGeneral(new setPlayerBackTask(activeChar), Config.ALT_BACK_TIMER * 1000);
+	}
+
+	class setPlayerAwayTask implements Runnable
+	{
+
+		private final L2PcInstance	_activeChar;
+		private final String		_awayText;
+
+		setPlayerAwayTask(L2PcInstance activeChar, String awayText)
+		{
+			_activeChar = activeChar;
+			_awayText = awayText;
+		}
+
+		public void run()
+		{
+			if (_activeChar == null)
+				return;
+			if (_activeChar.isAttackingNow() || _activeChar.isCastingNow())
+				return;
+
+			_awayPlayers.put(_activeChar, new RestoreData(_activeChar));
+
+			_activeChar.disableAllSkills();
+			_activeChar.abortAttack();
+			_activeChar.abortCast();
+			_activeChar.setTarget(null);
+			_activeChar.setIsImmobilized(false);
+			if (!_activeChar.isSitting())
+				_activeChar.sitDown(true);
+			if (_awayText.length() <= 1)
+			{
+				_activeChar.sendMessage("You are now *Away*");
+			}
+			else
+			{
+				_activeChar.sendMessage("You are now Away *" + _awayText + "*");
+			}
+			_activeChar.getAppearance().setTitleColor(Config.ALT_AWAY_TITLE_COLOR);
+			if (_awayText.length() <= 1)
+			{
+				_activeChar.setTitle("*Away*");
+			}
+			else
+			{
+				_activeChar.setTitle("Away*" + _awayText + "*");
+			}
+			_activeChar.broadcastUserInfo();
+			_activeChar.setIsParalyzed(true);
+			_activeChar.setIsAway(true);
+		}
+	}
+
+	class setPlayerBackTask implements Runnable
+	{
+
+		private final L2PcInstance	_activeChar;
+
+		setPlayerBackTask(L2PcInstance activeChar)
+		{
+			_activeChar = activeChar;
+		}
+
+		public void run()
+		{
+			if (_activeChar == null)
+				return;
+			RestoreData rd = _awayPlayers.get(_activeChar);
+			if (rd == null)
+				return;
+			_activeChar.setIsParalyzed(false);
+			_activeChar.enableAllSkills();
+			_activeChar.setIsAway(false);
+			if (rd.isSitForced())
+				_activeChar.standUp();
+			rd.restore(_activeChar);
+			_awayPlayers.remove(_activeChar);
+			_activeChar.broadcastUserInfo();
+			_activeChar.sendMessage("You are Back now!");
+		}
+	}
+}
Index: src/main/java/com/l2jfree/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/model/actor/instance/L2PcInstance.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -752,6 +752,11 @@

	private int								_clientRevision			= 0;

+	/** character away mode **/
+	private boolean							_isAway					= false;
+	public int								_originalTitleColorAway;
+	public String							_originalTitleAway;
+
	private FactionMember					_faction;

	/* Flag to disable equipment/skills while wearing formal wear **/
@@ -2784,6 +2789,8 @@
		{
			sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up ...");
		}
+		else if (isAway())
+			sendMessage("You can't stand up if your Status is Away");
		else if (TvT._sitForced && _inEventTvT || CTF._sitForced && _inEventCTF || DM._sitForced && _inEventDM || VIP._sitForced && _inEventVIP)
			sendMessage("The Admin/GM handle if you sit or stand in this match!");
		else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead() && (!_protectedSitStand || force))
@@ -3735,6 +3742,12 @@
			return;
		}

+		if (isAway() && !Config.ALT_AWAY_ALLOW_INTERFERENCE)
+		{
+			sendMessage("You can't target Away Players");
+			sendPacket(ActionFailed.STATIC_PACKET);
+			return;
+		}
		if (Config.SIEGE_ONLY_REGISTERED)
		{
			if (!canBeTargetedByAtSiege(player))
@@ -12995,7 +13008,17 @@
	{
		_olympiadOpponentId = value;
	}
-	
+
+	public boolean isAway()
+	{
+		return _isAway;
+	}
+
+	public void setIsAway(boolean state)
+	{
+		_isAway = state;
+	}
+
	private ImmutableReference<L2PcInstance> _immutableReference;
	private ClearableReference<L2PcInstance> _clearableReference;

Index: src/main/java/com/l2jfree/gameserver/network/clientpackets/Logout.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/network/clientpackets/Logout.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/network/clientpackets/Logout.java	(working copy)
@@ -78,6 +78,13 @@
            player.sendMessage("You can not log out while flying.");
            return;
        }
+
+		if (player.isAway())
+		{
+			player.sendMessage("You can't logout in Away mode.");
+			return;
+		}
+
        // [L2J_JP ADD END]

        if(AttackStanceTaskManager.getInstance().getAttackStanceTask(player) && !player.isGM())
Index: src/main/java/com/l2jfree/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/network/clientpackets/RequestRestart.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/network/clientpackets/RequestRestart.java	(working copy)
@@ -66,6 +66,12 @@
            return;
        }

+		if (player.isAway())
+		{
+			player.sendMessage("You can't restart in Away mode.");
+			return;
+		}
+
        if(player.atEvent)
        {
            player.sendMessage("A superior power doesn't allow you to leave the event.");
Index: src/main/java/com/l2jfree/gameserver/network/L2IrcClient.java
===================================================================
--- src/main/java/com/l2jfree/gameserver/network/L2IrcClient.java	(revision 4757)
+++ src/main/java/com/l2jfree/gameserver/network/L2IrcClient.java	(working copy)
@@ -337,8 +337,11 @@
					boolean _isFirst = true;
					for (L2PcInstance player : L2World.getInstance().getAllPlayers())
					{
-						_onlineNames = _onlineNames + (_isFirst ? " " : ", ") + player.getName();
-						_isFirst = false;
+						if (player.isAway())
+							_onlineNames = _onlineNames + (_isFirst ? " " : ", ") + player.getName() + "*Away*";
+						else
+							_onlineNames = _onlineNames + (_isFirst ? " " : ", ") + player.getName();
+							_isFirst = false;
					}
					sendChan(_onlineNames);
				}

Posted

if server fulls of announcements then its suck....

althought its a good search the announce is bad point...

My friend, my lovely Friend. Pay attention to what we said read what we said. You can avoid Spamming. :D and is not seach is share :D

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • General Trackers :   IPTorrents invite IPTorrents account 1 tb TorrentLeech invite Torrentleech account 1 tb buffer  InTheShaDow ( ITS ) account Acid-lounge invite Torrentday invite Crnaberza account Abn.Lol account Limit-of-eden account Norbits account Xspeeds account Xspeeds invite Bemaniso invite Wigornot account Bithumen invite Filelist account Funfile invite AvistaZ invite Potuk.net invite ResurrectThe.Net invite GrabThe.Info invite Greek-Team invite LinkoManija invite Fano.in account tracker.czech-server.com Speed.cd invite Arab-torrents.net account Arabscene.me account Scenetime account 4thd.xyz invite Btarg.com.ar account Dedbit invite Estone.cc account Speedapp invite Finvip invite Fluxzone account GigaTorrents account Gimmepeers account Haidan.video invite Mojblink account Mycarpathians invite Newinsane.info account Oscarworld.xyz account Peers.FM invite Pt.msg.vg account Ransackedcrew account Redemption invite Scene-rush account Seedfile.io invite Teracod invite Torrent.ai account Torrentmasters invite Ttsweb invite X-files invite X-ite invite Ncore account TorrentHR account Rptorrents account BwTorrents account Superbits invite Krazyzone account Immortalseed account Tntracker invite Pt.eastgame.org account Bitturk account Rstorrent account Tracker.btnext invite Torrent-turk.de account BeiTai.PT account Pt.keepfrds account 52pt.site account Pthome account Torrentseeds account Aystorrent account Blues-brothers.biz invite Divteam account Thesceneplace invite CinemaMovies.pl account Brasiltracker account Patiodebutacas account Newheaven.nl account  Swarmazon.club invite Bc-reloaded account Crazyspirits account Silentground invite Omg.wtftrackr invite Milkie.cc invite Breathetheword invite Madsrevolution account Chilebt account Yubraca account Uniongang.tv account Frboard account Exvagos account Diablotorrent account Microbit account Carp-hunter.hu account Majomparade.eu account Theshinning.me account Youiv.info account Dragonworld-reloaded account Sharewood.tv account Partis.si account Digitalcore.club invite Fuzer.me account R3vuk.wtf invite Ztracker account 1 tb buffer 3changtrai account Best-core.info account Bitsite.us account Eliteunitedcrew invite Exitorrent.org account Tophos invite Torrent.lt account Sktorrent.eu account Oshen account Blackhattorrent account Pirata.digital account Esharenet account Ohmenarikgi.la Pirate-share account Immortuos account Kiesbits account Cliente.amigos-share.club account Broadcity invite Ilovetorzz account Torrentbytes account Polishsource account Portugas invite Shareisland account ArabaFenice account Hudbt.hust.edu.cn account Audiences account Nanyangpt account Pt.sjtu.edu.cn account Pt.zhixing.bjtu.edu.cn account Byr.pt invite Ptfiles invite Red-bits account Pt.hdpost.top account Irrenhaus.dyndns.dk (NewPropaganda) account Mnvv2.info (MaxNewVision V2) account 1ptba.com account Spidertk.top account Film-paleis account Generation-free account Aftershock-tracker account Twilightsdreams account Back-ups.me invite Sor-next.tk ( Spirit Of Revolution ) account Tfa.tf ( The Falling Angels ) account Hdmayi account S-f-p.dyndns.dk ( Share Friends Projekt ) account Unlimitz.biz account Pttime account St-tracker.eu account New-retro.eu account Zbbit account Tigers-dl.net account Jptvts.us account Lat-team account Club.hares.top account Falkonvision-team account Concen account Drugari account T.ceskeforum account Peeratiko.org account Zamunda.se account Central-torrent.eu account h-o-d.org account Torrentleech.pl account Demonoid invite Lst.gg account Fakedoor.store account LaidBackManor account Vrbsharezone.co.uk invite Torrenteros account Arenaelite account Datascene account Tracker.0day.community Tapochek.net invite Ptchina invite Lesaloon account Exyusubs account Therebels.tv account Ubits.club invite Zmpt.cc account Turktorrent.us account Dasunerwarte account Hawke.uno account Monikadesign account Fearnopeer account Alpharatio account Wukongwendao.top account Chinapyg account Azusa.wiki account Yggtorrent.top account Torrentdd account Cyanbug.net invite Hhanclub.top account Wintersakura.net account Xthor account Tctg.pm account Finelite invite Agsvpt.com account Pt.0ff.cc invite Qingwapt.com account Xingtan.one account Ptcafe.club invite Theoldschool.cc account W-o-t.pro account Coastal-crew.bounceme.net account Darkpeers.org account Pianyuan.org account Seedpool.org  account Tempelbox account Pt.itzmx.com account Capybarabr.com account Itatorrents.xyz  account Letseed.org account The-new-fun.com  account Malayabits.cc account Trellas.me account Yu-scene.net account Futuretorrent.org account Bitpt.cn account Tocashare.biz  account Videoteka.org  account White-angel.hu account Xbytesv2.li account   Movies Trackers :   Anthelion account Pixelhd account Cinemageddon account DVDSeed account Cinemageddon account Cinemaz account Retroflix account Classix-unlimited - invite Movie-Torrentz (m2g.link) invite Punck-tracker.net account Tmghub account Tb-asian account Cathode-ray.tube account Greatposterwall account Telly account Arabicsource.net account Upload.cx account Crabpt.vip invite Onlyencodes.cc account Exyusubs account Hellashut.net invite Nordichd.sytes.net invite Locadora.cc account   HD Trackers :   Blutopia buffered account Hd-olimpo buffered account Hdf.world account Torrentland.li account HdSky account Hdchina account Chdbits account Totheglory account Hdroute account Hdhome account TorrentCCF aka et8.org account 3DTorrents invite HD-Torrents account Bit-HDTV account HDME.eu invite Hdarea.co account Asiancinema.me account JoyHD invite HDSpace invite CrazyHD invite Bluebird-hd invite Htpt.cc account Hdtime invite Ourbits.club account Hd4fans account Siambit account Privatehd account Springsunday account Tjupt account Hdcity.leniter invite Ccfbits account Discfan account Pt.btschool.club account Ptsbao.club invite Hdzone.me invite Danishbytes account Zonaq.pw account Tracker.tekno3d account Arabp2p account Hd-united account Reelflix.xyz account Hdatmos.club account Anasch.cc invite Tigris-t account Nethd.org account Hd.ai invite Hitpt.com account Hdmonkey account Dragonhd.xyz account Hdclub.eu account Forum.bluraycd.com account Carpt account Hdfun.me invite Pt.hdupt invite Puntotorrent account Ultrahd account Rousi.zip account Bearbit account Hdturk.club account Asiandvdclub account Star-space.net account Nordicq.org account Hdkyl.in account Utp.to account Music Trackers : Dicmusic account Music-Vid account Open.cd account LzTr account ProAudioTorrents invite Jpopsuki invite TranceTraffic invite Audionews invite Kraytracker invite Libble.me invite Losslessclub invite Indietorrents.com invite Dimeadozen account Funkytorrents invite Karaokedl account zombtracker.the-zomb account Concertos account Sugoimusic account Satclubbing.club invite Metal.iplay invite Psyreactor invite Panda.cd account Adamsfile account Freehardmusic account Tracker.hqmusic.vn accouunt Twilightzoom account 3 tb buffer Hiresmusic account Metalguru account Musictorrents.org account Musebootlegs.com invite Zappateers.com account Jungleland.dnsalias.com account Naftamusic account   E-Learning Trackers :   Thevault account BitSpyder invite Brsociety account Learnbits invite Myanonamouse account Libranet account 420Project account Learnflakes account Pt.soulvoice.club account P2pelite account Aaaaarg.fail invite Ebooks-shares.org account Abtorrents account Pt.tu88.men invite Docspedia.world invite   TV-Trackers :   Skipthecommericals Cryptichaven account TV-Vault invite Shazbat.TV account Myspleen account Tasmanit.es invite Tvstore.me account Tvchaosuk account Jptv.club account Tvroad.info   XXX - Porn Trackers :   FemdomCult account Pornbay account Pussytorrents account Adult-cinema-network account Bootytape account 1 Tb buffer Exoticaz account Bitporn account Kufirc account Gaytorrent.ru invite Nicept account Gay-torrents.org invite Ourgtn account Pt.hdbd.us account BitSexy account Happyfappy.org account Kamept.com account Lesbians4u.org account   Gaming Trackers :   Mteam.fr account BitGamer invite Retrowithin invite Gamegamept account   Cartoon/Anime/Comic Trackers :   Animeworld account Oldtoons.world account U2.dmhy account CartoonChaos invite Animetorrents account Mononoke account Totallykids.tv account Bakabt.me invite Revanime account Ansktracker account Tracker.shakaw.com.br invite Bt.mdan.org account Skyey2.com account Animetracker.cc Adbt.it.cx invite Tracker.uniotaku.com account Mousebits.com account   Sports Trackers :   MMA-Tracker invite T3nnis.tv invite AcrossTheTasman account RacingForMe invite Sportscult invite Ultimatewrestlingtorrents account Worldboxingvideoarchive invite CyclingTorrents account Xtremewrestlingtorrents account Tc-boxing invite Mma-torrents account Aussierul invite Xwt-classics account Racing4everyone account Talk.tenyardtracker account Stalker.societyglitch invite Extremebits invite Rgfootball.net account F1carreras.xyz account   Software/Apps Trackers :   Brokenstones account Appzuniverse invite Teamos.xyz account Macbb.org account   Graphics Trackers:   Forum.Cgpersia account Gfxpeers account Forum.gfxdomain account   Documentary Trackers:   Forums.mvgroup account   Others   Fora.snahp.eu account Board4all.biz account Filewarez.tv account Makingoff.org/forum account Xrel.to account Undergunz.su account Corebay account Endoftheinter.net ( EOTI ) account Thismight.be invite Skull.facefromouter.space account Avxhm.se (AvaxHome) account Ssdforum account Notfake.vip account Intotheinter.net account Tildes.net invite Thetoonz account Usinavirtual account Hdclasico invite HispaShare account Valentine.wtf account Adit-hd account Forum-andr.net account Warezforums account Justanothermusic.site account Forbiddenlibrary.moe account Senturion.to account Movieparadise account Militaryzone account Dcdnet.ru account Sftdevils.net account Heavy-r.com account New-team.org account Ddl.tv account Filewarez.club account Hispamula.org account Hubwarez.tv account   NZB :   Ninjacentral.co.za account Tabula-rasa.pw account Drunkenslug account Drunkenslug invite Usenet-4all account Brothers-of-Usenet account Dognzb.cr invite Kleverig account Nzb.cat account Nzbplanet.net invite Ng4you.com account Nzbsa.co.za account Bd25.eu account NZB.to account Samuraiplace account Abhdtv.net account Abook.link account Comix.pw account House-of-usenet Secretbinaries.net account Vnext.to account Stockboxx.top account Sky-of-use.net account   Prices start from 3 $ to 100 $   Payment methods: Crypto, Neteller, Webmoney, Revolut   If you want to buy something send me a pm or contact me on:   Email: morrison2102@gmail.com   Discord: LFC4LIFE#4173   Telegram: https://t.me/LFC4LIFE4173   Skype: morrison2102@hotmail.com
    • these are all my interfaces)
    • Updates:    Revision 568: 2020-10-28 Fix: -Mp potions thanks to RuLLezZ for report. -Archangels(Baium) attack. -geonegine doors npe. -geoengine layer correction. -boats are now properly working. -max enchant protection ,thanks to RuLLezZ-Fortitude for report. -character selection enchant effect,thanks to RuLLezZ-Fortitude for report. -multisell exploit. -SevenSigns leak-optimize. -pledge visual packet. -Party match room unhardcoded newid. -party match room auto join l2off like. Skills fix: -Force Meditation. -skill type: TARGET_MULTIFACE properly working. Rework: -sql connection pt2. -community board ClanList.java (from 120 lines to 65) -community board CastleStatus.java -community board RaidList.java optimize: -sql: player item restore. -Cboard HeroList update every 4 hours(avoid to execute sql connection on click.) Remove: -top players from cboard(and kept the one from rank system, in order to work you must enable the rank system) -   Revision 569: 2020-12-14 Fix: -npe onMagicFinalizer. -FrequentSkill npe. -Cyrillic characters support in cboard ,thanks to Fortitude for report. -255 tutorial message,thanks to Fortitude for report. -cboard switch typo,thanks to Fortitude for report. -multiply statement , thanks to Fortitude for report. -allow to interact with dead monsters to use "sweep" correctly. -potions are now visible under buffs(l2off like). -hp-mp negative value. -optimize-fix updateAbnormalEffect unnecessary packet broadcast. now it will send the update only if abnormal effects are in use or effected by somone,which is lead to a huge broadcast optimize. Monster behavior: -onAggression remove minion assist(l2 off like), -onAggression minions are following master and attacking only when we attack master-minion.tested on advext. Skills fix: -lure(skill) behavior on monster,thanks nijota for report. Rework: CharEffectList.java optimize: (Custom)EventEgnine: "asynchronize" teleport to avoid massive lag. -   Revision 570: 2021-04-11 Fix: -client-server desync(jump backward ,weird effect) while pressing attack and try to move away. -npe on player protection. -npe on summon magic skill use. -npe on use item. -on duel: you can attack summons properly.(with same duel id) -on duel finish: summons are now stop attacking and return to their owner. -soulshot properly usage after finish casting. -party member position. thanks Cibo for report. -combat-chase movement system. -Antharas-Valakas Shock skill effect l2off like. -properly remove cubics on restart-logout. -status update avoid sending unnecessary packets. -On equip-unequip item avoid sending unnecessary packets. -Revert L2GamePacketHandler.java to switch method. -shortcut doubling(properly update). thanks to ragef for report. -Event engine teleport , thanks to daffynash for report. Quest fix: -Q115_TheOtherSideOfTruth: Misa Spawn at night. thanks Cibo for report. -Q648_AnIceMerchantsDream: Steward on talk html. thanks Cibo for report. Skills fix: -augment stack. Rework: -Friend system (client-server packets l2off like). -   Revision 571: 2021-09-11 Bug fix: -avoid following target after restart-logout , thanks to EXCLUS1VE for report. -pick up stuck , thanks to EXCLUS1VE for report. -summon patk/matk speed visual animation. -summon attack request , thanks to EXCLUS1VE for report. -effect relax , thanks to EXCLUS1VE for report. -formulas hitmiss , thanks to EXCLUS1VE for report. -Social action request , thanks to EXCLUS1VE for report. -cubic attack , thanks to EXCLUS1VE for report. -Party match room chat, thanks to EXCLUS1VE for report. -pick up issue , thanks to EXCLUS1VE for report. -pet npe, thanks to EXCLUS1VE for report. Rework: -player template. -skilltreedata. -RequestAquireSkill. -RequestAquireSkillInfo. -RequestExEnchantSkill. -RequestExEnchantSkillInfo. -AcquireSkillList. -ExEnchantSkillList. Optimize: -players got their own getMoveSpeed getter , and triggers when speed change by user(walk/run commands) or buff-debuff, that way we avoid unnecessary speed calculation by updateposition task that literaly spam the calculators. -castle traps are optimized and enabled. damage calculation formula: -blow damage position bonus. -when you make a magic critical hit, the magic damage is now tripled. -melee normal attack Damage position bonus. Implement: -new vote api system.(npc-> //spawn 61) Organization: FenceManager moved in -> datatables/xml and rename to FenceData. Remove: -old antibot system and kept only one as main. -old vote system. -   Revision 572: 2022-01-08 fix -Elroki , ToIVortex , Pagan , Oracle teleporters. -shop distance(sell-buy) bug, thanks to exclusive for report. -Monster Derby Track teleport. thanks to lorka for report. -MissQueen multisell coupon. thanks to lorka for report. -Olympiad spectator error thanks to magister for report. -Quest ShowResult replace objId instead name. -html over 200++ corrections typo - bypass. -(Custom config) DAGGERS-ARCHERS wear HEAVY-LIGHT on use item unequip equipped item if config is false , to avoid stuck , thanks to exclusive for report. -Npe on connection close , thanks to exclusive for report. -Herbs auto destroy , thanks to exclusive for report. Spawn: -Implement L2off spawn data and territory system. -xml spawn list added inside datapack data/xml/spawn. -Sql spawn list has been merged with new spawn system and manage only the custom admin //spawn. -Territory Monsters randomly spawn in their territory. -Shift click on monters -> "visual" will allow you to check their territory. Skill fix: -fixed all chance skills. Optimize: -NpcData.java -PetNameTable -Siege(tasks - sql connection) Implement: -Server-Player Variable -ClientSetTime packet. -AttackDeadTarget packet. -AttackinCoolTime packet. -AttackOutOfRange packet. Rework: -L2BossSpawnInstance Clean up - Delete: -remove L2ProtectorInstance. -remove unused configs. -remove AdminUnblockIp. -remove VipTeleportCmd. -AdminCommands.xml clean up. Organization: -AutoSpawnHandler,L2Spawn,SpawnData,SpawnTerritory moved inside gameserver.model.spawn . Dont forget: to update your databse and use geodata!!! is important for the new spawn system! -   Revision 573-574: 2022-02-04 fix -Herbs auto destroy time (14 seconds) -Clan skills learn npe , thanks to Ziklis for report. -potions visual bug , thanks to Ziklis for report. Optimize: -Quest engine. -Hero engine. -SevenSigns. -Event engine. Implement: -Siegable Clan Halls (from l2j thanks to Zoey76) you can use //siege ingame for test. -Spawn data spawn_bydefault field. -CustomSpawnManager (holds npc spawn data by field "spawn_bydefault" that equals false) Clean up - Delete: -delete:EventStats.java -delete:pmoff - tradeoff handlers and merge in one (.menu voiced) -spawnlist old sql file. -   Revision 575: 2022-05-14 Fix: -Clan Skills , thanks to shush for report. -Olympiad doDie error , thanks to shush and Elliot for report. -backstub 100 % succes if attacker is behind of target. -player siege state status update. -CrownManager unhardcoded checkCrowns. -   Revision 576: 2022-07-21 Fix: -Elven Fortress teleport. thanks to JMD for report. -Traders when geodata enabled. thanks to JMD for report. -Summon Cp Potion(skills store-restore has been fixed) thanks to Noone4 for report. -Elixir reuse time , to Noone4 for report.   - Revision 577: 2022-09-25 Fix: -Drop item location.(items cannot be dropped inside wall etc, geodata must be enabled) -Hero count. Npc -Dark Choir Lancer heigh correction -Dark Choir Captain heigh correction Misc Ai: -Implement NpcWalkerTaskManager(handle npc walker ai). Misc: -isNewBie delete config-sql-getters and now depends on level. -TopRankManager is now available(merged with community board) holding stats for top players pvp-pk etc. -   Revision 578: 2022-11-07 Misc: Sql typo , thanks to noone4. Rework: -Balancer.(also save button added at the bottom) - Revision 579: 2023-03-28 Fix: -Multisell ingredient for clan points, thanks to noone4 for report. -Raid respawn time, thanks to noone4 for report. -Quest delay , thanks to noone4 for report. -Minion respawn task, thanks to noone4 for report. Rework: -Achievement Engine.(rework and optimize). -Couple - Wedding Manager.(rework and optimize). Delete: -WeddingCmd (voiced command) , wedding is now available only on npc manager. Dont forget to update your sql tables and config files.    -   Revision 580: Fix: -Start creatures AI only when they are in active region. -Subclass : In order to change the base class you can only manage it by using the master with the same type, thanks  to noone4 for report. -olympiad check item restriction and unharcoded. -monster properly delete by admin command , thanks to noone4 for report. -Zaken properly attack. thanks to l2valhalla for report. -QueenAnt nurse heal. thanks to l2valhalla for report. -Door region check to avoid stuck while wallking through.thanks to l2valhalla for report. -Rain of Fire (1296) skill radius , thanks to millerose for report. -Frost Wall (1174) skill radius , thanks to millerose for report. -RaidBossSpawnManager calendar replaced with system current time millis. -VIPTvT npe on selectNewVipOfTeam , .thanks to l2valhalla for report. -onActionShift spawn-territory npe. -L2Party properly change party leader. -AutoAttackable class cast exeption. -RequestMagicSkilluse AIOB. -L2StaticObjectInstance npe. Rework: -Project update to java 17.(you can download latest jdk version here: https://adoptium.net/temurin/releases/ ) -Remove MysqlConnector and implement MariaDb. -GeoEngine.(currently working only with l2j type , download the new geodata here: https://www.mediafire.com/file/c2tvxwt5bz086jh/geodata.rar/file ) -DoorData. -Geometry algorithm. -SQL account manager. -CustomSpawnManager(Handle npcs-monsters that are not spawned by default via xml spawn.) -L2Skill.java getTargetList rework and cleanup : case TARGET_AURA , case TARGET_AREA , case TARGET_MULTIFACE , case TARGET_PARTY ,  avoid unnecessary - heavy tasks(optimized). -Impement: -Support api for https://l2rankzone.com/ . -Admin Bookmark. -FakePlayer Chat. Organise: -CustomSpawnManager moved inside -> gameserver.model.spawn Delete: -Unused libs.   Revision 581: Fix -Fishing skill list properly show, thanks to ByDenisko for report. -Multisell enchanted items , thanks to ByDenisko for report. -Drop range between mercenary tickets. -Break Duress skill(461) , thanks to DevilMStar for report. -Interact-pickup tickets , thanks to DevilMStar for report. Rework: -refreshExpertisePenalty to avoid unnecessary calculation. -Mercenary tickets. -ClanGate skill handler.   -   Revision 582: Fix: -Siege guard aggro due to the last rework , thanks to ByDenisko for report. -Siege zone , thanks to ByDenisko for report. -Trade npe , thanks to ByDenisko for report. -Olympiad port player back position. -Antharas CCE , thanks to ByDenisko for report. -Interact exception , thanks to ByDenisko for report. -interact-pick up: action denied if the player is dead-fakedeath. (players can still interact with NPCs, but they must be within the designated interaction distance.) Rework: -Skills Array to ConcurrentSkipListMap. -L2AttackableAI think to avoid unnecessary - heavy tasks. Implement: -AutoSaveTaskManager. -AiThinkTaskManager wich handle attackable think. -Check for Event engine to activate-deactivate. -Admin zone cretion. Organization: -Rename gameserver.scrips -> gameserver.scripts   -   Revision:583 Java 21 ,DropItem-protection,ThreadPoolManager,Geongine,AdminTeleport,TopRankmanager Java 21: -The project has transitioned to Java (JDK) 21 for improved performance and features. Fix: -TopRankManager added snap list to avoid empty list while updating. -TopRankManager npe. -BookMark Teleport. -Siege: Allow pray only on the artifact spot. -Olympiad hp npe -Olympiad ip check npe -Olympiad teleport back npe Rework: -Reworked the whole Drop Protection concept and eliminated the need for synchronized methods and multiple tasks for each item.  The process is now centralized under a single manager: DropProtectionManager which centrally manages all items by one task for optimal efficiency. GeoEngine: -Maxiterations are now depends on mapsize and limit them to 13500. ThreadPoolManager: -ThreadPoolManager is now using java virtual pools.   -   Revision:584(latest 24/8/2025) RespawnTaskManager,TradeController,MerchantTaskManager,StatusListenerManager,FollowTaskManager,ItemAutoSaveTaskManager Rework: -Refactored inventory save system for improved efficiency The entire inventory save system has been restructured to eliminate redundancy and enhance performance. Previously, each item triggered its own database save Connection task (e.g., on equip, unequip, drop, add, etc.), resulting in overhead and complexity. Now, a centralized ItemAutoSaveTaskManager handles all pending item saves through a single, unified SQL connection task. -The entire creature respawn system has been restructured to eliminate redundant tasks and improve efficiency. Previously, each creature had its own separate respawn task, leading to potential overhead and complexity. Now, a centralized RespawnTaskManager handles all pending creature respawns through a single task. -TradeController has been restructured to eliminate redundant tasks by using MerchantTaskManager(same optimization as creature spawn) -StatusListenerManager now handles broadcast of statusUpdate(hp) -FollowTaskManager handles all following creatures through a single task. Fix: -clan hall buff support. thanks to Almaz. -Valakas Teleport. thanks to Almaz.  SQL Connection: Update MariaDB connector to 3.5.4          
    • isnt his i also find it on l2ketrawars  https://imgur.com/a/4BMldRQ someone lock the topic ,solved!
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock