Browse Source

BETA: AllianceInfoPacket thanks afk5min

Rumen Nikiforov 13 years ago
parent
commit
a937204d63

+ 47 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/ClanInfo.java

@@ -0,0 +1,47 @@
+/*
+ * 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.l2jserver.gameserver.model;
+
+/**
+ * @author UnAfraid
+ */
+public class ClanInfo
+{
+	private final L2Clan _clan;
+	private final int _total;
+	private final int _online;
+	
+	public ClanInfo(final L2Clan clan)
+	{
+		_clan = clan;
+		_total = clan.getMembersCount();
+		_online = clan.getOnlineMembersCount();
+	}
+	
+	public L2Clan getClan()
+	{
+		return _clan;
+	}
+	
+	public int getTotal()
+	{
+		return _total;
+	}
+	
+	public int getOnline()
+	{
+		return _online;
+	}
+}

+ 58 - 55
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestAllyInfo.java

@@ -14,22 +14,20 @@
  */
 package com.l2jserver.gameserver.network.clientpackets;
 
-import com.l2jserver.gameserver.datatables.ClanTable;
-import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.ClanInfo;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.AllianceInfo;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 /**
  * This class ...
- *
  * @version $Revision: 1479 $ $Date: 2005-11-09 00:47:42 +0100 (mer., 09 nov. 2005) $
  */
 public final class RequestAllyInfo extends L2GameClientPacket
 {
 	private static final String _C__2E_REQUESTALLYINFO = "[C] 2E RequestAllyInfo";
 	
-	
 	@Override
 	public void readImpl()
 	{
@@ -44,61 +42,66 @@ public final class RequestAllyInfo extends L2GameClientPacket
 			return;
 		
 		SystemMessage sm;
-		if (activeChar.getAllyId() == 0)
-		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.NO_CURRENT_ALLIANCES);
-			sendPacket(sm);
-			return;
-		}
-		
-		sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_INFO_HEAD);
-		sendPacket(sm);
-		sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_NAME_S1);
-		sm.addString(activeChar.getClan().getAllyName());
-		sendPacket(sm);
-		
-		int clanCount = 0;
-		int totalMembers = 0;
-		int onlineMembers = 0;
-		for (L2Clan clan : ClanTable.getInstance().getClanAllies(activeChar.getAllyId()))
+		final int allianceId = activeChar.getAllyId();
+		if (allianceId > 0)
 		{
-			clanCount++;
-			totalMembers += clan.getMembersCount();
-			onlineMembers += clan.getOnlineMembersCount();
+			final AllianceInfo ai = new AllianceInfo(allianceId);
+			activeChar.sendPacket(ai);
+			
+			// send for player
+			sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_INFO_HEAD);
+			activeChar.sendPacket(sm);
+			
+			sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_NAME_S1);
+			sm.addString(ai.getName());
+			activeChar.sendPacket(sm);
+			
+			sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_LEADER_S2_OF_S1);
+			sm.addString(ai.getLeaderC());
+			sm.addString(ai.getLeaderP());
+			activeChar.sendPacket(sm);
+			
+			sm = SystemMessage.getSystemMessage(SystemMessageId.CONNECTION_S1_TOTAL_S2);
+			sm.addNumber(ai.getOnline());
+			sm.addNumber(ai.getTotal());
+			activeChar.sendPacket(sm);
+			
+			sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_CLAN_TOTAL_S1);
+			sm.addNumber(ai.getAllies().length);
+			activeChar.sendPacket(sm);
+			
+			sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_HEAD);
+			for (final ClanInfo aci : ai.getAllies())
+			{
+				activeChar.sendPacket(sm);
+				
+				sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_NAME_S1);
+				sm.addString(aci.getClan().getName());
+				activeChar.sendPacket(sm);
+				
+				sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_LEADER_S1);
+				sm.addString(aci.getClan().getLeaderName());
+				activeChar.sendPacket(sm);
+				
+				sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_LEVEL_S1);
+				sm.addNumber(aci.getClan().getLevel());
+				activeChar.sendPacket(sm);
+				
+				sm = SystemMessage.getSystemMessage(SystemMessageId.CONNECTION_S1_TOTAL_S2);
+				sm.addNumber(aci.getOnline());
+				sm.addNumber(aci.getTotal());
+				activeChar.sendPacket(sm);
+				
+				sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_SEPARATOR);
+			}
+			
+			sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_FOOT);
+			activeChar.sendPacket(sm);
 		}
-		sm = SystemMessage.getSystemMessage(SystemMessageId.CONNECTION_S1_TOTAL_S2);
-		sm.addNumber(onlineMembers);
-		sm.addNumber(totalMembers);
-		sendPacket(sm);
-		
-		final L2Clan leaderClan = ClanTable.getInstance().getClan(activeChar.getAllyId());
-		sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_LEADER_S2_OF_S1);
-		sm.addString(leaderClan.getName());
-		sm.addString(leaderClan.getLeaderName());
-		sendPacket(sm);
-		
-		sm = SystemMessage.getSystemMessage(SystemMessageId.ALLIANCE_CLAN_TOTAL_S1);
-		sm.addNumber(clanCount);
-		sendPacket(sm);
-		
-		sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_HEAD);
-		for (L2Clan clan : ClanTable.getInstance().getClanAllies(activeChar.getAllyId()))
+		else
 		{
-			sendPacket(sm); // send head or separator
-			sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_NAME_S1);
-			sm.addString(clan.getName());
-			sendPacket(sm);
-			sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_LEADER_S1);
-			sm.addString(clan.getLeaderName());
-			sendPacket(sm);
-			sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_LEVEL_S1);
-			sm.addNumber(clan.getLevel());
-			sendPacket(sm);
-			sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_SEPARATOR);
+			activeChar.sendPacket(SystemMessageId.NO_CURRENT_ALLIANCES);
 		}
-		
-		sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_INFO_FOOT);
-		sendPacket(sm);
 	}
 	
 	@Override

+ 119 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/AllianceInfo.java

@@ -0,0 +1,119 @@
+/*
+ * 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.l2jserver.gameserver.network.serverpackets;
+
+import java.util.Collection;
+
+import com.l2jserver.gameserver.datatables.ClanTable;
+import com.l2jserver.gameserver.model.ClanInfo;
+import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.network.clientpackets.RequestAllyInfo;
+
+/**
+ * Sent in response to {@link RequestAllyInfo}, if applicable.<BR>
+ * <BR>
+ * Exclusively for <a href="http://www.l2jserver.com/">L2jServer</a>.
+ * @author afk5min
+ */
+public class AllianceInfo extends L2GameServerPacket
+{
+	private final String _name;
+	private final int _total;
+	private final int _online;
+	private final String _leaderC;
+	private final String _leaderP;
+	private final ClanInfo[] _allies;
+	
+	public AllianceInfo(int allianceId)
+	{
+		final L2Clan leader = ClanTable.getInstance().getClan(allianceId);
+		_name = leader.getAllyName();
+		_leaderC = leader.getName();
+		_leaderP = leader.getLeaderName();
+		
+		final Collection<L2Clan> allies = ClanTable.getInstance().getClanAllies(allianceId);
+		_allies = new ClanInfo[allies.size()];
+		int idx = 0, total = 0, online = 0;
+		for (final L2Clan clan : allies)
+		{
+			final ClanInfo ci = new ClanInfo(clan);
+			_allies[idx++] = ci;
+			total += ci.getTotal();
+			online += ci.getOnline();
+		}
+		
+		_total = total;
+		_online = online;
+	}
+	
+	@Override
+	protected void writeImpl()
+	{
+		writeC(0xB5);
+		
+		writeS(_name);
+		writeD(_total);
+		writeD(_online);
+		writeS(_leaderC);
+		writeS(_leaderP);
+		
+		writeD(_allies.length);
+		for (final ClanInfo aci : _allies)
+		{
+			writeS(aci.getClan().getName());
+			writeD(0x00);
+			writeD(aci.getClan().getLevel());
+			writeS(aci.getClan().getLeaderName());
+			writeD(aci.getTotal());
+			writeD(aci.getOnline());
+		}
+	}
+	
+	@Override
+	public String getType()
+	{
+		return "[S] B5 AllianceInfoPacket";
+	}
+	
+	public String getName()
+	{
+		return _name;
+	}
+	
+	public int getTotal()
+	{
+		return _total;
+	}
+	
+	public int getOnline()
+	{
+		return _online;
+	}
+	
+	public String getLeaderC()
+	{
+		return _leaderC;
+	}
+	
+	public String getLeaderP()
+	{
+		return _leaderP;
+	}
+	
+	public ClanInfo[] getAllies()
+	{
+		return _allies;
+	}
+}