Ejemplo n.º 1
0
        public static void CreateCharacter(NetConnection connection, NetIncomingMessage data)
        {
            // Se a crição de personagem não estiver ativa, envia mensagem de erro
            if (!GameSettings.CharacterCreation)
            {
                WorldPacket.Message(connection, (int)PacketList.WorldServer_Client_CharacterCreationDisabled);
                return;
            }

            //nome do personagem
            var charactername = data.ReadString();

            //se encontrar nome nao permitido, envia mensagem de erro
            if (!ProhibitedNames.Compare(charactername))
            {
                WorldPacket.Message(connection, (int)PacketList.WorldServer_Client_CharNameInUse);
                return;
            }

            // Se o nome existir no banco de dados, envia mensagem de erro
            if (Character_DB.Exist(charactername))
            {
                WorldPacket.Message(connection, (int)PacketList.WorldServer_Client_CharNameInUse);
                return;
            }

            //encontra o usuário para adicionar as informações
            var pData = Authentication.FindByConnection(connection);

            var slot   = data.ReadByte();
            var classe = data.ReadInt32();
            var gender = data.ReadByte();
            var sprite = data.ReadInt32();

            // Se não estiver dentro da sequencia correta, envia mensagem de erro
            if (slot >= 5)
            {
                WorldPacket.Message(connection, (int)PacketList.Error);
                return;
            }

            // Insere o personagem no banco de dados
            Character_DB.InsertNewCharacter(pData.HexID, gender, classe, charactername, sprite, slot);
            // Insere os items iniciais
            //Character_DB.InsertInitialItems(charactername, classe);

            // Carrega os personagens
            Character_DB.PreLoad(pData);

            // Envia o PreLoad
            WorldPacket.PreLoad(pData);

            //game state 3 = seleção de personagem
            WorldPacket.GameState(pData.HexID, 3);
        }
        /// <summary>
        /// Verifica se o nome é válido.
        /// </summary>
        /// <param name="characterName"></param>
        /// <returns></returns>
        public CharacterValidationResult ValidateName(string characterName)
        {
            if (string.IsNullOrEmpty(characterName))
            {
                return(new CharacterValidationResult()
                {
                    AlertMessageType = AlertMessageType.Connection,
                    MenuResetType = MenuResetType.Login,
                    Disconnect = true
                });
            }

            if (ProhibitedNames.Compare(characterName))
            {
                return(new CharacterValidationResult()
                {
                    AlertMessageType = AlertMessageType.NameIllegal,
                    MenuResetType = MenuResetType.Login,
                    Disconnect = true
                });
            }

            if (characterName.Length < Constants.MinCharacterNameLength || characterName.Length > Constants.MaxCharacterNameLength)
            {
                return(new CharacterValidationResult()
                {
                    AlertMessageType = AlertMessageType.NameLength,
                    MenuResetType = MenuResetType.Characters,
                });
            }

            // Adiciona o nome verificado na propriedade.
            CharacterName = characterName;

            return(new CharacterValidationResult()
            {
                AlertMessageType = AlertMessageType.None,
                MenuResetType = MenuResetType.None
            });
        }