Garry's Mod Logo
schedule 24 October 2012
Devblog

Garry's Mod - Update 143

Ok guys lets calm down. This is a biggy. If you’re a hardcore GMod player and are wondering where something has gone, check this out.

  • New menu screen
  • Extensive workshop integration
  • Updated gm_construct
  • Updated gm_flatgrass
  • Added bone manipulator
  • Added NPC biggifier and smallifier
  • Added player colour customization
  • Changing mounted content no longer requires a restart
  • Duplications can now be saved
  • Duplications can now be published on workshop
  • Duplications can be spawned on servers
  • Added new achievements
  • Added entity driving
  • Huge load time improvements
  • Added option to turn off spawn effect
  • Added option to turn off world tooltips
  • Added rope texture option to Hydraulic
  • Added rope texture option to Muscle
  • Added rope texture option to Pulley
  • Added rope texture option to Slider
  • Added Start On option to Muscle
  • Dedicated servers can subscribe to workshop addons
  • Fixed physgun mousewheel being unreliable
  • Games will no longer mount unless they’re installed in Steam
  • Fixed HTTP connection crash
  • SuperDOF no longer crashes when using multicore rendering
  • Added Properties to ‘C Menu’
  • Disabled physics penetration warnings
  • Changed map icons to png images
  • Fixed HL1 NPCs using wrong gibs
  • Fixed HL1 grunt droppings
  • Now uses GWEN skins
  • Fixed missing wade sounds
  • Fixed missing crossbow sounds
  • Spawnmenu categories now tree based and customizable
  • Can bind actions to ANY key (instead of only numpad)
  • Fixed stalker model
  • SuperDOF now renders water properly
  • SuperDOF shows percentage done
  • Made gravity gun sounds quieter
  • Removed PixelRender
  • New freeze/unfreeze effects
  • New physgun grab effect
  • Removing no longer reported in the console
  • Fixed crashing on invalid sound
  • Fixed generic constraint crash
  • Fixed motor constraint crash
  • Added ingame video recording
  • Undo’s, Unfreezes and Limits no longer print to console
  • Merged weld and easy weld into one tool
  • Moved statue tool to properties menu
  • Moved keep upright tool to properties menu
  • Face posing now works on NPCs
  • Fixed weapons not being predicted on secondary fire
  • Spawnicons are now resizable
  • Can bind console toggle key via options
  • Fixed env_projectedtexture attenuation on world error
  • Increased max carried SLAM
  • Removed toybox
  • Fixed spawn effect being ping delayed
  • Can now change FOV, distance and brightness of lamps
  • Fixed level change crash after loading bad propdata
  • Windows can no longer be dragged completely off the screen when windowed
  • New addon format
  • Fixed not spawning properly on LostCoast map
  • Added Dino D-Day to the mountable games list
  • Fixed “too many indices” error when rendering lots of ropes
  • Fixed monitors being broken in HL2 maps
  • Decals no longer remove other overlapping decals
  • Can now browse addon models on spawn menu
  • Turn off fullbright when loading a map if it’s lit
  • Removed sv_gamemode, sv_gamemodeoverride
  • Added ‘gamemode’ console command
  • Should now be able to derive from more than 2 chained gamemodes
  • sbox_plpldamage changed to sbox_playershurtplayers
  • Fixed double lag compensation errors when shooting glass
  • Added more spawnable NPCs
  • Added HL2 Items and Weapons
  • Added gamemode selector on menu screen
  • Fixed UTIL_SetModel server crash exploit
  • Fixed rope_material server crash exploit
  • Fixed not being able to plug the plug in d1_trainstation_05 
  • Added spawnmenu_border convar
  • Added sbox_bonemanip_npc (default: 1)
  • added sbox_bonemanip_player (default: 0)
  • Added sbox_bonemanip_misc (default: 0)
  • Added sbox_persist (default: 0)
  • If sv_alltalk is 2 then voice chat will be heard spatially
  • Can now pose NPC eyes, hands, face
  • Camera is now predicted properly and recorded properly in demos
  • Added physgun_wheelspeed to control physgun mousewheel speed
  • Added several stock props for tools
  • Added button animations, models
  • Added button toggle mode
  • Added taunt camera
  • Added custom sky shader

  • Removed datastream

  • Fixed errors with Shutdown hook
  • Added game.AddAmmoType
  • Added matproxy library
  • Added GM:PlayerSwitchWeapons( pl, LastWeapon, NewWeapon )
  • Added Player:IsTyping()
  • Added TextEntry:CutSelected()
  • Added TextEntry:CopySelected()
  • Added TextEntry:Paste()
  • Added TextEntry:Undo()
  • Added TextEntry:SaveUndoState()
  • Added HTML:SetScrollbarsEnabled( b )
  • Added HTML:SetContextMenuEnabled( b )
  • Added HTML:SetViewSourceEnabled( b )
  • Added HTML:GetHTMLSize()
  • Added HTML:GetHTMLScroll()
  • Added HTML:SetHTMLScroll( x, y )
  • Added HTML:SetHTMLSize( w, h )
  • Added Menu:IsInGame()
  • Added DHTML vgui control
  • Added DPanelOverlay vgui control
  • Added Panel:GetChildren()
  • Added Angle:Set( ang )
  • Added Angle:Zero()
  • Added Angle:IsZero()
  • Added Entity:SetPreventTransmit( ply, bool )
  • Added Entity:SetNextClientThink( float )
  • Added Entity:PhysicsInitMultiConvex( {{v, v, v}, {v, v, v}} )
  • Added Panel:PaintAt( x, y )
  • Added surface.SetAlphaMultiplier( 0-1 )
  • Added vgui.GetHoveredPanel()
  • Added Derma Box Selection
  • Added Derma Drag n Drop
  • Added DPanelList:SetSortable( b )
  • Added DPanelList:SetAnimTime( f )
  • Added DPanelList:SetAnimEase( f )
  • Added table.RemoveByValue( tbl, val )
  • Added Panel:OnChildRemoved() callback
  • Added Panel:DragHoverClick()
  • Added DTreeNode:AddFolder( strName, strFolder, bShowFiles, strWildCard, bDontForceExpandable )
  • Added DTree:OnNodeSelected( node )
  • Added DLabelEditable
  • Added DPanelList:InsertBefore( before, pnl )
  • Added DPanelList:InsertAfter( before, pnl )
  • Added DDrawer control
  • Added net.WriteInt( val, bits )
  • Added net.WriteUInt( val, bits )
  • Added net.WriteDouble
  • Added net.ReadDouble
  • Added net.ReadInt( bits )
  • Added net.ReadUInt( bits )
  • Added Panel:OnDeletion() hook
  • Added input.IsShiftDown()
  • Added input.IsControlDown()
  • Added Panel:Stop() (stops all animation dead)
  • Added Panel:Queue() (adds an animation queue point)
  • Added Panel:AnimTail() (returns system time that the last animation will stop)
  • Added Panel:Distance( pnl )
  • Added render.OverrideDepthEnable( benable, bdepth )
  • Added Panel:SlideUp( f )
  • Added Panel:SlideDown( f )
  • Added DTreeNode:GetName()
  • Added Entity:RemoveAllDecals()
  • Fixed DButton overriding DLabels SetTextColor settings
  • Added Panel:HasHierarchicalFocus()
  • Fixed surface.DrawTexturedRectUV
  • Added IMaterial:GetColor( x, y ) (only works on png)
  • Added ITexture:GetColor( x, y ) (only works on png)
  • Panel paint hooks now get width + height
  • KeyValuesToTable corretly loads keys as numbers where appropriate
  • Removed PhysObject()
  • TableToKeyValues now 162 times faster
  • Added EmitSentence( strSentence, vecPos, iEnt, iChannel, fVol, iSoundLevel, iFlags, iPitch )
  • Added EmitSound( strSound, vecPos, iEnt, iChannel, fVol, iSoundLevel, iFlags, iPitch )
  • GetPreferredCarryAngles gets called on all physics based entities
  • Added Panel:AddChild( strPanelClass )
  • Added Panel:CopyBase()
  • Added Panel:IsChild( pPanel )
  • Added Panel:InvalidateChildren( bRecurse )
  • Added DIconLayout
  • Added DIconBrowser
  • Dbuttons can now be toggle
  • Added Button:DoDoubleClick
  • Console commands receive ArgS variable
  • Removed DSysButton
  • Added Material:SetMaterialUndefined
  • Added MsgC( color, str, … )
  • Added gui.IsGameUIVisible()
  • Added gui.IsConsoleVisible()
  • Added extra check in PlayerDeath
  • Added Panel:GetFont()
  • Added Entity:GetNoDraw()
  • Panel:SizeToChildren now correctly accounts for padding
  • Added Label:GetTextSize
  • Added Label:GetTextInset
  • Added Panel:HasHierarchicalFocus()
  • Added net library
  • Added widgets
  • Added util.IntersectRayWithPlane( raystart, raydirnorm, planepos, planenorm ) (returns hitpos or nil)
  • Added util.IntersectRayWithOBB( raystart, raydirnorm, obbpos, obbang, obbmin, obbmax ) (returns hitpos+normal or nil)
  • Entity:IsOnFire is now shared
  • Added Entity:FollowBone( parent, boneid )
  • Added PlayerTick hook
  • Added CMoveData:KeyDown( key )
  • Added CMoveData:KeyWasDown( key )
  • Entities no longer have to be in a folder, can be single files (ie entities/ent_ball.lua)
  • Fixed OnPlayerHitGround hook
  • Added util.DistanceToLine( vstart, vend, vpos ) (returns fdist, vpos, falong)
  • Added Entity:SetBoneManipulator( ent )
  • Added Entity:GetBoneManipulator()
  • Added Entity:ManipulateBonePosition( boneid, vector )
  • Added Entity:GetManipulateBonePosition( boneid )
  • Added CUserCmd:RemoveKey( id )
  • Added halo library
  • Added new render hook “PreDrawViewModel”
  • Lua created Point entities can now be networked ( using UpdateTransmitState )
  • Added render.GetSmallTex0()
  • Added render.GetSmallTex1()
  • Added render.GetColorModulation()
  • Added render.GetBlend()
  • Added render.MaterialOverride( material | nil )
  • Added render.BlurRenderTarget( rt, sizex, sizey, passes )
  • Removed enums folder
  • Added properties library
  • Added numpad.FromButton() - returns true if the numpad callback is being called from a button
  • Added duplicator.SetLocalPos( vec )
  • Added duplicator.SetLocalAng ( ang)
    • Added Entity hook “CalcAbsolutePosition”
  • Added render.DepthRange( flmin, flmax )
  • Added Entity:GetParentAttachment() (returns int)
  • Added render.DrawLine( vec, vec, color, zbuffer )
  • Added render.DrawBox( vec, angle, vec, vec, color, zbuffer )
  • Added render.DrawWireframeBox( vec, angle, vec, vec, color, zbuffer )
  • Added render.DrawWireframeSphere( vec, size, int, int, color, zbuffer )
  • Added render.DrawSphere( vec, size, int, int, color )
  • Added Entity:HasBoneManipulations()
  • Added MenuSystem:RawConsoleCommand()
  • Lua is stricter, errors more
  • Added Entity:GetLocalAngularVelocity()
  • Added Entity:SetLocalAngularVelocity( angle )
  • Added Entity:Use( activator, caller, use_type, value )
  • PlayerConnect hook no longer passes IP Address clientside
  • Fixed wrong bullet collisions on SENTS with custom physics objects [verify]
  • Added scripted_ents.Alias( from, to ) [verify]
  • Added string.JavascriptSafe( str ) [verify]
  • Effects can now be loaded from effects/effectname.lua
  • Added DMenuBar
  • DMenu can specify whether they should be deleted when closed
  • Overlay panels will no longer draw if hidden (!)
  • Added menubar library
  • Added menu option checking
  • Added DMenuOptionCVar
  • Added Entity:GetMomentaryRotButtonPos( ang )
  • Fixed security in file.FindDir
  • Entity:SetColor now only takes a Color table
  • Entity:GetColor now only returns a Color table
  • Added system.IsWindows()
  • Added system.IsOSX()
  • Added system.IsLinux()
  • Added system.HasFocus() (windows and mac only)
  • Added PANEL:SetTabbingDisabled( b )
  • Added PANEL:GetTabbingDisabled()
  • Added render.PushFlashlightMode( b )
  • Added render.PopFlashlightMode()
  • Added GM:FindUseEntity( ply, ent ) [verify]
  • Entity:DrawShadow now works on players [verify]
  • Fixed math.randomseed [verify]
  • Entity:SetRenderBounds no longer clamped
  • Fixed UTIL_ScreenShake not working clientside
  • Added Panel:GetChild( iNum )
  • Added Player:AddVCDSequenceToGestureSlot( i, i, f, b)
  • File.Read now takes a 3rd parameter bool. True to read in binary mode.
  • Overlays now come from the list OverlayMaterials
  • Added spawnmenu.SetActiveControlPanel( pnl )
  • Added spawnmenu.ActiveControlPanel()
  • Added spawnmenu.ActivateToolPanel( tabid, controlpanel )
  • Removed global g_ActiveControlPanel
  • Added video.Record( table ) (returns vid object on success)
  • Added Vector:DistToSqr( vec )
  • Added Vector:WithinAABox( vecmin, vecmax )
  • Added Vector:IsZero()
  • Added Vector:IsEqualTol( vec, float_tolerance )
  • Fixed players taking damage twice
  • Fixed some Lua pushing number accuracies
  • Removed ents.Create clientside
  • Added ents.CreateClientProp( model )
  • Fixed Panel Alpha getting reset
  • Added AvatarImage:SetSteamID( strID, iSize )
  • Player:SetAmmo ammo type can now be a string OR an integer
  • Added util.Compress( str )
  • Added util.Decompress( str )
  • Revamped file library
  • Added cleanup.GetList()
  • Updated Entity:EmitSound( name, ilevel, ipitch, fvolume[0-1] )
  • Added ents.FireTargets( str, ent, ent, int, float )
  • Added Entity:SetIK( bool ) [clientside]
  • Added Entity:SetupPhonemeMappings( filename ) [clientside]
  • Added util.IsSkyboxVisibleFromPoint( vec ) [clientside]
  • Added AddonMaterial( addonid )
  • Added render.SetShadowDirection( vec )
  • Added render.SetShadowColor( r, g, b )
  • Added render.SetShadowDistance( f )
  • Added render.SetShadowsDisabled( b )
  • Added Entity:GetRenderFX()
  • Added Entity:GetRenderMode()
  • Added Panel:Show()
  • Added Panel:Hide()
  • Added game.AddDecal( name, decalmatname );
  • Added game.AddParticles( “particles/.pcf” )
  • Removed ParseParticleManifest
  • Added Entity:ObjectCaps()
  • Added Panel:IsChildHovered( iDepth )
  • Added engine.GetGames()
  • Removed GetMountedContent()
  • Removed GetMountableContent()
  • Added game.GetMountedAddons()
  • Added string.StartWith( str, start )
  • Added string.EndsWith( str, end )
  • Removed GetGamemodes()
  • Removed GetAddonList()
  • Removed GetAddonInfo()
  • Added engine.GetMountedGames()
  • Added engine.GetMountedAddons()
  • Added engine.GetGamemodes()
  • Added cam.Start( table )
  • Fixed Matrix errors Msging instead of Erroring
  • Added Entity:GetNumPoseParameters()
  • Added Entity:GetPoseParameterName( i )
  • Added PhysObj:GetMesh() (returns table)
  • Added gameevent.Listen( event_name ) (game event will then travel through hooks)
  • Added physenv.AddSurfaceData( text )
  • Added cam.End()
  • Added DHTML:QueueJavascript( js )
  • Added engine.ActiveGamemode() (returns string)
  • util.ModelInfo now provides KeyValues
  • Added NPC:IsNPCMoving()
  • Added NPC:IsUnreachable( ent )
  • Added Ent:GetSequenceMoveYaw( i )
  • Added Ent:GetSequenceMoveDist( i )
  • Added Ent:SetHitboxSet( i | string )
  • Added Ent:GetHitboxSet() (returns i, str)
  • Added Ent:GetHitboxSetCount()
  • Added Ent:GetHitboxBone()
  • Added Ent:GetBoneController( i ) (returns float)
  • Added Ent:SetBoneController( i, float )
  • Added Ent:GetSequenceGroundSpeed( i )
  • Added Ent:GetGroundSpeedVelocity() (returns vector)
  • Added util.DecalEx( mat, ent, pos, norm, color, w, h )
  • Added Entity:GetShouldPlayPickupSound()
  • Added Entity:SetShouldPlayPickupSound( bool )
  • Fixed crash in ply:ConCommand containing a %
  • Added Entity:GetPoseParameterRange( i ) (returns 2 floats)
  • Added system.BatteryPower() (returns 0-100, 255 if on AC)
  • Added system.AppTime() (seconds app has been running)
  • Added system.UpTime() (seconds system has been running)
  • Added system.SteamTime() (unix epoch PST)
  • Added system.GetCountry() (country code we’re in [“US”, “UK” etc])
  • Added DHTML:SetAllowLua( bool ) (allows webpage to call Lua via console.output)
  • Added sound.Add( table )
  • Added Entity:GetAttachments()
  • Added Entity:GetBodyGroups()
  • Added Entity:GetTextures()
  • Added Entity:GetBrushPlaneCount()
  • Added Entity:GetBrushPlane( i )
  • Added Entity:GetSubModels()
  • Added net.WriteChar
  • Added net.ReadChar
  • Added gui.ActivateGameUI()
  • Added net.WriteData( str, size )
  • Added net.ReadData( size )
  • Added util.JSONToTable( str ) [returns table]
  • Added Panel:Find( str ) [finds by name]
  • Added Panel:LoadGWENFile( filename, path ) [loads .gwen designer files]
  • Added Panel:LoadGWENString( str )
  • Added engine.IsPlayingDemo()
  • Added engine.IsRecordingDemo()
  • concommand.Add can now take FCVAR flags
  • Added util.TableToJSON( tbl )
  • Added Player:ShowProfile()
  • Added player:VoiceVolume()
  • Added render.RenderHUD( x, y, w, h )
  • Added SWEP:Tick()
  • Added UserCmd:CommandNumber()
  • Player:DrawViewModel( b ) is now shared
  • Fixed Player:GetCurrentCommand() returning wrong command on client
  • Added engine.TickInterval()
  • Added file:Flush()
  • Added Entity:SetSpawnEffect( b ) (set to true entity will spawn with effect)
  • Added Entity:GetSpawnEffect()
  • Added Entity:GetCreationTime() (returns the time was created on server)
  • Added GAMEMODE:NetworkEntityCreated( ent ) (clientside)
  • Added Player:SteamID64()
  • Added render.BrushMaterialOverride( mat )
  • Added render.ModelMaterialOverride( mat )
  • Added render.RenderNormalBuffer()
  • Added render.GetNormalBuffer()
  • Added render.DrawTextureToScreen( tex )
  • GetRenderTargetEx now takes an imageformat as the 8th argument
  • Added render.GetPositionBuffer()
  • Added render.RenderPositionBuffer()
  • Added render.DrawScreenQuadEx( x, y, w, h )
  • Added render.SetRenderTargetEx( int, texture )
  • Added render.DrawTextureToScreenRect( tex, x, y, w, h )
  • Added Entity:GetModelBounds() (returns mins, maxs)
  • Added Entity:GetModelRenderBounds() (returns mins, maxs)
  • Added Entity:GetSequenceCount()
  • Added Entity:GetSequenceInfo( id )
  • Added Entity:GetModelRadius()
  • Added util.IsModelLoaded( strModel )
  • Added HTTP( table ) (see http.lua)
  • Added http.Post( url, params (table), onsuccess, onfailure )
  • Player:GetViewEntity() is now shared
  • Added util.Base64Encode( str )
  • http.Get parameters changed to http.Fetch( url, onsuccess, onfailure )
  • Added Entity:PhysicsInitFromVerts( verts, bStatic )
  • Added CMoveData:KeyPressed( key )
  • Added CMoveData:KeyReleased( key )
  • Added GM:CanDrive( pl, ent )
  • IMesh::BuildFromTriangles now accepts “color” members
  • Added render.GetAmbientLightColor()
  • Added render.ComputeLighting( pos, normal )
  • Added player:AllowFlashlight( bAble )
  • Added player:CanUseFlashlight()
  • Entity:IsOnFire() is now available clientside
  • Added render.ComputeDynamicLighting( pos, normal )
  • Material objects now load and are available serverside
  • Added sv_sticktoground (stops players flying in the air when running up slopes)
  • Fixed not being able to set some NPCs on fire
  • Added HTML:UpdateHTMLTexture() - redraws the texture if needed (called automatically when painting - only needed when using the material)
  • Datapack system no longer uses dua files
  • Added numpad.Toggle( pl, num )
  • Fixed not seeing sv_loadingurl until almost entering the server
  • AddCSLuaFile now complains if it can’t find the file
  • If AddCSLuaFile is called with no string - it adds current file
  • Better “Lua Error Dump!” errors
  • Better “Lua Stack Leak!” errors
  • WorldSound now takes 5th parameter ‘volume’ - a float 0-1
  • timer.IsTimer renamed to timer.Exists
  • Renamed Material:[Get|Set]Material* to Material:[Get|Set]*
  • Angle/Vector defaults to 0, 0, 0
  • Renamed NewMesh to Mesh
  • Added Player:IsWorldClicking() (shared)
  • Removed Player:GetCursorAimVector()
  • Added Panel:SetWorldClicker()
  • Removed hook ‘ContextScreenClick’ (now redundant)
  • Removed hook ‘CallScreenClickHook’
  • Added aspect option to RenderView
  • Fixed crashes in Shutdown hook
  • Changed to surface.CreateFont( name, table )
  • Added OnReloaded hook to gamemode and entities - called when it has been reloaded by auto refresh
  • Removed ValidEntity( ent ) (replace with IsValid( ent ))
  • Added hammer.SendCommand( str )
  • Added game.GetMapVersion()
  • Added game.MapLoadType()
  • Added game.StartSpot()
  • Added Button:DoMiddleClick()
  • Added steamworks. library
  • Added DHTML:AddFunction( objectname, functionname, function )
  • file.Find takes third param - “datedesc”, “dateasc”, “namedesc”, “nameasc”
  • Added Entity:EnableMatrix( str, matrix ) (str should be “RenderMultiply”) (client)
  • Added Entity:DisableMatrix( str ) (client)
  • Added Entity:IsRagdoll()
  • Added Entity:GetRagdollOwner()
  • Removed glon

So yeah, a big update. I’ll be watching the forums and the support stuff pretty closely.. even though this has been tested quite a bit I’m expecting bugs and problems.. that’s just the way it is with so much user created content out in the wild. So expect another patch quite soon for anything that crops up.

If you’re trying to fix your scripts to work with the new version - you might find this useful.