diff --git a/libsecondlife-cs/examples/TestClient/Commands/JumpCommand.cs b/libsecondlife-cs/examples/TestClient/Commands/JumpCommand.cs index 1457c1ff..29bb7b27 100644 --- a/libsecondlife-cs/examples/TestClient/Commands/JumpCommand.cs +++ b/libsecondlife-cs/examples/TestClient/Commands/JumpCommand.cs @@ -16,7 +16,7 @@ namespace libsecondlife.TestClient public override string Execute(SecondLife Client, string[] args, LLUUID fromAgentID) { - if (args.Length < 1) + if (args.Length != 1) return "usage: jump 1000"; float height = 0; diff --git a/libsecondlife-cs/examples/TestClient/Program.cs b/libsecondlife-cs/examples/TestClient/Program.cs index 0ee676ef..27342c8a 100644 --- a/libsecondlife-cs/examples/TestClient/Program.cs +++ b/libsecondlife-cs/examples/TestClient/Program.cs @@ -1,34 +1,74 @@ using System; using System.Collections.Generic; -using System.Text; - +using System.IO; namespace libsecondlife.TestClient { public class Program { + private static void Usage() + { + Console.WriteLine("Usage: " + Environment.NewLine + + "TestClient.exe firstname lastname password [master name]" + Environment.NewLine + + "TestClient.exe --file filename [master name]"); + } + static void Main(string[] args) { - if (args.Length < 1 || args.Length > 5) + if (args.Length < 2 || args.Length > 5) { - Console.WriteLine("Usage: " + Environment.NewLine + - "TestClient.exe firstname lastname password [master name]" + Environment.NewLine + - "TestClient.exe filename [master name]"); + Usage(); + return; } TestClient tester; List accounts = new List(); LoginDetails account; - if (args.Length <= 2) + if (args[0] == "--file") { // Loading names from a file - // FIXME: + try + { + using (StreamReader reader = new StreamReader(args[1])) + { + string line; + int lineNumber = 0; - Console.WriteLine("FIXME!"); - return; + while ((line = reader.ReadLine()) != null) + { + lineNumber++; + string[] tokens = line.Trim().Split(new char[] { ' ', ',' }); + + if (tokens.Length == 3) + { + account = new LoginDetails(); + account.FirstName = tokens[0]; + account.LastName = tokens[1]; + account.Password = tokens[2]; + + if (args.Length == 4) + { + account.Master = args[2] + " " + args[3]; + } + + accounts.Add(account); + } + else + { + Console.WriteLine("Invalid data on line " + lineNumber + + ", must be in the format of: FirstName LastName Password"); + } + } + } + } + catch (Exception) + { + Console.WriteLine("Error reading from " + args[1]); + return; + } } - else + else if (args.Length == 3 || args.Length == 5) { // Taking a single login off the command-line account = new LoginDetails(); @@ -43,7 +83,13 @@ namespace libsecondlife.TestClient accounts.Add(account); } + else + { + Usage(); + return; + } + // Login the accounts and run the input loop tester = new TestClient(accounts); tester.Run(); } diff --git a/libsecondlife-cs/examples/TestClient/TestClient.cs b/libsecondlife-cs/examples/TestClient/TestClient.cs index bfc71165..2e5e630e 100644 --- a/libsecondlife-cs/examples/TestClient/TestClient.cs +++ b/libsecondlife-cs/examples/TestClient/TestClient.cs @@ -322,18 +322,27 @@ Begin: LLUUID regionID, LLVector3 position, byte dialog, bool groupIM, LLUUID imSessionID, DateTime timestamp, string message, byte offline, byte[] binaryBucket) { - if (GroupMembers != null && !GroupMembers.ContainsKey(fromAgentID) && fromAgentName.ToLower().TrimEnd() != Master.ToLower().TrimEnd()) + if (Master.Length > 0) { - // Not a member of my group and not master, ignore the IM - Console.WriteLine("" + fromAgentName + " (ignored): " + message); - - return; + if (fromAgentName.ToLower().Trim() != Master.ToLower().Trim()) + { + // Received an IM from someone that is not the bot's master, ignore + Console.WriteLine("" + fromAgentName + " (not master): " + message); + return; + } } else { - Console.WriteLine("" + fromAgentName + ": " + message); + if (GroupMembers != null && !GroupMembers.ContainsKey(fromAgentID)) + { + // Received an IM from someone outside the bot's group, ignore + Console.WriteLine("" + fromAgentName + " (not in group): " + message); + return; + } } + Console.WriteLine("" + fromAgentName + ": " + message); + if (Clients.ContainsKey(toAgentID)) { if (dialog == 22) @@ -348,6 +357,7 @@ Begin: } else { + // This shouldn't happen Console.WriteLine("A bot that we aren't tracking received an IM?"); } } diff --git a/libsecondlife-cs/examples/TestClient/TestClient.csproj b/libsecondlife-cs/examples/TestClient/TestClient.csproj index 24a188dc..53f3502c 100644 --- a/libsecondlife-cs/examples/TestClient/TestClient.csproj +++ b/libsecondlife-cs/examples/TestClient/TestClient.csproj @@ -14,7 +14,7 @@ true full false - ..\..\bin\ + ..\..\..\bin\ DEBUG;TRACE prompt 4 @@ -35,6 +35,7 @@ +