Conflicting addons

Hello,

So for some reason, my addons are conflicting. These are addons I’ve made. The two I’m showing you, as you can see, are a !rules chat command and !servers chat command. Only the !servers one will actually work when they’re both on the same server. How do I fix this? Here is the server file for each addon and the starting of the client file.

[LUA]
– Rules addon
if ( SERVER ) then

local chatCommands = {
    "!rules",  
}

hook.Add( "PlayerSay", "ChatCheck", function( ply, text, bteam ) 
    if ( table.HasValue( chatCommands, text:lower() ) ) then 
        umsg.Start( "rulesMenu", ply )
        umsg.End()
		
        umsg.Start( "rulesBroadcast" )
		umsg.Entity( ply )
        umsg.End()

        return "" 
    end
end )

end

if CLIENT then
usermessage.Hook( “rulesMenu”, function()
local base2 = vgui.Create( ‘DPanel’ )
base2:SetSize( 480, 480 )
base2:SetPos( (ScrW()/2)-(base2:GetWide()/2), (ScrH()/2)-(base2:GetTall()/2)-ScrH() )
base2:MoveTo((ScrW()/2)-(base2:GetWide()/2), (ScrH()/2)-(base2:GetTall()/2), 0.5,0,-1)
base2:MakePopup()
base2:SetVisible( true )

	function base2:Paint( w, h )
		draw.RoundedBox( 0, 0, 0, w, h, Color( 18, 18, 18, 250 ) )
	end

– Servers addon
if SERVER then
util.AddNetworkString( ‘isply’ )
util.AddNetworkString( ‘Openpls’ )
local chatCommands = {
“!servers”,
}
hook.Add( “PlayerSay”, “ChatCheck”, function( ply, text, bteam )
if ( table.HasValue( chatCommands, text:lower() ) ) then
net.Start( ‘Openpls’ )
net.Send( ply )
net.Start( ‘isply’ )
net.Send( ply )
return “”
end
end )
end

net.Receive( 'Openpls', function()
	local base = vgui.Create( 'DPanel' )
		base:SetSize( 350, 143 )
		base:Center()
		local x, y = base:GetPos()
		base:SetPos( (ScrW()/2)-(base:GetWide()/2), (ScrH()/2)-(base:GetTall()/2)-ScrH() )
		base:MoveTo((ScrW()/2)-(base:GetWide()/2), (ScrH()/2)-(base:GetTall()/2)-200, 0.5,0,-1)
		base:SetVisible( true )
		base:MakePopup()
		
	function base:Paint( w, h )
		draw.RoundedBox( 0, 0, 0, w, h, Color( 18, 18, 18, 250 ) )
	end

[/LUA]

Any help would be cool! Thanks

PLEASE NOTE THEY BOTH WORK. SO IF I ONLY HAVE THE RULES ADDON IT WORKS.

Don’t return in the PlayerSay hook

I removed the return “” of both. Didn’t change anything, only one will work.

It always seems to be the server one as well.

You have same names for the hooks, change the 2nd arg, example:

hook.Add( “PlayerSay”, “UNIQUENAMEHERE”, …

You cant have 2 same uniquenames, because it will overwrite the old one.

Thank you very much!