public override void Use(Player p, string message) { if (message == "" || message.IndexOf(' ') != -1) { Help(p); return; } else { if (File.Exists("extra/commands/source/Cmd" + message + ".cs")) { p.SendMessage("File Cmd" + message + ".cs already exists. Choose another name."); return; } try { Scripting.CreateNew(message); } catch (Exception e) { Server.ErrorLog(e); Player.SendMessage(p, "An error occurred creating the class file."); return; } Player.SendMessage(p, "Successfully created a new command class."); } }
public override void Use(Player p, string message) { if (p.hasflag != null) { Player.SendMessage(p, "You can't use a gun while you have the flag!"); return;} Pos cpos; if (p.aiming) { if (message == "") { p.aiming = false; p.ClearBlockchange(); Player.SendMessage(p, "Disabled gun"); return; } } cpos.ending = 0; if (message.ToLower() == "destroy") cpos.ending = 1; else if (message.ToLower() == "explode") cpos.ending = 2; else if (message.ToLower() == "laser") cpos.ending = 3; else if (message.ToLower() == "teleport" || message.ToLower() == "tp") cpos.ending = -1; else if (message != "") { Help(p); return; } cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos; p.ClearBlockchange(); p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1); p.SendMessage("Gun mode engaged, fire at will"); if (p.aiming) { return; } p.aiming = true; Thread aimThread = new Thread(new ThreadStart(delegate { CatchPos pos; List<CatchPos> buffer = new List<CatchPos>(); while (p.aiming) { List<CatchPos> tempBuffer = new List<CatchPos>(); double a = Math.Sin(((double)(128 - p.rot[0]) / 256) * 2 * Math.PI); double b = Math.Cos(((double)(128 - p.rot[0]) / 256) * 2 * Math.PI); double c = Math.Cos(((double)(p.rot[1] + 64) / 256) * 2 * Math.PI); try { ushort x = (ushort)(p.pos[0] / 32); x = (ushort)Math.Round(x + (double)(a * 3)); ushort y = (ushort)(p.pos[1] / 32 + 1); y = (ushort)Math.Round(y + (double)(c * 3)); ushort z = (ushort)(p.pos[2] / 32); z = (ushort)Math.Round(z + (double)(b * 3)); if (x > p.level.width || y > p.level.depth || z > p.level.height) throw new Exception(); if (x < 0 || y < 0 || z < 0) throw new Exception(); for (ushort xx = x; xx <= x + 1; xx++) { for (ushort yy = (ushort)(y - 1); yy <= y; yy++) { for (ushort zz = z; 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); } } } } List<CatchPos> toRemove = new List<CatchPos>(); foreach (CatchPos cP in buffer) { if (!tempBuffer.Contains(cP)) { p.SendBlockchange(cP.x, cP.y, cP.z, Block.air); toRemove.Add(cP); } } foreach (CatchPos cP in toRemove) { buffer.Remove(cP); } foreach (CatchPos cP in tempBuffer) { if (!buffer.Contains(cP)) { buffer.Add(cP); p.SendBlockchange(cP.x, cP.y, cP.z, Block.glass); } } tempBuffer.Clear(); toRemove.Clear(); } catch { } Thread.Sleep(20); } foreach (CatchPos cP in buffer) { p.SendBlockchange(cP.x, cP.y, cP.z, Block.air); } })); aimThread.Start(); }
public override void Help(Player p) { p.SendMessage("/whoip <ip address> - Displays players associated with a given IP address."); }