Esempio n. 1
0
        void EquipItem_Handler(Task t)
        {
            EquipItemRequest eir      = (EquipItemRequest)t.Args;
            Item             item     = t.Client.Character.FindItem(eir.ItemID);
            Item             equipped = t.Client.Character.EquippedItem(eir.Slot);
            bool             visible  = false;

            if (equipped != null)
            {
                t.Client.Character.UnEquipItem(eir.Slot);
                AddDBQuery(equipped.UpdateDBString(), null, false);
                visible = true;
            }

            if (item != null)
            {
                t.Client.Character.EquipItem(item, eir.Slot);
                AddDBQuery(item.UpdateDBString(), null, false);
                visible = true;
                t.Client.NotifyEquipItem();
            }

            t.Client.SendPacket(new EquipItemResponse(t.Client.Character, item, equipped, visible));

            if (visible)
            {
                // Show all nearby clients the change
                SeeEquipmentChangePacket pkt = new SeeEquipmentChangePacket(t.Client.Character.ID, item);
                PlayMap      map             = _server.GetPlayMap(t.Client.Character.MapID);
                Connection[] players         = map.Players;
                foreach (Connection c in players)
                {
                    if (c != t.Client)
                    {
                        c.SendPacket(pkt);
                    }
                }
            }
        }
Esempio n. 2
0
        void EquipItem_Handler(Task t)
        {
            EquipItemRequest eir = (EquipItemRequest)t.Args;
            Item item = t.Client.Character.FindItem(eir.ItemID);
            Item equipped = t.Client.Character.EquippedItem(eir.Slot);
            bool visible = false;
            if (equipped != null)
            {
                t.Client.Character.UnEquipItem(eir.Slot);
                AddDBQuery(equipped.UpdateDBString(), null, false);
                visible = true;
            }

            if (item != null)
            {
                t.Client.Character.EquipItem(item, eir.Slot);
                AddDBQuery(item.UpdateDBString(), null, false);
                visible = true;
                t.Client.NotifyEquipItem();
            }

            t.Client.SendPacket(new EquipItemResponse(t.Client.Character, item, equipped, visible));

            if (visible)
            {
                // Show all nearby clients the change
                SeeEquipmentChangePacket pkt = new SeeEquipmentChangePacket(t.Client.Character.ID, item);
                PlayMap map = _server.GetPlayMap(t.Client.Character.MapID);
                Connection[] players = map.Players;
                foreach (Connection c in players)
                {
                    if (c != t.Client)
                    {
                        c.SendPacket(pkt);
                    }
                }
            }
        }