public override void Use(Player p, params string[] args) { int port = 25565; if (args.Length == 0) { if (!p.IsConsole) p.SendMessage("Checking port...."); else Logger.Log("Checking Port..."); checkport(25565, p); } else if (args.Length == 1) { try { port = Convert.ToInt32(args[0]); if (!p.IsConsole) p.SendMessage("Checking port...."); else Logger.Log("Checking Port..."); checkport(port, p); } catch (Exception) { if (!p.IsConsole) p.SendMessage("port must be a number"); else Logger.Log("Port must be a number"); } } }
public override void Help(Player p) { if (p.IsConsole) { Logger.Log("/checkport or /cp"); Logger.Log("OPTIONAL you can specify another port by doing /cp <port>"); } else { p.SendMessage("/checkport or /cp"); p.SendMessage("OPTIONAL you can specify another port by doing /cp <port>"); } }
public override void Use(Player p, params string[] args) { int port = 25565; if (args.Length == 0) { checkport(25565, p); } else if (args.Length == 1) { try { port = Convert.ToInt16(args[0]); checkport(port, p); } catch (Exception e) { p.SendMessage("port must be a number"); p.SendMessage(e.Message); p.SendMessage(e.Source); } } }
public override void Help(Player p) { p.SendMessage("/cd - Command shortcut."); p.SendMessage("/countdown join - join the game"); p.SendMessage("/countdown leave - leave the game"); p.SendMessage("/countdown goto - goto the countdown map"); p.SendMessage("/countdown players - view players currently playing"); { if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 1)) { p.SendMessage("/countdown rules <send> <all/map/player> - the rules of countdown. with send: all to send to all, map to send to map and have a players name to send to a player"); } else { p.SendMessage("/countdown rules - view the rules of countdown"); } if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 2)) { p.SendMessage("/countdown download - download the countdown map"); p.SendMessage("/countdown enable - enable the game"); p.SendMessage("/countdown disable - disable the game"); p.SendMessage("/countdown cancel - cancels a game"); p.SendMessage("/countdown start [speed] [mode] - start the game, speeds are 'slow', 'normal', 'fast', 'extreme' and 'ultimate', modes are 'normal' and 'freeze'"); p.SendMessage("/countdown reset [all/map] - reset the whole game (all) or only the map (map)"); p.SendMessage("/countdown tutorial - a tutorial on how to setup countdown"); } } }
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte Type) { ppos.x = p.pos[0]; ppos.y = p.pos[1]; ppos.z = p.pos[2]; pllvl = p.level.name; blox[1].x = x; blox[1].y = y; blox[1].z = z;// jetz direction rausfinden und dann unten verwenden. int direction; //1 = 0,0,0 nach 1,0,0 2= 0,0,0 nach 0,1,0 3= 1,0,0 nach 0 und 4 = 010 nach 0 if (blox[1].x > blox[0].x) { direction = 1; p.SendMessage("dir1"); } else if (blox[1].x < blox[0].x) { direction = 3; p.SendMessage("dir3"); } else if (blox[1].z > blox[0].z) { direction = 2; p.SendMessage("dir2"); } else if (blox[1].z < blox[0].z) { direction = 4; p.SendMessage("dir4"); } else { direction = 1; p.SendMessage("else"); } String cinName = ""; cinName = msg; using (Stream imageStreamSource = new FileStream("extra/images/" + msg + ".gif", FileMode.Open, FileAccess.Read, FileShare.Read)) { GifBitmapDecoder decoder = new GifBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); for (int i = 0; i < decoder.Frames.Count; i++) { //saving all frames as pngs. BitmapSource bitmapSource = decoder.Frames[i]; using (FileStream fs = new FileStream("extra/images/" + i.ToString() + ".bmp", FileMode.Create)) { BmpBitmapEncoder encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); encoder.Save(fs); } } using (System.Drawing.Bitmap tbmp = new System.Drawing.Bitmap("extra/images/0.bmp")) { picHeight = tbmp.Height; picWidth = tbmp.Width; //create the new map... Command.all.Find("newlvl").Use(p, "gtctempmap " + picWidth.ToString() + " " + picHeight.ToString() + " " + picWidth.ToString() + " space"); Command.all.Find("load").Use(p, "gtctempmap"); //moving the player to this map Command.all.Find("move").Use(p, p.name + " gtctempmap"); System.Threading.Thread.Sleep(2000); for (int i = 0; i < decoder.Frames.Count; i++) { p.SendMessage("Start processing Frame " + i); workFrame(i, p, cinName, direction); p.SendMessage("Done"); } p.SendMessage("YAY! everything should be done"); Command.all.Find("move").Use(p, p.name + " " + pllvl); unchecked { p.SendPos((byte)-1, ppos.x, ppos.y, ppos.z, 0, 0); } Command.all.Find("deletelvl").Use(p, "gtctempmap");//deleting templvl for (int i = 0; i < decoder.Frames.Count; i++) { File.Delete("extra/images/" + i.ToString() + ".bmp"); } } } }
public void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type) { working = true; p.ClearBlockchange(); byte b = p.level.GetTile(x, y, z); p.SendBlockchange(x, y, z, b); Bitmap myBitmap = new Bitmap("extra/images/" + bitmaplocation + ".bmp"); myBitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); CatchPos cpos = (CatchPos)p.blockchangeObject; if (x == cpos.x && z == cpos.z) { Player.SendMessage(p, "No direction was selected"); return; } int direction; if (Math.Abs(cpos.x - x) > Math.Abs(cpos.z - z)) { direction = 0; if (x <= cpos.x) { direction = 1; } } else { direction = 2; if (z <= cpos.z) { direction = 3; } } if (layer) { if (popType == 1) popType = 2; if (popType == 3) popType = 4; } List<FindReference.ColorBlock> refCol = FindReference.popRefCol(popType); FindReference.ColorBlock colblock; p.SendMessage("" + direction); Thread printThread = new Thread(new ThreadStart(delegate { double[] distance = new double[refCol.Count]; // Array of distances between color pulled from image to the referance colors. int position; // This is the block selector for when we find which distance is the shortest. for (int k = 0; k < myBitmap.Width; k++) { for (int i = 0; i < myBitmap.Height; i++) { if (layer) { colblock.y = cpos.y; if (direction <= 1) { if (direction == 0) { colblock.x = (ushort)(cpos.x + k); colblock.z = (ushort)(cpos.z - i); } else { colblock.x = (ushort)(cpos.x - k); colblock.z = (ushort)(cpos.z + i); } //colblock.z = (ushort)(cpos.z - i); } else { if (direction == 2) { colblock.z = (ushort)(cpos.z + k); colblock.x = (ushort)(cpos.x + i); } else { colblock.z = (ushort)(cpos.z - k); colblock.x = (ushort)(cpos.x - i); } //colblock.x = (ushort)(cpos.x - i); } } else { colblock.y = (ushort)(cpos.y + i); if (direction <= 1) { if (direction == 0) colblock.x = (ushort)(cpos.x + k); else colblock.x = (ushort)(cpos.x - k); colblock.z = cpos.z; } else { if (direction == 2) colblock.z = (ushort)(cpos.z + k); else colblock.z = (ushort)(cpos.z - k); colblock.x = cpos.x; } } colblock.r = myBitmap.GetPixel(k, i).R; colblock.g = myBitmap.GetPixel(k, i).G; colblock.b = myBitmap.GetPixel(k, i).B; colblock.a = myBitmap.GetPixel(k, i).A; if (popType == 6) { if ((colblock.r + colblock.g + colblock.b) / 3 < (256 / 4)) { colblock.type = Block.obsidian; } else if (((colblock.r + colblock.g + colblock.b) / 3) >= (256 / 4) && ((colblock.r + colblock.g + colblock.b) / 3) < (256 / 4) * 2) { colblock.type = Block.darkgrey; } else if (((colblock.r + colblock.g + colblock.b) / 3) >= (256 / 4) * 2 && ((colblock.r + colblock.g + colblock.b) / 3) < (256 / 4) * 3) { colblock.type = Block.lightgrey; } else { colblock.type = Block.white; } } else { for (int j = 0; j < distance.Length; j++) // Calculate distances between the colors in the image and the set referance colors, and store them. { distance[j] = Math.Sqrt(Math.Pow((colblock.r - refCol[j].r), 2) + Math.Pow((colblock.b - refCol[j].b), 2) + Math.Pow((colblock.g - refCol[j].g), 2)); } position = 0; double minimum = distance[0]; for (int h = 1; h < distance.Length; h++) // Find the smallest distance in the array of distances. { if (distance[h] < minimum) { minimum = distance[h]; position = h; } } colblock.type = refCol[position].type; // Set the block we found closest to the image to the block we are placing. if (popType == 1) { if (position <= 20) { if (direction == 0) { colblock.z = (ushort)(colblock.z + 1); } else if (direction == 2) { colblock.x = (ushort)(colblock.x - 1); } else if (direction == 1) { colblock.z = (ushort)(colblock.z - 1); } else if (direction == 3) { colblock.x = (ushort)(colblock.x + 1); } } } else if (popType == 3) { if (position <= 3) { if (direction == 0) { colblock.z = (ushort)(colblock.z + 1); } else if (direction == 2) { colblock.x = (ushort)(colblock.x - 1); } else if (direction == 1) { colblock.z = (ushort)(colblock.z - 1); } else if (direction == 3) { colblock.x = (ushort)(colblock.x + 1); } } } } //ALPHA HANDLING (REAL HARD STUFF, YO) if (colblock.a < 20) colblock.type = Block.air; FindReference.placeBlock(p.level, p, colblock.x, colblock.y, colblock.z, colblock.type); } } if (bitmaplocation == "tempImage_" + p.name) File.Delete("extra/images/tempImage_" + p.name + ".bmp"); string printType; switch (popType) { case 1: printType = "2-layer color"; break; case 2: printType = "1-layer color"; break; case 3: printType = "2-layer grayscale"; break; case 4: printType = "1-layer grayscale"; break; case 5: printType = "Black and White"; break; case 6: printType = "Mathematical grayscale"; break; default: printType = "Something unknown"; break; } Player.SendMessage(p, "Finished printing image using " + printType); working = false; })); printThread.Start(); }
public override void Use(Player p, string message) { //first check if file exists if (File.Exists("extra/images/" + message + ".gif")) { p.SendMessage("Place 2 Blocks to Determine the Direction"); p.ClearBlockchange(); //happens when block is changed. then call blockchange1 msg = message; p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1); } else { Player.SendMessage(p, "File does not exist"); return; } }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } if (p == null) { Server.s.Log("'null' or console tried to use /countdown. This command is limited to ingame, sorry!!"); return; } string[] command = message.ToLower().Split(' '); string par0 = String.Empty; string par1 = String.Empty; string par2 = String.Empty; // string par3 = String.Empty; try { par0 = command[0]; par1 = command[1]; par2 = command[2]; } catch { } if (par0 == "help") { Command.all.Find("help").Use(p, "countdown"); return; } if (par0 == "goto") { try { Command.all.Find("goto").Use(p, "countdown"); } catch { Player.SendMessage(p, "Countdown level not loaded"); return; } } else if (par0 == "join") { switch (CountdownGame.gamestatus) { case CountdownGameStatus.Disabled: Player.SendMessage(p, "Sorry - Countdown isn't enabled yet"); return; case CountdownGameStatus.Enabled: if (!CountdownGame.players.Contains(p)) { CountdownGame.players.Add(p); Player.SendMessage(p, "You've joined the Countdown game!!"); Player.GlobalMessage(p.name + " has joined Countdown!!"); if (p.level != CountdownGame.mapon) { Player.SendMessage(p, "You can type '/countdown goto' to goto the countdown map!!"); } p.playerofcountdown = true; } else { Player.SendMessage(p, "Sorry, you have already joined!!, to leave please type /countdown leave"); return; } break; case CountdownGameStatus.AboutToStart: Player.SendMessage(p, "Sorry - The game is about to start"); return; ; case CountdownGameStatus.InProgress: Player.SendMessage(p, "Sorry - The game is already in progress."); return; case CountdownGameStatus.Finished: Player.SendMessage(p, "Sorry - The game has finished. Get an op to reset it."); return; } } else if (par0 == "leave") { if (CountdownGame.players.Contains(p)) { switch (CountdownGame.gamestatus) { case CountdownGameStatus.Disabled: Player.SendMessage(p, "Sorry - Countdown isn't enabled yet"); return; case CountdownGameStatus.Enabled: CountdownGame.players.Remove(p); CountdownGame.playersleftlist.Remove(p); Player.SendMessage(p, "You've left the game."); p.playerofcountdown = false; break; case CountdownGameStatus.AboutToStart: Player.SendMessage(p, "Sorry - The game is about to start"); return; ; case CountdownGameStatus.InProgress: Player.SendMessage(p, "Sorry - you are in a game that is in progress, please wait till its finished or till you've died."); return; case CountdownGameStatus.Finished: CountdownGame.players.Remove(p); if (CountdownGame.playersleftlist.Contains(p)) { CountdownGame.playersleftlist.Remove(p); } p.playerofcountdown = false; Player.SendMessage(p, "You've left the game."); break; } } else if (!(CountdownGame.playersleftlist.Contains(p)) && CountdownGame.players.Contains(p)) { CountdownGame.players.Remove(p); Player.SendMessage(p, "You've left the game."); } else { Player.SendMessage(p, "You haven't joined the game yet!!"); return; } } else if (par0 == "players") { switch (CountdownGame.gamestatus) { case CountdownGameStatus.Disabled: Player.SendMessage(p, "The game has not been enabled yet."); return; case CountdownGameStatus.Enabled: Player.SendMessage(p, "Players who have joined:"); foreach (Player plya in CountdownGame.players) { Player.SendMessage(p, plya.color + plya.name); } break; case CountdownGameStatus.AboutToStart: Player.SendMessage(p, "Players who are about to play:"); foreach (Player plya in CountdownGame.players) { { Player.SendMessage(p, plya.color + plya.name); } } break; case CountdownGameStatus.InProgress: Player.SendMessage(p, "Players left playing:"); foreach (Player plya in CountdownGame.players) { { if (CountdownGame.playersleftlist.Contains(plya)) { Player.SendMessage(p, plya.color + plya.name + Server.DefaultColor + " who is &aIN"); } else { Player.SendMessage(p, plya.color + plya.name + Server.DefaultColor + " who is &cOUT"); } } } break; case CountdownGameStatus.Finished: Player.SendMessage(p, "Players who were playing:"); foreach (Player plya in CountdownGame.players) { Player.SendMessage(p, plya.color + plya.name); } break; } } else if (par0 == "rules") { if (String.IsNullOrEmpty(par1)) { Player.SendMessage(p, "The aim of the game is to stay alive the longest."); Player.SendMessage(p, "Don't fall in the lava!!"); Player.SendMessage(p, "Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disappering."); Player.SendMessage(p, "The last person alive will win!!"); } else if (par1 == "send") { if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 1)) { if (par2 == "all") { Player.GlobalMessage("Countdown Rules being sent to everyone by " + p.color + p.name + ":"); Player.GlobalMessage("The aim of the game is to stay alive the longest."); Player.GlobalMessage("Don't fall in the lava!!"); Player.GlobalMessage("Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disappering."); Player.GlobalMessage("The last person alive will win!!"); Player.SendMessage(p, "Countdown rules sent to everyone"); } else if (par2 == "map") { Player.GlobalMessageLevel(p.level, "Countdown Rules being sent to " + p.level.name + " by " + p.color + p.name + ":"); Player.GlobalMessageLevel(p.level, "The aim of the game is to stay alive the longest."); Player.GlobalMessageLevel(p.level, "Don't fall in the lava!!"); Player.GlobalMessageLevel(p.level, "Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disappering."); Player.GlobalMessageLevel(p.level, "The last person alive will win!!"); Player.SendMessage(p, "Countdown rules sent to: " + p.level.name); } } else if (!String.IsNullOrEmpty(par2)) { Player who = Player.Find(par2); if (who == null) { Player.SendMessage(p, "That wasn't an online player."); return; } else if (who == p) { Player.SendMessage(p, "You can't send rules to yourself, use '/countdown rules' to send it to your self!!"); return; } else if (p.group.Permission < who.group.Permission) { Player.SendMessage(p, "You can't send rules to someone of a higher rank than yourself!!"); return; } else { Player.SendMessage(who, "Countdown rules sent to you by " + p.color + p.name); Player.SendMessage(who, "The aim of the game is to stay alive the longest."); Player.SendMessage(who, "Don't fall in the lava!!"); Player.SendMessage(who, "Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disawhowhoering."); Player.SendMessage(who, "The last person alive will win!!"); Player.SendMessage(p, "Countdown rules sent to: " + who.color + who.name); } } else { Player.SendMessage(p, par1 + " wasn't a correct parameter."); return; } } } else if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 2)) { if (par0 == "download") { try { using (WebClient WEB = new WebClient()) { WEB.DownloadFile("http://db.tt/R0x1MFS", "levels/countdown.mcf"); Player.SendMessage(p, "Downloaded map, now loading map and sending you to it."); } } catch { Player.SendMessage(p, "Sorry, Downloading Failed. PLease try again later"); return; } Command.all.Find("load").Use(p, "countdown"); Command.all.Find("goto").Use(p, "countdown"); Thread.Sleep(1000); // Sleep for a bit while they load while (p.Loading) { Thread.Sleep(250); } p.level.permissionbuild = LevelPermission.Nobody; p.level.motd = "Welcome to the Countdown map!!!! -hax"; ushort x = System.Convert.ToUInt16(8); ushort y = System.Convert.ToUInt16(23); ushort z = System.Convert.ToUInt16(17); x *= 32; x += 16; y *= 32; y += 32; z *= 32; z += 16; unchecked { p.SendPos((byte)-1, x, y, z, p.rot[0], p.rot[1]); } } else if (par0 == "enable") { if (CountdownGame.gamestatus == CountdownGameStatus.Disabled) { try { Command.all.Find("load").Use(null, "countdown"); CountdownGame.mapon = Level.Find("countdown"); CountdownGame.gamestatus = CountdownGameStatus.Enabled; Player.GlobalMessage("Countdown has been enabled!!"); } catch { Player.SendMessage(p, "Failed, have you downloaded the map yet??"); } } else { Player.SendMessage(p, "A Game is either already enabled or is already progress"); return; } } else if (par0 == "disable") { if (CountdownGame.gamestatus == CountdownGameStatus.AboutToStart || CountdownGame.gamestatus == CountdownGameStatus.InProgress) { Player.SendMessage(p, "Sorry, a game is currently in progress - please wait till its finished or use '/countdown cancel' to cancel the game"); return; } else if (CountdownGame.gamestatus == CountdownGameStatus.Disabled) { Player.SendMessage(p, "Already disabled!!"); return; } else { foreach (Player pl in CountdownGame.players) { Player.SendMessage(pl, "The countdown game was disabled."); } CountdownGame.gamestatus = CountdownGameStatus.Disabled; CountdownGame.playersleft = 0; CountdownGame.playersleftlist.Clear(); CountdownGame.players.Clear(); CountdownGame.squaresleft.Clear(); CountdownGame.Reset(p, true); Player.SendMessage(p, "Countdown Disabled"); return; } } else if (par0 == "cancel") { if (CountdownGame.gamestatus == CountdownGameStatus.AboutToStart || CountdownGame.gamestatus == CountdownGameStatus.InProgress) { CountdownGame.cancel = true; Thread.Sleep(1500); Player.SendMessage(p, "Countdown has been canceled"); CountdownGame.gamestatus = CountdownGameStatus.Enabled; return; } else { if (CountdownGame.gamestatus == CountdownGameStatus.Disabled) { Player.SendMessage(p, "The game is disabled!!"); return; } else { foreach (Player pl in CountdownGame.players) { Player.SendMessage(pl, "The countdown game was canceled"); } CountdownGame.gamestatus = CountdownGameStatus.Enabled; CountdownGame.playersleft = 0; CountdownGame.playersleftlist.Clear(); CountdownGame.players.Clear(); CountdownGame.squaresleft.Clear(); CountdownGame.Reset(null, true); return; } } } else if (par0 == "start" || par0 == "play") { if (CountdownGame.gamestatus == CountdownGameStatus.Enabled) { if (CountdownGame.players.Count >= 2) { CountdownGame.playersleftlist = CountdownGame.players; CountdownGame.playersleft = CountdownGame.players.Count; switch (par1) { case "slow": CountdownGame.speed = 800; CountdownGame.speedtype = "slow"; break; case "normal": CountdownGame.speed = 650; CountdownGame.speedtype = "normal"; break; case "fast": CountdownGame.speed = 500; CountdownGame.speedtype = "fast"; break; case "extreme": CountdownGame.speed = 300; CountdownGame.speedtype = "extreme"; break; case "ultimate": CountdownGame.speed = 150; CountdownGame.speedtype = "ultimate"; break; default: p.SendMessage("You didn't specify a speed, resorting to 'normal'"); goto case "normal"; //More efficient } if (par2 == null || par2.Trim() == "") { CountdownGame.freezemode = false; } else { if (par2 == "freeze" || par2 == "frozen") { CountdownGame.freezemode = true; } else { CountdownGame.freezemode = false; } } CountdownGame.GameStart(p); } else { Player.SendMessage(p, "Sorry, there aren't enough players to play."); return; } } else { Player.SendMessage(p, "Either a game is already in progress or it hasn't been enabled"); return; } } else if (par0 == "reset") { switch (CountdownGame.gamestatus) { case CountdownGameStatus.Disabled: Player.SendMessage(p, "Please enable countdown first."); return; case CountdownGameStatus.AboutToStart: Player.SendMessage(p, "Sorry - The game is about to start"); return; case CountdownGameStatus.InProgress: Player.SendMessage(p, "Sorry - The game is already in progress."); return; default: Player.SendMessage(p, "Reseting"); if (par1 == "map") { CountdownGame.Reset(p, false); } else if (par1 == "all") { CountdownGame.Reset(p, true); } else { Player.SendMessage(p, "Please specify whether it is 'map' or 'all'"); return; } break; } } else if (par0 == "tutorial") { p.SendMessage("First, download the map using /countdown download"); p.SendMessage("Next, type /countdown enable to enable the game mode"); p.SendMessage("Next, type /countdown join to join the game and tell other players to join aswell"); p.SendMessage("When some people have joined, type /countdown start [speed] to start it"); p.SendMessage("[speed] can be 'ultimate', 'extreme', 'fast', 'normal' or 'slow'"); p.SendMessage("When you are done, type /countdown reset [map/all]"); p.SendMessage("use map to reset only the map and all to reset everything."); return; } } else { p.SendMessage("Sorry, you aren't a high enough rank or that wasn't a correct command addition."); return; } }
/// <summary> /// Add a player to the PUG. /// </summary> /// <param name="player"></param> /// <param name="desiredClass"></param> public void AddPlayer( Player player, PlayerClass desiredClass ) { if (desiredClass < PlayerClass.Medic && player.GamesPlayed > 10 && player.MedicPercentage < 0.06) { player.SendMessage( @"Your medic percentage is too low. You must maintain a medic percentage higher than %6 to play here." ); return; } if (Players[desiredClass].Count < Players[desiredClass].Capacity) { // Check to see if the player is already added to the PUG, and just wants to change classes. foreach (PlayerClass currentClass in Players.Keys) { foreach (Player currentPlayer in Players[currentClass]) { if (currentPlayer.Id == player.Id) { Players[currentClass].Remove( currentPlayer ); break; } } } Players[desiredClass].Add( player ); if (null != OnPlayerAdded) OnPlayerAdded( this, new PlayerAddedOrRemovedEventArgs( player ) ); if (this.IsFull() && null != OnPugFull) { OnPugFull( this, null ); } return; } player.SendMessage( "This class is full. Try adding as a different class." ); }
void checkport(int port, Player p) { string response; new Thread(new ThreadStart(delegate { try { using (WebClient WEB = new WebClient()) { response = WEB.DownloadString("http://www.mcforge.net/ports.php?port=" + port); } if (response == "open") { if (!p.IsConsole) p.SendMessage(Color.Green + "Port Open!"); else Logger.Log("Port Open!"); return; } if (response == "closed") { if (!p.IsConsole) p.SendMessage(Color.Red + "Port Closed"); else Logger.Log("Port Closed"); return; } if (!p.IsConsole) p.SendMessage(Color.Yellow + "An Error has occured"); else Logger.Log("An Error has occured"); return; } catch { if (!p.IsConsole) p.SendMessage(Color.Yellow + "An Error has occured"); else Logger.Log("An Error has occured"); return; } })).Start(); }
void checkport(int port, Player p) { TcpListener listener = null; try { // Try to open the port. If it fails, the port is probably open already. try { listener = new TcpListener(IPAddress.Any, port); listener.Start(); } catch { // Port is probably open already by the server, so let's just continue :) listener = null; } p.SendMessage("Testing Port: " + port); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://mcfire.tk/port.php?port=" + port); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { string line; while ((line = reader.ReadLine()) != null) { if (line == "") { continue; } if (line == "open") { p.SendMessage(Color.Green + "Port Open!"); return; } p.SendMessage((Color.Red + "Port " + port + " seems to be closed. You may need to set up port forwarding.")); } } } } else { p.SendMessage(Color.Red + "Could Not connect to site, aborting operation"); } } catch (Exception ex) { p.SendMessage(Color.Red + "Testing Port Failed!"); p.SendMessage("Could not start listening on port " + port + ". Another program may be using the port."); Server.Log("-----------------port error----------------"); Server.Log(ex.Message + Environment.NewLine + ex.Source + Environment.NewLine + ex.StackTrace); Server.Log("-----------------port error----------------"); } finally { if (listener != null) { listener.Stop(); } } }
public override void Help(Player p) { p.SendMessage("/checkport or /cp"); p.SendMessage("OPTIONAL you can specify another port by doing /cp <port>"); }