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