Exemplo n.º 1
0
        // Desconecta o cliente
        public void Close( )
        {
            if (this.Active)
            {
                // Define que o cliente está inativo
                this.Active = false;

                // Atualiza o status do cliente
                this.Status = ClientStatus.Disconnect;

                // Log
                Log.Conn(this, false);

                // Fecha a conexão com o emulador
                this.Socket.Close(2000);
                this.Socket = null;

                // Verifica se está no mundo
                if (this.Status == ClientStatus.Game)
                {
                    Functions.RemoveFromWorld(this);
                }

                // Remove o cliente do canal
                this.Channel.Clients.Remove(this);

                //Salva as modificoes da conta
                UserAccountDAO.CreateOrUpdateAccount(this.Account);
                UserMobDAO.CreateOrUpdateChar(this.Character);
            }
        }
Exemplo n.º 2
0
        public static Account loadAccount(String accName, String accPsw)
        {
            Account userAcc;

            lock (m_Locker)
            {
                try
                {
                    if (ExistsAccount(accName))
                    {
                        using (Stream st = File.OpenRead(GetPath(accName)))
                            userAcc = (Account)m_Serializator.Deserialize(st);

                        if (userAcc.Password.Equals(accPsw))
                        {
                            userAcc.Characters = UserMobDAO.GetListCharacterFromAccount(userAcc);
                            return(userAcc);
                        }
                    }
                    return(null);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Exemplo n.º 3
0
        public static void controller(Client client, P_378 p378)
        {
            client.Character.Mob.SkillBar1 = p378.Skill1;
            client.Character.Mob.SkillBar2 = p378.Skill2;

            UserMobDAO.CreateOrUpdateChar(client.Character);
        }
Exemplo n.º 4
0
        // Controlador
        public static void Controller(Client client, P_211 rcv)
        {
            if (!Regex.IsMatch(rcv.Name, @"^[A-Za-z0-9-]{4,12}$"))
            {
                client.Close("Nome inválido!");
            }
            else if (rcv.Slot < 0 || rcv.Slot > 3)
            {
                client.Close();
            }
            else if (!Regex.IsMatch(rcv.Password, @"^[A-Za-z0-9]{4,10}$"))
            {
                client.Close();
            }
            else
            {
                Character character = client.Account.Characters[rcv.Slot];

                // Verifica se está vaziu
                if (character == null)
                {
                    client.Close();
                }
                else if (client.Account.Numeric.Equals(rcv.Password))
                {
                    if (UserMobDAO.DeleteCharFile(character))
                    {
                        client.Character = null;
                        client.Account.Characters[rcv.Slot] = null;

                        UserAccountDAO.CreateOrUpdateAccount(client.Account);

                        // Envia os pacotes de apagar personagem
                        client.Send(P_112.New(client));
                        client.Send(P_101.New($"Personagem [{rcv.Name}] deletado!"));
                    }
                    else
                    {
                        client.Send(P_101.New($"Erro ao deletar o personagem [{rcv.Name}]!"));
                    }
                }
                else
                {
                    client.Send(P_101.New($"Senha numérica invalida!"));
                }
            }
        }
Exemplo n.º 5
0
        // Controlador
        public static void Controller(Client client, P_20F rcv)
        {
            if (!Regex.IsMatch(rcv.Name, @"^[A-Za-z0-9-]{4,12}$"))
            {
                client.Send(P_101.New("Somente letras e números no nome. 4 a 12 caracteres."));
            }
            else if (rcv.Slot < 0 || rcv.Slot > 3)
            {
                client.Close( );
            }
            else if (rcv.ClassInfo < 0 || rcv.ClassInfo > 3)
            {
                client.Close( );
            }
            else
            {
                // Retorna character da conta
                ref Character character = ref client.Account.Characters[rcv.Slot];

                // Verifica se não está vaziu
                if (character != null)
                {
                    client.Close( );
                }
                else
                {
                    character               = new Character(SMob.New());
                    character.Mob.Name      = rcv.Name;
                    character.Mob.ClassInfo = (ClassInfo)rcv.ClassInfo;
                    character               = UserMobDAO.CreateOrUpdateChar(character);

                    if (character != null)
                    {
                        //Atualiza o xml da account para salvar o novo char criado
                        UserAccountDAO.CreateOrUpdateAccount(client.Account);

                        // Envia os pacotes de criação de personagem
                        client.Send(P_110.New(client));
                        client.Send(P_101.New($"Personagem [{character.Mob.Name}] criado! Bom jogo!"));
                    }
                    else
                    {
                        client.Send(P_101.New($"Erro ao criar o personagem, contate o suporte!"));
                    }
                }
            }