public static void LogPlayerIn(NetworkClient Client, Account Account) { bool newSession = false; if (Account.LoggedInCharacter != null) { //Connect to the existing session if (Account.LoggedInCharacter.ConnectedClient != null) { Account.LoggedInCharacter.ConnectedClient.Player = null; Account.LoggedInCharacter.ConnectedClient.Send("You are being disconnected because you have logged into this account from another connection.\r\n"); Account.LoggedInCharacter.ConnectedClient.Disconnect(); } Client.Send("You were already logged in. You are being connected to that session.\r\n"); Client.Player = Account.LoggedInCharacter; } else { //Start a new session Client.Player = Accounts.GetAccountCharacter(Account); newSession = true; } Client.Player.SetProperty("account", Account); Client.IsLoggedOn = true; Client.Player.CommandHandler = Core.ParserCommandHandler; Account.LoggedInCharacter = Client.Player; Core.TiePlayerToClient(Client, Client.Player); if (newSession) Core.AddPlayer(Client.Player); }
internal static ClientAcceptanceStatus ClientConnected(NetworkClient Client) { var ban = ProscriptionList.IsBanned(Client.IPString); if (ban.Banned) { Core.LogError("Rejected connection from " + Client.IPString + ". Matched ban " + ban.SourceBan.Glob + " Reason: " + ban.SourceBan.Reason); return ClientAcceptanceStatus.Rejected; } ClientLock.WaitOne(); var dummyPlayer = new Actor(); dummyPlayer.CommandHandler = new LoginCommandHandler(); Core.TiePlayerToClient(Client, dummyPlayer); MudObject.SendMessage(Client, Core.SettingsObject.Banner); MudObject.SendMessage(Client, Core.SettingsObject.MessageOfTheDay); ConnectedClients.Add(Client); Core.SendPendingMessages(); ClientLock.ReleaseMutex(); return ClientAcceptanceStatus.Accepted; }