Exemplo n.º 1
0
        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));
                }
            });
        }
Exemplo n.º 2
0
    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);
    }