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