..... actually no.
For incoming attacks (to check vs speedhacking/botting etc)
You can either A: read the incoming timestamp (not the greatest option, proxy can bypass) or you can do a datetime for lastattack and check that vs current datetime to see if it's been long enough.
As for what you actually seem to be asking, your server should have some sort of timer or SOMETHING controling what your current target is.
Eg:
if(GC.MyChar.AttackInfo != null)
//code
This will have an attack speed value that's used for how often the attack is triggered (client only needs to send the attack packet once and the server will keep returning the attack packets as long as the client does not move/attack something else/mob dies)
You then need to remove this timer/attack info when the monster dies/moves/client does an action, etc.
You can use a simple int for the timer itself. Also take into account what the client state is. If you are using cyclone you need to / 3 it. SOA could be minor boost as well as other statuses as well.