Skip to content
Next Next commit
add player to reserved slot rank option
  • Loading branch information
Bishbash777 authored and Bishbash777 committed Dec 8, 2020
commit d17f3bec6487d2f4952bce21072d3b4c2aa23096
36 changes: 22 additions & 14 deletions Essentials/Commands/RanksModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,15 @@ public void SetDefaultRank(string name) {
[Permission(MyPromoteLevel.Admin)]
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;
}*/

ulong.TryParse(playerName, out var id);
id = Utilities.GetPlayerByNameOrId(playerName)?.SteamUserId ?? id;
/*IMyPlayer player = Utilities.GetPlayerByNameOrId(playerName);*/
if (id == 0) {
Context.Respond($"Player '{playerName}' not found or ID is invalid.");
return;
}
var player = Utilities.GetPlayerByNameOrId(playerName);
if (rank == null) {
Context.Respond("Rank does not exist!");
return;
Expand All @@ -96,17 +99,22 @@ public void SetRank(string playerName, string rankName) {
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.SteamID = player.SteamUserId;
}
data = PlayerAccountModule.PlayersAccounts.Single(a => a.Player == playerName);

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

data.Rank = rank.RankName;
MySession.Static.SetUserPromoteLevel(data.SteamID, RanksAndPermissions.ParseMyPromoteLevel(rank.KeenLevelRank));
if (rank.ReservedSlot && !MySandboxGame.ConfigDedicated.Reserved.Contains(player.SteamUserId)) {
MySandboxGame.ConfigDedicated.Reserved.Add(player.SteamUserId);
} else if (!rank.ReservedSlot && MySandboxGame.ConfigDedicated.Reserved.Contains(player.SteamUserId)) {

}
MySession.Static.SetUserPromoteLevel(data.SteamID, RanksAndPermissions.ParseMyPromoteLevel(rank.KeenLevelRank));
Context.Respond($"{playerName}'s rank set to {rank.RankName}");
Log.Info($"{playerName}'s rank set to {rank.RankName}");
AccModule.UpdatePlayerAccount(data);
}

Expand Down Expand Up @@ -301,7 +309,7 @@ public void RemovePlayerPermission(string playerName, string command) {

[Command("listranks")]
[Permission(MyPromoteLevel.None)]
public void ListRanks() {
public void ListRanks(string listRankName) {
bool found = false;
string Ranks = "Ranks: ";
foreach (var rank in RanksAndPermissionsModule.Ranks) {
Expand Down
7 changes: 5 additions & 2 deletions Essentials/RanksAndPermissionsModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,14 @@ public class RankData {
public int MaxHomes { get; set; } = EssentialsPlugin.Instance.Config.MaxHomes;

[JsonProperty(Order = 3)]
public string KeenLevelRank { get; set; } = "None";
public bool ReservedSlot { get; set; } = false;

[JsonProperty(Order = 4)]
public Permissions Permissions = new Permissions();
public string KeenLevelRank { get; set; } = "None";

[JsonProperty(Order = 5)]
public Permissions Permissions = new Permissions();
[JsonProperty(Order = 6)]
public List<string> Inherits { get; set; } = new List<string>();
}

Expand Down