mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-22 12:05:51 -04:00
Show right message when target rank of /setrank is >= own rank
This commit is contained in:
parent
d7c2b7a12b
commit
67503ef02a
@ -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;
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user