Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }