diff --git a/config/menus_multiplayer.cfg b/config/menus_multiplayer.cfg index 42a4a962..777f0186 100644 --- a/config/menus_multiplayer.cfg +++ b/config/menus_multiplayer.cfg @@ -21,7 +21,7 @@ menuitem "Change to spectate mode" "gospectate" [__ingamemenu_showmodel "In menuitem "Change player skin..." [showmenu (at [CLA RVSF] (curteam))] [__ingamemenu_showmodel "In-game" 1] menuitem "" -1 [__ingamemenu_showmodel "In-game" 0] menuitem "Set mode/map..." "showmenu Gamemode" -menuitem "Kick/ban player..." "showmenu kick/ban" +//menuitem "Kick/ban player..." "showmenu kick/ban" // only noobish vote abusers use this, if you really want it, just uncomment menuitem "Adjust teams..." [ showmenu "Team adjustment" ] menuitem "Download a demo..." [ listdemos; showmenu "Download demo" ] menuitem "Get additional server information" "showmenu [serverinfo]" diff --git a/config/menus_settings.cfg b/config/menus_settings.cfg index f6646560..6cd733d2 100644 --- a/config/menus_settings.cfg +++ b/config/menus_settings.cfg @@ -46,6 +46,7 @@ menuitemtextinput "Nickname: " "" "name $arg1" menuitemtextinput "Resolution (Width): " "$scr_w" "scr_w $arg1" menuitemtextinput "Resolution (Height): " "$scr_h" "scr_h $arg1" menuitemtextinput "Mouse sensitivity " "$sensitivity" "sensitivity $arg1" +menuitemtextinput "Smooth Mouse (0 to 3) " "$mfilter" "mfilter $arg1" menuitemslider "Graphics detail: " 1 6 "$gfxqualityalias" 1 [ Horrible Low Medium Good "High (Performs slow)" "INSANE! (Performs really slow)"] "new_gfx_quality $arg1" menuitemslider "Sound detail: " 1 3 "$soundqualityalias" 1 "Low Medium High" "new_sound_quality $arg1" menuitem "" -1 @@ -249,6 +250,7 @@ menuitemkeyinput "Fullscreen: " fullscreenscript menuitem "" -1 // Invert mouse is a slider instead of a checkbox so the 2 sensitivity textboxes don't look weird. menuitemslider "Invert mouse: " 0 1 "$invmouse" 1 "Disabled Enabled" "invmouse $arg1" menuitemtextinput "Mouse sensitivity: " "$sensitivity" "sensitivity $arg1" +menuitemtextinput "Smooth Mouse (0 to 3) " "$mfilter" "mfilter $arg1" menuitemtextinput "Sniper-scope sensitivity scale: " "$scopesensscale" "alias scopesensscale $arg1" menuitem "" -1 menuitem "Reset keybinds to default settings..." [ showmenu "Reset Binds" ] diff --git a/source/src/main.cpp b/source/src/main.cpp index dc77777d..3ac30296 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -646,6 +646,7 @@ void checkinput() { SDL_Event event; int lasttype = 0, lastbut = 0; + int tdx=0,tdy=0; while(events.length() || SDL_PollEvent(&event)) { if(events.length()) event = events.remove(0); @@ -684,7 +685,7 @@ void checkinput() int dx = event.motion.xrel, dy = event.motion.yrel; checkmousemotion(dx, dy); resetmousemotion(); - mousemove(dx, dy); + tdx+=dx;tdy+=dy; } break; @@ -697,6 +698,7 @@ void checkinput() break; } } + mousemove(tdx, tdy); } VARF(gamespeed, 10, 100, 1000, if(multiplayer()) gamespeed = 100); diff --git a/source/src/physics.cpp b/source/src/physics.cpp index 74736111..dc3e5017 100644 --- a/source/src/physics.cpp +++ b/source/src/physics.cpp @@ -754,12 +754,20 @@ FVARP(sensitivityscale, 1e-3f, 1, 1000); VARP(invmouse, 0, 0, 1); FVARP(mouseaccel, 0, 0, 1000); +FVARP(mfilter, 0.0f, 0.0f, 3.0f); +float fdx = 0, fdy = 0; + void mousemove(int dx, int dy) { if(intermission) return; if(player1->isspectating() && player1->spectatemode==SM_FOLLOW1ST) return; float cursens = sensitivity; + if (mfilter>0.0) { + float mousefilter=mfilter/curtime*14; + fdx = dx = ( fdx * mousefilter + dx )/( mousefilter + 1 ); + fdy = dy = ( fdy * mousefilter + dy )/( mousefilter + 1 ); + } if(mouseaccel && curtime && (dx || dy)) cursens += mouseaccel * sqrtf(dx*dx + dy*dy)/curtime; cursens /= 33.0f*sensitivityscale; camera1->yaw += dx*cursens; diff --git a/source/src/server.cpp b/source/src/server.cpp index 36cfe9e5..58eb0180 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -1293,7 +1293,7 @@ void checkitemspawns(int diff) sents[i].spawntime = 0; sents[i].spawned = true; sendf(-1, 1, "ri2", SV_ITEMSPAWN, i); - if (m_lss && sents[i].type == I_GRENADE && rnd(101) > 70 ) { + if (m_lss && sents[i].type == I_GRENADE && rnd(101) > 75 ) { sents[i].twice = true; sendf(-1, 1, "ri2", SV_ITEMSPAWN, i); }