Garry's Mod Wiki

Revision Difference

GM:EntityKeyValue#526851

<function name="EntityKeyValue" parent="GM" type="hook"> <ishook>yes</ishook> <description> Called when a key-value pair is set on an entity, either by the engine (for example when map spawns) or <page>Entity:SetKeyValue</page>. See <page>ENTITY:KeyValue</page> for a hook that works for scripted entities. See <page>WEAPON:KeyValue</page> for a hook that works for scripted weapons. </description> <realm>Shared</realm> <predicted>No</predicted> <args> <arg name="ent" type="Entity">Entity that the keyvalue is being set on</arg> <arg name="key" type="string">Key of the key/value pair</arg> <arg name="value" type="string">Value of the key/value pair</arg> </args> <rets> <ret name="" type="string">If set, the value of the key-value pair will be overridden by this string.</ret> </rets> </function> ⤶ <example>⤶ <description>Remove [`infodecal`](https://developer.valvesoftware.com/wiki/Infodecal) entities similar to the blue graffiti text behind the big building with numbered floors on **gm_construct**. ⤶ The `texture` keyvalue cannot be retrieved from `infodecal` entities.</description>⤶ <code>⤶ local unwantedDecals = {⤶ ["decals/decalgraffiti031a"] = true,⤶ -- etc.⤶ }⤶ hook.Add( "EntityKeyValue", "remove_unwanted_decals", function( decal, key, value )⤶ if key == "texture" and IsValid( decal ) and decal:GetClass() == "infodecal" then⤶ if unwantedDecals[value] then⤶ -- set a targetname to make the decal remain and not appear automatically:⤶ decal:SetName( "remove_unwanted_decals" )⤶ end⤶ end⤶ end )⤶ ⤶ local function remove_unwanted_decals()⤶ -- remove the decals instead of just keeping them invisible:⤶ for _, decal in ipairs( ents.FindByClass( "infodecal" ) ) do⤶ if decal:GetName() == "remove_unwanted_decals" then⤶ decal:Remove()⤶ end⤶ end⤶ end⤶ hook.Add( "InitPostEntity", "remove_unwanted_decals", remove_unwanted_decals )⤶ hook.Add( "PostCleanupMap", "remove_unwanted_decals", remove_unwanted_decals )⤶ </code>⤶ </example>