public string RezAll(BotInventoryEval man, InventoryBase b, SimPosition dest)
        {
            string ret = "";
            var manager = man.Manager;
            if (b is InventoryItem)
            {
                InventoryItem item = b as InventoryItem;

                bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy;

                ret += item.Name + nl;
                if (dest == null)
                {
                    Simulator sim = Client.Network.CurrentSim;
                    Client.Inventory.RequestRestoreRezFromInventory(sim, item, item.UUID);
                }
                else
                {
                    Simulator sim = SimRegion.GetRegion(dest.GlobalPosition).TheSimulator;
                    Client.Inventory.RequestRezFromInventory(sim, dest.SimRotation, dest.SimPosition, item, UUID.Zero);
                }
            }
            else if (b is InventoryFolder)
            {
                InventoryFolder folder = b as InventoryFolder;
                List<InventoryBase> folderContents = man.FolderContents(folder.UUID);
                if (folderContents != null)
                    foreach (InventoryBase list in folderContents)
                    {
                        ret += RezAll(man, list, dest);
                    }
            }
            return ret;
        }
Exemple #2
0
        public string GiveAll(BotInventoryEval man, InventoryBase b, SimObject dest, bool moveInsteadOfCopy)
        {
            string ret     = "";
            var    manager = man.Manager;

            if (b is InventoryItem)
            {
                InventoryItem item = b as InventoryItem;

                bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy;

                ret += item.Name + nl;
                if (dest.IsAvatar)
                {
                    manager.GiveItem(item.UUID, item.Name, item.AssetType, dest.ID, true);
                }
                else
                {
                    throw new NotImplementedException("giving items to objects");
                }
            }
            else if (b is InventoryFolder)
            {
                InventoryFolder item = b as InventoryFolder;
                if (dest.IsAvatar)
                {
                    manager.GiveFolder(item.UUID, item.Name, AssetType.Folder, dest.ID, true);
                    return(item.Name + nl);
                }
                InventoryFolder      folder         = b as InventoryFolder;
                List <InventoryBase> folderContents = man.FolderContents(folder.UUID);
                if (folderContents != null)
                {
                    foreach (InventoryBase list in folderContents)
                    {
                        ret += GiveAll(man, list, dest, moveInsteadOfCopy);
                    }
                }
            }
            return(ret);
        }
        public string GiveAll(BotInventoryEval man, InventoryBase b, SimObject dest, bool moveInsteadOfCopy)
        {
            string ret = "";
            var manager = man.Manager;
            if (b is InventoryItem)
            {
                InventoryItem item = b as InventoryItem;

                bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy;

                ret += item.Name + nl;
                if (dest.IsAvatar)
                {
                    manager.GiveItem(item.UUID, item.Name, item.AssetType, dest.ID, true);
                }
                else
                {
                    throw new NotImplementedException("giving items to objects");
                }
            }
            else if (b is InventoryFolder)
            {
                InventoryFolder item = b as InventoryFolder;
                if (dest.IsAvatar)
                {
                    manager.GiveFolder(item.UUID, item.Name, AssetType.Folder, dest.ID, true);
                    return item.Name + nl;
                }
                InventoryFolder folder = b as InventoryFolder;
                List<InventoryBase> folderContents = man.FolderContents(folder.UUID);
                if (folderContents != null)
                    foreach (InventoryBase list in folderContents)
                    {
                        ret += GiveAll(man, list, dest, moveInsteadOfCopy);
                    }
            }
            return ret;
        }
Exemple #4
0
        public string RezAll(BotInventoryEval man, InventoryBase b, SimPosition dest)
        {
            string ret     = "";
            var    manager = man.Manager;

            if (b is InventoryItem)
            {
                InventoryItem item = b as InventoryItem;

                bool canCopy = (item.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.Copy;

                ret += item.Name + nl;
                if (dest == null)
                {
                    Simulator sim = Client.Network.CurrentSim;
                    Client.Inventory.RequestRestoreRezFromInventory(sim, item, item.UUID);
                }
                else
                {
                    Simulator sim = SimRegion.GetRegion(dest.GlobalPosition).TheSimulator;
                    Client.Inventory.RequestRezFromInventory(sim, dest.SimRotation, dest.SimPosition, item, UUID.Zero);
                }
            }
            else if (b is InventoryFolder)
            {
                InventoryFolder      folder         = b as InventoryFolder;
                List <InventoryBase> folderContents = man.FolderContents(folder.UUID);
                if (folderContents != null)
                {
                    foreach (InventoryBase list in folderContents)
                    {
                        ret += RezAll(man, list, dest);
                    }
                }
            }
            return(ret);
        }
 public override CmdResult ExecuteRequest(CmdRequest args)
 {
     //AutoResetEvent are = new AutoResetEvent(false);
     // AppearanceManager.AppearanceUpdatedCallback callback = (Primitive.TextureEntry te) => are.Set();
     try
     {
         //Client.Appearance.OnAppearanceUpdated += callback;
         // base.acceptInput(verb, args);
         string target = String.Empty;
         if (args.Length == 0) return ShowUsage();
         bool bake = true;
         string wear = args.str.Trim();
         if (args.IsTrue("nobake"))
         {
             bake = false;
             wear = wear.Substring(6).Trim();
         }
         if (args.IsTrue("test"))
         {
             bake = true;
             wear = wear.Substring(4).Trim();
             TheBotClient.wearFolder(wear);
             // if (!are.WaitOne(WEARABLE_TIMEOUT * 2))
             //   return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)");
             // else
             return Success("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)"));
         }
         try
         {
             WriteLine("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)"));
             if (false)
             {
                 List<InventoryItem> outfit = Client.GetFolderItems(wear);
                 if (outfit != null)
                 {
                     Client.Appearance.ReplaceOutfit(outfit);
                     return Success(wear);
                 }
                 WriteLine("no folder found attaching item: " + wear);
             }
             string lwear = wear.ToLower();
             BotInventoryEval searcher = new BotInventoryEval(Client);
             InventoryFolder rootFolder = Client.Inventory.Store.RootFolder;
             if (rootFolder.UUID == UUID.Zero) return Success("Cant get roiot folder yet");
             bool found = searcher.findInFolders(rootFolder, (ib) =>
                                                                 {
                                                                     if (ib.Name.ToLower() == lwear)
                                                                     {
                                                                         if (ib is InventoryItem)
                                                                         {
                                                                             Client.Appearance.Attach(
                                                                                 ib as InventoryItem,
                                                                                 AttachmentPoint.Default);
                                                                             return true;
                                                                         }
                                                                         else
                                                                         {
                                                                             var fldr = ib as InventoryFolder;
                                                                             List<InventoryBase>
                                                                                 clientInventoryFolderContents =
                                                                                     Client.Inventory.
                                                                                         FolderContents(ib.UUID,
                                                                                                        Client.
                                                                                                            Self.
                                                                                                            AgentID,
                                                                                                        false,
                                                                                                        true,
                                                                                                        InventorySortOrder
                                                                                                            .
                                                                                                            ByName,
                                                                                                        40000);
                                                                             if (clientInventoryFolderContents ==
                                                                                 null)
                                                                                 return false;
                                                                             List<InventoryItem> items =
                                                                                 new List<InventoryItem>();
                                                                             foreach (
                                                                                 InventoryBase content in
                                                                                     clientInventoryFolderContents
                                                                                 )
                                                                             {
                                                                                 var it =
                                                                                     content as InventoryItem;
                                                                                 if (it != null) items.Add(it);
                                                                             }
                                                                             if (items.Count > 0)
                                                                             {
                                                                                 Client.Appearance.ReplaceOutfit(
                                                                                     items);
                                                                                 return true;
                                                                             }
                                                                         }
                                                                     }
                                                                     return false;
                                                                 });
             if (found) return Success("attaching " + wear);
             return Failure("did not find " + wear);
             //  if (!are.WaitOne(WEARABLE_TIMEOUT * 2))
             //     return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)");
             // else
         }
         catch (Exception ex)
         {
             return Failure("(Invalid outfit (" + ex.Message + ")" + args.str + ".");
         }
     }
     finally
     {
         // Client.Appearance.OnAppearanceUpdated -= callback;
     }
 }
 public override CmdResult ExecuteRequest(CmdRequest args)
 {
     //AutoResetEvent are = new AutoResetEvent(false);
     // AppearanceManager.AppearanceUpdatedCallback callback = (Primitive.TextureEntry te) => are.Set();
     try
     {
         //Client.Appearance.OnAppearanceUpdated += callback;
         // base.acceptInput(verb, args);
         string target = String.Empty;
         if (args.Length == 0)
         {
             return(ShowUsage());
         }
         bool   bake = true;
         string wear = args.str.Trim();
         if (args.IsTrue("nobake"))
         {
             bake = false;
             wear = wear.Substring(6).Trim();
         }
         if (args.IsTrue("test"))
         {
             bake = true;
             wear = wear.Substring(4).Trim();
             TheBotClient.wearFolder(wear);
             // if (!are.WaitOne(WEARABLE_TIMEOUT * 2))
             //   return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)");
             // else
             return(Success("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)")));
         }
         try
         {
             WriteLine("wearing folder: " + wear + " " + (bake ? " (baked)" : " (not baked)"));
             if (false)
             {
                 List <InventoryItem> outfit = Client.GetFolderItems(wear);
                 if (outfit != null)
                 {
                     Client.Appearance.ReplaceOutfit(outfit);
                     return(Success(wear));
                 }
                 WriteLine("no folder found attaching item: " + wear);
             }
             string           lwear      = wear.ToLower();
             BotInventoryEval searcher   = new BotInventoryEval(Client);
             InventoryFolder  rootFolder = Client.Inventory.Store.RootFolder;
             if (rootFolder.UUID == UUID.Zero)
             {
                 return(Success("Cant get roiot folder yet"));
             }
             bool found = searcher.findInFolders(rootFolder, (ib) =>
             {
                 if (ib.Name.ToLower() == lwear)
                 {
                     if (ib is InventoryItem)
                     {
                         Client.Appearance.Attach(
                             ib as InventoryItem,
                             AttachmentPoint.Default);
                         return(true);
                     }
                     else
                     {
                         var fldr = ib as InventoryFolder;
                         List <InventoryBase>
                         clientInventoryFolderContents =
                             Client.Inventory.
                             FolderContents(ib.UUID,
                                            Client.
                                            Self.
                                            AgentID,
                                            false,
                                            true,
                                            InventorySortOrder
                                            .
                                            ByName,
                                            40000);
                         if (clientInventoryFolderContents ==
                             null)
                         {
                             return(false);
                         }
                         List <InventoryItem> items =
                             new List <InventoryItem>();
                         foreach (
                             InventoryBase content in
                             clientInventoryFolderContents
                             )
                         {
                             var it =
                                 content as InventoryItem;
                             if (it != null)
                             {
                                 items.Add(it);
                             }
                         }
                         if (items.Count > 0)
                         {
                             Client.Appearance.ReplaceOutfit(
                                 items);
                             return(true);
                         }
                     }
                 }
                 return(false);
             });
             if (found)
             {
                 return(Success("attaching " + wear));
             }
             return(Failure("did not find " + wear));
             //  if (!are.WaitOne(WEARABLE_TIMEOUT * 2))
             //     return Success("Timeout wearing " + wear + " " + (bake ? " (baked)" : " (not baked)");
             // else
         }
         catch (Exception ex)
         {
             return(Failure("(Invalid outfit (" + ex.Message + ")" + args.str + "."));
         }
     }
     finally
     {
         // Client.Appearance.OnAppearanceUpdated -= callback;
     }
 }