Garry's Mod Logo
schedule 15 December 2021
Update

December 2021 Update

Voice permission, addon list for dupes and many more fixes.

This update brings a new tab to the Problems section of the main menu: Permissions. This new section allows players to see permissions they granted to servers they play on, both temporary which reset after game shuts down and permanent, which save across game restarts. The permissions tab displays detailed description of what each permission allows the server to do, and allows players to revoke granted permissions. The purpose of the permission system to give control over certain scripting features to the player. Currently only 2 permissions are available - Voice chat and server connection. In the future we may put more features that can be abused behind permissions. Duplicator tool can now store a list of Steam Workshop items that were used to create a duplication. Players can see the list in the Duplicator tool's context menu and click on each button to open the Steam Workshop item and subscribe to it, allowing an easy way to make sure all necessary Steam Workshop content for a duplication is present. This only applies to newly created duplications. Map saves now also have a similar feature, but limited only to the map the save was made on. It should now be much easier to install necessary map for a map save. As usual this update adds a host of smaller features for modders, as well as fixes a bunch of crashes, security issues and other bugs. You can see the complete change list below.
add_circle

Features

  • Duplicator tool will now try to figure out what addons are used by the dupe, save that in the dupe file, and display required addons in the duplicator's context menu. This only applies to new dupes
  • Making a map save now stores the Workshop ID of the map file in the save file, and adds the option to subscribe to the map if the map is missing
  • Show severity of problems in the problems menu
  • Failed addon downloads will now show up in the Problems menu with the reason why it failed
  • Added ability to view and revoke granted permissions in the Problems menu
  • Players now have to grant explicit permission for servers to be able to force voice chat on players
arrow_circle_up

Improvements

  • CS:GO lobby is put into correct map category (Community Contribution)
  • Improved addon detection for Lua errors
  • You can now save dupes from the duplicator’s context panel
  • Experiment: Count connecting players as bots until they fully join
  • "Addon is missing its file" problem now shows which addon exactly is broken
  • Updated texture for the painting model
  • Minor optimization to map lighting loading
  • Do not allow npc_barnacle to pick up gibs it itself spits out
  • Force enable episodic behavior when npc_barnacle eats zombies so they are not just spat out as ragdolls
handyman

Fixed

  • Numerous security fixes
  • Improved spawnmenu resilience against addons that do not set Sandbox tool name
arrow_circle_up

Improvements

  • TTT: Updated language files (Community Contribution)
  • TTT: Added a new tip about player voice volume slider (Community Contribution)
handyman

Fixed

  • TTT: Fixed a chat spam exploit with corpses (Community Contribution)
  • TTT: Fixed TTTCanPickupAmmo only allowing 'true' return values (Community Contribution)
add_circle

Features

  • Added an option to show unuseful materials in Hammer's texture browser, which includes: player logo decals, vertexlitgeneric materials, hud/vgui/particle folders. These materials are now hidden by default.
  • Added trigger_catapult entity from Team Fortress 2
arrow_circle_up

Improvements

  • ErrorNoHalt/Error will now display a stack trace in Problems panel
  • include errors now have a stack trace and appear in Problems menu
  • Disallow "Shadow" shader to be used as rope material to prevent crashes/graphical glitches
  • Bump MAX_LUA_FILES to 32k for single player only
  • Add probable cause to the "Failed to lock vertex buffer" message so users can more easily self diagnose
  • Bump MAXSTUDIOANIMS to 3k, MAXSTUDIOSEQUENCES to 2k (from 2k, and 1.5k respectively)
  • Added model name & position to VRAD's "unexpected strips found" error to help debug which static props cause the issue
  • Fixed material name not appearing in "Warning in .VMT file .. " and "Error in .VMT file: error parsing vector element..." warnings
  • Improved loading process to do with Lua files so they are not sometimes redownloaded every time, also makes accessing files from Lua cache potentially faster
  • Bumped MAX(_TOOL)_THREADS to 64 (4x previous limit)
  • Replace some possibly incorrect usage of FLT_MIN with -FLT_MAX, affects IKRules and displacements
  • Updated Steamworks SDK to v1.53a
  • m_flCycle is now networked in range of -1 to 1, from 0 to 1, fixing airboat spamming errors when going backwards in multiplayer
handyman

Fixed

  • Fixed C_FireSmoke particle crash for good
  • Fixed potential security issue with gmad.exe and specially crafted .gma files when extracting
  • Potential fix for a crash with C_OP_RenderRope particle render operation
  • Fixed a potential bug in materialsystem to do with Power of 2 rejection on texture load
  • Fixed a bug in the materialsystem where NoMip textures were trying to read past EOF looking for mipmaps, resulting in "Error unserializing VTF file... is the file empty?" errors
  • Display warnings and try to prevent a crash when an NPC's memory is about to overflow
  • Fixed a crash due to out of bounds sequences with IK Rules and AccumulatePose
  • Fixed some addons that extract/load correctly on client not loading/extracting correctly on server. Both cases now simply display a warning before trying to extract
  • Fixed crashes when the File object in steamworks.DownloadUGC's callback is closed prematurely
  • Fixed a crash in CSoundPatch.__tostring when used on invalid sounds
  • Fixed func_movelinear spamming sounds when used with momentary_rot_button
  • Fixed remaining potential crashes with npc_barnacle when its tongue entity is removed
remove_circle

Removed

  • Removed 'heartbeat' console command
  • Removed env_hudhint entity
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