2009-10-22 04:29:25 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
namespace OpenMetaverse.TestClient
|
|
|
|
|
|
{
|
|
|
|
|
|
public class BotsCommand : Command
|
|
|
|
|
|
{
|
|
|
|
|
|
private Dictionary<UUID, bool> m_AgentList = new Dictionary<UUID, bool>();
|
|
|
|
|
|
|
|
|
|
|
|
public BotsCommand(TestClient testClient)
|
|
|
|
|
|
{
|
|
|
|
|
|
Name = "bots";
|
|
|
|
|
|
Description = "detects avatars that appear to be bots.";
|
2009-10-27 07:01:48 +00:00
|
|
|
|
Category = CommandCategory.Other;
|
2009-10-22 04:29:25 +00:00
|
|
|
|
testClient.Avatars.ViewerEffect += new EventHandler<ViewerEffectEventArgs>(Avatars_ViewerEffect);
|
|
|
|
|
|
testClient.Avatars.ViewerEffectLookAt += new EventHandler<ViewerEffectLookAtEventArgs>(Avatars_ViewerEffectLookAt);
|
|
|
|
|
|
testClient.Avatars.ViewerEffectPointAt += new EventHandler<ViewerEffectPointAtEventArgs>(Avatars_ViewerEffectPointAt);
|
|
|
|
|
|
}
|
2009-10-27 07:01:48 +00:00
|
|
|
|
|
|
|
|
|
|
private void Avatars_ViewerEffectPointAt(object sender, ViewerEffectPointAtEventArgs e)
|
2009-10-22 04:29:25 +00:00
|
|
|
|
{
|
|
|
|
|
|
lock (m_AgentList)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_AgentList.ContainsKey(e.SourceID))
|
|
|
|
|
|
m_AgentList[e.SourceID] = true;
|
|
|
|
|
|
else
|
|
|
|
|
|
m_AgentList.Add(e.SourceID, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2009-10-27 07:01:48 +00:00
|
|
|
|
private void Avatars_ViewerEffectLookAt(object sender, ViewerEffectLookAtEventArgs e)
|
2009-10-22 04:29:25 +00:00
|
|
|
|
{
|
|
|
|
|
|
lock (m_AgentList)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_AgentList.ContainsKey(e.SourceID))
|
|
|
|
|
|
m_AgentList[e.SourceID] = true;
|
|
|
|
|
|
else
|
|
|
|
|
|
m_AgentList.Add(e.SourceID, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2009-10-27 07:01:48 +00:00
|
|
|
|
private void Avatars_ViewerEffect(object sender, ViewerEffectEventArgs e)
|
2009-10-22 04:29:25 +00:00
|
|
|
|
{
|
|
|
|
|
|
lock (m_AgentList)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_AgentList.ContainsKey(e.SourceID))
|
|
|
|
|
|
m_AgentList[e.SourceID] = true;
|
|
|
|
|
|
else
|
|
|
|
|
|
m_AgentList.Add(e.SourceID, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string Execute(string[] args, UUID fromAgentID)
|
|
|
|
|
|
{
|
|
|
|
|
|
StringBuilder result = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
lock (Client.Network.Simulators)
|
|
|
|
|
|
{
|
2021-07-25 11:10:52 -05:00
|
|
|
|
foreach (var sim in Client.Network.Simulators)
|
2009-10-22 04:29:25 +00:00
|
|
|
|
{
|
2021-07-25 11:10:52 -05:00
|
|
|
|
sim.ObjectsAvatars.ForEach(
|
2009-10-22 04:29:25 +00:00
|
|
|
|
delegate(Avatar av)
|
|
|
|
|
|
{
|
|
|
|
|
|
lock (m_AgentList)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!m_AgentList.ContainsKey(av.ID))
|
|
|
|
|
|
{
|
|
|
|
|
|
result.AppendLine();
|
|
|
|
|
|
result.AppendFormat("{0} (Group: {1}, Location: {2}, UUID: {3} LocalID: {4}) Is Probably a bot",
|
|
|
|
|
|
av.Name, av.GroupName, av.Position, av.ID, av.LocalID);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return result.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|