Garry's Mod Logo
Changes Header

Changes

What’s changed in Garry's Mod in each patch.

add_circle

Features

  • Added second argument to util.Base64Encode - skipNewLines, defaults to false
  • Added spawnmenu.SwitchCreationTab
  • Added VMatrix.Add, VMatrix.Sub and VMatrix.Mul (matrix*matrix only)
  • Added VMatrix.GetTransposed
  • Added Angle.Random
  • Added Vector.Random, Vector.Negate, Vector.GetNegated
  • HTTP() function now has a timeout field, which dictates the network activity timeout, and will fail with reason "timeout" if it is hit
  • Added render.GetViewSetup() - returns the CViewSetup stuff including both real FOVs and the de-corrected for aspect ratio FOV
  • Filesystem search now works with map's PAK lump (file.Find included)
  • Added CUserCmd.AddKey
  • Added table.Shuffle (Community Contribution)
  • Added a new library: math.ease (Community Contribution)
  • Added DComboBox:OnMenuOpened( menu ) (Community Contribution)
  • Added table.MemberValuesFromKey (Community Contribution)
  • Added ENTITY:AddOutputFromKeyValue and ENTITY:AddOutputFromAcceptInput (Community Contribution)
  • Added SlowWalkSpeed to player_manager (Community Contribution)
  • Added DForm.PropSelect, ControlPanel.ToolPresets, ControlPanel.ColorPicker and ControlPanel.KeyBinder (Community Contribution)
  • Added math.DistanceSqr (Community Contribution)
  • Added support for 3 new types in AccessorFunc() - Vector, Angle and Color (Community Contribution)
  • markup library improvements - Adds markup.Escape, markup.Color, MarkupObject:GetMaxWidth, new argument to MarkupObject:Draw (Community Contribution)
  • Added permissions.EnableVoiceChat( bool )
  • Added CLuaLocomotion.Get/SetClimbAllowed
  • Added CLuaLocomotion.Get/SetJumpGapsAllowed
  • Added CLuaLocomotion.Get/SetAvoidAllowed
  • Added new argument to net.WriteColor - alpha (Community Contribution)
  • Added new argument to net.ReadColor - alpha (Community Contribution)
arrow_circle_up

Improvements

  • Better implementation of Player.IsUserGroup (Community Contribution)
  • util.GetModelMeshes is now also available serverside
  • Entity:SetBodyGroups now accepts a-z as 10-35
  • Disallowed include()ing non .lua files
  • Made Entity.GetBloodColor shared
  • stopsound also shuts down all CSoundPatches (So their IsPlaying status resets to false)
  • Made hook.Add/Remove not silently fail on arg type mismatch (Community Contribution)
  • Micro optimization in draw.SimpleText (Community Contribution)
  • Minor optimizations to string.Comma (Community Contribution)
  • Added +voicerecord to blocked console command list - use permissions.EnableVoiceChat instead
  • GM:PlayerAmmoChanged now runs AFTER the ammo count has been changed
  • Made File:Read() size argument optional, defaulting to File:Size()
handyman

Fixed

  • file.Exists now works with addon title pathIDs like file.Find
  • Fixed spawnmenu.SwitchToolTab doing nothing
  • Fixed constraint.GetAllConstrainedEntities returning all entities constrained to world if the given entity is constrained to world
  • Fixed Entity.StopLoopingSound() not working as expected when multiple sounds are involved
  • Fixed table.RemoveByValue throwing an error when key is not a number (Community Contribution)
  • Fixed invalid argument being given to TextEntry.AllowInput with non ASCII characters (Windows and OSX)
  • Fixed potential Lua errors in scripted_ents library (Community Contribution)
  • Fixed a linux crash with file.AsyncRead
add_circle

Features

  • Added ability to clear Lua errors per category/group in the Problems menu
  • Added "menu_cleanupgmas", "mat_specular 0" and "Addon missing file, nothing to mount" issues to Problems panel
  • Added file size of the current file and total file count to non-Workshop server downloads
  • Added addon count and selected count to the addon menu (in the popup menu with filters/etc)
  • Added a visual bounding box of the current dupe to the duplicator tool
  • Rope related tools now can now color the ropes (will depend on whether the selected material supports this or not)
arrow_circle_up

Improvements

  • DNumSlider now colors the notches and the DTextEntry text to match the slider label
  • Improved slider notch rendering
  • Ensure all notches have at least 1 pixel between each other
  • Fixed the last notch not rendering for sliders with a range that isn't a whole number
  • Made the selected flag filters be per gamemode, not global per server browser tab
  • Made the addon selection checkboxes bigger and updated their style to match modern Chromium visuals
  • Also added a bit of space between the clickable addon name and the checkbox to prevent misclicks
  • Minor visual tweaks to the addons and server browser menus
  • Made the "Future version" tag in the server browser less visually prominent
  • Added default values to the Super DOF UI sliders (Middle mouse click resets to default)
  • Problems menu no longer complains about DirectX Level 90
  • Server browser no longer lists servers that are not empty first and then only empty servers (to bypass Steam limitations), now lists whatever Steam gives first
  • Undone server browser minimum ping penalty where servers < 60 ping would all be considered as having 40 ping for server ranking
  • Added description to local saves/dupes/demos telling the player where they can delete them
  • "Select All" button now selects all addons within current search/filter, not all subscriptions
  • Removed selection checkboxes for floating .gma addons
  • Made the background of a disabled addon darker so its more obvious when an addon is disabled
  • More responsive controls for drive_noclip for "Drive" property
  • Unmount addons mounted by server on map shutdown
  • Confirmation window for “Do you want to connect to this server” now also has a “remember my choice” option
  • Added map icons for new CS: GO maps
  • Increased forced defaults of "rate", "cl_cmd/updaterate" console variables to 100k and 66, from 30k and 30 respectively. This only affects clientside settings, which are overridden by server's settings (sv_maxrate, etc). This should result in better ping/performance when playing on busy servers
  • Updated language files
handyman

Fixed

  • Fixed env_sun glow overlay not working properly with the poster command
  • Fixed the first preset group not loading correctly on first map load
  • Loading a save from main menu now properly sets the player position
  • Fixed Lua errors in menu state when searching through addons with special symbols
  • Fixed Hoverball tool creating Lua errors when looking at an invalid entity with the tool selected
  • Fixed the option to re-render all spawnmenu icons not working properly
  • Adjusted the cl_weaponcolor safeguard against invisible colors to catch more cases
  • Fixed a regression with gamemode search bar changes from previous update where it expected the input to be lowercase at all times
  • Changed 'slam' ammo type's default maximum to 5 from 9999 (gmod_maxammo still overrides this if above 0)
  • Fixed certain language files not being loaded on Linux operating system
  • Fixed shooting weapons while in a vehicle not shooting directly at the player’s crosshair
  • Fixed default spawncions not being editable
  • cl_downloadfilter "mapsonly" also works with workshop addons now (checks for the “map” tag on addons)
  • Fixed Winch/Rope texture scaling wrapping around at length of 100
  • Fixed clientside player velocity for non local players being jittery and incorrect when standing on something moving
  • Fixed crash issues with npc_barnacle when its tongue entity gets deleted
  • Fixed crash issue when damaging Antlion Guard NPC
  • Fixed a potential crash issue with ragdoll physics
  • Fixed prop_vehicle_crane crashing the game when it is missing its magnet entity
  • Fixed Lua errors when trying to load a save with phys_magnets that were created by the map when saving
  • You can freeze Jeeps/Custom Vehicles with the Physics Gun once again
handyman

Fixed

  • TTT: Fixed "select language" strings in translations (Community Contribution)
  • TTT: Tuned shotgun headshot damage and gave shotgun very small accuracy boost to compensate for shotgun changes in base game (Community Contribution)
  • TTT: Show language names correctly in menu (Community Contribution)
  • TTT: Updated language files (Community Contribution)
  • TTT: Fix low-karma autokick evasion (Community Contribution)
arrow_circle_up

Improvements

  • Limited sv_loadingurl to http(s) only
  • Added nullptr safeguard to CFontTextureRegen (out of memory)
  • More potential crash prevention when loading textures and in Lua bindings
  • Safeguards for potential crashes in CShadowMgr relating to projected textures
  • Switched the "gain manager" for voice chat to the CS:GO one. (voice_avggain, voice_maxgain replaced by voice_gain_* cvars)
  • Increased internal buffers for map names to 128 characters, from 40, servers can now use maps with longer names
  • Slightly improved SSAO depth pass (NeedsDepthPass hook, render.GetResolvedFullFrameDepth), so it works correctly with props/NPCs and viewmodels (Bokeh DOF now works better)
  • Nicer error messages for FastDL download errors in console
  • Let mat_envmaptgasize override the default cubemap size if it is set to a value higher than the map's cubemap size
  • cfg/network.cfg is no longer considered userconfig, and is ran before autoexec.cfg
  • mat_dumpmaterials now has an optional argument to hide refcount 0 materials
  • Increased networked string limit (Doubled, to 4096)
handyman

Fixed

  • Deleting point_viewcontrol now also disables it instead of putting the player in an invalid state
  • Disable all active point_viewcontrol entities when loading a save to prevent softlocking the player
  • Added out of bounds checks for boneIDs in CIKContext::AddDependencies to avoid crashes
  • Added some nullptr safeguards to CMDLCache functions
  • Fixed potential crash with playing MP3 files
  • Made sure the "entityflame" entity also stops its own burning sound clientside in case it couldn't be stopped from the server due to PVS
  • Fixed crash issue when trying to pickup prop_vehicle_jeep with invalid physics
  • Fixed a potential crash when converting MATERIAL_VAR_TYPE_MATERIAL to a string
  • Fixed material shader parameters not loading correctly on Linux dedicated servers
  • Fixed for Linux file system find not properly handling partial wildcards (i.e. folder/*_suffix.txt where the filename folder/test_file_suffix.txt would not be found)
  • Fixed mat_showlightmappage using a DirectX8 material
  • func_breakable_surf plays its initial broken sound at the correct position even if it is moved by the physics gun
  • Fixed some console commands crashing when used without a player on the server
  • Fixed ent_remove being able to delete players
  • Added support for $boneflexdriver in models into the game
  • Fixed some cl_show_* cvar debug text overlapping itself or going offscreen
  • Potential fix for crashes due to removing fire particles when removing an entity on fire
  • Fixed crashing issues with trying to set/get flags on invalid physics objects
  • Do not disable collisions when parenting brushes to one another
  • Fixed parenting issues with func_movelinear, and a an issue with startSound possibly not restarting
  • Fixed the half life 2 shotgun hack affecting SWEPs
  • Fixed models not being flushed on level changes/disconnects when not hosting a local game (i.e. in multiplayer in general)
  • Fixed Super DoF creating errors when used outside of sandbox gamemode (Community Contribution)
add_circle

Features

  • Hammer: Added func_instance_io_proxy support to hammer/vbsp (in-game support is already present)
  • StudioMDL: Added -fastbuild option to studiomdl.exe that does not write/compute .sw.vtx and .dx80.vtx files
  • StudioMDL: Added more context to "Zero-size file or no sequences." studiomdl warning
  • StudioMDL: Added $boneflexdriver support to studiomdl
  • StudioMDL: Added support for "noanim_keepduration", "forceboneposrot", "scalebonelen", "bonedriver", "reverse", "appendanim" $sequence commands from CS:GO
  • StudioMDL: Added "framestart" and "nostallframes" $sequence commands from CSGO
  • StudioMDL: Added support of "autosteps" to "ikrule" in $sequence
  • StudioMDL: Added support for "percentstartloop" for $sequence
  • StudioMDL: Added "$dmxeyelid" and "$vcafile" commands
  • StudioMDL: Added "noautodmxrules" support to $model
  • StudioMDL: Added -vpfix command line switch that may fix high poly models with LODs and bodygroups getting some of their meshes on LOD 0 destroyed
arrow_circle_up

Improvements

  • StudioMDL: Use auto growing vectors for bunch of internals (vertices, normals, faces, texcoords, etc) instead of static arrays
  • StudioMDL: Changed mesh weights cut off from 0.05 to 0.0001 (matches CS:GO)
  • StudioMDL: Restored position epsilon for fuzzy vertex position comparisons to 0.05, from 0.01 as it caused issues with certain high quality models
  • Hammer: Increased MAX_MAP_OVERLAYS to 1024 (2x increase), increased MAX_MAP_BRUSHSIDES to a lot (~163k, ~3x increase), matching CS:GO limits
handyman

Fixed

  • Hammer: Fixed a crash when creating a new Manifest
  • Hammer: Fixed "Show Collision Models" setting not working in certain cases such as being in a Manifest
  • Hammer: Updated CMapOverlay to CS:GO's version - fixes most copying issues - different normals implementation
remove_circle

Removed

  • Hammer: Get rid of Hammer's "CFileChangeWatcher::AddDirectory" warning as it serves no purpose for the end user