Przeglądaj źródła

Party packets updated and leader crown icon fixed. Thx Kerberos :)

GodKratos 16 lat temu
rodzic
commit
1aeeba829b

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/CursedWeapon.java

@@ -451,7 +451,7 @@ public class CursedWeapon
 		_player.setKarma(9999999);
 		_player.setPkKills(0);
 		if (_player.isInParty())
-			_player.getParty().oustPartyMember(_player);
+			_player.getParty().removePartyMember(_player);
 
 		// Disable All Skills
         disableAllSkills();

+ 42 - 101
L2_GameServer/java/net/sf/l2j/gameserver/model/L2Party.java

@@ -39,7 +39,6 @@ import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowAdd;
 import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowAll;
 import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowDelete;
 import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowDeleteAll;
-import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowUpdate;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
 import net.sf.l2j.gameserver.skills.Stats;
 import net.sf.l2j.gameserver.util.Util;
@@ -122,7 +121,6 @@ public class L2Party {
 	 * get random member from party
 	 * @return
 	 */
-	//private L2PcInstance getRandomMember() { return getPartyMembers().get(Rnd.get(getPartyMembers().size())); }
 	private L2PcInstance getCheckedRandomMember(int ItemId, L2Character target)
 	{
 		List<L2PcInstance> availableMembers = new FastList<L2PcInstance>();
@@ -139,13 +137,6 @@ public class L2Party {
 	 * get next item looter
 	 * @return
 	 */
-	/*private L2PcInstance getNextLooter()
-	{
-		_itemLastLoot++;
-		if (_itemLastLoot > getPartyMembers().size() -1) _itemLastLoot = 0;
-
-		return (getPartyMembers().size() > 0) ? getPartyMembers().get(_itemLastLoot) : null;
-	}*/
 	private L2PcInstance getCheckedNextLooter(int ItemId, L2Character target)
 	{
 		for (int i = 0; i < getMemberCount(); i++)
@@ -156,7 +147,8 @@ public class L2Party {
 			{
 				member = getPartyMembers().get(_itemLastLoot);
 				if (member.getInventory().validateCapacityByItemId(ItemId) &&
-	                    Util.checkIfInRange(Config.ALT_PARTY_RANGE2, target, member, true)) return member;
+						Util.checkIfInRange(Config.ALT_PARTY_RANGE2, target, member, true))
+					return member;
 			}
 			catch (Exception e)
 			{
@@ -221,6 +213,18 @@ public class L2Party {
 		}
 	}
 	
+	public void broadcastToPartyMembersNewLeader()
+	{
+		for (L2PcInstance member : getPartyMembers())
+		{
+			if (member != null)
+			{
+				member.sendPacket(new PartySmallWindowDeleteAll());
+				member.sendPacket(new PartySmallWindowAll(member, getPartyMembers()));
+			}
+		}
+	}
+	
 	public void broadcastCSToPartyMembers(CreatureSay msg, L2PcInstance broadcaster)
 	{
 		for (L2PcInstance member : getPartyMembers())
@@ -309,13 +313,27 @@ public class L2Party {
 	}
 
 	/**
-	 * removes player from party
-	 * @param player
+	 * Remove player from party
+	 * Overloaded method that takes player's name as parameter
+	 * @param name
 	 */
+	public void removePartyMember(String name)
+	{
+		L2PcInstance player = getPlayerByName(name);
+
+		if (player != null)
+			removePartyMember(player);
+	}
+
+	/**
+	 * Remove player from party
+	 * @param player
+     */
 	public void removePartyMember(L2PcInstance player)
 	{
 		if (getPartyMembers().contains(player))
 		{
+			boolean isLeader = isLeader(player);
 			getPartyMembers().remove(player);
 			recalculatePartyLevel();
 
@@ -360,11 +378,19 @@ public class L2Party {
 				player.sendPacket(new ExCloseMPCC());
 			}
 
+			if (isLeader && getPartyMembers().size() > 1)
+			{
+				msg = new SystemMessage(SystemMessageId.S1_HAS_BECOME_A_PARTY_LEADER);
+				msg.addString(getLeader().getName());
+				broadcastToPartyMembers(msg);
+				broadcastToPartyMembersNewLeader();
+			}
+			
 			if (getPartyMembers().size() == 1)
 			{
 				if (isInCommandChannel())
 				{
-					// delete the whole Commandchannel when the party who opened the channel is disbanded
+					// delete the whole command channel when the party who opened the channel is disbanded
 					if (getCommandChannel().getChannelLeader().equals(getLeader()))
 					{
 						getCommandChannel().disbandChannel();
@@ -381,6 +407,7 @@ public class L2Party {
 					if (leader.isInDuel())
 						DuelManager.getInstance().onRemoveFromParty(leader);
 				}
+				_members = null;
 			}
 		}
 	}
@@ -389,7 +416,6 @@ public class L2Party {
 	 * Change party leader (used for string arguments)
 	 * @param name
 	 */
-
 	public void changePartyLeader(String name)
 	{
 		L2PcInstance player = getPlayerByName(name);
@@ -410,11 +436,12 @@ public class L2Party {
 					temp = getLeader();
 					getPartyMembers().set(0,getPartyMembers().get(p1));
 					getPartyMembers().set(p1,temp);
+					
 
 					SystemMessage msg = new SystemMessage(SystemMessageId.S1_HAS_BECOME_A_PARTY_LEADER);
 					msg.addString(getLeader().getName());
 					broadcastToPartyMembers(msg);
-					broadcastToPartyMembers(new PartySmallWindowUpdate(getLeader()));
+					broadcastToPartyMembersNewLeader();
 					if (isInCommandChannel() && temp.equals(_commandChannel.getChannelLeader()))
 					{
 						_commandChannel.setChannelLeader(getLeader());
@@ -446,92 +473,6 @@ public class L2Party {
 		return null;
 	}
 
-	/**
-	 * Oust player from party
-	 * @param player
-	 */
-	public void oustPartyMember(L2PcInstance player)
-	{
-		if (getPartyMembers().contains(player))
-		{
-			if (isLeader(player))
-			{
-				removePartyMember(player);
-				if (getPartyMembers().size() > 1)
-				{
-					SystemMessage msg = new SystemMessage(SystemMessageId.S1_HAS_BECOME_A_PARTY_LEADER);
-					msg.addString(getLeader().getName());
-					broadcastToPartyMembers(msg);
-					broadcastToPartyMembers(new PartySmallWindowUpdate(getLeader()));
-				}
-			}
-			else
-			{
-				removePartyMember(player);
-			}
-
-            if (getPartyMembers().size() == 1)
-            {
-                // No more party needed
-                _members = null;
-            }
-		}
-	}
-
-	/**
-	 * Oust player from party
-	 * Overloaded method that takes player's name as parameter
-	 * @param name
-	 */
-	public void oustPartyMember(String name)
-	{
-		L2PcInstance player = getPlayerByName(name);
-
-		if (player != null)
-		{
-			if (isLeader(player))
-			{
-				removePartyMember(player);
-                if (getPartyMembers().size() > 1)
-                {
-    				SystemMessage msg = new SystemMessage(SystemMessageId.S1_HAS_BECOME_A_PARTY_LEADER);
-    				msg.addString(getLeader().getName());
-    				broadcastToPartyMembers(msg);
-    				broadcastToPartyMembers(new PartySmallWindowUpdate(getLeader()));
-                }
-			}
-			else
-			{
-				removePartyMember(player);
-			}
-
-            if (getPartyMembers().size() == 1)
-            {
-                // No more party needed
-                _members = null;
-            }
-		}
-	}
-
-	/**
-	 * dissolves entire party
-	 *
-	 */
-	/*  [DEPRECATED]
-	 private void dissolveParty()
-	 {
-	 	SystemMessage msg = new SystemMessage(SystemMessageId.PARTY_DISPERSED);
-	 	for(int i = 0; i < _members.size(); i++)
-	 	{
-	 		L2PcInstance temp = _members.get(i);
-	 		temp.sendPacket(msg);
-	 		temp.sendPacket(new PartySmallWindowDeleteAll());
-	 		temp.setParty(null);
-	 	}
-	 }
-	 */
-
-
 	/**
 	 * distribute item(s) to party members
 	 * @param player

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestOustPartyMember.java

@@ -46,7 +46,7 @@ public final class RequestOustPartyMember extends L2GameClientPacket
 			if (activeChar.getParty().isInDimensionalRift() && !activeChar.getParty().getDimensionalRift().getRevivedAtWaitingRoom().contains(activeChar))
 				activeChar.sendMessage("You can't dismiss party member when you are in Dimensional Rift.");
 			else
-				activeChar.getParty().oustPartyMember(_name);
+				activeChar.getParty().removePartyMember(_name);
 		}
 	}
 

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestWithDrawalParty.java

@@ -46,7 +46,7 @@ public final class RequestWithDrawalParty extends L2GameClientPacket
 			if (player.getParty().isInDimensionalRift() && !player.getParty().getDimensionalRift().getRevivedAtWaitingRoom().contains(player))
 				player.sendMessage("You can't exit party when you are in Dimensional Rift.");
 			else
-				player.getParty().oustPartyMember(player);
+				player.getParty().removePartyMember(player);
 		}
 	}
 

+ 13 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/serverpackets/PartySmallWindowAll.java

@@ -81,7 +81,19 @@ public final class PartySmallWindowAll extends L2GameServerPacket
 				writeD(member.getClassId().getId());
 				writeD(0);//writeD(0x01); ??
 				writeD(member.getRace().ordinal());
-				writeD(0);
+				if (member.getPet() != null)
+				{
+					writeD(member.getPet().getObjectId());
+					writeD(member.getPet().getNpcId()+1000000);
+					writeS(member.getPet().getName());
+					writeD((int)member.getPet().getCurrentHp());
+					writeD(member.getPet().getMaxHp());
+					writeD((int)member.getPet().getCurrentMp());
+					writeD(member.getPet().getMaxMp());
+					writeD(member.getPet().getLevel());
+				}
+				else
+					writeD(0);
 			}
 		}
 	}