void UnEquipItem_Handler(Task t) { byte equipSlot = 0xFF; EquipItemRequest eir = (EquipItemRequest)t.Args; Item equipped = t.Client.Character.EquippedItem(eir.ItemID); if (equipped != null) { equipSlot = equipped.Slot; t.Client.Character.UnEquipItem(equipped.Slot, eir.Slot); AddDBQuery(equipped.UpdateDBString(), null, false); } // Send response to the client t.Client.SendPacket(new UnEquipItemResponse(t.Client.Character, eir.ItemID, eir.Slot, equipSlot != 0xFF)); if (equipSlot != 0xFF) { // Tell other players about it SeeUnequipPacket pkt = new SeeUnequipPacket(t.Client.Character.ID, equipSlot); PlayMap map = _server.GetPlayMap(t.Client.Character.MapID); Connection[] players = map.Players; foreach (Connection c in players) { if (c != t.Client) { c.SendPacket(pkt); } } } }
public static EquipItemRequest Read(PacketHeader header, BinaryReader br) { EquipItemRequest eir = new EquipItemRequest(); eir.ItemID = br.ReadUInt32(); eir.Slot = br.ReadByte(); return(eir); }
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); } } } }
private void Client_OnUnEquipItem(object sender, EquipItemRequest e) { TaskProcessor.AddTask(new Task(Task.TaskType.UnEquipItem, (Connection)sender, e)); }
public static EquipItemRequest Read(PacketHeader header, BinaryReader br) { EquipItemRequest eir = new EquipItemRequest(); eir.ItemID = br.ReadUInt32(); eir.Slot = br.ReadByte(); return eir; }
void UnEquipItem_Handler(PacketHeader header, BinaryReader br) { OnUnEquipItem(this, EquipItemRequest.Read(header, br)); }