Garry's Mod Wiki

Revision Difference

GM:OnPlayerChat#511159

<function name="OnPlayerChat" parent="GM" type="hook">⤶ <ishook>yes</ishook>⤶ <description>⤶ Called whenever a player sends a chat message. For the serverside equivalent, see <page>GM:PlayerSay</page>.⤶ <note>The text input of this hook depends on <page>GM:PlayerSay</page>. If it is suppressed on the server, it will be suppressed on the client.</note>⤶ </description>⤶ <realm>Client</realm>⤶ <predicted>No</predicted>⤶ <args>⤶ <arg name="ply" type="Player">The player</arg>⤶ <arg name="text" type="string">The message&#x27;s text</arg>⤶ <arg name="teamChat" type="boolean">Is the player typing in team chat?</arg>⤶ <arg name="isDead" type="boolean">Is the player dead?</arg>⤶ </args>⤶ <rets>⤶ <ret name="" type="boolean">Should the message be suppressed?</ret>⤶ </rets>⤶ </function>⤶ ⤶ <example>⤶ <description>Code from base gamemode. See garrysmod/gamemodes/base/gamemode/cl_init.lua#L139</description>⤶ <code>⤶ function GM:OnPlayerChat( player, strText, bTeamOnly, bPlayerIsDead )⤶ ⤶ --⤶ -- I've made this all look more complicated than it is. Here's the easy version⤶ --⤶ -- chat.AddText( player, Color( 255, 255, 255 ), ": ", strText )⤶ --⤶ ⤶ local tab = {}⤶ ⤶ if ( bPlayerIsDead ) then⤶ table.insert( tab, Color( 255, 30, 40 ) )⤶ table.insert( tab, "*DEAD* " )⤶ end⤶ ⤶ if ( bTeamOnly ) then⤶ table.insert( tab, Color( 30, 160, 40 ) )⤶ table.insert( tab, "(TEAM) " )⤶ end⤶ ⤶ if ( IsValid( player ) ) then⤶ table.insert( tab, player )⤶ else⤶ table.insert( tab, "Console" )⤶ end⤶ ⤶ table.insert( tab, Color( 255, 255, 255 ) )⤶ table.insert( tab, ": "..strText )⤶ ⤶ chat.AddText( unpack(tab) )⤶ ⤶ return true⤶ ⤶ end⤶ </code>⤶ ⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>How you could create a clientside only chat command.</description>⤶ <code>⤶ hook.Add( "OnPlayerChat", "HelloCommand", function( ply, strText, bTeam, bDead ) ⤶ if ( ply != LocalPlayer() ) then return end⤶ ⤶ strText = string.lower( strText ) -- make the string lower case⤶ ⤶ if (strText == "/hello") then -- if the player typed /hello then⤶ print("Hello world!") -- print Hello world to the console⤶ return true -- this suppresses the message from being shown⤶ end⤶ ⤶ end )⤶ </code>⤶ <output>Prints "Hello world!" to the console when you type /hello in the chat.</output>⤶ ⤶ </example>