Figured I'd post my zoom binds in here. I think most people think this is stupid but I like it.
At one point I realized that I could set my crosshair (cl_mouse_max_distance) to be at the same length as my hook. After fiddling with the setting a bit to match hook length (using +showhookcoll for reference), I realized that cl_mouse_max_distance stays the same no matter what zoom level you're at. So this crosshair matching hook length thing only works on 1 zoom level. These files make it so that crosshair matches hook length at any zoom level (well, 17 levels). With this setup you need default zoom to be set to 10 (cl_default zoom 10 or just do it in the GUI settings) which I think is the stock default. Changing cl_mouse_max_distance all the time with these files will mess with your 45 degree aim bind if you have one, so these files take care of that too. It also shows hook collision line since firing angle doesn't match gun position with the aim bind, makes it easier to see where i'm firing.
Obviously change your inp_mousesens to match your preference in each of these files.
here's a link to a zip of all these cfg files
Basically I do 'bind 1 exec binds\zoom\zoom_d.cfg" in console, and use 1 as my 'default zoom' bind. Sets mouse 4 and 5 to zoom in/out and lctrl for 45 degree aim. There is one issue, and as far as I know it's impossible to fix. When you leave a map at any zoom level besides default, and join a new one, it reverts you to your default zoom setting, but obviously it keeps the same cl_mouse_max_distance setting that you had before, so zoom/crosshair will be 'out of sync'. You can just get in the habit of pressing 1 whenever this happens. AFAIK there's no way to run a command when you join a map automatically.
I realize this is pretty ridiculous, but hey idk a better way
zoom
cl_mouse_max_distance 380
bind mouse4 "zoom-; exec binds\zoom\zoom_m0.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 380; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
unbind mouse5
cl_mouse_max_distance 330
bind mouse4 "zoom-; exec binds\zoom\zoom_m1.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_d.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 330; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 286
bind mouse4 "zoom-; exec binds\zoom\zoom_m2.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_d.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 286; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 248
bind mouse4 "zoom-; exec binds\zoom\zoom_m3.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m1.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 248; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 215
bind mouse4 "zoom-; exec binds\zoom\zoom_m4.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m2.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 215; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 185
bind mouse4 "zoom-; exec binds\zoom\zoom_m5.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m3.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 185; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 162
bind mouse4 "zoom-; exec binds\zoom\zoom_m6.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m4.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 162; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 140
bind mouse4 "zoom-; exec binds\zoom\zoom_m7.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m5.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 140; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 120
bind mouse4 "zoom-; exec binds\zoom\zoom_m8.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m6.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 120; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 105
bind mouse4 "zoom-; exec binds\zoom\zoom_m9.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m7.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 105; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 90
bind mouse4 "zoom-; exec binds\zoom\zoom_m10.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m8.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 90; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 80
bind mouse4 "zoom-; exec binds\zoom\zoom_m11.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m9.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 80; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 70
bind mouse4 "zoom-; exec binds\zoom\zoom_m12.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m10.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 70; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 60
bind mouse4 "zoom-; exec binds\zoom\zoom_m13.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m11.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 60; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 51
bind mouse4 "zoom-; exec binds\zoom\zoom_m14.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m12.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 51; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 45
bind mouse4 "zoom-; exec binds\zoom\zoom_m15.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m13.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 45; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 39
bind mouse4 "zoom-; exec binds\zoom\zoom_m16.cfg"
bind mouse5 "zoom+; exec binds\zoom\zoom_m14.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 39; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"
cl_mouse_max_distance 34
unbind mouse4
bind mouse5 "zoom+; exec binds\zoom\zoom_m15.cfg"
bind lctrl "+toggle cl_mouse_max_distance 2 34; +toggle inp_mousesens 1 200; +toggle cl_show_hook_coll_own 2 1"