Show right message when target rank of /setrank is >= own rank

This commit is contained in:
UnknownShadow200 2017-06-04 11:16:09 +10:00
parent d7c2b7a12b
commit 67503ef02a
2 changed files with 24 additions and 25 deletions

View File

@ -57,7 +57,7 @@ namespace MCGalaxy.Commands.Moderation {
if (newRank == null) return;
if (curRank == newRank) {
Player.Message(p, "{0} %Sis already ranked {1}",
Player.Message(p, "{0} %Sis already ranked {1}",
PlayerInfo.GetColoredName(p, name), curRank.ColoredName);
return;
}
@ -69,11 +69,11 @@ namespace MCGalaxy.Commands.Moderation {
OnModActionEvent.Call(action);
}
bool CanChangeRank(string name, Group curRank, Group newRank,
Player who, Player p, ref string reason) {
internal static bool CanChangeRank(string name, Group curRank, Group newRank,
Player who, Player p, ref string reason) {
Group banned = Group.BannedRank;
if (reason == null) {
reason = newRank.Permission >= curRank.Permission ?
reason = newRank.Permission >= curRank.Permission ?
Server.defaultPromoteMessage : Server.defaultDemoteMessage;
}
reason = ModActionCmd.ExpandReason(p, reason);
@ -85,9 +85,12 @@ namespace MCGalaxy.Commands.Moderation {
if (curRank == banned) {
Player.Message(p, "Use /unban to change a player's rank from %S{0}.", banned.ColoredName); return false;
}
if (p != null && (curRank.Permission >= p.Rank || newRank.Permission >= p.Rank)) {
if (p != null && curRank.Permission >= p.Rank) {
MessageTooHighRank(p, "change the rank of", false); return false;
}
if (p != null && newRank.Permission >= p.Rank) {
Player.Message(p, "Can only rank up to below {0}", newRank.ColoredName); return false;
}
if (p != null && newRank.Permission >= p.Rank) {
Player.Message(p, "Cannot change the rank of a player to a rank equal or higher to yours."); return false;
}

View File

@ -55,8 +55,8 @@ namespace MCGalaxy.Commands.Moderation {
if (target == null) return;
Player who = PlayerInfo.FindExact(target);
Group group = Matcher.FindRanks(p, args[1]);
if (group == null) return;
Group newRank = Matcher.FindRanks(p, args[1]);
if (newRank == null) return;
TimeSpan duration = TimeSpan.Zero;
if (!CommandParser.GetTimespan(p, args[2], ref duration, "temp rank for", 'h')) return;
@ -67,42 +67,38 @@ namespace MCGalaxy.Commands.Moderation {
if (p != null && who != null && p == who) {
Player.Message(p, "&cYou cannot assign yourself a temporary rank."); return;
}
Group pGroup = who != null ? who.group : Group.findPlayerGroup(target);
if (p != null && pGroup.Permission >= p.Rank) {
Player.Message(p, "Cannot change the temporary rank of someone equal or higher to yourself."); return;
}
if (p != null && group.Permission >= p.Rank) {
Player.Message(p, "Cannot change the temporary rank to a higher rank than yourself."); return;
}
Group curRank = who != null ? who.group : Group.findPlayerGroup(target);
string reason = args.Length > 3 ? args[3] : "assigning temp rank";
reason = ModActionCmd.ExpandReason(p, reason);
if (!CmdSetRank.CanChangeRank(target, curRank, newRank, who, p, ref reason)) return;
ModAction action = new ModAction(target, p, ModActionType.Rank, reason, duration);
action.targetGroup = pGroup;
action.Metadata = group;
action.targetGroup = curRank;
action.Metadata = newRank;
OnModActionEvent.Call(action);
}
static void Delete(Player p, string name) {
static void Delete(Player p, string target) {
bool assigned = false;
StringBuilder all = new StringBuilder();
Player who = PlayerInfo.FindExact(name);
Player who = PlayerInfo.FindExact(target);
Group curRank = who != null ? who.group : Group.findPlayerGroup(target);
string reason = "temp rank unassigned";
foreach (string line in File.ReadAllLines(Paths.TempRanksFile)) {
if (!line.CaselessStarts(name)) { all.AppendLine(line); continue; }
if (!line.CaselessStarts(target)) { all.AppendLine(line); continue; }
string[] parts = line.SplitSpaces();
Group newgroup = Group.Find(parts[2]);
Group newRank = Group.Find(parts[2]);
if (!CmdSetRank.CanChangeRank(target, curRank, newRank, who, p, ref reason)) return;
ModAction action = new ModAction(name, p, ModActionType.Rank, "temp rank unassigned");
action.Metadata = newgroup;
ModAction action = new ModAction(target, p, ModActionType.Rank, reason);
action.Metadata = newRank;
OnModActionEvent.Call(action);
assigned = true;
}
if (!assigned) {
Player.Message(p, "&a{0}&c has not been assigned a temp rank.", name); return;
Player.Message(p, "&a{0}&c has not been assigned a temp rank.", target); return;
}
File.WriteAllText(Paths.TempRanksFile, all.ToString());
}