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); } }
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); }