Exemple #1
0
        private void IOnPlayerConnected(PlayerJoinEvent evt)
        {
            // Ignore the server player
            if (evt.Player.Equals(CodeHatch.Engine.Networking.Server.ServerPlayer)) // TODO: Handle potential NullReferenceException
            {
                return;
            }

            if (permission.IsLoaded)
            {
                // Update player's stored username
                permission.UpdateNickname(evt.Player.Identifier, evt.Player.Name);

                // Set default groups, if necessary
                uModConfig.DefaultGroups defaultGroups = Interface.uMod.Config.Options.DefaultGroups;
                if (!permission.UserHasGroup(evt.Player.Identifier, defaultGroups.Players))
                {
                    permission.AddUserGroup(evt.Player.Identifier, defaultGroups.Players);
                }
                if (evt.Player.HasPermission("admin") && !permission.UserHasGroup(evt.Player.Identifier, defaultGroups.Administrators))
                {
                    permission.AddUserGroup(evt.Player.Identifier, defaultGroups.Administrators);
                }
            }

            // Let universal know player connected
            Universal.PlayerManager.PlayerConnected(evt.Player);

            // Call game-specific hook
            Interface.Call("OnPlayerConnected", evt.Player);

            // Find universal player
            IPlayer player = Universal.PlayerManager.FindPlayerById(evt.Player.Identifier);

            if (player != null)
            {
                // Set IPlayer object on Player
                evt.Player.IPlayer = player;

                // Call universal hook
                Interface.Call("OnPlayerConnected", player);
            }
        }
Exemple #2
0
        private void IOnPlayerConnected(NetPlayer netPlayer)
        {
            /*if (App.state != AppSate.Startup)
             * {
             *  return;
             * }*/

            // Check if server is intended to be dedicated
            if (netPlayer.isLocalPlayer && HumanFallFlatExtension.Dedicated)
            {
                // Remove server player from client list
                NetGame.instance.allclients.Remove(netPlayer.host);

                // Ignore server player
                return;
            }

            // TODO: Add command-line option/argument to allow/disallow split screen players

            /*if (netPlayer.host.players.Count > 1)
             * {
             *  netPlayer.host.players.Remove(netPlayer);
             *  return;
             * }*/

            // TODO: Kick duplicate players (already connected once)

            string userId = netPlayer.host.connection.ToString();

            if (permission.IsLoaded)
            {
                // Update player's stored username
                permission.UpdateNickname(userId, netPlayer.host.name);

                // Set default groups, if necessary
                uModConfig.DefaultGroups defaultGroups = Interface.uMod.Config.Options.DefaultGroups;
                if (!permission.UserHasGroup(userId, defaultGroups.Players))
                {
                    permission.AddUserGroup(userId, defaultGroups.Players);
                }
            }

            // Let universal know
            Universal.PlayerManager.PlayerJoin(userId, netPlayer.host.name); // TODO: Move to OnPlayerApproved hook once available
            Universal.PlayerManager.PlayerConnected(netPlayer);

            IPlayer player = Universal.PlayerManager.FindPlayerById(userId);

            if (player != null)
            {
                // Set IPlayer object on NetPlayer
                netPlayer.IPlayer = player;

                // Call game-specific hook
                Interface.Call("OnPlayerConnected", netPlayer);

                // Call universal hook
                Interface.Call("OnPlayerConnected", player);
            }

            // Override/set server hostname
            string serverName = $"{Server.Name} | {Server.Players}/{Server.MaxPlayers}";

            SteamMatchmaking.SetLobbyData((NetGame.instance.transport as NetTransportSteam).lobbyID, "name", serverName);
        }