public override void Use(Player p, string message) { if (message == "") { if (p == null) { Help(p); return; } message = p.name; } string originalName = message.ToLower(); Player who = Player.Find(message); if (who == null) { Player.SendMessage(p, "Could not find player. Searching PlayerDB."); /*DataTable FindIP = MySQL.fillData("SELECT IP FROM Players WHERE Name='" + message + "'"); * * if (FindIP.Rows.Count == 0) { Player.SendMessage(p, "Could not find any player by the name entered."); FindIP.Dispose(); return; } * * message = FindIP.Rows[0]["IP"].ToString(); * FindIP.Dispose(); * * OfflinePlayer o = OfflinePlayer.Find(message); * if (o == null) { Player.SendMessage(p, "Could not find any player by the name entered."); return; } * message = o.ip;*/ try { message = Server.s.database.GetTable("Players").GetValue(Server.s.database.GetTable("Players").Rows.IndexOf(Server.s.database.GetTable("Players").GetRow(new string[] { "Name" }, new string[] { message })), "IP"); } catch { Player.SendMessage(p, "Could not find any player by the name entered."); return; } } else { message = who.ip; } /*DataTable Clones = MySQL.fillData("SELECT Name FROM Players WHERE IP='" + message + "'"); * * if (Clones.Rows.Count == 0) { Player.SendMessage(p, "Could not find any record of the player entered."); return; } * * List<string> foundPeople = new List<string>(); * for (int i = 0; i < Clones.Rows.Count; ++i) * { * if (!foundPeople.Contains(Clones.Rows[i]["Name"].ToString().ToLower())) * foundPeople.Add(Clones.Rows[i]["Name"].ToString().ToLower()); * } * * Clones.Dispose();*/ List <string> foundPeople = new List <string>(); /*Player.players.ForEach(delegate (Player pl) * { * if (pl.ip == message) * if (!foundPeople.Contains(pl.name)) * foundPeople.Add(pl.name); * }); * PlayerDB.allOffline.ForEach(delegate (OfflinePlayer op) * { * if (op.ip == message) * if (!foundPeople.Contains(op.name)) * foundPeople.Add(op.name); * });*/ jDatabase.Table players = Server.s.database.GetTable("Players"); List <List <string> > foundRows = players.GetRows("IP", message); foreach (List <string> row in foundRows) { foundPeople.Add(players.GetValue(players.Rows.IndexOf(row), "Name")); } if (foundPeople.Count <= 1) { Player.SendMessage(p, originalName + " has no clones."); return; } Player.SendMessage(p, "These people have the same IP address:"); Player.SendMessage(p, string.Join(", ", foundPeople.ToArray())); }
public override void Use(Player p, string message) { Player who = null; if (message == "") { who = p; message = p.name; } else { who = Player.Find(message); } if (who != null && !who.hidden) { Player.SendMessage(p, who.color + who.name + Server.DefaultColor + " is on &b" + who.level.name); Player.SendMessage(p, who.color + who.prefix + who.name + Server.DefaultColor + " has :"); Player.SendMessage(p, "> > the rank of " + who.group.color + who.group.name); try { if (!Group.Find("Nobody").commands.Contains("pay") && !Group.Find("Nobody").commands.Contains("give") && !Group.Find("Nobody").commands.Contains("take")) { Player.SendMessage(p, "> > &a" + who.money + Server.DefaultColor + " " + Server.moneys); } } catch { } Player.SendMessage(p, "> > &cdied &a" + who.overallDeath + Server.DefaultColor + " times"); Player.SendMessage(p, "> > &bmodified &a" + who.overallBlocks + Server.DefaultColor + " blocks, &a" + who.loginBlocks + Server.DefaultColor + " since logging in."); string storedTime = Convert.ToDateTime(DateTime.Now.Subtract(who.timeLogged).ToString()).ToString("HH:mm:ss"); Player.SendMessage(p, "> > been logged in for &a" + storedTime + Server.DefaultColor + " using " + ((who.clientName.ToLower().Trim().EndsWith("client")) ? "the " : "") + "&a" + who.clientName); Player.SendMessage(p, "> > first logged into the server on &a" + who.firstLogin.ToString("yyyy-MM-dd") + " at " + who.firstLogin.ToString("HH:mm:ss")); Player.SendMessage(p, "> > logged in &a" + who.totalLogins + Server.DefaultColor + " times, &c" + who.totalKicked + Server.DefaultColor + " of which ended in a kick."); Player.SendMessage(p, "> > " + Awards.awardAmount(who.name) + " awards"); bool skip = false; if (p != null) { if (p.group.Permission <= LevelPermission.AdvBuilder) { skip = true; } } if (!skip) { string givenIP; if (Server.bannedIP.Contains(who.ip)) { givenIP = "&8" + who.ip + ", which is banned"; } else { givenIP = who.ip; } Player.SendMessage(p, "> > the IP of " + givenIP); if (Server.useWhitelist) { if (Server.whiteList.Contains(who.name)) { Player.SendMessage(p, "> > Player is &fWhitelisted"); } } if (Server.devs.Contains(who.name.ToLower())) { Player.SendMessage(p, Server.DefaultColor + "> > Player is a &9Developer"); } } } else { Player.SendMessage(p, "\"" + message + "\" is offline! Using /whowas instead."); Command.all.Find("whowas").Use(p, message); } }
public override void Use(Player p, string message) { if (!p.canBuild) { Player.SendMessage(p, "You're currently being &4possessed" + Server.DefaultColor + "!"); return; } try { bool stealth = false; if (message != "") { if (message == "#") { if (p.following != "") { stealth = true; message = ""; } else { Help(p); return; } } else if (message.IndexOf(' ') != -1) { if (message.Split(' ')[0] == "#") { if (p.hidden) { stealth = true; } message = message.Split(' ')[1]; } } } Player who = Player.Find(message); if (message == "" && p.following == "") { Help(p); return; } else if (message == "" && p.following != "" || message == p.following) { who = Player.Find(p.following); p.following = ""; if (p.hidden) { if (who != null) { p.SendSpawn(who.id, who.color + who.name, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1]); } if (!stealth) { Command.all.Find("hide").Use(p, ""); } else { if (who != null) { Player.SendMessage(p, "You have stopped following " + who.color + who.name + Server.DefaultColor + " and remained hidden."); } else { Player.SendMessage(p, "Following stopped."); } } return; } } if (who == null) { Player.SendMessage(p, "Could not find player."); return; } else if (who == p) { Player.SendMessage(p, "Cannot follow yourself."); return; } else if (who.group.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot follow someone of equal or greater rank."); return; } else if (who.following != "") { Player.SendMessage(p, who.name + " is already following " + who.following); return; } if (!p.hidden) { Command.all.Find("hide").Use(p, ""); } if (p.level != who.level) { Command.all.Find("tp").Use(p, who.name); } if (p.following != "") { who = Player.Find(p.following); p.SendSpawn(who.id, who.color + who.name, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1]); } who = Player.Find(message); p.following = who.name; Player.SendMessage(p, "Following " + who.name + ". Use \"/follow\" to stop."); p.SendDie(who.id); } catch (Exception e) { Server.ErrorLog(e); Player.SendMessage(p, "Error occured"); } }
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) { if (message == "") { Help(p); return; } if (message[0] == '@') { message = message.Remove(0, 1).Trim(); Player who = Player.Find(message); if (who == null) { /*DataTable ip; * int tryCounter = 0; * rerun: try * { * ip = MySQL.fillData("SELECT IP FROM Players WHERE Name = '" + message + "'"); * } * catch (Exception e) * { * tryCounter++; * if (tryCounter < 10) * goto rerun; * else * { * Server.ErrorLog(e); * return; * } * } * if (ip.Rows.Count > 0) * message = ip.Rows[0]["IP"].ToString(); * else * { * Player.SendMessage(p, "Unable to find an IP address for that user."); * return; * } * ip.Dispose(); * if (OfflinePlayer.Find(message) != null) * message = OfflinePlayer.Find(message).ip; * else * { * Player.SendMessage(p, "Unable to find an IP address for that user."); * return; * }*/ try { message = Server.s.database.GetTable("Players").GetValue(Server.s.database.GetTable("Players").Rows.IndexOf(Server.s.database.GetTable("Players").GetRow(new string[] { "Name" }, new string[] { message })), "IP"); } catch { Player.SendMessage(p, "Unable to find an IP address for that user."); return; } } else { message = who.ip; } } else { Player who = Player.Find(message); if (who != null) { message = who.ip; } } if (message.Equals("127.0.0.1")) { Player.SendMessage(p, "You can't ip-ban the server!"); return; } if (message.IndexOf('.') == -1) { Player.SendMessage(p, "Invalid IP!"); return; } if (message.Split('.').Length != 4) { Player.SendMessage(p, "Invalid IP!"); return; } if (p != null) { if (p.ip == message) { Player.SendMessage(p, "You can't ip-ban yourself!"); return; } } if (Server.bannedIP.Contains(message)) { Player.SendMessage(p, message + " is already ip-banned."); return; } Player.GlobalMessage(message + " got &8ip-banned!"); if (p != null) { IRCBot.Say("IP-BANNED: " + message.ToLower() + " by " + p.name); } else { IRCBot.Say("IP-BANNED: " + message.ToLower() + " by console"); } Server.bannedIP.Add(message); Server.bannedIP.Save("banned-ip.txt", false); Server.s.Log("IP-BANNED: " + message.ToLower()); /* * foreach (Player pl in Player.players) { * if (message == pl.ip) { pl.Kick("Kicked by ipban"); } * }*/ }
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 == "") { Help(p); return; } Player who; string killMsg; int killMethod = 0; if (message.IndexOf(' ') == -1) { who = Player.Find(message); killMsg = " was killed by " + p.color + p.name; } else { who = Player.Find(message.Split(' ')[0]); message = message.Substring(message.IndexOf(' ') + 1); if (message.IndexOf(' ') == -1) { if (message.ToLower() == "explode") { killMsg = " was exploded by " + p.color + p.name; killMethod = 1; } else { killMsg = " " + message; } } else { if (message.Split(' ')[0].ToLower() == "explode") { killMethod = 1; message = message.Substring(message.IndexOf(' ') + 1); } killMsg = " " + message; } } if (who == null) { p.HandleDeath(Block.rock, " killed itself in its confusion"); Player.SendMessage(p, "Could not find player"); return; } if (who.group.Permission > p.group.Permission) { p.HandleDeath(Block.rock, " was killed by " + who.color + who.name); Player.SendMessage(p, "Cannot kill someone of higher rank"); return; } if (killMethod == 1) { who.HandleDeath(Block.rock, killMsg, true); } else { who.HandleDeath(Block.rock, killMsg); } }
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.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.Split(' ').Length > 2) { Help(p); return; } if (p == null) { Player.SendMessage(p, "Console possession? Nope.avi."); return; } try { string skin = (message.Split(' ').Length == 2) ? message.Split(' ')[1] : ""; message = message.Split(' ')[0]; if (message == "") { if (p.possess == "") { Help(p); return; } else { Player who = Player.Find(p.possess); if (who == null) { p.possess = ""; Player.SendMessage(p, "Possession disabled."); return; } who.following = ""; who.canBuild = true; p.possess = ""; if (!who.MarkPossessed()) { return; } p.invincible = false; Command.all.Find("hide").Use(p, ""); Player.SendMessage(p, "Stopped possessing " + who.color + who.name + Server.DefaultColor + "."); return; } } else if (message == p.possess) { Player who = Player.Find(p.possess); if (who == null) { p.possess = ""; Player.SendMessage(p, "Possession disabled."); return; } if (who == p) { Player.SendMessage(p, "Cannot possess yourself!"); return; } who.following = ""; who.canBuild = true; p.possess = ""; if (!who.MarkPossessed()) { return; } p.invincible = false; Command.all.Find("hide").Use(p, ""); Player.SendMessage(p, "Stopped possessing " + who.color + who.name + Server.DefaultColor + "."); return; } else { Player who = Player.Find(message); if (who == null) { Player.SendMessage(p, "Could not find player."); return; } if (who.group.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot possess someone of equal or greater rank."); return; } if (who.possess != "") { Player.SendMessage(p, "That player is currently possessing someone!"); return; } if (who.following != "") { Player.SendMessage(p, "That player is either following someone or already possessed."); return; } if (p.possess != "") { Player oldwho = Player.Find(p.possess); if (oldwho != null) { oldwho.following = ""; oldwho.canBuild = true; if (!oldwho.MarkPossessed()) { return; } //p.SendSpawn(oldwho.id, oldwho.color + oldwho.name, oldwho.pos[0], oldwho.pos[1], oldwho.pos[2], oldwho.rot[0], oldwho.rot[1]); } } Command.all.Find("tp").Use(p, who.name); if (!p.hidden) { Command.all.Find("hide").Use(p, ""); } p.possess = who.name; who.following = p.name; if (!p.invincible) { p.invincible = true; } bool result = (skin == "#") ? who.MarkPossessed() : who.MarkPossessed(p.name); if (!result) { return; } p.SendDie(who.id); who.canBuild = false; Player.SendMessage(p, "Successfully possessed " + who.color + who.name + Server.DefaultColor + "."); } } catch (Exception e) { Server.ErrorLog(e); Player.SendMessage(p, "There was an error."); } }
void OnPrivMsg(object sender, IrcEventArgs e) { Server.s.Log("IRC RECEIVING MESSAGE"); if (Server.ircControllers.Contains(e.Data.Nick)) { string cmd; string msg; int len = e.Data.Message.Split(' ').Length; cmd = e.Data.Message.Split(' ')[0]; if (len > 1) { msg = e.Data.Message.Substring(e.Data.Message.IndexOf(' ')).Trim(); } else { msg = ""; } if (msg != "" || cmd == "restart" || cmd == "update") { Server.s.Log(cmd + " : " + msg); switch (cmd) { case "kick": if (Player.Find(msg.Split()[0]) != null) { Command.all.Find("kick").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found."); } break; case "ban": if (Player.Find(msg) != null) { Command.all.Find("ban").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found."); } break; case "banip": if (Player.Find(msg) != null) { Command.all.Find("banip").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found."); } break; case "say": irc.SendMessage(SendType.Message, channel, msg); break; case "setrank": if (Player.Find(msg.Split(' ')[0]) != null) { Command.all.Find("setrank").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found."); } break; case "mute": if (Player.Find(msg) != null) { Command.all.Find("mute").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found."); } break; case "joker": if (Player.Find(msg) != null) { Command.all.Find("joker").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found."); } break; case "physics": if (Level.Find(msg.Split(' ')[0]) != null) { Command.all.Find("physics").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found."); } break; case "load": if (Level.Find(msg.Split(' ')[0]) != null) { Command.all.Find("load").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found."); } break; case "unload": if (Level.Find(msg) != null || msg == "empty") { Command.all.Find("unload").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found."); } break; case "save": if (Level.Find(msg) != null) { Command.all.Find("save").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found."); } break; case "map": if (Level.Find(msg.Split(' ')[0]) != null) { Command.all.Find("map").Use(null, msg); } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found."); } break; case "restart": Player.GlobalMessage("Restart initiated by " + e.Data.Nick); IRCBot.Say("Restart initiated by " + e.Data.Nick); Command.all.Find("restart").Use(null, ""); break; case "update": Player.GlobalMessage("Update check initiated by " + e.Data.Nick); IRCBot.Say("Update check initiated by " + e.Data.Nick); Command.all.Find("update").Use(null, ""); break; default: irc.SendMessage(SendType.Message, e.Data.Nick, "Invalid command."); break; } } else { irc.SendMessage(SendType.Message, e.Data.Nick, "Invalid command format."); } } }
public override void Use(Player p, string message) { byte b; Int64 seconds; Player who; Player.UndoPos Pos; int CurrentPos = 0; bool FoundUser = false; if (message == "") { message = p.name + " 300"; } if (message.Split(' ').Length == 2) { 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 = 300; message = message + " 300"; } } if (seconds == 0) { seconds = 5400; } who = Player.Find(message.Split(' ')[0]); if (who != null) { message = who.name + " " + seconds; FoundUser = true; for (CurrentPos = who.UndoBuffer.Count - 1; CurrentPos >= 0; --CurrentPos) { try { Pos = who.UndoBuffer[CurrentPos]; Level foundLevel = Level.Find(Pos.mapName); if (foundLevel == p.level) { 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) { if (b == Block.air || Block.Convert(b) == Block.water || Block.Convert(b) == Block.lava) { p.SendBlockchange(Pos.x, Pos.y, Pos.z, Block.red); } else { p.SendBlockchange(Pos.x, Pos.y, Pos.z, Block.green); } } } else { break; } } } catch { } } } try { DirectoryInfo di; string[] fileContent; if (Directory.Exists("extra/undo/" + message.Split(' ')[0])) { di = new DirectoryInfo("extra/undo/" + message.Split(' ')[0]); for (int i = 0; i < di.GetFiles("*.undo").Length; i++) { fileContent = File.ReadAllText("extra/undo/" + message.Split(' ')[0] + "/" + i + ".undo").Split(' '); highlightStuff(fileContent, seconds, p); } FoundUser = true; } if (Directory.Exists("extra/undoPrevious/" + message.Split(' ')[0])) { di = new DirectoryInfo("extra/undoPrevious/" + message.Split(' ')[0]); for (int i = 0; i < di.GetFiles("*.undo").Length; i++) { fileContent = File.ReadAllText("extra/undoPrevious/" + message.Split(' ')[0] + "/" + i + ".undo").Split(' '); highlightStuff(fileContent, seconds, p); } FoundUser = true; } if (FoundUser) { Player.SendMessage(p, "Now highlighting &b" + seconds + Server.DefaultColor + " seconds for " + Server.FindColor(message.Split(' ')[0]) + message.Split(' ')[0]); Player.SendMessage(p, "&cUse /reveal to un-highlight"); } 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 == "") { 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); } }