public override void Use(Player p, string message) { if (message == "" || message.IndexOf(' ') == -1) { Help(p); return; } bool give = true; if (message.Split(' ')[0].ToLower() == "give") { give = true; message = message.Substring(message.IndexOf(' ') + 1); } else if (message.Split(' ')[0].ToLower() == "take") { give = false; message = message.Substring(message.IndexOf(' ') + 1); } string foundPlayer = message.Split(' ')[0]; Player who = Player.Find(message); if (who != null) { foundPlayer = who.name; } string awardName = message.Substring(message.IndexOf(' ') + 1); if (!Awards.awardExists(awardName)) { Player.SendMessage(p, "The award you entered doesn't exist"); Player.SendMessage(p, "Use /awards for a list of awards"); return; } if (give) { if (Awards.giveAward(foundPlayer, awardName)) { Player.GlobalChat(p, Server.FindColor(foundPlayer) + foundPlayer + Server.DefaultColor + " was awarded: &b" + Awards.camelCase(awardName), false); } else { Player.SendMessage(p, "The player already has that award!"); } } else { if (Awards.takeAward(foundPlayer, awardName)) { Player.GlobalChat(p, Server.FindColor(foundPlayer) + foundPlayer + Server.DefaultColor + " had their &b" + Awards.camelCase(awardName) + Server.DefaultColor + " award removed", false); } else { Player.SendMessage(p, "The player didn't have the award you tried to take"); } } Awards.Save(); }
public override void Use(Player p, string message) { byte b; Int64 seconds; Player who; Player.UndoPos Pos; int CurrentPos = 0; if (p != null) { p.RedoBuffer.Clear(); } if (message == "") { message = p.name + " 30"; } if (message.Split(' ').Length == 2) { if (message.Split(' ')[1].ToLower() == "all" && p.group.Permission > LevelPermission.Operator) { seconds = 500000; } else { try { seconds = Int64.Parse(message.Split(' ')[1]); } catch { Player.SendMessage(p, "Invalid seconds."); return; } } } else { try { seconds = int.Parse(message); if (p != null) { message = p.name + " " + message; } } catch { seconds = 30; message = message + " 30"; } } //if (message.Split(' ').Length == 1) if (char.IsDigit(message, 0)) { message = p.name + " " + message; } else { message = message + " 30"; } //try { seconds = Convert.ToInt16(message.Split(' ')[1]); } catch { seconds = 2; } if (seconds == 0) { seconds = 5400; } who = Player.Find(message.Split(' ')[0]); if (who != null) { if (p != null) { if (who.group.Permission > p.group.Permission && who != p) { Player.SendMessage(p, "Cannot undo a user of higher or equal rank"); return; } if (who != p && p.group.Permission < LevelPermission.Operator) { Player.SendMessage(p, "Only an OP+ may undo other people's actions"); return; } if (p.group.Permission < LevelPermission.Builder && seconds > 120) { Player.SendMessage(p, "Guests may only undo 2 minutes."); return; } else if (p.group.Permission < LevelPermission.AdvBuilder && seconds > 300) { Player.SendMessage(p, "Builders may only undo 300 seconds."); return; } else if (p.group.Permission < LevelPermission.Operator && seconds > 1200) { Player.SendMessage(p, "AdvBuilders may only undo 600 seconds."); return; } else if (p.group.Permission == LevelPermission.Operator && seconds > 5400) { Player.SendMessage(p, "Operators may only undo 5400 seconds."); return; } } for (CurrentPos = who.UndoBuffer.Count - 1; CurrentPos >= 0; --CurrentPos) { try { Pos = who.UndoBuffer[CurrentPos]; Level foundLevel = Level.FindExact(Pos.mapName); b = foundLevel.GetTile(Pos.x, Pos.y, Pos.z); if (Pos.timePlaced.AddSeconds(seconds) >= DateTime.Now) { if (b == Pos.newtype || Block.Convert(b) == Block.water || Block.Convert(b) == Block.lava) { foundLevel.Blockchange(Pos.x, Pos.y, Pos.z, Pos.type, true); Pos.newtype = Pos.type; Pos.type = b; if (p != null) { p.RedoBuffer.Add(Pos); } who.UndoBuffer.RemoveAt(CurrentPos); } } else { break; } } catch { } } if (p != who) { Player.GlobalChat(p, who.color + who.name + Server.DefaultColor + "'s actions for the past &b" + seconds + " seconds were undone.", false); } else { Player.SendMessage(p, "Undid your actions for the past &b" + seconds + Server.DefaultColor + " seconds."); } return; } else if (message.Split(' ')[0].ToLower() == "physics") { if (p.group.Permission < LevelPermission.AdvBuilder) { Player.SendMessage(p, "Reserved for Adv+"); return; } else if (p.group.Permission < LevelPermission.Operator && seconds > 1200) { Player.SendMessage(p, "AdvBuilders may only undo 1200 seconds."); return; } else if (p.group.Permission == LevelPermission.Operator && seconds > 5400) { Player.SendMessage(p, "Operators may only undo 5400 seconds."); return; } Command.all.Find("pause").Use(p, "120"); Level.UndoPos uP; ushort x, y, z; if (p.level.UndoBuffer.Count != Server.physUndo) { for (CurrentPos = p.level.currentUndo; CurrentPos >= 0; CurrentPos--) { try { uP = p.level.UndoBuffer[CurrentPos]; b = p.level.GetTile(uP.location); if (uP.timePerformed.AddSeconds(seconds) >= DateTime.Now) { if (b == uP.newType || Block.Convert(b) == Block.water || Block.Convert(b) == Block.lava) { p.level.IntToPos(uP.location, out x, out y, out z); p.level.Blockchange(p, x, y, z, uP.oldType, true); } } else { break; } } catch { } } } else { for (CurrentPos = p.level.currentUndo; CurrentPos != p.level.currentUndo + 1; CurrentPos--) { try { if (CurrentPos < 0) { CurrentPos = p.level.UndoBuffer.Count - 1; } uP = p.level.UndoBuffer[CurrentPos]; b = p.level.GetTile(uP.location); if (uP.timePerformed.AddSeconds(seconds) >= DateTime.Now) { if (b == uP.newType || Block.Convert(b) == Block.water || Block.Convert(b) == Block.lava) { p.level.IntToPos(uP.location, out x, out y, out z); p.level.Blockchange(p, x, y, z, uP.oldType, true); } } else { break; } } catch { } } } Command.all.Find("pause").Use(p, ""); Player.GlobalMessage("Physics were undone &b" + seconds + Server.DefaultColor + " seconds"); } else { if (p != null) { if (p.group.Permission < LevelPermission.Operator) { Player.SendMessage(p, "Reserved for OP+"); return; } if (seconds > 5400 && p.group.Permission == LevelPermission.Operator) { Player.SendMessage(p, "Only SuperOPs may undo more than 90 minutes."); return; } } bool FoundUser = false; try { DirectoryInfo di; string[] fileContent; p.RedoBuffer.Clear(); if (Directory.Exists("extra/undo/" + message.Split(' ')[0])) { di = new DirectoryInfo("extra/undo/" + message.Split(' ')[0]); for (int i = di.GetFiles("*.undo").Length - 1; i >= 0; i--) { fileContent = File.ReadAllText("extra/undo/" + message.Split(' ')[0] + "/" + i + ".undo").Split(' '); if (!undoBlah(fileContent, seconds, p)) { break; } } FoundUser = true; } if (Directory.Exists("extra/undoPrevious/" + message.Split(' ')[0])) { di = new DirectoryInfo("extra/undoPrevious/" + message.Split(' ')[0]); for (int i = di.GetFiles("*.undo").Length - 1; i >= 0; i--) { fileContent = File.ReadAllText("extra/undoPrevious/" + message.Split(' ')[0] + "/" + i + ".undo").Split(' '); if (!undoBlah(fileContent, seconds, p)) { break; } } FoundUser = true; } if (FoundUser) { Player.GlobalChat(p, Server.FindColor(message.Split(' ')[0]) + message.Split(' ')[0] + Server.DefaultColor + "'s actions for the past &b" + seconds + Server.DefaultColor + " seconds were undone.", false); } else { Player.SendMessage(p, "Could not find player specified."); } } catch (Exception e) { Server.ErrorLog(e); } } }
public override void Use(Player p, string message) { if (message.Split(' ').Length < 2) { Help(p); return; } Player who = Player.Find(message.Split(' ')[0]); Group newRank = Group.Find(message.Split(' ')[1]); string msgGave; if (message.Split(' ').Length > 2) { msgGave = message.Substring(message.IndexOf(' ', message.IndexOf(' ') + 1)); } else { msgGave = "Congratulations!"; } if (newRank == null) { Player.SendMessage(p, "Could not find specified rank."); return; } Group bannedGroup = Group.findPerm(LevelPermission.Banned); if (who == null) { string foundName = message.Split(' ')[0]; if (Group.findPlayerGroup(foundName) == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (p != null) { if (Group.findPlayerGroup(foundName).Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher than you"); return; } } Group oldGroup = Group.findPlayerGroup(foundName); oldGroup.playerList.Remove(foundName); oldGroup.playerList.Save(); newRank.playerList.Add(foundName); newRank.playerList.Save(); Player.GlobalMessage(foundName + " &f(offline)" + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name); } else if (who == p) { Player.SendMessage(p, "Cannot change your own rank."); return; } else { if (p != null) { if (who.group == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (who.group.Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher to yourself."); return; } } who.group.playerList.Remove(who.name); who.group.playerList.Save(); newRank.playerList.Add(who.name); newRank.playerList.Save(); Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name, false); Player.GlobalChat(null, "&6" + msgGave, false); who.group = newRank; who.color = who.group.color; Player.GlobalDie(who, false); who.SendMessage("You are now ranked " + newRank.color + newRank.name + Server.DefaultColor + ", type /help for your new set of commands."); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); } }
public override void Use(Player p, string message) { if (message == "" || message.Split(' ').Length > 2) { Help(p); return; } int pos = message.IndexOf(' '); if (pos != -1) { Player who = Player.Find(message.Substring(0, pos)); if (who == null) { Player.SendMessage(p, "There is no player \"" + message.Substring(0, pos) + "\"!"); return; } if (message.Substring(pos + 1) == "del") { Player.GlobalChat(who, who.color + "*" + Name(who.name) + " color reverted to " + who.group.color + "their group's default" + Server.DefaultColor + ".", false); //PlayerDB.Save(who); Server.s.database.GetTable("Players").SetValue(Server.s.database.GetTable("Players").Rows.IndexOf(Server.s.database.GetTable("Players").GetRow(new string[] { "Name" }, new string[] { who.name })), "Color", ""); who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); who.SetPrefix(); return; } string color = c.Parse(message.Substring(pos + 1)); if (color == "") { Player.SendMessage(p, "There is no color \"" + message + "\"."); } else if (color == who.color) { Player.SendMessage(p, who.name + " already has that color."); } else { //Player.GlobalChat(who, p.color + "*" + p.name + "&e changed " + who.color + Name(who.name) + // " color to " + color + // c.Name(color) + "&e.", false); Player.GlobalChat(who, who.color + "*" + Name(who.name) + " color changed to " + color + c.Name(color) + Server.DefaultColor + ".", false); who.color = color; //PlayerDB.Save(who); Server.s.database.GetTable("Players").SetValue(Server.s.database.GetTable("Players").Rows.IndexOf(Server.s.database.GetTable("Players").GetRow(new string[] { "Name" }, new string[] { who.name })), "Color", color); Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); who.SetPrefix(); } } else { if (p == null) { Help(p); return; } if (message == "del") { Player.GlobalChat(p, p.color + "*" + Name(p.name) + " color reverted to " + p.group.color + "their group's default" + Server.DefaultColor + ".", false); //p.color = "group"; //PlayerDB.Save(p); Server.s.database.GetTable("Players").SetValue(Server.s.database.GetTable("Players").Rows.IndexOf(Server.s.database.GetTable("Players").GetRow(new string[] { "Name" }, new string[] { p.name })), "Color", ""); p.color = p.group.color; Player.GlobalDie(p, false); Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false); p.SetPrefix(); return; } string color = c.Parse(message); if (color == "") { Player.SendMessage(p, "There is no color \"" + message + "\"."); } else if (color == p.color) { Player.SendMessage(p, "You already have that color."); } else { Player.GlobalChat(p, p.color + "*" + Name(p.name) + " color changed to " + color + c.Name(color) + Server.DefaultColor + ".", false); p.color = color; //PlayerDB.Save(p); Server.s.database.GetTable("Players").SetValue(Server.s.database.GetTable("Players").Rows.IndexOf(Server.s.database.GetTable("Players").GetRow(new string[] { "Name" }, new string[] { p.name })), "Color", color); Player.GlobalDie(p, false); Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false); p.SetPrefix(); } } }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } bool totalUnban = false; if (message[0] == '@') { totalUnban = true; message = message.Remove(0, 1).Trim(); } Player who = Player.Find(message); if (who == null) { if (Group.findPlayerGroup(message) != Group.findPerm(LevelPermission.Banned)) { foreach (Server.TempBan tban in Server.tempBans) { if (tban.name.ToLower() == message.ToLower()) { Server.tempBans.Remove(tban); Player.GlobalMessage(message + " has had their temporary ban lifted."); return; } } Player.SendMessage(p, "Player is not banned."); return; } Player.GlobalMessage(message + " &8(banned)" + Server.DefaultColor + " is now " + Group.standard.color + Group.standard.name + Server.DefaultColor + "!"); Group.findPerm(LevelPermission.Banned).playerList.Remove(message); } else { if (Group.findPlayerGroup(message) != Group.findPerm(LevelPermission.Banned)) { foreach (Server.TempBan tban in Server.tempBans) { if (tban.name == who.name) { Server.tempBans.Remove(tban); Player.GlobalMessage(who.color + who.prefix + who.name + Server.DefaultColor + "has had their temporary ban lifted."); return; } } Player.SendMessage(p, "Player is not banned."); return; } Player.GlobalChat(who, who.color + who.prefix + who.name + Server.DefaultColor + " is now " + Group.standard.color + Group.standard.name + Server.DefaultColor + "!", false); who.group = Group.standard; who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); Group.findPerm(LevelPermission.Banned).playerList.Remove(message); } Group.findPerm(LevelPermission.Banned).playerList.Save(); if (totalUnban) { Command.all.Find("unbanip").Use(p, "@" + message); } }