테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/src/com/aionemu/gameserver/network/aion/serverpackets/SM_ALLIANCE_INFO.java
package com.aionemu.gameserver.network.aion.serverpackets;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.team.alliance.PlayerAlliance;
import com.aionemu.gameserver.model.team.common.legacy.LootGroupRules;
import com.aionemu.gameserver.model.team.league.League;
import com.aionemu.gameserver.network.aion.AionConnection;
import com.aionemu.gameserver.network.aion.AionServerPacket;

/**
 * @author Sarynth, xTz
 */
public class SM_ALLIANCE_INFO extends AionServerPacket {

	private LootGroupRules lootRules, lootLeagueRules;
	private PlayerAlliance alliance;
	private int leaderid;
	private int groupid;
	private int type;
	private int subType;
	private final int messageId;
	private final String message;
	private int leagueId;
	private final List<AllianceInfo> leagueData = new ArrayList<>();
	public static final int VICECAPTAIN_PROMOTE = 1300984;
	public static final int VICECAPTAIN_DEMOTE = 1300985;
	public static final int LEAGUE_ALLIANCE_ENTERED = 1400560; // Your alliance has joined %0's Alliance League.
	public static final int LEAGUE_JOINED_ALLIANCE = 1400561; // %0's alliance has joined the Alliance League.
	public static final int LEAGUE_LEFT_ME = 1400571;
	public static final int LEAGUE_LEFT_HIM = 1400572;
	public static final int LEAGUE_EXPEL = 1400574;
	public static final int LEAGUE_EXPELLED = 1400576;
	public static final int LEAGUE_DISPERSED = 1400579;

	private class AllianceInfo {

		private int alliancePosition;
		private int allianceObjectId;
		private int memberCount;
		private String captainName = "";
		private int captainWorldId = 0;

		public int getAlliancePosition() {
			return alliancePosition;
		}

		public void setAlliancePosition(int alliancePosition) {
			this.alliancePosition = alliancePosition;
		}

		public int getAllianceObjectId() {
			return allianceObjectId;
		}

		public void setAllianceObjectId(int allianceObjectId) {
			this.allianceObjectId = allianceObjectId;
		}

		public void setMemberCount(int memberCount) {
			this.memberCount = memberCount;
		}

		public int getMemberCount() {
			return memberCount;
		}

		public String getCaptainName() {
			return captainName;
		}

		public void setCaptainName(String captainName) {
			this.captainName = captainName;
		}

		public int getCaptainWorldId() {
			return captainWorldId;
		}

		public void setCaptainWorldId(int captainWorldId) {
			this.captainWorldId = captainWorldId;
		}

	}

	public SM_ALLIANCE_INFO(PlayerAlliance alliance) {
		this(alliance, 0, "", null);
	}

	public SM_ALLIANCE_INFO(PlayerAlliance alliance, PlayerAlliance skipped) {
		this(alliance, 0, "", skipped);
	}

	public SM_ALLIANCE_INFO(PlayerAlliance alliance, int messageId, String message) {
		this(alliance, messageId, message, null);
	}

	public SM_ALLIANCE_INFO(PlayerAlliance alliance, int messageId, String message, PlayerAlliance skipped) {
		this.alliance = alliance;
		groupid = alliance.getObjectId();
		leaderid = alliance.getLeader().getObjectId();
		lootRules = alliance.getLootGroupRules();
		type = alliance.getTeamType().getType();
		subType = alliance.getTeamType().getSubType();
		this.messageId = messageId;
		this.message = message;
		League league = alliance.getLeague();
		if (league != null) {
			leagueId = league.getTeamId();
			lootLeagueRules = league.getLootGroupRules();
			for (Player captain : league.getCaptains()) {
				AllianceInfo info = new AllianceInfo();
				PlayerAlliance captainAlliance = captain.getPlayerAlliance();
				if (captainAlliance != null) {
					info.setAlliancePosition(league.getMember(captainAlliance.getObjectId()).getLeaguePosition());
					info.setAllianceObjectId(captainAlliance.getObjectId());
					info.setMemberCount(captainAlliance.size());
					if (!captainAlliance.equals(skipped)) {
						info.setCaptainName(captain.getName());
						info.setCaptainWorldId(captain.getWorldId());
					}
				}
				leagueData.add(info);
			}
		}
	}

	@Override
	protected void writeImpl(AionConnection con) {
		Player player = con.getActivePlayer();
		writeH(alliance.groupSize());
		writeD(groupid);
		writeD(leaderid);
		writeD(player == null || player.getPosition() == null ? 0 : player.getWorldId());// mapId
		Collection<Integer> ids = alliance.getViceCaptainIds();
		for (Integer id : ids) {
			writeD(id);
		}
		for (int i = 0; i < 4 - ids.size(); i++) {
			writeD(0);
		}
		writeD(lootRules.getLootRule().getId());
		writeD(lootRules.getMisc());
		writeD(lootRules.getCommonItemAbove());
		writeD(lootRules.getSuperiorItemAbove());
		writeD(lootRules.getHeroicItemAbove());
		writeD(lootRules.getFabledItemAbove());
		writeD(lootRules.getEternalItemAbove());
		writeD(lootRules.getMythicItemAbove());
		writeD(0x02);
		writeC(0x00);
		writeD(type);
		writeD(subType); // 3.5
		writeD(leagueId);
		for (int a = 0; a < 4; a++) {
			writeD(a); // group num
			writeD(1000 + a); // group id
		}
		writeD(messageId); // System message ID
		writeS(messageId != 0 ? message : ""); // System message
		if (!leagueData.isEmpty()) {
			writeH(leagueData.size());
			writeD(lootLeagueRules.getLootRule().getId());
			writeD(lootLeagueRules.getMisc());
			writeD(lootLeagueRules.getCommonItemAbove());
			writeD(lootLeagueRules.getSuperiorItemAbove());
			writeD(lootLeagueRules.getHeroicItemAbove());
			writeD(lootLeagueRules.getFabledItemAbove());
			writeD(lootLeagueRules.getEternalItemAbove());
			writeD(lootLeagueRules.getMythicItemAbove());
			writeD(0x02);
			for (AllianceInfo info : leagueData) {
				writeD(info.getAlliancePosition());
				writeD(info.getAllianceObjectId());
				writeD(info.getMemberCount());
				writeS(info.getCaptainName());
				writeD(info.getCaptainWorldId());
			}
		}
	}

}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 102,949
2 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 63,733
3 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,771
4 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 36,923
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 35,011
6 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,470
7 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 29,077
8 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
9 no_profile 보거스쪽지보내기 자기소개 아이디로 검색 전체게시물 26,731
10 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 17,020
알림 0