public static bool OpenYS_Command_Particles_StarBurst_Method(Client ThisClient, CommandReader Command) { if (Command._CmdArguments.Count() < 4) { ThisClient.SendMessage("&eNot Enough Arguments Received. Need PositionX, PositionY, PositionZ, Size, all in meters!"); return(false); } bool Failed = false; float X; float Y; float Z; float S; Failed |= !Single.TryParse(Command._CmdArguments[0], out X); Failed |= !Single.TryParse(Command._CmdArguments[1], out Y); Failed |= !Single.TryParse(Command._CmdArguments[2], out Z); Failed |= !Single.TryParse(Command._CmdArguments[3], out S); if (Failed) { ThisClient.SendMessage("&eFormat invalied - use numbers only!"); return(false); } if (S <= 0) { //don't want a star burst! ThisClient.SendMessage("&eA StarBurst of size 0?..."); return(false); } Math3D.Vector3[] Vectors = Math3D.GeneratePlatonicSolidVertecies(2); foreach (Math3D.Vector3 Vector in Vectors) { Packets.Packet_20_OrdinanceLaunch Firework = new Packets.Packet_20_OrdinanceLaunch(); Firework.BurnoutDistance = S; Firework.HdgX = (float)Vector.XAngle(); Firework.HdgY = (float)Vector.YAngle(); Firework.HdgZ = 0; Firework.PosX = X; Firework.PosY = Y; Firework.PosZ = Z; Firework.SenderID = 0; Firework.SenderType = 1; Firework.InitVelocity = S * 1.4f; Firework.MaximumDamage = 0; Firework.MaximumVelocity = S; Firework.OrdinanceType = Packets.Packet_20_OrdinanceLaunch.OrdinanceTypes.FLR; Clients.LoggedIn.SendPacket(Firework); } return(true); }
public static bool OpenYS_Command_Particles_Firework_Method(Client ThisClient, CommandReader Command) { Threads.Add(() => { if (Command._CmdArguments.Count() < 4) { ThisClient.SendMessage("&eNot Enough Arguments Received. Need GroundX, GroundZ, Height, Size, all in meters!"); return; } bool Failed = false; float X; float Z; float H; float S; Failed |= !Single.TryParse(Command._CmdArguments[0], out X); Failed |= !Single.TryParse(Command._CmdArguments[1], out Z); Failed |= !Single.TryParse(Command._CmdArguments[2], out H); Failed |= !Single.TryParse(Command._CmdArguments[3], out S); if (Failed) { ThisClient.SendMessage("&eFormat invalied - use numbers only!"); return; } if (H == 0) { ThisClient.SendMessage("&eThat firework would explode on the ground!"); return; } Packets.Packet_20_OrdinanceLaunch Flare = new Packets.Packet_20_OrdinanceLaunch(); Flare.BurnoutDistance = H; Flare.HdgX = 0; Flare.HdgY = 90.ToYSRadians(); Flare.HdgZ = 0; Flare.PosX = X; Flare.PosY = 0; Flare.PosZ = Z; Flare.SenderID = 0; Flare.SenderType = 1; Flare.InitVelocity = H; Flare.MaximumDamage = 0; Flare.MaximumVelocity = H * 2; Flare.OrdinanceType = Packets.Packet_20_OrdinanceLaunch.OrdinanceTypes.FLR; Clients.LoggedIn.SendPacket(Flare); Thread.Sleep(2000); if (S <= 0) { //don't want a star burst! return; } Math3D.Vector3[] Vectors = Math3D.GeneratePlatonicSolidVertecies(2); foreach (Math3D.Vector3 Vector in Vectors) { Packets.Packet_20_OrdinanceLaunch Firework = new Packets.Packet_20_OrdinanceLaunch(); Firework.BurnoutDistance = S / 3; Firework.HdgX = (float)Vector.XAngle(); Firework.HdgY = (float)Vector.YAngle(); Firework.HdgZ = 0; Firework.PosX = X; Firework.PosY = H; Firework.PosZ = Z; Firework.SenderID = 0; Firework.SenderType = 1; Firework.InitVelocity = S / 1.4f; Firework.MaximumDamage = 0; Firework.MaximumVelocity = S / 2; Firework.OrdinanceType = Packets.Packet_20_OrdinanceLaunch.OrdinanceTypes.FLR; Clients.LoggedIn.SendPacket(Firework); } }, "Flare Launch"); return(true); }