public static async Task OnAttackSwing(PacketHandlerContext c) { var request = new CMSG_ATTACKSWING(c.Packet); // TODO: Also check players var unit = c.World.Creatures.SingleOrDefault(creature => creature.ID == request.Guid); if (unit is null) { c.Client.Log($"Could not find unit: {request.Guid}"); return; } // TODO: Checks if can attack, range check etc. await c.Client.SendPacket(new SMSG_ATTACKSTART(c.Client.CharacterId, unit.ID)); // TODO: Do this somewhere else (Add AttackController to Player??) _ = Task.Run(async() => { c.Client.Log("Attacking...", LogLevel.Information); for (var i = 0; i < 500; i++) { await Task.Delay(500); await c.Client.SendPacket(new SMSG_ATTACKERSTATEUPDATE(c.Client.CharacterId, unit.ID)); } }); }
public static async Task OnAttackSwing(PacketHandlerContext c) { var request = new CMSG_ATTACKSWING(c.Packet); // TODO: Also check players var unit = c.World.Creatures.SingleOrDefault(creature => creature.ID == request.Guid); if (unit is null) { c.Client.Log($"Could not find unit: {request.Guid}"); return; } await c.Client.AttackController.StartAttacking(unit); }