clean up and moving functions out of basic into events
This commit is contained in:
parent
36bd3f69d1
commit
a92a62a92d
2 changed files with 144 additions and 77 deletions
|
|
@ -51,8 +51,10 @@ namespace BetterSecondBotShared.bottypes
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// search for file called "commands.cmd"
|
// search for file called "commands.cmd"
|
||||||
JsonCommandsfile LoadedCommands = new JsonCommandsfile();
|
JsonCommandsfile LoadedCommands = new JsonCommandsfile
|
||||||
LoadedCommands.CustomCommands = new string[] { "sayexample!!!say|||Hello{-}delay|||2500{-}say|||Bye" };
|
{
|
||||||
|
CustomCommands = new string[] { "sayexample!!!say|||Hello{-}delay|||2500{-}say|||Bye" }
|
||||||
|
};
|
||||||
string CommandsFile = "custom_commands.json";
|
string CommandsFile = "custom_commands.json";
|
||||||
SimpleIO io = new SimpleIO();
|
SimpleIO io = new SimpleIO();
|
||||||
if (SimpleIO.FileType(CommandsFile, "json") == true)
|
if (SimpleIO.FileType(CommandsFile, "json") == true)
|
||||||
|
|
@ -280,34 +282,17 @@ namespace BetterSecondBotShared.bottypes
|
||||||
|
|
||||||
protected virtual void AfterBotLoginHandler()
|
protected virtual void AfterBotLoginHandler()
|
||||||
{
|
{
|
||||||
|
Debug("AfterBotLoginHandler proc not overridden");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected virtual void GroupInvite(InstantMessageEventArgs e)
|
protected virtual void GroupInvite(InstantMessageEventArgs e)
|
||||||
{
|
{
|
||||||
string[] stage1 = e.IM.FromAgentName.ToLowerInvariant().Split('.');
|
Debug("GroupInvite proc not overridden");
|
||||||
string name = "" + stage1[0].FirstCharToUpper() + "";
|
|
||||||
if (stage1.Length == 1)
|
|
||||||
{
|
|
||||||
name = " Resident";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
name = "" + name + " " + stage1[1].FirstCharToUpper() + "";
|
|
||||||
}
|
|
||||||
if(Is_avatar_master(name) == true)
|
|
||||||
{
|
|
||||||
GroupInvitationEventArgs G = new GroupInvitationEventArgs(e.Simulator, e.IM.FromAgentID, e.IM.FromAgentName, e.IM.Message);
|
|
||||||
Client.Self.GroupInviteRespond(G.AgentID, e.IM.IMSessionID, true);
|
|
||||||
Client.Groups.RequestCurrentGroups();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
protected virtual void FriendshipOffer(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
protected virtual void FriendshipOffer(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
||||||
{
|
{
|
||||||
if (Is_avatar_master(FromAgentName) == true)
|
Debug("FriendshipOffer proc not overridden");
|
||||||
{
|
|
||||||
Client.Friends.AcceptFriendship(FromAgentID, IMSessionID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void RequestLure(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
protected virtual void RequestLure(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
||||||
|
|
@ -329,22 +314,7 @@ namespace BetterSecondBotShared.bottypes
|
||||||
|
|
||||||
protected virtual void RequestTeleport(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
protected virtual void RequestTeleport(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
||||||
{
|
{
|
||||||
bool allow = false;
|
Debug("RequestTeleport proc not overridden");
|
||||||
if (Is_avatar_master(FromAgentName) == true)
|
|
||||||
{
|
|
||||||
allow = true;
|
|
||||||
}
|
|
||||||
else if(accept_next_teleport_from.Contains(FromAgentID) == true)
|
|
||||||
{
|
|
||||||
allow = true;
|
|
||||||
accept_next_teleport_from.Remove(FromAgentID);
|
|
||||||
}
|
|
||||||
if(allow == true)
|
|
||||||
{
|
|
||||||
ResetAnimations();
|
|
||||||
SetTeleported();
|
|
||||||
Client.Self.TeleportLureRespond(FromAgentID, IMSessionID, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ChatInputHandler(object sender, ChatEventArgs e)
|
protected virtual void ChatInputHandler(object sender, ChatEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,6 @@ namespace BSB.bottypes
|
||||||
}
|
}
|
||||||
public class EventsBot : VoidEventBot
|
public class EventsBot : VoidEventBot
|
||||||
{
|
{
|
||||||
protected List<string> accept_animation_request_from_users = new List<string>();
|
|
||||||
protected bool login_auto_logout;
|
protected bool login_auto_logout;
|
||||||
protected long delay_group_fetch;
|
protected long delay_group_fetch;
|
||||||
protected Dictionary<UUID, KeyValuePair<long, List<UUID>>> group_members_storage = new Dictionary<UUID, KeyValuePair<long, List<UUID>>>();
|
protected Dictionary<UUID, KeyValuePair<long, List<UUID>>> group_members_storage = new Dictionary<UUID, KeyValuePair<long, List<UUID>>>();
|
||||||
|
|
@ -101,7 +100,7 @@ namespace BSB.bottypes
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void cleanup_group_member_storage()
|
protected void Cleanup_group_member_storage()
|
||||||
{
|
{
|
||||||
lock (group_members_storage)
|
lock (group_members_storage)
|
||||||
{
|
{
|
||||||
|
|
@ -121,18 +120,6 @@ namespace BSB.bottypes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleAutoAcceptAnimations(string userName)
|
|
||||||
{
|
|
||||||
if(accept_animation_request_from_users.Contains(userName) == true)
|
|
||||||
{
|
|
||||||
accept_animation_request_from_users.Remove(userName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
accept_animation_request_from_users.Add(userName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void BotStartHandler()
|
protected override void BotStartHandler()
|
||||||
{
|
{
|
||||||
Client.Network.LoginProgress += LoginHandler;
|
Client.Network.LoginProgress += LoginHandler;
|
||||||
|
|
@ -150,8 +137,8 @@ namespace BSB.bottypes
|
||||||
if (dif > 30)
|
if (dif > 30)
|
||||||
{
|
{
|
||||||
last_cleanup = helpers.UnixTimeNow();
|
last_cleanup = helpers.UnixTimeNow();
|
||||||
cleanup_await_events();
|
Cleanup_await_events();
|
||||||
cleanup_group_member_storage();
|
Cleanup_group_member_storage();
|
||||||
}
|
}
|
||||||
if (delay_group_fetch > 0)
|
if (delay_group_fetch > 0)
|
||||||
{
|
{
|
||||||
|
|
@ -236,36 +223,146 @@ namespace BSB.bottypes
|
||||||
|
|
||||||
protected override void PermissionsHandler(object sender, ScriptQuestionEventArgs e)
|
protected override void PermissionsHandler(object sender, ScriptQuestionEventArgs e)
|
||||||
{
|
{
|
||||||
if(e.ObjectOwnerName == Client.Self.Name)
|
if (e.Questions == ScriptPermission.TriggerAnimation)
|
||||||
{
|
{
|
||||||
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, e.Questions);
|
TriggerAnimation(e);
|
||||||
}
|
|
||||||
else if(accept_animation_request_from_users.Contains(e.ObjectOwnerName) == true)
|
|
||||||
{
|
|
||||||
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, ScriptPermission.TriggerAnimation);
|
|
||||||
}
|
|
||||||
else if((e.ObjectOwnerName == myconfig.Security_MasterUsername) && (myconfig.Security_MasterUsername != ""))
|
|
||||||
{
|
|
||||||
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, e.Questions);
|
|
||||||
}
|
|
||||||
else if(Client.Self.SittingOn > 0)
|
|
||||||
{
|
|
||||||
if(Client.Network.CurrentSim.ObjectsPrimitives.ContainsKey(Client.Self.SittingOn))
|
|
||||||
{
|
|
||||||
Primitive obj = GetClient.Network.CurrentSim.ObjectsPrimitives[Client.Self.SittingOn];
|
|
||||||
if(obj.ID == e.ItemID)
|
|
||||||
{
|
|
||||||
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, ScriptPermission.TriggerAnimation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, ScriptPermission.None);
|
if (e.ObjectOwnerName == Client.Self.Name)
|
||||||
|
{
|
||||||
|
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, e.Questions);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, ScriptPermission.None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void cleanup_await_events()
|
public bool IsSittingOnUUID(UUID id)
|
||||||
|
{
|
||||||
|
if (Client.Self.SittingOn > 0)
|
||||||
|
{
|
||||||
|
if (Client.Network.CurrentSim.ObjectsPrimitives.ContainsKey(Client.Self.SittingOn))
|
||||||
|
{
|
||||||
|
Primitive obj = GetClient.Network.CurrentSim.ObjectsPrimitives[Client.Self.SittingOn];
|
||||||
|
if (obj.ID == id)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void TriggerAnimation(ScriptQuestionEventArgs e)
|
||||||
|
{
|
||||||
|
bool accept_invite;
|
||||||
|
if (Is_avatar_master(e.ObjectOwnerName) == true)
|
||||||
|
{
|
||||||
|
accept_invite = true;
|
||||||
|
}
|
||||||
|
else if (e.ObjectOwnerName == Client.Self.Name)
|
||||||
|
{
|
||||||
|
accept_invite = true;
|
||||||
|
}
|
||||||
|
else if(IsSittingOnUUID(e.ItemID) == true)
|
||||||
|
{
|
||||||
|
accept_invite = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
accept_invite = Accept_action_from("animation", e.ItemID);
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
Remove_action_from("animation", e.ItemID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
Client.Self.ScriptQuestionReply(Client.Network.CurrentSim, e.ItemID, e.TaskID, ScriptPermission.TriggerAnimation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void FriendshipOffer(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
||||||
|
{
|
||||||
|
bool accept_invite;
|
||||||
|
if (Is_avatar_master(FromAgentName) == true)
|
||||||
|
{
|
||||||
|
accept_invite = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
accept_invite = Accept_action_from("friend", FromAgentID);
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
Remove_action_from("friend", FromAgentID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
Client.Friends.AcceptFriendship(FromAgentID, IMSessionID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void RequestTeleport(UUID IMSessionID, string FromAgentName, UUID FromAgentID)
|
||||||
|
{
|
||||||
|
bool accept_invite;
|
||||||
|
if (Is_avatar_master(FromAgentName) == true)
|
||||||
|
{
|
||||||
|
accept_invite = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
accept_invite = Accept_action_from("teleport", FromAgentID);
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
Remove_action_from("teleport", FromAgentID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
ResetAnimations();
|
||||||
|
SetTeleported();
|
||||||
|
Client.Self.TeleportLureRespond(FromAgentID, IMSessionID, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void GroupInvite(InstantMessageEventArgs e)
|
||||||
|
{
|
||||||
|
string[] stage1 = e.IM.FromAgentName.ToLowerInvariant().Split('.');
|
||||||
|
string name = "" + stage1[0].FirstCharToUpper() + "";
|
||||||
|
if (stage1.Length == 1)
|
||||||
|
{
|
||||||
|
name = " Resident";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
name = "" + name + " " + stage1[1].FirstCharToUpper() + "";
|
||||||
|
}
|
||||||
|
bool accept_invite;
|
||||||
|
if (Is_avatar_master(name) == true)
|
||||||
|
{
|
||||||
|
accept_invite = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
accept_invite = Accept_action_from("group", e.IM.FromAgentID);
|
||||||
|
if(accept_invite == true)
|
||||||
|
{
|
||||||
|
Remove_action_from("group", e.IM.FromAgentID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (accept_invite == true)
|
||||||
|
{
|
||||||
|
GroupInvitationEventArgs G = new GroupInvitationEventArgs(e.Simulator, e.IM.FromAgentID, e.IM.FromAgentName, e.IM.Message);
|
||||||
|
Client.Self.GroupInviteRespond(G.AgentID, e.IM.IMSessionID, true);
|
||||||
|
Client.Groups.RequestCurrentGroups();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Cleanup_await_events()
|
||||||
{
|
{
|
||||||
long dif;
|
long dif;
|
||||||
List<string> purge_event_ids = new List<string>();
|
List<string> purge_event_ids = new List<string>();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue