mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-22 12:05:51 -04:00
Don't allow yourself to be patrolled, partially addresses #363
This commit is contained in:
parent
377632e10b
commit
87e0fbadd8
@ -35,32 +35,36 @@ namespace MCGalaxy.Commands {
|
|||||||
if (Player.IsSuper(p)) { MessageInGameOnly(p); return; }
|
if (Player.IsSuper(p)) { MessageInGameOnly(p); return; }
|
||||||
if (message != "") { Help(p); return; }
|
if (message != "") { Help(p); return; }
|
||||||
|
|
||||||
List<string> getpatrol = FindToPatrol();
|
List<Player> candidates = GetPatrolCandidates(p);
|
||||||
if (getpatrol.Count <= 0) {
|
if (candidates.Count == 0) {
|
||||||
Player.Message(p, "There must be at least one guest online to use this command!"); return;
|
LevelPermission perm = (LevelPermission)CommandOtherPerms.GetPerm(this);
|
||||||
|
Player.Message(p, "No {0}players ranked {1} %Sor below are online.",
|
||||||
|
p.Rank <= perm ? "other " : "", // in case we can patrol ourselves
|
||||||
|
Group.GetColoredName(perm));
|
||||||
|
} else {
|
||||||
|
Player target = candidates[new Random().Next(candidates.Count)];
|
||||||
|
Command.all.Find("tp").Use(p, target.name);
|
||||||
|
Player.Message(p, "Now visiting " + target.ColoredName + "%S.");
|
||||||
}
|
}
|
||||||
|
|
||||||
string value = getpatrol[new Random().Next(getpatrol.Count)];
|
|
||||||
Player who = PlayerInfo.FindExact(value);
|
|
||||||
Command.all.Find("tp").Use(p, who.name);
|
|
||||||
Player.Message(p, "Now visiting " + who.ColoredName + "%S.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<string> FindToPatrol() {
|
List<Player> GetPatrolCandidates(Player p) {
|
||||||
List<string> players = new List<string>();
|
List<Player> candidates = new List<Player>();
|
||||||
int perm = CommandOtherPerms.GetPerm(this);
|
LevelPermission perm = (LevelPermission)CommandOtherPerms.GetPerm(this);
|
||||||
Player[] online = PlayerInfo.Online.Items;
|
Player[] online = PlayerInfo.Online.Items;
|
||||||
|
|
||||||
foreach (Player p in online) {
|
foreach (Player target in online) {
|
||||||
if ((int)p.Rank <= perm) players.Add(p.name);
|
if (target.Rank > perm || target == p || !Entities.CanSee(p, target)) continue;
|
||||||
|
candidates.Add(target);
|
||||||
}
|
}
|
||||||
return players;
|
return candidates;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Help(Player p) {
|
public override void Help(Player p) {
|
||||||
Player.Message(p, "%T/patrol");
|
Player.Message(p, "%T/patrol");
|
||||||
LevelPermission perm = (LevelPermission)CommandOtherPerms.GetPerm(this);
|
LevelPermission perm = (LevelPermission)CommandOtherPerms.GetPerm(this);
|
||||||
Player.Message(p, "%HTeleports you to a random {0} %Sor lower", Group.GetColoredName(perm));
|
Player.Message(p, "%HTeleports you to a random {0} %Sor lower",
|
||||||
|
Group.GetColoredName(perm));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user