public static void CollectionBox_Callback(Mobile from, Map map, Point3D start, Point3D end, object state) { // Create rec and retrieve items within from bounding box callback // result Rectangle2D rect = new Rectangle2D(start.X, start.Y, end.X - start.X + 1, end.Y - start.Y + 1); IPooledEnumerable eable = map.GetObjectsInBounds(rect); Archive archive = state as Archive; if (archive == null || archive.Deleted) { return; } // temp list for the items & Mobules we want to archive ArrayList temp = new ArrayList(); // Loop through and add objects returned foreach (object obj in eable) { Item item = obj as Item; Mobile mobile = obj as Mobile; if (item == null && mobile == null) { continue; } // no deleted items if (item != null && (item.Deleted)) { continue; } // no deleted items or players if (mobile != null && (mobile.Deleted || mobile is Server.Mobiles.PlayerMobile)) { continue; } // add the item to the temp storage temp.Add(obj); } eable.Free(); // items this pass int mCount = 0, iCount = 0; foreach (object obj in temp) { Item item = obj as Item; Mobile mobile = obj as Mobile; if (item != null) { // move the item to the internal map at the original location item.MoveItemToIntStorage(true); // add the item to the archive archive.AddItem(item); iCount++; } else if (mobile != null) { // move the mobile to the internal map at the original location mobile.MoveMobileToIntStorage(true); // add the item to the archive archive.AddMobile(mobile); mCount++; } } from.SendMessage("{0} items and {1} mobiles added to this archive.", iCount, mCount); from.SendMessage("Archive now contains {0} objects total.", archive.ObjectCount); }