Thank you for the feedback. This isn't a very large contribution, but if it helps you learn how to make a simple quake-style shooter, then I've done my job.

Now your questions:
@darkinferno:
does your AI do anything? what do you have pertaining to AI code? path finding?
The AI is a simple state machine involving waiting, hunting, attacking, and dying states. Here's a simple AI map:
WAIT:
-if health is to low, go to DIE state.
-stand still, look for player.
-if player is detected, go to the HUNT state.
-else: repeat
HUNT:
-if health is to low, go to DIE state.
-look for player.
-if player is visible, remember his location and move toward him.
-if player isn't visible, move toward to his last seen location.
-if the player is within a certain range and he is visible, go to ATTACK.
-else: repeat.
ATTACK:
-fire a bullet
-go to HUNT
DIE:
-play death animation, remove senses, etc.
It's not complex by any means, but it works well enough.
why is it hard to cheat? server checks? such as what? speed checks? wall checks? what?
It's difficult to cheat using my system primarily because the ONLY thing the client does is send input values to the server. The server handles all movement, collision, attacking, monsters, etc.
Essentially if the client wants to move forward, the server will determine how fast it moves and where it ends up. I imagine there are still ways to cheat here, but it's much more reliable than using a client-based movement system.
@the_clown:
with the engine version 7.82 I get an error right at the beginning, when testing the rumble_main.c:
Dangerous instruction in event event_wait;
result = c_trace(my.x,you.x,ignore_me+ignore_passable+ignore_sprites);
I guess that is due to the engine version; will probably test your code with another engine version later.
You can fix this by placing a "wait(1);" instruction before the c_trace() instruction. I would've done this myself, but in my version of Gamestudio I don't get this error message, so I didn't think about it.
Once again, thanks for the feedback.