Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Sonido y mensaje al morir tipo LOL

Iniciado por Swarlog, Jul 25, 2025, 12:11 AM

Tema anterior - Siguiente tema

Swarlog

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Index: java/com/l2jserver/gameserver/instancemanager/SoundManager.java
===================================================================
--- java/com/l2jserver/gameserver/instancemanager/SoundManager.java	(revision 0)
+++ java/com/l2jserver/gameserver/instancemanager/SoundManager.java	(working copy)
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2004-2014 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server 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.
+ * 
+ * L2J Server 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.l2jserver.gameserver.instancemanager;
+
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
+import com.l2jserver.gameserver.network.serverpackets.PlaySound;
+import com.l2jserver.util.Rnd;
+
+public class SoundManager
+{
+	final static int MilisBetweenMultiKills = 5000;
+	
+	public static enum SoundFile
+	{
+		DUMMY("null"),
+		DOUBLE_KILL("doublekill"),
+		TRIPLE_KILL("triplekill"),
+		QUADRA_KILL("quadrakill"),
+		PENTA_KILL("pentakill"),
+		LEGENDARY_KILL("legendary");
+		
+		private final String FileName;
+		
+		SoundFile(String FileName)
+		{
+			this.FileName = FileName;
+		}
+		
+		public String getFileName()
+		{
+			return FileName;
+		}
+		
+		public static SoundFile getSoundFile(int i)
+		{
+			return SoundFile.values()[i];
+		}
+	}
+	
+	public static void playSound(Versus vs)
+	{
+		PlaySound sound;
+		int level = vs.getKillLevel();
+		level = level > 5 ? 5 : level;
+		String s = SoundFile.getSoundFile(level).getFileName() + Rnd.get(1, 3);
+		sound = new PlaySound(1, s, 0, 0, 0, 0, 0);
+		ExShowScreenMessage msg = new ExShowScreenMessage(vs.getPlayer().getName() + " has scored a " + SoundFile.getSoundFile(level).toString().replace("_", " ") + "!", 4000);
+		vs.getPlayer().sendPacket(msg);
+		vs.getPlayer().sendPacket(sound);
+		for (L2Character ch : vs.getPlayer().getKnownList().getKnownCharacters())
+		{
+			if (ch instanceof L2PcInstance)
+			{
+				ch.sendPacket(msg);
+				ch.sendPacket(sound);
+			}
+		}
+	}
+	
+	public static class Versus
+	{
+		private long _lastKillMs;
+		private int _killLevel;
+		final L2PcInstance _player;
+		
+		public Versus(L2PcInstance player)
+		{
+			_player = player;
+			_lastKillMs = System.currentTimeMillis();
+		}
+		
+		public void increaseKills()
+		{
+			if ((_lastKillMs + MilisBetweenMultiKills) > System.currentTimeMillis())
+			{
+				_killLevel++;
+			}
+			else
+			{
+				_killLevel = 0;
+				_lastKillMs = System.currentTimeMillis();
+			}
+			
+			if (_killLevel > 0)
+			{
+				playSound(this);
+			}
+		}
+		
+		public int getKillLevel()
+		{
+			return _killLevel;
+		}
+		
+		public L2PcInstance getPlayer()
+		{
+			return _player;
+		}
+	}
+}
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(revision 6528)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -115,6 +115,7 @@
 import com.l2jserver.gameserver.instancemanager.PunishmentManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
+import com.l2jserver.gameserver.instancemanager.SoundManager.Versus;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
@@ -894,6 +895,9 @@
 	private boolean _marryrequest = false;
 	private boolean _marryaccepted = false;
 	
+	// Sound Manager Custom:
+	Versus vs;
+	
 	// Save responder name for log it
 	private String _lastPetitionGmName = null;
 	
@@ -5704,6 +5732,16 @@
 			sendPacket(new UserInfo(this));
 			sendPacket(new ExBrExtraUserInfo(this));
 		}
+		
+		// Sound Manager Custom:
+		if (vs == null)
+		{
+			vs = new Versus(this);
+		}
+		else
+		{
+			vs.increaseKills();
+		}
 	}
 	
 	/**

NOTA: La carpeta "Announcer" añadirla en vuestro cliente para los sonidos, la llamada "music"; solo los sonidos y no la carpeta Announcer.