Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Keys in mount.cfg are now marked as mounted ( for IsMounted() ), if they are in the list of mountable games
  • Restored Gib Model functionality of func_breakable from HL1
  • mountdepots.txt will now be automatically created if it doesn't exist so dedicated server owners can edit it
arrow_circle_up

Improvements

  • Nav file errors now properly displays the actual error by name, not error ID
  • Updated surfaceproperites.txt to remove some entries to fit the 128 entry limit
  • Bumped maxiumum key length of key values in bsp to 64 (from 32)
handyman

Fixed

  • Fixed nav file error 4 (out of date) being displayed when the nav file is in fact up to date
add_circle

Features

  • Added CTakeDamageInfo.__tostring
  • Added CNavArea.GetPlace()
  • Added CNavArea.SetPlace()
  • Added PhysObj.GetPositionMatrix()
  • Added Entity.GetWorldTransformMatrix()
  • Added DMG_SNIPER and DMG_MISSILEDEFENSE
  • Added util.GetSurfaceData()
  • Added Half-Life: Source CLASS_ enums
  • Added input.GetKeyCode(), works opposite of input.GetKeyName
  • Added ProjectedTexture:SetQuadraticAttenuation()
  • Added ProjectedTexture:SetLinearAttenuation()
  • Added ProjectedTexture:SetConstantAttenuation()
  • Added ProjectedTexture:GetQuadraticAttenuation()
  • Added ProjectedTexture:GetLinearAttenuation()
  • Added ProjectedTexture:GetConstantAttenuation()
  • Added player.GetByAccountID( id ) ( Community Contribution )
  • Added render.WorldMaterialOverride
  • Added return value to DColumnSheet.AddSheet (Community Contribution)
  • Added player_connect_client gameevent
arrow_circle_up

Improvements

  • Added voice_overdrive, volume and _restart on client to the blocked console command list
  • prop_vehicle and prop_vehicle_driveable are now considered Vehicles by Lua
  • Entity.GetSaveTable now works properly with most array fields, they will show up as 1-based table in Lua
  • Entity.SetSaveValue can now handle array fields, just like GetSaveTable()
  • Entity.GetInternalVariable now supports all field types as GetSaveTable/SetSaveValue does
  • CLuaEmitter.Add will now also initallize startSize
  • util.GetSurfacePropName now returns "" for out of bounds input
  • IGModAudioChannel:IsValid now properly reflects the validity of the sound channel instead of testing existence of the Lua objecct
  • Most IGModAudioChannel functions now also check for channel validity
  • DoModal no longer works without cursor visible for all panels, not just "Frame"
  • Vector.WithinAABox now orders vectors on its own
  • Entity.GetAttachments, Entity.GetBodyGroups and Entity.GetMaterials will now return an empty table where they used to return nil
  • util.(De)Compress and util.Base64Encode error on no input and return an empty string when given an empty string
  • Failed-to-send net messages now reset current net message
  • Calling net.Start() while a net message is already active now displays a message
  • You can no longer send net messages with no players on the server
  • Entity.GetSaveTable and Entity.GetInternalVariable no longer iterate over Inputs and Outputs
  • Entity.SetHitboxSet no longer assigns non existent hitbox sets when using a string as the first argument resulting in a console warning spam
  • You can no longer remove player_manager entity
  • Made DLabelURL's color functions work consistently to DLabel's
  • Vehicle.GetVehicleViewPosition's only argument is now optional
  • Entity.SetModelScale is now limited to +-400 on server (unchanged on client)
handyman

Fixed

  • Fixed FL_ANIMDUCKING not resetting when entering a vehicle
  • Fixed HTTP() cutting off post body at the NULL byte
  • Fixed func_breakable_surf crashing when damaged by DMG_BLAST with no inflictor
  • Fixed crash issues with CNewParticleEffect.AddControlPoint and CNewParticleEffect.StopEmissionAndDestroyImmediately functions
  • Fixed Player and Entity.__newindex crashing the game when assigning non string keys onto those entities
  • CTakeDamageInfo.GetDamageType now properly returns an unsigned int
  • JSON functions now can handle NULL bytes properly
  • IGModAudioChannel.__gc no longer crashes the game in some cases
  • Fixed an error with empty nextbox NPCs (Community Contribution)
  • SWEP Holdtype is now updated clientside whenever server sends a holdtype update
  • PlayerUse no longer blocks using when Lua doesn't return a value or returns a non boolean
  • Fixed DMenu's non self deleting submenus not opening in some cases
  • Player.Kick no longer fails with reasons too long ( now cuts them off at ~512 )
  • util.SpriteTrail no longer crashes the game if you do not give the material ".vmt" extension
  • util.SpriteTrail no longer silently fails halfway through when not given a color
  • Dragginig/Resizing DFrame as a child element now works properly (Community Contribution)
  • Consistent caching between Entity.GetEyeTraceNoCursor and Entity.GetEyeTrace (Community Contribution)
  • Fixed a crash issue with Vehicle.GetVehicleViewPosition
  • Fixed a few Vehicle functions returning garbage in certain cases ( GetVehicleViewPosition, GetPassengerSeatPoint, GetWheelContactPoint )
  • Fixed RebuildSpawnIcon() not taking bodygroups into account
add_circle

Features

  • Added quick search to Material tool
  • You can now ignite ragdolls
  • Restored Half-Life 1 turret entities
  • Added support for $treesway shader paramters, which is affected by env_wind entities on existing maps
arrow_circle_up

Improvements

  • Updated language files (Community Contribution)
  • Updated TTT to its latest version
  • Added proper distance and entity validity checks for all default properties to stop them from being exploited by clientside scripts
  • Spawnmenu Icons no longer save images of missing models to disk
  • Minor changes to NPC difficulty to match Half-Life games (Community Contribution)
handyman

Fixed

  • Downloading workshop items when joining servers now deletes the useless .compressed files that waste space
  • npc_sniper no longer becomes pacifist after one player kill
  • Fixed a crash issue with monster_flyer
  • Fixed a crash issue with Half-Life: Source monster_*_dead NPCs
  • Fixed model of monster_hevsuit_dead
  • Fixed HL2 barney appearing on HL1 map c1a1
  • Fixed HL1 and HL2 episodes not displaying their chapter titles and other on-screen text
  • Fixed purple blood color on HL1 alien NPCs
  • Fixed a crash on srcds when combine soldiers with smg1 die and there isn't a player in first server slot
  • Fixed a rare crash with npc_combie_s trying to shoot a gun they don't have
  • Fixed a potential AI pathfinding crash
  • Reenabled monster_bigmomma hp recovery system
  • Fixed npc_barnacle not picking up players from vehicles
  • Fixed chatbox filters looking weird
  • Fixed default join messages not working on dedicated servers
  • Fixed some scenes not playing
  • Smooth scrape sounds are no longer repalced by rough scrape sounds for glass and tile textures
  • Fixed flashlight sound stopping weapon sounds
  • Fixed some effects (mostly on NPCs) not working in multiplayer
  • Fixed some HL1 NPCs not talking in multiplayer
  • Addon entities ("anim" type SENTS) are now properly credited as inflictor and not the attacker when thrown into a player with a gravity gun
arrow_circle_up

Improvements

  • Added Entity Classname and Index to the "Changing collision rules within a callback is likely to cause crashes!" error message
  • Updated .fgd files (for Hammer) to include GMod specific Sandbox key values
  • Moved the Map and Source Engine Version text when console is open a bit down so it can be read
  • Changed the default value of r_hunkalloclightmaps to 0
  • GMPublish now works better with big addons
handyman

Fixed

  • Fixed a crash having to do with playing sounds
remove_circle

Removed

  • Removed game/bin/sdk.fgd, as it was unused and contained non-existent/duplicate entities
add_circle

Features

  • Added render.OverrideBlend (replaces render.OverrideBlendFunc)
  • Added Entity.GetSequenceMovement
  • Added Player.IsSprinting
  • Added Vector.Div
  • Added Angle.Div & Angle.__div
  • Added Angle.Mul
  • Added Angle.Add
  • Added Angle.Sub
  • Added serverlist.AddCurrentServerToFavorites
  • Added CanAddServerToFavorites
  • Added CreatePhysCollidesFromModel
  • Added CNavLadder.GetTop
  • Added CNavLadder.GetBottom
  • Added CNavLadder.GetWidth
  • Added PhysObj.ApplyTorqueCenter
  • Added PhysObj.GetShadowPos
  • Added PhysObj.GetShadowAngles
  • Added PhysObj.GetVelocityAtPoint
  • Added PhysObj.SetContents
  • Added PhysObj.GetContents
  • Added DNumSlider.GetDefaultValue
  • Added DNumSlider.SetDefaultValue
  • Added DNumSlider.ResetToDefaultValue
  • Added navmesh.GetGroundHeight
  • Added engine.TickCount
  • Added file.Rename, same restrictions as file.Write/file.Open apply
  • Added BLENDFUNC enums
  • Added game.GetAmmoNPCDamage
  • Added game.GetAmmoPlayerDamage
  • Added game.GetAmmoForce
  • Added game.GetAmmoDamageType
  • Added ents.FindAlongRay
  • Added TYPE_PHYSCOLLIDE enum
  • Added PLAYERANIMEVENT_CANCEL_RELOAD enum
  • Implemented DNumSlider.GetText
  • Added support for BodyGroups in Sandbox NPC list
  • Added ConVar support for plydmg, npcdmg and maxcarry keys of game.AddAmmoType
arrow_circle_up

Improvements

  • Entity.AddCallback will now error instead of silently failing when given not a function on its 2nd argument
  • Vector/Angle.Mul and Div methods now have correct type checking and errors
  • util.TableToJSON returns nil unless top-most element is an object or array
  • file.Exists and file.IsDir will return false where it used to return nil
  • ScriptedEntityType field will now work equally on all entity types
  • Added better bounds checking to Entity:GetSequenceActivity
  • GetCreator now returns NULL for no creator, instead of nil (Community Contribution)
  • IsValid micro optimisation (Community Contribution)
  • Improvements to Entity.GetKeyValues() - Vectors actually work now, added support for FIELD_SOUNDNAME and FIELD_EHANDLE
  • FL_ANIMDUCKING is now used and set automatically
  • Return type consistency for Player.TraceHullAttack, Player.GetObserverTarget, Player.GetRagdollEntity, NPC.GetBlockingEntity, NPC.GIve, Entity.GetRagdollOwner, they now return NULL entity where they used to return nil
  • Better/Faster implementations of SortedPairs and similar functions (Community Contribution)
  • PrintTable will no longer try to print the table its currently printing (Community Contribution)
  • DNumberScratch decimal changes for the pop up window (Community Contribution)
handyman

Fixed

  • Entity.DeleteOnRemove() can no longer remove players or the world
  • Fixed a stack overflow in DListView
  • Entity.IsRagdoll will attempt to return proper value when the entity is marked for deletion
  • render.DrawSphere will no longer draws one less longitude step than specified
  • game.CleanUpMap() will no longer crash on LZMA compressed maps
  • Fixed util.DecalEx's scale arguments not working
  • Fixed util.DecalEx using inverted normal for non brush entities
  • Fixed game.AddDecal not precaching added decals resulting in util.DecalMaterial not working as expected in some cases
  • Fixed util.DecalEx not working on entities with brush models
  • Fixed util.Base64Encode output for 0 and 1 byte inputs
  • Fixed Entity.GetAnimInfo not working at all
  • Fixed Entity.SetGravity resetting on players when they use ladders
  • Player.IsFullyAuthenticated no longer returns the player object in some cases
  • Fixed prediction errors caused by using Player.SetHull(Ducked)
  • Player.SetAmmo now has proper ammo typeID bounds check, as well as proper max ammo check (0-9999)
  • Fixed calling Player.Spawn() on a player inside a vehicle putting the player in an invalid state where NPCs can't see them