Пример #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);
        }
Пример #2
0
        /// <summary>
        /// Envia o pré carregamento dos personagens.
        /// </summary>
        /// <param name="connection"></param>
        public static void RequestPreLoad(NetConnection connection)
        {
            var pData = Authentication.FindByConnection(connection);

            pData.Character = new Character[Settings.MAX_CHAR];

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

            //Envia o preload
            WorldPacket.PreLoad(pData);
        }
Пример #3
0
        /// <summary>
        /// Deleta um personagem pelo nome e slot.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="slot"></param>
        public static void DeleteCharacter(NetConnection connection, int slot)
        {
            // Se a exclusão de personagem não estiver ativa, envia mensagem de erro
            if (!Settings.CharacterDelete)
            {
                WorldServerPacket.Message(connection, (int)PacketList.WorldServer_Client_CharacterDeleteDisabled);
                return;
            }

            var pData = Authentication.FindByConnection(connection);
            var level = Character_DB.GetLevel(pData.AccountID, slot);

            // Se o ocorrer algum erro, envia mensagem de erro
            // level -1, não encontrou dados do personagem
            if (level <= 0)
            {
                WorldServerPacket.Message(connection, (int)PacketList.Error);
                return;
            }

            // Se o level não estiver entre a faixa, envia mensagem de erro
            // não pode ser deletado
            if (level <Settings.CharacterDeleteMinLevel& level> Settings.CharacterDeleteMaxLevel)
            {
                WorldServerPacket.Message(connection, (int)PacketList.WorldServer_Client_InvalidLevelToDelete);
                return;
            }

            //Pega o nome do personagem e salva no log
            LogConfig.WriteLog($"Character Deleted: From: {pData.AccountID} {pData.Account} Char: {Character_DB.GetName(pData.AccountID, slot)}", System.Drawing.Color.Magenta);

            // Deleta o personagem
            Character_DB.Delete(pData.AccountID, slot);

            for (var n = 0; n < Constant.MAX_CHAR; n++)
            {
                pData.Character[n] = new Character()
                {
                    Name = string.Empty
                };

                //Carrega os personagens (preload)
                Character_DB.PreLoad(pData, n);
            }

            // Envia o PreLoad
            // pré carregamento do personagem, apenas informações básicas sprite, level, nome e classe (exibição na seleção de personagem).
            WorldServerPacket.PreLoad(pData);
            WorldServerPacket.Message(connection, (int)PacketList.WorldServer_Client_CharacterDeleted);
        }
Пример #4
0
        public static void Login(PlayerData pData)
        {
            //Carrega os personagens para apresentar ao cliente.
            Character_DB.PreLoad(pData);

            FileLog.WriteLog($"PreLoad ID: {pData.AccountID} Account: {pData.Account}", System.Drawing.Color.Black);

            //Envia o PreLoad
            WorldPacket.PreLoad(pData);
            //Aceita a conexão
            WorldPacket.Message(pData.Connection, (int)PacketList.AcceptedConnection);
            //Muda de janela
            //3 seleção de personagem
            WorldPacket.GameState(pData.HexID, 3);
        }