示例#1
0
        public void OnItemInventoryItem(SM_ITEM_INVENTORY_ITEM p)
        {
            long session = p.SessionID;

            if (packetSessions.TryGetValue(session, out T client))
            {
                OnGotInventoryItem(client, p.Item, p.End);
                if (p.End)
                {
                    packetSessions.TryRemove(session, out client);
                }
            }
        }
示例#2
0
        public void OnItemInventoryGet(Packets.Client.CM_ITEM_INVENTORY_GET p)
        {
            long        session = p.SessionID;
            List <uint> ids     = ItemDB.Instance.GetItemIDs(p.CharID);

            foreach (uint i in ItemCache.Instance.GetItemIDsForChar(p.CharID))
            {
                if (!ids.Contains(i))
                {
                    ids.Add(i);
                }
            }
            if (ids.Count > 0)
            {
                for (int i = 0; i < ids.Count; i++)
                {
                    SM_ITEM_INVENTORY_ITEM p1 = new SM_ITEM_INVENTORY_ITEM()
                    {
                        SessionID = session,
                        End       = i == (ids.Count - 1),
                        Item      = ItemCache.Instance[ids[i]]
                    };
                    Network.SendPacket(p1);
                }
            }
            else
            {
                SM_ITEM_INVENTORY_ITEM p1 = new SM_ITEM_INVENTORY_ITEM()
                {
                    SessionID = session,
                    End       = true,
                    Item      = null
                };
                Network.SendPacket(p1);
            }
        }