This is why I think technical measures to prevent cheating are useless, because computers are designed to automatize things, so you can't prevent it from fullfiling its role
Prevention has to deal mainly with the initial design rules of a project ; developers cannot do much after a prototype has become serial/standard and the main holes/limits of the project has revealed themselves. Most of the cheats make use of the software holes and almost of the original design holes.
For example , if you try to play on q3dm17 in both mode VQ3 and CPM against a CPMA bot at level 100 ( which action is really really close to an aimbot - autoshot on opponent spawn , opponent position predict , impossible aim ) you will see how easy the bot hit you/predict your position in VQ3 while if you know enough of air control in CPM , you will see less bot hits over target while you are in air.
A technical measure against cheating like a detect system will not stop cheat development. But it should prevent the use of known cheats.
Another example is about cl_yawspeed/cl_pitchspeed value : both cvars were declared cheat protected and locked to their default value in QL with an update they've made in september.
With this "technical measure" they've stopped the use of RJ , CJ , strafe scripts. You could find a bunch of threads on QL forum about this : many players have stopped their easy attitude of owning mostly in CTF matches with map-tuned RJs.
And a final tought about cheat makers/users : I've read many times here but also elsewhere call them "hackers".
They should be defined CRACKERS because they are not interested to make a software/something else better , but to corrupt/revert/destroying its functionality.