(before reading:: this is just my idea, i'm not a dev or coder, just someone with an idea.
Maybe this is exactly what happens, i don't know)
as explained in http://forum.multitheftauto.com/viewtopic.php?t=3157
your opponent: P2
P1 shoots: hit
but due to lag P2 sees the bullets 200ms (example) later,
and its a total miss in his client
the game isn't synched well.
so to evade this problem:
server keeps log : when and to where there was being shot.
you shoot, P1's client calculates (or server calculates) bullets path and keeps it the serverlog .
P2 then calculates the latency and checks back the log for the lag time
(if its 200ms lag, it searches the log what happens 200ms ago)
and then compares where player was (200 ms ago).
If the bullet path and player position come together, its a hit.
There is no instant reaction in P2's client. But what happens will be accurate and synched.
the server only keeps log of past 1/2/3 secs
If you don't understand what i say, tell me, and i will explain it.
I know my english isn't perfect