GM/OnPlayerChat

From Garry's Mod
(Difference between revisions)
Jump to: navigation, search
m (Changed the example a bit (again))
(fixed spelling mistakes, indented GM hook properly again, replaced example because previous one didn't work (hook is CLIENT))
Line 1: Line 1:
 
{{Hook
 
{{Hook
|Description=Called whenever another player send a chat message. For the serverside equivalent, see {{HookFunction|GM|PlayerSay}}.
+
|Description=Called whenever a player sends a chat message. For the serverside equivalent, see {{HookFunction|GM|PlayerSay}}.
 
|Realm=Client
 
|Realm=Client
 
|Predicted=No
 
|Predicted=No
Line 14: Line 14:
 
|type=string
 
|type=string
 
|name=text
 
|name=text
|desc=The players chatted text
+
|desc=The message's text
 
}}
 
}}
 
{{Arg
 
{{Arg
Line 33: Line 33:
 
|Code=function GM:OnPlayerChat( player, strText, bTeamOnly, bPlayerIsDead )
 
|Code=function GM:OnPlayerChat( player, strText, bTeamOnly, bPlayerIsDead )
 
   
 
   
--
+
--
-- I've made this all look more complicated than it is. Here's the easy version
+
-- I've made this all look more complicated than it is. Here's the easy version
--
+
--
-- chat.AddText( player, Color( 255, 255, 255 ), ": ", strText )
+
-- chat.AddText( player, Color( 255, 255, 255 ), ": ", strText )
--
+
--
+
 
local tab = {}
+
local tab = {}
+
 
if ( bPlayerIsDead ) then
+
if ( bPlayerIsDead ) then
table.insert( tab, Color( 255, 30, 40 ) )
+
table.insert( tab, Color( 255, 30, 40 ) )
table.insert( tab, "*DEAD* " )
+
table.insert( tab, "*DEAD* " )
end
+
end
+
 
if ( bTeamOnly ) then
+
if ( bTeamOnly ) then
table.insert( tab, Color( 30, 160, 40 ) )
+
table.insert( tab, Color( 30, 160, 40 ) )
table.insert( tab, "(TEAM) " )
+
table.insert( tab, "(TEAM) " )
end
+
end
+
 
if ( IsValid( player ) ) then
+
if ( IsValid( player ) ) then
table.insert( tab, player )
+
table.insert( tab, player )
else
+
else
table.insert( tab, "Console" )
+
table.insert( tab, "Console" )
end
+
end
+
 
table.insert( tab, Color( 255, 255, 255 ) )
+
table.insert( tab, Color( 255, 255, 255 ) )
table.insert( tab, ": "..strText )
+
table.insert( tab, ": "..strText )
+
 
chat.AddText( unpack(tab) )
+
chat.AddText( unpack(tab) )
  
return true
+
return true
 
   
 
   
 
end
 
end
Line 68: Line 68:
 
{{Example
 
{{Example
 
|Description=How you could create a chat command
 
|Description=How you could create a chat command
|Code=hook.Add( 'OnPlayerChat', 'UNIQUE_IDENTIFIER', function( ply, txt, bTeam, bDead )  
+
|Code=hook.Add( "OnPlayerChat", "UNIQUE_IDENTIFIER", function( ply, strText, bTeam, bDead )  
  
txt = string.lower( txt ) -- make the string lower case
+
strText = string.lower( strText ) -- make the string lower case
  
if txt == '/addhealth' then -- if the player typed /addhealth then
+
if strText == "/hello" then -- if the player typed /addhealth then
  ply:SetHealth( ply:Health() + 10 ) -- add some health to the player who typed this
+
print("Hello world!")
  return true -- this suppresses the message from being shown
+
return true -- this suppresses the message from being shown
end
+
end
  
 
end )
 
end )
 +
|Output=Prints "Hello world!" to the console when you type /hello in the chat.
 
}}
 
}}

Revision as of 19:28, 20 February 2016

 GM:OnPlayerChat( )

Contents

Description

Called whenever a player sends a chat message. For the serverside equivalent, see GM:PlayerSay.

Arguments

Player ply

The player

Arguments

string text

The message's text

Arguments

boolean teamChat

Is the player typing in team chat?

Arguments

boolean isDead

Is the player dead?

Returns

boolean

Should the message be suppressed?

Examples

Example

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


Examples

Example

How you could create a chat command

hook.Add( "OnPlayerChat", "UNIQUE_IDENTIFIER", function( ply, strText, bTeam, bDead ) 

	strText = string.lower( strText ) -- make the string lower case

	if strText == "/hello" then -- if the player typed /addhealth then
		print("Hello world!")
		return true -- this suppresses the message from being shown
	end

end )

Output:

Prints "Hello world!" to the console when you type /hello in the chat.
Personal tools
Navigation