mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-22 12:05:51 -04:00
Make perbuild/pervisit/perbuildmax/pervisitmax show actual rank name instead of the LevelPermission enum value (thanks Joshim4), also fix not showing multiple level matches for those commands too.
This commit is contained in:
parent
7116c49e8f
commit
b188c12172
@ -56,7 +56,7 @@ namespace MCGalaxy {
|
||||
|
||||
protected void SuperRequiresArgs(Player p, string type) { SuperRequiresArgs(name, p, type); }
|
||||
|
||||
protected static void SuperRequiresArgs(string cmd, Player p, string type) {
|
||||
protected internal static void SuperRequiresArgs(string cmd, Player p, string type) {
|
||||
string src = p == null ? "console" : "IRC";
|
||||
Player.Message(p, "When using /{0} from {2}, you must provide a {1}.", cmd, type, src);
|
||||
}
|
||||
|
@ -31,46 +31,39 @@ namespace MCGalaxy.Commands.World {
|
||||
if (level == null) return;
|
||||
|
||||
string rank = args.Length == 1 ? args[0] : args[1];
|
||||
LevelPermission newRank = Level.PermissionFromName(rank);
|
||||
if (newRank == LevelPermission.Null) {
|
||||
Player.Message(p, "Not a valid rank"); return;
|
||||
}
|
||||
Group grp = Group.FindMatches(p, rank);
|
||||
if (grp == null) return;
|
||||
|
||||
if (p != null && getter(level) > p.Rank) {
|
||||
if (skipNobodyPerm || (getter(level) != LevelPermission.Nobody)) {
|
||||
Player.Message(p, "You cannot change the " + target + " of a level " +
|
||||
"with a " + target + " higher than your rank.");
|
||||
Player.Message(p, "You cannot change the {0} of a level with a {0} higher than your rank.", target);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (p != null && newRank > p.Rank) {
|
||||
if (skipNobodyPerm || (newRank != LevelPermission.Nobody)) {
|
||||
Player.Message(p, "You cannot change the " + target + " of a level " +
|
||||
"to a " + target + " higher than your rank.");
|
||||
if (p != null && grp.Permission > p.Rank) {
|
||||
if (skipNobodyPerm || (grp.Permission != LevelPermission.Nobody)) {
|
||||
Player.Message(p, "You cannot change the {0} of a level to a {0} higher than your rank.", target);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
setter(level, newRank);
|
||||
setter(level, grp.Permission);
|
||||
Level.SaveSettings(level);
|
||||
Server.s.Log(level.name + " " + target + " permission changed to " + newRank + ".");
|
||||
Chat.GlobalMessageLevel(level, target + " permission changed to " + newRank + ".");
|
||||
Server.s.Log(level.name + " " + target + " permission changed to " + grp.Permission + ".");
|
||||
Chat.GlobalMessageLevel(level, target + " permission changed to " + grp.ColoredName + "%S.");
|
||||
if (p == null || p.level != level)
|
||||
Player.Message(p, target + " permission changed to " + newRank + " on " + level.name + ".");
|
||||
Player.Message(p, "{0} permission changed to {1}%S on {2}.", target, grp.ColoredName, level.name);
|
||||
}
|
||||
|
||||
public static void UseList(Player p, string[] args, string target,
|
||||
Func<Level, LevelPermission> getter,
|
||||
Func<Level, List<string>> wlGetter, Func<Level, List<string>> blGetter) {
|
||||
if (args.Length == 1 && p == null) {
|
||||
Player.Message(p, "You must provide a level name when using this command from console.");
|
||||
return;
|
||||
}
|
||||
Level level = args.Length == 1 ? p.level : LevelInfo.Find(args[0]);
|
||||
if (level == null) {
|
||||
Player.Message(p, "There is no level \"" + args[0] + "\" loaded."); return;
|
||||
if (args.Length == 1 && Player.IsSuper(p)) {
|
||||
Command.SuperRequiresArgs(target, p, "level"); return;
|
||||
}
|
||||
Level level = args.Length == 1 ? p.level : LevelInfo.FindMatches(p, args[0]);
|
||||
if (level == null) return;
|
||||
|
||||
string name = args.Length == 1 ? args[0] : args[1];
|
||||
string mode = name[0] == '+' ? "whitelist" : "blacklist";
|
||||
@ -79,26 +72,25 @@ namespace MCGalaxy.Commands.World {
|
||||
name = name.Substring(1);
|
||||
|
||||
if (name == "") {
|
||||
Player.Message(p, "You must provide a player name to " + mode + "."); return;
|
||||
Player.Message(p, "You must provide a player name to {0}.", mode); return;
|
||||
}
|
||||
if (p != null && name.CaselessEq(p.name)) {
|
||||
Player.Message(p, "You cannot " + mode + " yourself."); return;
|
||||
Player.Message(p, "You cannot {0} yourself.", mode); return;
|
||||
}
|
||||
|
||||
if (p != null && getter(level) > p.Rank) {
|
||||
Player.Message(p, "You cannot change the " + target + " " + mode +
|
||||
" permissions for a player higher than your rank."); return;
|
||||
Player.Message(p, "You cannot change the {0} {1} permissions " +
|
||||
"for a player higher than your rank.", target, mode); return;
|
||||
}
|
||||
if (p != null && blGetter(level).CaselessContains(p.name)) {
|
||||
Player.Message(p, "You cannot change " + target + " " +
|
||||
"permissions as you are blacklisted."); return;
|
||||
Player.Message(p, "You cannot change {0} permissions as you are blacklisted.", target); return;
|
||||
}
|
||||
if (p != null && PlayerInfo.GetGroup(name).Permission > p.Rank) {
|
||||
Player.Message(p, "You cannot whitelist/blacklist players of a higher rank."); return;
|
||||
}
|
||||
|
||||
if (list.CaselessContains(name)) {
|
||||
Player.Message(p, "\"" + name + "\" is already " + mode + "ed."); return;
|
||||
Player.Message(p, "\"{0}\" is already {1}ed.", name, mode); return;
|
||||
}
|
||||
list.Add(name);
|
||||
other.CaselessRemove(name);
|
||||
@ -108,7 +100,7 @@ namespace MCGalaxy.Commands.World {
|
||||
Server.s.Log(msg + " on " + level.name);
|
||||
Chat.GlobalMessageLevel(level, msg);
|
||||
if (p == null || p.level != level)
|
||||
Player.Message(p, msg + " on " + level.name + ".");
|
||||
Player.Message(p, msg + " on {0}.", level.name);
|
||||
}
|
||||
}
|
||||
}
|
@ -120,16 +120,16 @@ namespace MCGalaxy.Commands.Building {
|
||||
void ShowMessageBlocks(Player p) {
|
||||
p.showMBs = !p.showMBs;
|
||||
//safe against SQL injections because no user input is given here
|
||||
using (DataTable Messages = Database.Fill("SELECT * FROM `Messages" + p.level.name + "`")) {
|
||||
using (DataTable table = Database.Fill("SELECT * FROM `Messages" + p.level.name + "`")) {
|
||||
if (p.showMBs) {
|
||||
for (int i = 0; i < Messages.Rows.Count; i++) {
|
||||
DataRow row = Messages.Rows[i];
|
||||
for (int i = 0; i < table.Rows.Count; i++) {
|
||||
DataRow row = table.Rows[i];
|
||||
p.SendBlockchange(ushort.Parse(row["X"].ToString()), ushort.Parse(row["Y"].ToString()), ushort.Parse(row["Z"].ToString()), Block.MsgWhite);
|
||||
}
|
||||
Player.Message(p, "Now showing &a" + Messages.Rows.Count + " %SMBs.");
|
||||
Player.Message(p, "Now showing &a" + table.Rows.Count + " %SMBs.");
|
||||
} else {
|
||||
for (int i = 0; i < Messages.Rows.Count; i++) {
|
||||
DataRow row = Messages.Rows[i];
|
||||
for (int i = 0; i < table.Rows.Count; i++) {
|
||||
DataRow row = table.Rows[i];
|
||||
p.RevertBlock(ushort.Parse(row["X"].ToString()), ushort.Parse(row["Y"].ToString()), ushort.Parse(row["Z"].ToString()));
|
||||
}
|
||||
Player.Message(p, "Now hiding MBs.");
|
||||
|
@ -126,9 +126,12 @@ namespace MCGalaxy {
|
||||
|
||||
//safe against SQL injections because the levelname (message) is first being checked if it exists
|
||||
Database.Execute("DROP TABLE `Block" + name + "`");
|
||||
Database.Execute("DROP TABLE `Portals" + name + "`");
|
||||
Database.Execute("DROP TABLE `Messages" + name + "`");
|
||||
Database.Execute("DROP TABLE `Zone" + name + "`");
|
||||
object locker = ThreadSafeCache.DBCache.Get(name);
|
||||
lock (locker) {
|
||||
Database.Execute("DROP TABLE `Portals" + name + "`");
|
||||
Database.Execute("DROP TABLE `Messages" + name + "`");
|
||||
Database.Execute("DROP TABLE `Zone" + name + "`");
|
||||
}
|
||||
}
|
||||
|
||||
public static void Replace(Level old, Level lvl) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user