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'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>