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