테스트

aion-server 4.8

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

import java.util.Arrays;
import java.util.Collection;

import com.aionemu.gameserver.dataholders.DataManager;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.gameobjects.player.PortalCooldown;
import com.aionemu.gameserver.model.templates.InstanceCooltime;
import com.aionemu.gameserver.network.aion.AionConnection;
import com.aionemu.gameserver.network.aion.AionServerPacket;

/**
 * @author nrg, Neon
 */
public class SM_INSTANCE_INFO extends AionServerPacket {

	private byte updateType; // 0 = reset existing data and write new info, 1 = update team info (leader is always first), 2 = add/overwrite data without resetting other
	private Collection<Player> players; // list of players for which their cooldown info will be sent (as of 4.7 there are client bugs which can crash it on 4+ players)
	private Integer[] instanceIds; // list of instances for which the data should be updated

	public SM_INSTANCE_INFO(byte updateType, Player player, Integer... instanceId) {
		this(updateType, Arrays.asList(player), instanceId);
	}

	public SM_INSTANCE_INFO(byte updateType, Collection<Player> players, Integer... instanceId) {
		this.updateType = updateType;
		this.players = players;
		this.instanceIds =  instanceId.length > 0 ? instanceId : DataManager.INSTANCE_COOLTIME_DATA.getInstanceCooltimes().keySet().toArray(new Integer[0]);
	}

	@Override
	protected void writeImpl(AionConnection con) {
		Player activePlayer = con.getActivePlayer();
		writeC(updateType);
		writeD(instanceIds.length == 1 ? DataManager.INSTANCE_COOLTIME_DATA.getInstanceCooltimeByWorldId(instanceIds[0]).getId() : 0); // cooldown ID if only one instance is updated
		writeC(0x00); // unk1
		writeH(players.size());
		for (Player player : players) {
			writeD(player.getObjectId());
			writeH(instanceIds.length);
			for (int worldId : instanceIds) {
				PortalCooldown cooldown = player.getPortalCooldownList().getPortalCooldown(worldId);
				InstanceCooltime cooltime = DataManager.INSTANCE_COOLTIME_DATA.getInstanceCooltimeByWorldId(worldId);
				writeD(cooltime.getId());
				writeD(0x00);
				writeD(cooldown == null ? 0 : (int) (cooldown.getReuseTime() - System.currentTimeMillis()) / 1000); // will only be shown from client if entriesUsed == maxEntries
				writeD(cooltime.getMaxCount()); // max entries
				writeD(cooldown == null ? 0 : -cooldown.getEnterCount()); // entry offset (from max)
				writeC(cooltime.getRace() == activePlayer.getOppositeRace() ? 0 : 1); // hide flag (1 = show, 0 = hide instance from list)
			}
			writeS(player.getName());
		}
	}
}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 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