/// <summary> /// High level connnected/disconnected events so we can keep track of our threads by proxy /// </summary> /// <param name="callbot"></param> /// <param name="eventt"></param> private void handlebotEvent(Bot callbot, EventType eventt) { switch (eventt) { case EventType.CONNECTED: { m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected"); break; } case EventType.DISCONNECTED: { m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected"); break; } } }
/// <summary> /// This creates a bot but does not start it. /// </summary> /// <param name="bm"></param> /// <param name="behaviours">Behaviours for this bot to perform.</param> /// <param name="firstName">First name</param> /// <param name="lastName">Last name</param> /// <param name="password">Password</param> /// <param name="loginUri">Login URI</param> /// <param name="startLocation">Location to start the bot. Can be "last", "home" or a specific sim name.</param> /// <param name="wearSetting"></param> public void CreateBot( BotManager bm, List<IBehaviour> behaviours, string firstName, string lastName, string password, string loginUri, string startLocation, string wearSetting) { MainConsole.Instance.OutputFormat( "[BOT MANAGER]: Creating bot {0} {1}, behaviours are {2}", firstName, lastName, string.Join(",", behaviours.ConvertAll<string>(b => b.Name).ToArray())); Bot pb = new Bot(bm, behaviours, firstName, lastName, password, startLocation, loginUri); pb.wear = wearSetting; pb.Client.Settings.SEND_AGENT_UPDATES = InitBotSendAgentUpdates; pb.RequestObjectTextures = InitBotRequestObjectTextures; pb.OnConnected += handlebotEvent; pb.OnDisconnected += handlebotEvent; m_bots.Add(pb); }
public virtual void Initialize(Bot bot) { Bot = bot; }
/// <summary> /// High level connnected/disconnected events so we can keep track of our threads by proxy /// </summary> /// <param name="callbot"></param> /// <param name="eventt"></param> private void handlebotEvent(Bot callbot, EventType eventt) { switch (eventt) { case EventType.CONNECTED: m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected"); break; case EventType.DISCONNECTED: m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected"); lock (m_lBot) { if (m_lBot.TrueForAll(b => b.ConnectionState == ConnectionState.Disconnected)) Environment.Exit(0); break; } } }
// /// <summary> // /// Add additional bots (and threads) to our bot pool // /// </summary> // /// <param name="botcount">How Many of them to add</param> // public void addbots(int botcount) // { // int len = m_td.Length; // Thread[] m_td2 = new Thread[len + botcount]; // for (int i = 0; i < len; i++) // { // m_td2[i] = m_td[i]; // } // m_td = m_td2; // int newlen = len + botcount; // for (int i = len; i < newlen; i++) // { // startupBot(Config); // } // } /// <summary> /// This starts up the bot and stores the thread for the bot in the thread array /// </summary> /// <param name="bm"></param> /// <param name="behaviours">Behaviours for this bot to perform.</param> /// <param name="firstName">First name</param> /// <param name="lastName">Last name</param> /// <param name="password">Password</param> /// <param name="loginUri">Login URI</param> public void StartBot( BotManager bm, List<IBehaviour> behaviours, string firstName, string lastName, string password, string loginUri) { MainConsole.Instance.OutputFormat( "[BOT MANAGER]: Starting bot {0} {1}, behaviours are {2}", firstName, lastName, string.Join(",", behaviours.ConvertAll<string>(b => b.Name).ToArray())); Bot pb = new Bot(bm, behaviours, firstName, lastName, password, loginUri); pb.OnConnected += handlebotEvent; pb.OnDisconnected += handlebotEvent; lock (m_lBot) m_lBot.Add(pb); Thread pbThread = new Thread(pb.startup); pbThread.Name = pb.Name; pbThread.IsBackground = true; pbThread.Start(); // Stagger logins Thread.Sleep(LoginDelay); }
// /// <summary> // /// Add additional bots (and threads) to our bot pool // /// </summary> // /// <param name="botcount">How Many of them to add</param> // public void addbots(int botcount) // { // int len = m_td.Length; // Thread[] m_td2 = new Thread[len + botcount]; // for (int i = 0; i < len; i++) // { // m_td2[i] = m_td[i]; // } // m_td = m_td2; // int newlen = len + botcount; // for (int i = len; i < newlen; i++) // { // startupBot(Config); // } // } /// <summary> /// This starts up the bot and stores the thread for the bot in the thread array /// </summary> /// <param name="bm"></param> /// <param name="behaviours">Behaviours for this bot to perform.</param> /// <param name="firstName">First name</param> /// <param name="lastName">Last name</param> /// <param name="password">Password</param> /// <param name="loginUri">Login URI</param> public void StartBot( BotManager bm, List<IBehaviour> behaviours, string firstName, string lastName, string password, string loginUri) { Bot pb = new Bot(bm, behaviours, firstName, lastName, password, loginUri); pb.OnConnected += handlebotEvent; pb.OnDisconnected += handlebotEvent; lock (m_lBot) m_lBot.Add(pb); Thread pbThread = new Thread(pb.startup); pbThread.Name = pb.Name; pbThread.IsBackground = true; pbThread.Start(); }