コード例 #1
0
        public void SetRank(string playerNameOrID, string rankName)
        {
            RanksAndPermissionsModule.RankData rank = RanksAndPermissions.GetRankData(rankName);

            ulong.TryParse(playerNameOrID, out var id);
            id = Utilities.GetPlayerByNameOrId(playerNameOrID)?.SteamUserId ?? id;
            /*IMyPlayer player = Utilities.GetPlayerByNameOrId(playerName);*/
            if (id == 0)
            {
                Context.Respond($"Player '{playerNameOrID}' not found or ID is invalid.");
                return;
            }
            var player = Utilities.GetPlayerByNameOrId(playerNameOrID);

            if (rank == null)
            {
                Context.Respond("Rank does not exist!");
                return;
            }

            PlayerAccountModule.PlayerAccountData data = new PlayerAccountModule.PlayerAccountData();
            var RegisteredPlayerNames    = PlayerAccountModule.PlayersAccounts.Select(o => o.Player).ToList();
            var RegisteredPlayerSteamIDs = PlayerAccountModule.PlayersAccounts.Select(o => o.SteamID).ToList();

            if (!RegisteredPlayerNames.Contains(playerNameOrID) && !RegisteredPlayerSteamIDs.Contains(id))
            {
                Log.Warn($"Player {playerNameOrID} does have registered player object... Creating one");
                data.Player  = playerNameOrID;
                data.SteamID = player.SteamUserId;
            }

            if (RegisteredPlayerNames.Contains(playerNameOrID))
            {
                data = PlayerAccountModule.PlayersAccounts.Single(a => a.Player == playerNameOrID);
            }

            if (RegisteredPlayerSteamIDs.Contains(id))
            {
                data = PlayerAccountModule.PlayersAccounts.Single(a => a.SteamID == id);
            }

            data.Rank = rank.RankName;
            if (rank.ReservedSlot && !MySandboxGame.ConfigDedicated.Reserved.Contains(id))
            {
                MySandboxGame.ConfigDedicated.Reserved.Add(id);
            }
            else if (!rank.ReservedSlot && MySandboxGame.ConfigDedicated.Reserved.Contains(id))
            {
                MySandboxGame.ConfigDedicated.Reserved.Remove(id);
            }
            MySession.Static.SetUserPromoteLevel(data.SteamID, RanksAndPermissions.ParseMyPromoteLevel(rank.KeenLevelRank));
            Context.Respond($"{data.Player}'s rank set to {rank.RankName}");
            Log.Info($"{data.Player}'s rank set to {rank.RankName}");
            AccModule.UpdatePlayerAccount(data);
        }
コード例 #2
0
        public void RemovePlayerPermission(string playerName, string command)
        {
            PlayerAccountModule.PlayerAccountData data = new PlayerAccountModule.PlayerAccountData();
            bool found = false;

            foreach (var player in PlayerAccountModule.PlayersAccounts)
            {
                if (player.Player == playerName)
                {
                    data  = player;
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                Context.Respond($"Player '{playerName}' does not have a registered account!");
                return;
            }

            if (command.Substring(0, 1) == "-")
            {
                string stringAfterChar = command.Substring(command.IndexOf("-") + 1);
                if (data.Permissions.Disallowed.Contains(stringAfterChar))
                {
                    data.Permissions.Disallowed.Remove(stringAfterChar);
                    Context.Respond($"Updated rank");
                    AccModule.UpdatePlayerAccount(data);
                    return;
                }
            }

            if (!data.Permissions.Disallowed.Contains(command))
            {
                data.Permissions.Disallowed.Add(command);
                Context.Respond($"Permission to use command '{command}' has been actively revoked from  {data.Player}'s account!");
                AccModule.UpdatePlayerAccount(data);
                return;
            }

            Context.Respond($"Permission to use command '{command}' is already being actively revoked from  {data.Player}'s account!");
        }
コード例 #3
0
ファイル: RanksModule.cs プロジェクト: LordTylus/Essentials
        public void SetRank(string playerName, string rankName)
        {
            RanksAndPermissionsModule.RankData rank = RanksAndPermissions.GetRankData(rankName);

            /*IMyPlayer player = Utilities.GetPlayerByNameOrId(playerName);
             * if (player == null) {
             *  Context.Respond("Player does not exist!");
             *  return;
             * }*/

            if (rank == null)
            {
                Context.Respond("Rank does not exist!");
                return;
            }

            PlayerAccountModule.PlayerAccountData data = new PlayerAccountModule.PlayerAccountData();
            var RegisteredPlayers = PlayerAccountModule.PlayersAccounts.Select(o => o.Player).ToList();

            if (!RegisteredPlayers.Contains(playerName))
            {
                Log.Warn($"Player {playerName} does have registered player object... Creating one");
                data.Player = playerName;
                //data.SteamID = playerName;
                data.Rank = rank.RankName;
                AccModule.UpdatePlayerAccount(data);
                Context.Respond($"{playerName}'s rank set to {rank.RankName}");
                Log.Info($"{playerName}'s rank set to {rank.RankName}");
                return;
            }
            data      = PlayerAccountModule.PlayersAccounts.Single(a => a.Player == playerName);
            data.Rank = rank.RankName;
            MySession.Static.SetUserPromoteLevel(data.SteamID, RanksAndPermissions.ParseMyPromoteLevel(rank.KeenLevelRank));

            AccModule.UpdatePlayerAccount(data);
        }