public static void ProcessTicketResponce(WorldClient Client, string Ticket) { var a_ticket = TicketController.GetTicket(Ticket); lock (ticketProcess) { if (a_ticket == null) { Client.Send(new AccountTicketErrorMessage()); return; } else { Client.Account = a_ticket.Account; if (CharacterTable.myCharacterById.Values.Where(x => x.Account != null && x.Account.ID == Client.Account.ID).Count() > 0) { CharacterTable.myCharacterById.Values.Where(x => x.Account != null && x.GetClient() != null && x.Account.ID == Client.Account.ID).ToList().ForEach(x => x.Client.Disconnect()); Client.Send(new AccountTicketErrorMessage()); return; } AccountTable.UpdateLogged(Client.Account.ID, true); Client.Account.Characters = CharacterTable.FindAll(Client.Account.ID); Client.Account.Characters.Values.ToList().ForEach(x => x.Account = Client.Account); Client.SetState(WorldState.STATE_AUTHENTIFIED); Client.Send(new AccountTicketSuccessMessage()); TicketController.DestroyTicket(a_ticket); Client.Account.loadData(); } } }