Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Added input.WasMouseReleased( key )
  • Added surface.GetAlphaMultiplier()
  • Added surface.GetDrawColor()
  • Added surface.GetTextColor()
  • Added Entity.IsMarkedForDeletion()
  • Added hook GM:PlayerClassChanged
  • Added hook PANEL.OnSizeChanged( newW, newH )
  • Added hook NextBot.FireAnimationEvent clientside hook
  • Added hook NextBot:HandleAnimEvent
  • Added 4th argument to DComboBox.AddChoice - icon (Community Contribution)
arrow_circle_up

Improvements

  • Added names to the "A net message is already started" message to help pinpoint the message source
  • PANEL.OnScreenSizeChanged now has 2 arguments - the old width and height
  • ModelImage.SetSpawnIcon will no longer display an error image when given non-existent .png, now displays the usual broken image material
  • Wordclicker view model animations now use proper variables for 2nd and 3rd viewmodels, instead of using the variable for the 1st view model
  • Entity.EnableConstraints( false ) now deletes the constraints (experimental)
  • DModelPanel now properly works when being dragged by the drag'n'drop system
  • Deletion of orphaned entities no longer deletes world or players
  • You can no longer call Entity.SetParent on world
  • PNG and JPG textures are now loaded without automatic conversion to Power of 2 sizes
  • Panel.IsEnabled now visibly affects DMenuOption
  • Invisible children of DHorizontalScroller will no longer affect position of the visible panels
  • Entity.Fire and Entity.Input also support booleans just like GM:AcceptInput
  • Player classes are set on all clients automatically clientside
  • Player classes are initialized as soon as they are set on a player, instead of whenever a first hook call happens
  • Display a message when an scripted entity was refused to be loaded due to missing Base and Type keys
  • Display a console warning when scripted_ents library was overridden and is no longer a table instead of silently doing nothing
  • More friendly errors when the weapons library is overridden with a non table
handyman

Fixed

  • Fixed Player.Say appending a trailing space
  • Fixed ViewModelFlip stopping worldclicker aiming animation for view models
  • Fixed SpawnIcon's SetSize affecting the child element's size too late
  • Fixed a crash issue with ModelImage.SetSpawnIcon
  • Fixed EmitSentence() not working on clients
  • DLabel and its derivatives can be properly dropped with drag'n'drop when they are not initially pressed
  • Invalid panels for tooltips will no longer create errors
  • Fixed table.GetWinningKey with keys lower than -10000 (Community Contribution)
  • Fixes for toolgun Think not running in edge cases (Community Contribution)
  • Fixed gmod_(admin_)cleanup not updating Player.GetCount on clients properly
  • Fixed Entity.GetTable being recreated when one already exists upon loading the entity table from .lua file
  • Fixed engine.ActiveGamemode() not returning current gamemode correctly in clientside autorun scripts
  • Fixed Panel.GetTextSize() only working after the text has been rendered at least once
handyman

Fixed

  • Fixed an exploit to do with gm_giveswep
  • Fixed an exploit relating to SQLite
arrow_circle_up

Improvements

  • Changed Lua file hashing algorithm to improve security
handyman

Fixed

  • Fixed a crash with decals on high poly models
  • Fixed a crash with Projected Textures
  • Fixed crash issues on some TF2 maps
  • Fixed crash issue with physenv.AddSufraceData()
  • Fixed not being able to start a new game with too many game.AddDecal() calls
  • Fixed a crash issue with env_fog_controller
  • Fixed crash exploits with parenting of unremovable entities to removable ones and deleting them this way
  • Fixed certain players not being able to be muted on servers with large populations
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