package com.aionemu.gameserver.network.aion.serverpackets;
import com.aionemu.gameserver.model.account.PlayerAccountData;
import com.aionemu.gameserver.network.aion.AionConnection;
/**
* This packet is response for CM_CREATE_CHARACTER
*
* @author Nemesiss, AEJTester, Neon
*/
public class SM_CREATE_CHARACTER extends AbstractPlayerInfoPacket {
/** If response is ok */
public static final int RESPONSE_OK = 0x00;
/** Failed to create the character */
public static final int FAILED_TO_CREATE_THE_CHARACTER = 1;
/** Failed to create the character due to world db error */
public static final int RESPONSE_DB_ERROR = 2;
/** The number of characters exceeds the maximum allowed for the server */
public static final int RESPONSE_SERVER_LIMIT_EXCEEDED = 4;
/** Invalid character name */
public static final int RESPONSE_INVALID_NAME = 5;
/** The name includes forbidden words */
public static final int RESPONSE_FORBIDDEN_CHAR_NAME = 9;
/** A character with that name already exists */
public static final int RESPONSE_NAME_ALREADY_USED = 10;
/** The name is already reserved */
public static final int RESPONSE_NAME_RESERVED = 11;
/** You cannot create characters of other races in the same server */
public static final int RESPONSE_OTHER_RACE = 12;
/** You cannot create the selected class in the current server */
public static final int RESPONSE_FORBIDDEN_CLASS = 20;
/** open create characters window */
public static final int RESPONSE_OPEN_CREATION_WINDOW = 22;
/**
* response code
*/
private final int responseCode;
/**
* Newly created player.
*/
private final PlayerAccountData playerAccData;
/**
* Constructs new <tt>SM_CREATE_CHARACTER</tt> packet
*
* @param accPlData
* playerAccountData of player that was created
* @param responseCode
* response code (invalid nickname, nickname is already taken, ok)
*/
public SM_CREATE_CHARACTER(PlayerAccountData accPlData, int responseCode) {
this.playerAccData = accPlData;
this.responseCode = responseCode;
}
@Override
protected void writeImpl(AionConnection con) {
writeD(responseCode);
if (responseCode != RESPONSE_OK)
return;
writePlayerInfo(playerAccData, con);
}
}