Ejemplo 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);
            }
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
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!"));
                    }
                }
            }