i took a look at it and it's a great start for a beginer
as for collision, I'd really really really really really really really really really reccomend you build of of solid collision code. I usually reccomend the .x level collision demo in the codebase, and I'll do it again now: you should use the .x level collision demo in the codebase. It went through 4 or 5 developers being tweaked and added upon, and now it's almost flawless. Just make sure you put the collision radius as atleast 25 or so, and you may need a larger one depending on what you use for your speed variable. It's got gravity bult in too, so not only will you stay on the ground but will fall if you walk off something. Seeing as you're using cshop, this is about the only way to go and its the best anyway (who uses matrixes anymore?).
I tweaked gravity and collision radius in the .x demo and added jumping and crouching. I think I have the source code on my site but i'll have to check. if not, i'll upload it (i just almost finished remaking the site anyway, i've got a long session with ftp surfer ahead).
as for your gun, it's pointing towards the middle (i think it does automatically with lock object on) but it looks a little distant, you may want the z position a little smaller, the x too (more towards the middle of the screen, but not too close as it will clip off polies and youll see in it).
reguarding your crosshair... nobody uses models for them as it's just a waste. Sprites can work, but most people use a plain with a crosshair textured onto it, and then locked onto the middle of the screen (the perfect use for lock object on).
if you have multiple weapons, my way is to check if the mouse z position (the scroll wheel) is in a higher or lower position. if it's higher, the currwep# variable is increased, lower its decreased. if its lower than all the wep object numbers, you have it equal the highest weapon number and vice versa. and make sure you put hide object currwep# before you increase or decrease the variable and show object currwep# after, so it hides the last one and shows the new one.
load objects beforehand and hide them till you need them. Never ever ever ever load objects in mid loop unless you get super awesome at programming and want a streaming environment. Loading can ruin gameplay even (in last build of Monster hunt two (the one i made a crappy demo of) the rocket launchers explosion is loaded when the missile hits and the frames per second go down to a third of what they were for several seconds. I could probably pass that off as more bullet time, but I wont cas loading objects is bad! Loading objects during a game is like fixing your engine while you drive on the highway)
hope this helped. the source code is at
http://www.verydevastating.com/jumpcrouch.zip
good luck with your game
if you need more help directed at me,
email me so you dont get flamed
cya
---Jeff