//opening a pack,container,chest,.. also inventory packs at startup //or moving packs in inventory private void OnSetPackContents(Decal.Adapter.Message pMsg) { try { if (Paused || mCharconfig == null) return; if (Host.Actions.VendorId != 0) { return; } Decal.Adapter.MessageStruct pItems = null; Decal.Adapter.MessageStruct pItem = null; int ItemId = 0; int itemcount = 0; mCurrentContainer = Convert.ToInt32(pMsg["container"]); itemcount = Convert.ToInt32(pMsg["itemCount"]); WorldObject objContainer = Core.WorldFilter[mCurrentContainer]; if (objContainer != null && mPluginConfig.PackOrCorpseOrChestExclude != null) { foreach (string s in mPluginConfig.PackOrCorpseOrChestExclude) { if (objContainer.Name == s) { mCurrentContainer = 0; return; } } } mCurrentContainerContent = new Dictionary<int, int>(); string msg = string.Empty; bool skipContainer = false; if (objContainer != null) { msg = objContainer.Name; if (objContainer.Id == Core.CharacterFilter.Id || objContainer.Container == Core.CharacterFilter.Id) { msg += " skip player pack"; //moving/adding packs in inventory skipContainer = true; } else if (objContainer.Container != 0) { WorldObject checkcontainerincontainer = Core.WorldFilter[objContainer.Container]; if (checkcontainerincontainer != null) { if (checkcontainerincontainer.Container == Core.CharacterFilter.Id) { msg += " skip container in container storage"; skipContainer = true; } } } if (skipContainer) { Util.Log("OnSetPackContents " + mCurrentContainer.ToString() + " " + msg); mCurrentContainer = 0; return; } } Util.Log("OnSetPackContents " + mCurrentContainer.ToString() + " " + msg); //fill mCurrentContainerContent if (itemcount > 0) { pItems = pMsg.Struct("items"); for (int i = 0; i <= pItems.Count - 1; i++) { pItem = pItems.Struct(i); ItemId = Convert.ToInt32(pItem["item"]); if (!mCurrentContainerContent.ContainsKey(ItemId)) { mCurrentContainerContent.Add(ItemId, 0); WorldObject objItem = Core.WorldFilter[ItemId]; if (objItem != null && mCharconfig != null) { eScanresult result = CheckObjectForMatch(new IdentifiedObject(objItem), false); //check scan finished if (result != eScanresult.needsident) { mCurrentContainerContent[ItemId] = 1; } else { mCorpsScanning = true; } } } } } } catch (Exception ex) { Util.ErrorLogger(ex); } }