void Listener_OnPrivate(UserInfo user, string message) { if (!Server.ircControllers.Contains(user.Nick)) { Pm(user.Nick, "You are not an IRC controller!"); return; } if (message.Split(' ')[0] == "resetbot" || banCmd.Contains(message.Split(' ')[0])) { Pm(user.Nick, "You cannot use this command from IRC!"); return; } if (Player.CommandHasBadColourCodes(null, message)) { Pm(user.Nick, "Your command had invalid color codes!"); return; } Command cmd = Command.all.Find(message.Split(' ')[0]); if (cmd != null) { Server.s.Log("IRC Command: /" + message); usedCmd = user.Nick; try { cmd.Use(null, message.Split(' ').Length > 1 ? message.Substring(message.IndexOf(' ')).Trim() : ""); } catch { Pm(user.Nick, "Failed command!"); } usedCmd = ""; } else { Pm(user.Nick, "Unknown command!"); } }
public override void Use(Player p, string message) { if (checker == null) { checker = new Timer(60000); checker.Elapsed += new ElapsedEventHandler(checker_Elapsed); checker.Start(); } String[] incoming = message.Split(' '); if (incoming.Length == 2) { nowCmd = Command.all.Find(incoming[0]); if (nowCmd != null) { //command exists nowCmd.isIntervalized = true; nowCmd.intervalInMinutes = int.Parse(incoming[1]); nowCmd.intervalUsingPlayer = p; try { nowCmd.Use(nowCmd.intervalUsingPlayer, ""); } catch (Exception e) { Player.SendMessage(p, "An error occoured. please report this to the devs, cause this cmd seems to be not Interval-Compatible atm"); nowCmd.isIntervalized = false; return; } nowCmd.nextExecution = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, DateTime.Today.Hour, DateTime.Today.Minute + nowCmd.intervalInMinutes, 0); } else { Player.SendMessage(p, "This command doesn't exist."); } } else if (incoming.Length == 1) { nowCmd = Command.all.Find(incoming[0]); if (nowCmd != null) { //command exists if (nowCmd.isIntervalized) { nowCmd.isIntervalized = false; Player.SendMessage(p, "Command will not be executed anymore in its Interval"); } } else { Player.SendMessage(p, "This command doesn't exist."); } } else { this.Help(p); return; } nowCmd = null; }
// Private methods private void LevelCommand(string name, string msg = "") { Command cmd = Command.all.Find(name.Trim()); if (cmd != null && map != null) { try { cmd.Use(null, map.name + " " + msg.Trim()); } catch (Exception e) { Server.ErrorLog(e); } } }
public override void Use(Player p, string message) { if (message != "") { Help(p); return; } if (p.possess != "") { Player.SendMessage(p, "Stop your current possession first."); return; } Command opchat = Command.all.Find("opchat"); p.hidden = !p.hidden; if (p.hidden) { Player.GlobalDie(p, true); Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &finvisible" + Server.DefaultColor + "."); Player.GlobalChat(p, "&c- " + p.color + p.prefix + p.name + Server.DefaultColor + " disconnected.", false); if (p.opchat == false) { opchat.Use(p, message); } else { } //Player.SendMessage(p, "You're now &finvisible&e."); } else { Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false); Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &8visible" + Server.DefaultColor + "."); Player.GlobalChat(p, "&a+ " + p.color + p.prefix + p.name + Server.DefaultColor + " joined the game.", false); if (p.opchat == true) { opchat.Use(p, message); } else { } //Player.SendMessage(p, "You're now &8visible&e."); } }
public override void Use(Player p, string message) { Command CmdFly = Command.all.Find("fly"); if (p.level.ctfmode) { Player.SendMessage(p, "You can not fly while playing CTF, that is cheating!"); if (p.isFlying) { CmdFly.Use(p, String.Empty); } return; } p.isFlying = !p.isFlying; if (!p.isFlying) { return; } Player.SendMessage(p, "You are now flying. &cJump!"); Thread flyThread = new Thread(new ThreadStart(delegate { Pos pos; ushort[] oldpos = new ushort[3]; List <Pos> buffer = new List <Pos>(); while (p.isFlying) { Thread.Sleep(20); if (p.pos == oldpos) { continue; } try { List <Pos> tempBuffer = new List <Pos>(); List <Pos> toRemove = new List <Pos>(); ushort x = (ushort)((p.pos[0]) / 32); ushort y = (ushort)((p.pos[1] - 60) / 32); ushort z = (ushort)((p.pos[2]) / 32); try { for (ushort xx = (ushort)(x - 1); xx <= x + 1; xx++) { for (ushort yy = (ushort)(y - 1); yy <= y; yy++) { for (ushort zz = (ushort)(z - 1); zz <= z + 1; zz++) { if (p.level.GetTile(xx, yy, zz) == Block.air) { pos.x = xx; pos.y = yy; pos.z = zz; tempBuffer.Add(pos); } } } } foreach (Pos cP in tempBuffer) { if (!buffer.Contains(cP)) { buffer.Add(cP); p.SendBlockchange(cP.x, cP.y, cP.z, Block.glass); } } foreach (Pos cP in buffer) { if (!tempBuffer.Contains(cP)) { p.SendBlockchange(cP.x, cP.y, cP.z, Block.air); toRemove.Add(cP); } } foreach (Pos cP in toRemove) { buffer.Remove(cP); } tempBuffer.Clear(); toRemove.Clear(); } catch { } } catch { } p.pos.CopyTo(oldpos, 0); } foreach (Pos cP in buffer) { p.SendBlockchange(cP.x, cP.y, cP.z, Block.air); } Player.SendMessage(p, "Stopped flying"); })); flyThread.Start(); }
public override void Use(Player p, string message) { string dir = "extra/jail/"; string jailMapFile = dir + "xjail.map.xjail"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (!File.Exists(jailMapFile)) { StreamWriter SW = new StreamWriter(jailMapFile); SW.WriteLine(Server.mainLevel.name); SW.Close(); } if (message == "") { Help(p); return; } else { StreamReader SR = new StreamReader(jailMapFile); string xjailMap = SR.ReadLine(); SR.Close(); Command jail = Command.all.Find("jail"); if (message == "set") { if (!p.level.name.Contains("cMuseum")) { jail.Use(p, "create"); StreamWriter SW = new StreamWriter(jailMapFile); SW.WriteLine(p.level.name); SW.Close(); Player.SendMessage(p, "The xjail map was set from '" + xjailMap + "' to '" + p.level.name + "'"); return; } else { Player.SendMessage(p, "You are in a museum!"); return; } } else { Player player = Player.Find(message); if (player != null) { Command move = Command.all.Find("move"); Command spawn = Command.all.Find("spawn"); Command freeze = Command.all.Find("freeze"); Command mute = Command.all.Find("mute"); string playerFile = dir + player.name + "_temp.xjail"; if (!File.Exists(playerFile)) { StreamWriter writeFile = new StreamWriter(playerFile); writeFile.WriteLine(player.level.name); writeFile.Close(); if (!player.muted) { mute.Use(p, message); } if (!player.frozen) { freeze.Use(p, message); } move.Use(p, message + " " + xjailMap); while (player.Loading) { } if (!player.jailed) { jail.Use(p, message); } Player.GlobalMessage(player.color + player.name + Server.DefaultColor + " was XJailed!"); return; } else { StreamReader readFile = new StreamReader(playerFile); string playerMap = readFile.ReadLine(); readFile.Close(); File.Delete(playerFile); move.Use(p, message + " " + playerMap); while (player.Loading) { } mute.Use(p, message); jail.Use(p, message); freeze.Use(p, message); spawn.Use(player, ""); Player.GlobalMessage(player.color + player.name + Server.DefaultColor + " was released from XJail!"); return; } } else { Player.SendMessage(p, "Player not found"); return; } } } }
public override void Use(Player p, string message) { if (checker==null){ checker = new Timer(60000); checker.Elapsed += new ElapsedEventHandler(checker_Elapsed); checker.Start(); } String[] incoming = message.Split(' '); if(incoming.Length == 2) { nowCmd = Command.all.Find(incoming[0]); if (nowCmd != null) { //command exists nowCmd.isIntervalized = true; nowCmd.intervalInMinutes = int.Parse(incoming[1]); nowCmd.intervalUsingPlayer = p; try { nowCmd.Use(nowCmd.intervalUsingPlayer, ""); } catch (Exception e) { Player.SendMessage(p, "An error occoured. please report this to the devs, cause this cmd seems to be not Interval-Compatible atm"); nowCmd.isIntervalized = false; return; } nowCmd.nextExecution = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, DateTime.Today.Hour, DateTime.Today.Minute + nowCmd.intervalInMinutes, 0); }else{ Player.SendMessage(p, "This command doesn't exist."); } }else if(incoming.Length == 1){ nowCmd = Command.all.Find(incoming[0]); if (nowCmd != null) { //command exists if (nowCmd.isIntervalized) { nowCmd.isIntervalized = false; Player.SendMessage(p, "Command will not be executed anymore in its Interval"); } } else { Player.SendMessage(p, "This command doesn't exist."); } }else{ this.Help(p); return; } nowCmd = null; }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } Player who = Player.Find(message.Split(' ')[0]); string cmd = message.Split(' ')[0].ToUpper(); string par; try { par = message.Split(' ')[1].ToUpper(); } catch { par = ""; } string par2; try { par2 = message.Split(' ')[2]; } catch { par2 = ""; } string par3; try { par3 = message.Split(' ')[3]; } catch { par3 = ""; } if (cmd == "GO") { if ((par == "1") || (par == "")) { string mapname = properMapName(p, false); if (!Server.levels.Any(l => l.name == mapname)) { Command.all.Find("load").Use(p, mapname); } Command.all.Find("goto").Use(p, mapname); } else if (par == "2") { string mapname = p.name.ToLower() + "2"; if (!Server.levels.Any(l => l.name == mapname)) { Command.all.Find("load").Use(p, mapname); } Command.all.Find("goto").Use(p, mapname); } } // Set Spawn (if you are on your own map level) else if (cmd == "SPAWN") { if ((p.name.ToUpper() == p.level.name.ToUpper()) || (p.name.ToUpper() + "00" == p.level.name.ToUpper()) || (p.name.ToUpper() + "2" == p.level.name.ToUpper())) { Command.all.Find("setspawn").Use(p, ""); } else { Player.SendMessage(p, "You can only change the Spawn Point when you are on your own map."); } } // Map Commands else if (cmd == "MAP") { if (par == "ADD") { if ((File.Exists(@"levels\" + p.name.ToLower() + ".lvl")) || (File.Exists(@"levels\" + p.name.ToLower() + "00.lvl"))) { if (!File.Exists(@"levels\" + p.name.ToLower() + "2.lvl")) { Player.SendMessage(p, p.color + p.name + Server.DefaultColor + " you already have a map, let me create a second one for you."); string mType; if (par2.ToUpper() == "" || par2.ToUpper() == "DESERT" || par2.ToUpper() == "FLAT" || par2.ToUpper() == "FOREST" || par2.ToUpper() == "ISLAND" || par2.ToUpper() == "MOUNTAINS" || par2.ToUpper() == "OCEAN" || par2.ToUpper() == "PIXEL" || par2.ToUpper() == "SPACE") { if (par2 != "") { mType = par2; } else { mType = "flat"; } Player.SendMessage(p, "Creating your 2nd map, " + p.color + p.name); Command.all.Find("newlvl").Use(p, p.name.ToLower() + "2 " + mSize(p) + " " + mType); } else { Player.SendMessage(p, "A wrong map type was specified. Valid map types: Desert, flat, forest, island, mountians, ocean, pixel and space."); } } else { Player.SendMessage(p, p.color + p.name + Server.DefaultColor + " you already have two maps."); Player.SendMessage(p, "If you would like to delete one type /os map delete <1 or 2>"); } } else { string mType; if (par2.ToUpper() == "" || par2.ToUpper() == "DESERT" || par2.ToUpper() == "FLAT" || par2.ToUpper() == "FOREST" || par2.ToUpper() == "ISLAND" || par2.ToUpper() == "MOUNTAINS" || par2.ToUpper() == "OCEAN" || par2.ToUpper() == "PIXEL" || par2.ToUpper() == "SPACE") { if (par2 != "") { mType = par2; } else { mType = "flat"; } Player.SendMessage(p, "Creating your map, " + p.color + p.name); Command.all.Find("newlvl").Use(p, p.name.ToLower() + " " + mSize(p) + " " + mType); } else { Player.SendMessage(p, "A wrong map type was specified. Valid map types: Desert, flat, forest, island, mountians, ocean, pixel and space."); } } } else if (par == "PHYSICS") { if ((p.level.name.ToUpper().Equals(p.name.ToUpper())) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "00")) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "2"))) { if (par2 != "") { if (par2 == "0") { Command.all.Find("physics").Use(p, p.level.name + " 0"); } else if (par2 == "1") { Command.all.Find("physics").Use(p, p.level.name + " 1"); } else if (par2 == "2") { Command.all.Find("physics").Use(p, p.level.name + " 2"); } else if (par2 == "3") { Command.all.Find("physics").Use(p, p.level.name + " 3"); } else if (par2 == "4") { Command.all.Find("physics").Use(p, p.level.name + " 4"); } } else { Player.SendMessage(p, "You didn't enter a number! Please enter one of these numbers: 0, 1, 2, 3, 4"); } } else { Player.SendMessage(p, "You have to be on one of your maps to set its physics!"); } } // Delete your map else if (par == "DELETE") { if (par2 == "") { Player.SendMessage(p, "To delete one of your maps type /os map delete <1 or 2> 1 is your first map 2 is your second."); } else if (par2 == "1") { Command.all.Find("deletelvl").Use(p, properMapName(p, false)); Player.SendMessage(p, "Your 1st map has been removed."); return; } else if (par2 == "2") { Command.all.Find("deletelvl").Use(p, p.name.ToLower() + "2"); Player.SendMessage(p, "Your 2nd map has been removed."); return; } } else { //all is good here :) Player.SendMessage(p, "/overseer map add [type - default is flat] -- Creates your map"); Player.SendMessage(p, "/overseer map physics -- Sets the physics on your map."); Player.SendMessage(p, "/overseer map delete -- Deletes your map"); Player.SendMessage(p, " Map Types: Desert, flat, forest, island, mountians, ocean, pixel and space"); } } else if (cmd == "ZONE") { // List zones on a single block(dont need to touch this :) ) if (par == "LIST") { Command zone = Command.all.Find("zone"); zone.Use(p, ""); } // Add Zone to your personal map(took a while to get it to work(it was a big derp)) else if (par == "ADD") { if ((p.level.name.ToUpper().Equals(p.name.ToUpper())) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "00")) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "2"))) { if (par2 != "") { Command.all.Find("ozone").Use(p, par2); Player.SendMessage(p, par2 + " has been allowed building on your map."); } else { Player.SendMessage(p, "You did not specify a name to allow building on your map."); } } else { Player.SendMessage(p, "You must be on one of your maps to add or delete zones"); } } else if (par == "DEL") { if ((p.level.name.ToLower().Equals(p.name.ToUpper())) || (p.level.name.ToLower().Equals(p.name.ToLower() + "00")) || (p.level.name.ToLower().Equals(p.name.ToLower() + "2"))) { // I need to add the ability to delete a single zone, I need help! if ((par2.ToUpper() == "ALL") || (par2.ToUpper() == "")) { Command zone = Command.all.Find("zone"); Command click = Command.all.Find("click"); zone.Use(p, "del all"); click.Use(p, 0 + " " + 0 + " " + 0); } } else { Player.SendMessage(p, "You have to be on one of your maps to delete or add zones!"); } } else { // Unknown Zone Request Player.SendMessage(p, "/overseer ZONE add [playername or rank] -- Add a zone for a player or a rank.");; Player.SendMessage(p, "/overseer ZONE del [all] -- Deletes all zones."); Player.SendMessage(p, "/overseer ZONE list -- show active zones on brick."); Player.SendMessage(p, "You can only delete all zones for now."); } } //Lets player load the level else if (cmd == "LOAD") { if (par != "") { if (par == "1") { Command.all.Find("load").Use(p, properMapName(p, false)); Player.SendMessage(p, "Your level is now loaded."); } else if (par == "2") { Command.all.Find("load").Use(p, p.name + "2"); Player.SendMessage(p, "Your 2nd level is now loaded."); } } else { Player.SendMessage(p, "Type /os load <1 or 2> to load one of your maps"); } } else if (cmd == "KICKALL") { Command.all.Find("kickall").Use(p, ""); } else { Help(p); } }
public override void Use(Player p, string message) { if (p == null) { Player.SendMessage(p, "This command can only be used in-game!"); return; } if (message == "check") { if (p.hidden) { Player.SendMessage(p, "You are currently hidden!"); return; } else { Player.SendMessage(p, "You are not currently hidden!"); return; } } else if (message != "") { if (p.possess != "") { Player.SendMessage(p, "Stop your current possession first."); return; } } Command opchat = Command.all.Find("opchat"); Command adminchat = Command.all.Find("adminchat"); p.hidden = !p.hidden; if (p.hidden) { Player.GlobalDie(p, true); Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &finvisible" + Server.DefaultColor + "."); Player.GlobalChat(p, "&c- " + p.color + p.prefix + p.name + Server.DefaultColor + " " + (File.Exists("text/logout/" + p.name + ".txt") ? File.ReadAllText("text/logout/" + p.name + ".txt") : "Disconnected."), false); Server.IRC.Say(p.name + " left the game (Disconnected.)"); if (!p.opchat) { opchat.Use(p, message); } //Player.SendMessage(p, "You're now &finvisible&e."); } else { Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false); Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &8visible" + Server.DefaultColor + "."); Player.GlobalChat(p, "&a+ " + p.color + p.prefix + p.name + Server.DefaultColor + " " + (File.Exists("text/login/" + p.name + ".txt") ? File.ReadAllText("text/login/" + p.name + ".txt") : "joined the game."), false); Server.IRC.Say(p.name + " joined the game"); if (p.opchat) { opchat.Use(p, message); } if (p.adminchat) { adminchat.Use(p, message); } //Player.SendMessage(p, "You're now &8visible&e."); } }