// 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); } }
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); }
// 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!")); } } }