테스트

aion-server 4.8

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

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

import com.aionemu.gameserver.network.aion.AionConnection;
import com.aionemu.gameserver.network.aion.AionServerPacket;

/**
 * This class is used to send to client packets generated by admins with command //fsc
 * 
 * @author Luno
 * @see com.aionemu.gameserver.utils.chathandlers.admincommands.SendFakeServerPacket
 */
public class SM_CUSTOM_PACKET extends AionServerPacket {

	/** Enumeration of types of packet elements. */
	public static enum PacketElementType {
		D('d') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeD(Integer.decode(value));
			}
		},
		B('b') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeB(new byte[Integer.valueOf(value)]);
			}
		},
		H('h') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeH(Integer.decode(value));
			}
		},
		C('c') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeC(Integer.decode(value));
			}
		},
		F('f') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeF(Float.valueOf(value));
			}
		},
		DF('e') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeDF(Double.valueOf(value));
			}
		},
		Q('q') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeQ(Long.decode(value));
			}
		},
		S('s') {

			@Override
			public void write(SM_CUSTOM_PACKET packet, String value) {
				packet.writeS(value);
			}
		};

		private final char code;

		private PacketElementType(char code) {
			this.code = code;
		}

		public static PacketElementType getByCode(char code) {
			for (PacketElementType type : values())
				if (type.code == code)
					return type;
			return null;
		}

		/**
		 * Writes <tt>value</tt> to buffer according to the ElementType
		 * 
		 * @param packet
		 *          packet instance
		 * @param buf
		 *          packet write buffer
		 * @param value
		 *          element value
		 */
		public abstract void write(SM_CUSTOM_PACKET packet, String value);
	}

	public static class PacketElement {

		private final PacketElementType type;
		private final String value;

		public PacketElement(PacketElementType type, String value) {
			this.type = type;
			this.value = value;
		}

		/**
		 * Writes value stored in this PacketElement into buffer <tt>buf</tt>
		 * 
		 * @param packet
		 *          packet instance.
		 * @param buf
		 *          packet write buffer.
		 */
		public void writeValue(SM_CUSTOM_PACKET packet) {
			type.write(packet, value);
		}
	}

	private List<PacketElement> elements = new ArrayList<>();

	public SM_CUSTOM_PACKET(int opcode) {
		super(opcode);
	}

	/**
	 * Add an element to this packet.
	 * 
	 * @param packetElement
	 */
	public void addElement(PacketElement packetElement) {
		elements.add(packetElement);
	}

	/**
	 * Add packet element.
	 * 
	 * @param type
	 * @param value
	 */
	public void addElement(PacketElementType type, String value) {
		elements.add(new PacketElement(type, value));
	}

	@Override
	public void writeImpl(AionConnection con) {
		for (PacketElement el : elements) {
			el.writeValue(this);
		}
	}
}

📎 첨부파일

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