diff --git a/Programs/examples/TestClient/Commands/GoHome.cs b/Programs/examples/TestClient/Commands/GoHome.cs index 53b54014..174065d0 100644 --- a/Programs/examples/TestClient/Commands/GoHome.cs +++ b/Programs/examples/TestClient/Commands/GoHome.cs @@ -1,27 +1,24 @@ -using System; -using System.Collections.Generic; -using System.Text; -using OpenMetaverse; -using OpenMetaverse.Packets; - -namespace OpenMetaverse.TestClient -{ - public class GoHomeCommand : Command - { - public GoHomeCommand(TestClient testClient) - { - Name = "gohome"; +using System; +using OpenMetaverse; + +namespace OpenMetaverse.TestClient +{ + public class GoHomeCommand : Command + { + public GoHomeCommand(TestClient testClient) + { + Name = "gohome"; Description = "Teleports home"; - Category = CommandCategory.Movement; - } - - public override string Execute(string[] args, UUID fromAgentID) - { - if ( Client.Self.GoHome() ) { - return "Teleport Home Succesful"; - } else { - return "Teleport Home Failed"; - } - } - } -} + Category = CommandCategory.Movement; + } + + public override string Execute(string[] args, UUID fromAgentID) + { + if ( Client.Self.GoHome() ) { + return "Teleport Home Succesful"; + } else { + return "Teleport Home Failed"; + } + } + } +} diff --git a/Programs/examples/TestClient/Commands/ScriptCommand.cs b/Programs/examples/TestClient/Commands/ScriptCommand.cs new file mode 100644 index 00000000..84a54465 --- /dev/null +++ b/Programs/examples/TestClient/Commands/ScriptCommand.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using OpenMetaverse; + +namespace OpenMetaverse.TestClient +{ + public class ScriptCommand : Command + { + public ScriptCommand(TestClient testClient) + { + Name = "script"; + Description = "Reads TestClient commands from a file. One command per line, arguments separated by spaces. Usage: script [filename]"; + Category = CommandCategory.TestClient; + } + + public override string Execute(string[] args, UUID fromAgentID) + { + if (args.Length != 1) + return "Usage: script [filename]"; + + // Load the file + string[] lines = null; + try { File.ReadAllLines(args[0]); } + catch (Exception e) { return e.Message; } + + // Execute all of the commands + for (int i = 0; i < lines.Length; i++) + { + string line = lines[i].Trim(); + + if (line.Length > 0) + Client.ClientManager.DoCommandAll(line, UUID.Zero); + } + + return "Finished executing " + lines.Length + " commands"; + } + } +} diff --git a/Programs/examples/TestClient/Commands/SleepCommand.cs b/Programs/examples/TestClient/Commands/SleepCommand.cs new file mode 100644 index 00000000..eea20cad --- /dev/null +++ b/Programs/examples/TestClient/Commands/SleepCommand.cs @@ -0,0 +1,44 @@ +using System; +using OpenMetaverse; +using OpenMetaverse.Packets; + +namespace OpenMetaverse.TestClient +{ + public class SleepCommand : Command + { + uint sleepSerialNum = 1; + + public SleepCommand(TestClient testClient) + { + Name = "sleep"; + Description = "Uses AgentPause/AgentResume and sleeps for a given number of seconds. Usage: sleep [seconds]"; + Category = CommandCategory.TestClient; + } + + public override string Execute(string[] args, UUID fromAgentID) + { + int seconds; + if (args.Length != 1 || !Int32.TryParse(args[0], out seconds)) + return "Usage: sleep [seconds]"; + + AgentPausePacket pause = new AgentPausePacket(); + pause.AgentData.AgentID = Client.Self.AgentID; + pause.AgentData.SessionID = Client.Self.SessionID; + pause.AgentData.SerialNum = sleepSerialNum++; + + Client.Network.SendPacket(pause); + + // Sleep + System.Threading.Thread.Sleep(seconds * 1000); + + AgentResumePacket resume = new AgentResumePacket(); + resume.AgentData.AgentID = Client.Self.AgentID; + resume.AgentData.SessionID = Client.Self.SessionID; + resume.AgentData.SerialNum = pause.AgentData.SerialNum; + + Client.Network.SendPacket(resume); + + return "Paused, slept for " + seconds + " second(s), and resumed"; + } + } +}