Jump to content
  • 0

Question

4 answers to this question

Recommended Posts

  • 0
Posted (edited)

Its shared already.

i cant find it ...so i ask if somebody got it share it with me

Edited by aris96
  • 0
Posted

i cant find it ...so i ask if somebody got it share it with me

### Eclipse Workspace Patch 1.0
#P gameserver_chaos_86
Index: java/net/sf/l2j/gameserver/network/clientpackets/Logout.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/Logout.java	(revision 86)
+++ java/net/sf/l2j/gameserver/network/clientpackets/Logout.java	(working copy)
@@ -46,6 +46,12 @@
 	protected void runImpl()
 	{
 		final L2PcInstance player = getClient().getActiveChar();
+		EnterWorld world = new EnterWorld();
+				
+		if (world._onlineplayers.contains(player) && player!=null)
+		{
+			world._onlineplayers.remove(player);
+		}
 
 		if (player == null)
 			return;
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminChaos.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminChaos.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminChaos.java	(revision 0)
@@ -0,0 +1,89 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import net.sf.l2j.gameserver.cache.HtmCache;
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.ChaosEvent;
+import net.sf.l2j.gameserver.network.clientpackets.EnterWorld;
+import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
+
+/**
+ *
+ * @author  Anarchy
+ */
+public class AdminChaos implements IAdminCommandHandler
+{
+	private static final String[] ADMIN_COMMANDS = { "admin_startchaos", "admin_endchaos", "admin_warnchaos" };
+	
+	public boolean useAdminCommand(String command, L2PcInstance activeChar)
+	{
+		ChaosEvent chaos = new ChaosEvent();
+		
+		if (command.equals("admin_warnchaos"))
+		{
+			if (chaos._isChaosActive)
+			{
+				activeChar.sendMessage("You can only warn the players if Chaos Event isn't active.");
+				return false;
+			}
+			
+			EnterWorld world = new EnterWorld();
+			
+			world.warnAllPlayers();
+			
+			return true;
+		}
+		if (command.equals("admin_startchaos"))
+		{
+			if(!chaos._isChaosActive)
+			{
+				chaos.startChaos();
+				activeChar.sendMessage("You have succesfully started Chaos Event. Press //endchaos to stop it.");
+				return true;
+			}
+			else
+			{
+				activeChar.sendMessage("Chaos Event is already active.");
+				return false;
+			}
+		}
+		if (command.equals("admin_endchaos"))
+		{
+			if(chaos._isChaosActive)
+			{
+				chaos.stopChaos();
+				activeChar.sendMessage("You have succesfully stopped Chaos Event.");
+				return true;
+			}
+			else
+			{
+				activeChar.sendMessage("Chaos Event is not active.");
+				return false;
+			}
+		}
+
+		return true;
+	}
+	
+	public String[] getAdminCommandList() 
+	{
+		return ADMIN_COMMANDS;
+	}
+}
Index: java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java	(revision 86)
+++ java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java	(working copy)
@@ -70,6 +70,7 @@
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTest;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminUnblockIp;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminZone;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminChaos;
 
 public class AdminCommandHandler
 {
@@ -135,6 +136,7 @@
         registerAdminCommandHandler(new AdminTest());
         registerAdminCommandHandler(new AdminUnblockIp());
         registerAdminCommandHandler(new AdminZone());
+        registerAdminCommandHandler(new AdminChaos());
 	}
 	
 	public void registerAdminCommandHandler(IAdminCommandHandler handler)
Index: java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java	(revision 86)
+++ java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java	(working copy)
@@ -18,6 +18,7 @@
  */
 package net.sf.l2j.gameserver.network.clientpackets;
 
+import java.util.Vector;
 import java.util.logging.Logger;
 
 import net.sf.l2j.Config;
@@ -72,6 +73,7 @@
 {
 	private static final String _C__03_ENTERWORLD = "[C] 03 EnterWorld";
 	private static Logger _log = Logger.getLogger(EnterWorld.class.getName());
+	public static Vector<L2PcInstance> _onlineplayers = new Vector<L2PcInstance>();
 
 	public TaskPriority getPriority() { return TaskPriority.PR_URGENT; }
 
@@ -86,6 +88,8 @@
 	{
 		L2PcInstance activeChar = getClient().getActiveChar();
 
+		_onlineplayers.add(activeChar);
+				
 		if (activeChar == null)
 		{
 			_log.warning("EnterWorld failed! activeChar is null...");
@@ -316,6 +320,19 @@
 			}
 		}
 	}
+	
+	public void warnAllPlayers()
+	{
+		for (L2PcInstance player : _onlineplayers)
+		{
+			String file = "data/html/chaos/warning.htm";
+			String html = HtmCache.getInstance().getHtm(file);
+			NpcHtmlMessage warning = new NpcHtmlMessage(1);
+			warning.setHtml(html);
+			
+			player.sendPacket(warning);
+		}
+	}
 
 	@Override
 	public String getType()
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 86)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -122,6 +122,7 @@
 import net.sf.l2j.gameserver.model.base.Race;
 import net.sf.l2j.gameserver.model.base.SubClass;
 import net.sf.l2j.gameserver.model.entity.Castle;
+import net.sf.l2j.gameserver.model.entity.ChaosEvent;
 import net.sf.l2j.gameserver.model.entity.Duel;
 import net.sf.l2j.gameserver.model.entity.Hero;
 import net.sf.l2j.gameserver.model.entity.Siege;
@@ -216,6 +217,10 @@
  */
 public final class L2PcInstance extends L2Playable
 {	
+	// Chaos Event.
+	public int _chaosKills;
+	public boolean _inChaosEvent = false;
+
 	// Character Skill SQL String Definitions:
 	private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE char_obj_id=? AND class_index=?";
 	private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (char_obj_id,skill_id,skill_level,class_index) VALUES (?,?,?,?)";
@@ -4689,6 +4694,7 @@
 		if (!(target instanceof L2Playable)) return;
 		
 		L2PcInstance targetPlayer = target.getActingPlayer();
+		ChaosEvent chaos = new ChaosEvent();
 
 		if (targetPlayer == null) return;                                          // Target player is null
 		if (targetPlayer == this) return;                                          // Target player is self
@@ -4707,9 +4713,14 @@
 			return;
 
         // Check if it's pvp
-		if ((checkIfPvP(target) && targetPlayer.getPvpFlag() != 0) 
-				|| (isInsideZone(ZONE_PVP) && targetPlayer.isInsideZone(ZONE_PVP)))
+		if ((checkIfPvP(target) && targetPlayer.getPvpFlag() != 0) || (isInsideZone(ZONE_PVP) && targetPlayer.isInsideZone(ZONE_PVP)))
+		{
             increasePvpKills();
+            if (_inChaosEvent && targetPlayer._inChaosEvent)
+            {
+            	_chaosKills++;
+            }
+		}
 		// Target player doesn't have pvp flag set
 		else
 		{
@@ -4722,6 +4733,10 @@
 			{
 				// 'Both way war' -> 'PvP Kill'
 				increasePvpKills();
+				if (_inChaosEvent && targetPlayer._inChaosEvent)
+				{
+					_chaosKills++;
+				}
 				return;
 			}
 
@@ -4729,10 +4744,23 @@
             if (targetPlayer.getKarma() > 0)
 			{
 				if (Config.KARMA_AWARD_PK_KILL)
+				{
                     increasePvpKills();
+                    if (_inChaosEvent && targetPlayer._inChaosEvent)
+                    {
+                    	_chaosKills++;
+                    }
+				}
 			}
-			else if (targetPlayer.getPvpFlag() == 0)
-                increasePkKillsAndKarma(targetPlayer.getLevel());
+            else if (targetPlayer.getPvpFlag() == 0 && !(_inChaosEvent && _inChaosEvent(targetPlayer)))
+            {
+            	increasePkKillsAndKarma(targetPlayer.getLevel());
+            }
+                        
+            if (targetPlayer.getPvpFlag() == 0 && (_inChaosEvent && targetPlayer._inChaosEvent))
+            {
+                _chaosKills++;
+            }
 		}
 	}
 
@@ -4740,6 +4768,11 @@
      * Increase the pvp kills count and send the info to the player
      *
      */
+	public boolean _inChaosEvent(L2Character target)
+	{
+		L2PcInstance targetPlayer = target.getActingPlayer();
+		return targetPlayer._inChaosEvent;
+	}
     public void increasePvpKills()
     {
         // Add karma to attacker and increase its PK counter
@@ -9343,6 +9376,12 @@
 			if (!DimensionalRiftManager.getInstance().checkIfInPeaceZone(getX(), getY(), getZ()))
 				getParty().getDimensionalRift().memberRessurected(this);
 		}
+				
+		ChaosEvent chaos = new ChaosEvent();
+		if (_inChaosEvent)
+		{
+			chaos.addSuperHaste(this);
+		}
 	}
 
 	@Override
Index: java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java	(revision 0)
@@ -0,0 +1,43 @@
+/*
+ * 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler;
+
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * This class ...
+ *
+ * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:30:09 $
+ */
+public interface IVoicedCommandHandler
+{
+	/**
+	 * this is the worker method that is called when someone uses an admin command.
+	 * @param activeChar
+	 * @param command
+	 * @return command success
+	 */
+	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target);
+
+	/**
+	 * this method is called at initialization to register all the item ids automatically
+	 * @return all known itemIds
+	 */
+	public String[] getVoicedCommandList();
+}
Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Chaos.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Chaos.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Chaos.java	(revision 0)
@@ -0,0 +1,68 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler.voicedcommandhandlers;
+
+import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.ChaosEvent;
+
+/**
+ *
+ * @author  Anarchy
+ */
+public class Chaos implements IVoicedCommandHandler
+{
+    private static final String[] VOICED_COMMANDS = { "joinchaos", "leavechaos" };
+    
+	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
+	{
+		ChaosEvent chaos = new ChaosEvent();
+		if (command.startsWith("joinchaos"))
+		{
+			if (chaos._isChaosActive)
+			{
+				chaos.registerToChaos(activeChar);
+				return true;
+			}
+			else
+			{
+				activeChar.sendMessage("Chaos Event is not currently active.");
+				return false;
+			}
+		}
+		if (command.startsWith("leavechaos"))
+		{
+			if (chaos._isChaosActive)
+			{
+				chaos.removeFromChaos(activeChar);
+				return true;
+			}
+			else
+			{
+				activeChar.sendMessage("Chaos Event is not currently active.");
+				return false;
+			}
+		}
+		return true;
+	}
+	
+	public String[] getVoicedCommandList()
+	{
+		return VOICED_COMMANDS;
+	}	
+}
Index: java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java	(revision 86)
+++ java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java	(working copy)
@@ -15,8 +15,13 @@
 package net.sf.l2j.gameserver.handler.chathandlers;
 
 import java.util.Collection;
+import java.util.StringTokenizer;
+import java.util.logging.Logger;
 
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.handler.IChatHandler;
+import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
+import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
 import net.sf.l2j.gameserver.model.BlockList;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
@@ -29,6 +34,7 @@
 public class ChatAll implements IChatHandler
 {
 	private static final int[] COMMAND_IDS = { 0 };
+	private static Logger _log = Logger.getLogger(ChatAll.class.getName());
 
 	/**
 	 * Handle chat type 'all'
@@ -36,16 +42,53 @@
 	 */
 	public void handleChat(int type, L2PcInstance activeChar, String params, String text)
 	{
-		CreatureSay cs = new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text);
-		Collection<L2PcInstance> plrs = activeChar.getKnownList().getKnownPlayers().values();
-
-		for (L2PcInstance player : plrs)
+		boolean vcd_used = false;
+		if (text.startsWith("."))
 		{
-			if (player != null && activeChar.isInsideRadius(player, 1250, false, true) && !BlockList.isBlocked(player, activeChar))
-				player.sendPacket(cs);
-		}
+			StringTokenizer st = new StringTokenizer(text);
+			IVoicedCommandHandler vch;
+			String command = "";
 			
-		activeChar.sendPacket(cs);
+							if (st.countTokens() > 1)
+							{
+								command = st.nextToken().substring(1);
+								params = text.substring(command.length() + 2);
+								vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);
+							}
+							else
+							{
+								command = text.substring(1);
+								if (Config.DEBUG)
+									_log.info("Command: " + command);
+								vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);
+							}
+							
+							if (vch != null)
+							{
+								vch.useVoicedCommand(command, activeChar, params);
+								vcd_used = true;
+							}
+							else
+							{
+								if (Config.DEBUG)
+									_log.warning("No handler registered for bypass '" + command + "'");
+								vcd_used = false;
+							}
+						}
+						
+						if (!vcd_used)
+						{
+							CreatureSay cs = new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text);
+							Collection<L2PcInstance> plrs = activeChar.getKnownList().getKnownPlayers().values();
+				
+							for (L2PcInstance player : plrs)
+							{
+								if (player != null && activeChar.isInsideRadius(player, 1250, false, true) && !BlockList.isBlocked(player, activeChar))
+									player.sendPacket(cs);
+							}
+							
+							activeChar.sendPacket(cs);
+						}
 	}
 
 	/**
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java	(revision 86)
+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -68,6 +68,7 @@
 import net.sf.l2j.gameserver.handler.ItemHandler;
 import net.sf.l2j.gameserver.handler.SkillHandler;
 import net.sf.l2j.gameserver.handler.UserCommandHandler;
+import net.sf.l2j.gameserver.handler.VoicedCommandHandler; 
 import net.sf.l2j.gameserver.idfactory.IdFactory;
 import net.sf.l2j.gameserver.instancemanager.AuctionManager;
 import net.sf.l2j.gameserver.instancemanager.BoatManager;
@@ -242,6 +243,7 @@
 		_log.config("ItemHandler: Loaded " + ItemHandler.getInstance().size() + " handlers.");
         _log.config("SkillHandler: Loaded " + SkillHandler.getInstance().size() + " handlers.");
         _log.config("UserCommandHandler: Loaded " + UserCommandHandler.getInstance().size() + " handlers.");
+        _log.config("VoicedCommandHandler: Loaded " + VoicedCommandHandler.getInstance().size() + " handlers.");
 						
 		if (Config.ALLOW_WEDDING)
 			CoupleManager.getInstance();
Index: java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java	(revision 0)
@@ -0,0 +1,78 @@
+/*
+ * 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler;
+
+import java.util.Map;
+import java.util.logging.Logger;
+
+import javolution.util.FastMap;
+import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminChaos;
+import net.sf.l2j.gameserver.handler.voicedcommandhandlers.*;
+
+public class VoicedCommandHandler
+{
+	private static Logger _log = Logger.getLogger(ItemHandler.class.getName());
+
+	private static VoicedCommandHandler 		_instance;
+	private Map<String, IVoicedCommandHandler> 	_datatable;
+
+	public static VoicedCommandHandler getInstance()
+	{
+		if (_instance == null)
+			_instance = new VoicedCommandHandler();
+		
+		return _instance;
+	}
+
+	private VoicedCommandHandler()
+	{
+		_datatable = new FastMap<String, IVoicedCommandHandler>();
+		
+        registerVoicedCommandHandler(new Chaos());
+	}
+
+	public void registerVoicedCommandHandler(IVoicedCommandHandler handler)
+	{
+		String[] ids = handler.getVoicedCommandList();
+		for (int i = 0; i < ids.length; i++)
+		{
+			if (Config.DEBUG) _log.fine("Adding handler for command "+ids[i]);
+			_datatable.put(ids[i], handler);
+		}
+	}
+
+	public IVoicedCommandHandler getVoicedCommandHandler(String voicedCommand)
+	{
+		String command = voicedCommand;
+		
+		if (voicedCommand.indexOf(" ") != -1)
+			command = voicedCommand.substring(0, voicedCommand.indexOf(" "));
+		
+		if (Config.DEBUG)
+			_log.fine("getting handler for command: "+command+" -> "+(_datatable.get(command) != null));
+		
+		return _datatable.get(command);
+	}
+
+    public int size()
+    {
+        return _datatable.size();
+    }
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/model/entity/ChaosEvent.java
===================================================================
--- java/net/sf/l2j/gameserver/model/entity/ChaosEvent.java	(revision 0)
+++ java/net/sf/l2j/gameserver/model/entity/ChaosEvent.java	(revision 0)
@@ -0,0 +1,230 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.model.entity;
+
+import java.util.Vector;
+
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.datatables.SkillTable;
+import net.sf.l2j.gameserver.model.L2Effect;
+import net.sf.l2j.gameserver.model.L2Skill;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ *
+ * @author  Anarchy
+ */
+public class ChaosEvent
+{
+	public static Vector<L2PcInstance> _players = new Vector<L2PcInstance>();
+	public static L2PcInstance _topplayer, _topplayer2, _topplayer3, _topplayer4, _topplayer5;
+	public static int _topkills = 0, _topkills2 = 0, _topkills3 = 0, _topkills4 = 0, _topkills5 = 0;
+	public static boolean _isChaosActive;
+	
+	public void startChaos()
+	{
+		_isChaosActive = true;
+		_players.clear();
+		Announcements.getInstance().announceToAll("Chaos Event has started!");
+		Announcements.getInstance().announceToAll("Type .joinchaos to join and .leavechaos to leave!");
+	}
+	
+	public void stopChaos()
+	{
+		_isChaosActive = false;
+		Announcements.getInstance().announceToAll("Chaos Event has ended!");
+		getTopKiller();
+		calculateRewards();
+		for (L2PcInstance player : _players)
+		{
+			removeSuperHaste(player);
+		}
+		cleanColors();
+		cleanPlayers();
+		_players.clear();
+	}
+	
+	public void cleanColors()
+	{
+		for (L2PcInstance player : _players)
+		{
+			player.getAppearance().setNameColor(0xFFFFFF);
+			player.broadcastUserInfo();
+		}
+	}
+	
+	public void cleanPlayers()
+	{
+		for (L2PcInstance player : _players)
+		{
+			player._inChaosEvent = false;
+			player._chaosKills = 0;
+			_topkills = 0;
+			_topplayer = null;
+		}
+	}
+	
+	public void registerToChaos(L2PcInstance player)
+	{
+		if (!registerToChaosOk(player))
+		{
+			return;
+		}
+		_players.add(player);
+		player._inChaosEvent = true;
+		player._chaosKills = 0;
+		player.getAppearance().setNameColor(0x000000);
+		player.broadcastUserInfo();
+		player.sendMessage("You have joined Chaos Event.");
+		addSuperHaste(player);
+	}
+	
+	public void addSuperHaste(L2PcInstance player)
+	{
+		L2Skill skill = SkillTable.getInstance().getInfo(7029,4);
+		if (skill != null)
+		{
+			skill.getEffects(player, player);
+		}
+	}
+	
+	public boolean registerToChaosOk(L2PcInstance chaosplayer)
+	{
+		if (chaosplayer._inChaosEvent)
+		{
+			chaosplayer.sendMessage("You already are in Chaos Event.");
+			return false;
+		}
+		return true;
+	}
+	public void removeFromChaos(L2PcInstance player)
+	{
+		if (!removeFromChaosOk(player))
+		{
+			return;
+		}
+			_players.remove(player);
+			player._chaosKills = 0;
+			player._inChaosEvent = false;
+			player.sendMessage("You have left Chaos Event.");
+			player.getAppearance().setNameColor(0xFFFFFF);
+			player.broadcastUserInfo();
+			removeSuperHaste(player);
+	}
+	public boolean removeFromChaosOk(L2PcInstance chaosplayer)
+	{
+		if (!chaosplayer._inChaosEvent)
+		{
+			chaosplayer.sendMessage("You are not in Chaos Event.");
+			return false;
+		}
+		return true;
+	}
+	public static void getTopKiller()
+	{
+		for (L2PcInstance player : _players)
+		{
+			if (player._chaosKills > _topkills)
+			{
+				_topplayer = player;
+				_topkills = player._chaosKills;
+			}
+			if ((player._chaosKills > _topkills2) && (player._chaosKills < _topkills))
+			{
+				_topplayer2 = player;
+				_topkills2 = player._chaosKills;
+			}
+			if ((player._chaosKills > _topkills3) && (player._chaosKills < _topkills2))
+			{
+				_topplayer3 = player;
+				_topkills3 = player._chaosKills;
+			}
+			if ((player._chaosKills > _topkills4) && (player._chaosKills < _topkills3))
+			{
+				_topplayer4 = player;
+				_topkills4 = player._chaosKills;
+			}
+			if ((player._chaosKills > _topkills5) && (player._chaosKills < _topkills4))
+			{
+				_topplayer5 = player;
+				_topkills5 = player._chaosKills;
+			}
+		}
+	}
+	public void calculateRewards()
+	{
+		if (_topplayer != null)
+		{
+			_topplayer.addItem("Chaos Event Reward", 57, 5000, _topplayer, true);
+		}
+		if (_topplayer2 != null)
+		{
+			_topplayer2.addItem("Chaos Event Reward 2", 57, 4000, _topplayer2, true);
+		}
+		if (_topplayer3 != null)
+		{
+			_topplayer3.addItem("Chaos Event Reward 3", 57, 3000, _topplayer3, true);
+		}
+		if (_topplayer4 != null)
+		{
+			_topplayer4.addItem("Chaos Event Reward 4", 57, 2000, _topplayer4, true);
+		}
+		if (_topplayer5 != null)
+		{
+			_topplayer5.addItem("Chaos Event Reward 5", 57, 1000, _topplayer5, true);
+		}
+		
+		Announcements.getInstance().announceToAll("Winner of Chaos Event:");
+		if (_topplayer != null)
+		{
+			Announcements.getInstance().announceToAll("1) "+_topplayer.getName());
+		}
+		if (_topplayer2 != null)
+		{
+			Announcements.getInstance().announceToAll("2) "+_topplayer2.getName());
+		}
+		if (_topplayer3 != null)
+		{
+			Announcements.getInstance().announceToAll("3) "+_topplayer3.getName());
+		}
+		if (_topplayer4 != null)
+		{
+			Announcements.getInstance().announceToAll("4) "+_topplayer4.getName());
+		}
+		if (_topplayer5 != null)
+		{
+			Announcements.getInstance().announceToAll("5) "+_topplayer5.getName());
+		}
+	}
+	
+	public void removeSuperHaste(L2PcInstance activeChar)
+	{	
+		if (activeChar != null)
+		{
+			L2Effect[] effects = activeChar.getAllEffects();
+			
+			for (L2Effect e : effects)
+			{
+				if ((e != null) && (e.getSkill().getId() == 7029))
+				{
+					e.exit();
+				}
+			}
+		}
+	}
+}

Guest
This topic is now closed to further replies.
  • Posts

    • I’ve seen tools like Find Person Name by Photo come in handy for creators who want to understand their audience better or spot fake accounts trying to piggyback on their growth. Pairing something like that with a solid SMM panel can make your workflow feel way smoother, especially if you're trying to grow without getting tangled in guesswork.
    • Join our discord: https://www.lineage2.cz/discord  
    • You should buy it then I’ll make a discount  
    • Hi everyone,   In 2014, I completely stepped away from developing L2 servers and doing L2J-related work. Since then, I’ve only opened this server about once a year and helped a few servers and individuals for free. I haven’t taken on any paid L2J work since then.   LINEAGE2.GOLD is a project that has reached about Season 6. The first season launched at the end of 2020 and was a fully rebuilt Gold-style server on the Classic client (protocol 110). It featured many custom systems and enhancements. After several seasons, I decided to abandon the Mobius-based project and move to Lucera, as my goal was to get as close as possible to Interlude PTS behavior while still staying on the L2J platform.   The current project was once again completely rebuilt, this time on the Essence client (protocol 306), and is based on Lucera. Because of that, acquiring a license from Deazer is required.   My Lucera extender includes, but is not limited to: Formulas.java Basic anti-bot detection, which proved quite effective, we caught most Adrenaline users using relatively simple server-side logic, logged them, and took staff action. Simple admin account lookup commands based on IP, HWID, and similar identifiers. In-game Captcha via https://lineage2.gold/code, protected by Cloudflare, including admin commands for blacklisting based on aggression levels and whitelisting. Additional admin tools such as Auto-Play status checks, Enchanted Hero Weapon live sync, force add/remove clans from castle sieges, item listeners for live item monitoring, and more. A fully rewritten Auto-Play system with support for ExAutoPlaySetting, while still using the Auto-Play UI wheel, featuring: Debuff Efficiency Party Leader Assist Respectful Hunting Healer AI Target Mode Range Mode Summoner buff support Dwarf mechanics Reworked EffectDispelEffects to restore buffs after Cancellation. Raid Bomb item support. Reworked CronZoneSwitcher. Prime Time Raid Respawn Service. Community Board features such as Top rankings and RB/Epic status. Custom systems for Noblesse, Subclasses, support-class rewards, and much more.   Depending on the deal, the project can include: The lineage2.gold domain The website built on the Laravel PHP framework The server’s Discord Client Interface source Server files and extender source The server database (excluding private data such as emails and passwords)   I’m primarily looking for a serious team to continue the project, as it would be a shame to see this work abandoned. This is not cheap. You can DM me with offers. If you’re wondering why I’m doing this: I’ve felt a clear lack of appreciation from the L2 community, and I’m not interested in doing charity work for people who don’t deserve it. I’m simply not someone who tolerates BS. Server Info: https://lineage2.gold/info Server for test: https://lineage2.gold/download Over 110 videos YouTube playlist: https://www.youtube.com/watch?v=HO7BZaxUv2U&list=PLD9WZ0Nj-zstZaYeWxAxTKbX7ia2M_DUu&index=113
  • 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