VIP tags and Developer tags creates private chats help?

Basically I have made a local script where people are given either Devloper tag or VIP tag and it functions perfectly with print statments apart from the fact that people can not see other tags messages. Why is this? Any help?

local MarketPlaceService = game:GetService("MarketplaceService")

local Developers = {
	"Being_Built",
	"mabba6s_RENGANCE",
	"Developer4Lifee"
}

textChatService.OnIncomingMessage = function(message: TextChatMessage)

	local properties = Instance.new("TextChatMessageProperties")

	if message.TextSource then

		local player = game:GetService("Players"):GetPlayerByUserId(message.TextSource.UserId)

		if table.find(Developers, player.Name) then
          print(player.Name.."IS a developer")
			properties.PrefixText = "<font color='#f74f25'>[Developer]</font> " .. "<font color='#ff8400'>🔨</font> " .. message.PrefixText
			
		elseif MarketPlaceService:UserOwnsGamePassAsync(player.UserId, 672258353) then 
			properties.PrefixText = "<font color='#ffff00'>[đź‘‘ VIP]</font> "..message.PrefixText
			print(player.Name.."OWNS VIP and is not a developer")
			
		else 
			print(player.Name.."DOESNT OWN VIP OR IS A DEVELOPER SO DONT GIVE HIM THE CHAT TAG")
		end


	end

	return properties

end
1 Like

Where is this LocalScript placed? Your developer table should also be UserIds instead of names, so that even if one of the developers changes their name, their tag will still show.

2 Likes
2 Likes

placed in starter GUI does this change much?

1 Like

Put it in StarterPlayerScripts.

2 Likes

if this doesn’t work ill just do @Manly_Torch tutorial

still didn’t work players cannot see each others chat

I get an inifite yield on chatservice up top. Here is my server script:

local chatService = require(game.ServerScriptService:WaitForChild("ChatServiceRunner"):WaitForChild("ChatService"))
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

local tags = {}
local developer = {TagText = "[Developer]", TagColor = Color3.fromRGB(255, 0, 4)}
local VIP = {TagText = "[đź‘‘ VIP]", TagColor = Color3.fromRGB(255, 255, 30)}
local Developers = {
	"3382361537", 
	"851194231", 
	"1423303857"
}

Players.PlayerAdded:Connect(function(player)
	if player.UserId == table.find(Developers, player.UserId) then 
		table.insert(tags, player.UserId[developer])
		print(player.Name.." Assigned Developer")
	elseif MarketplaceService:UserOwnsGamePassAsync(player.UserId, 672258353) then 
		table.insert(tags, player.UserId[VIP])
	end
end)


chatService.SpeakerAdded:Connect(function(playerName)
	local speaker = chatService:GetSpeaker(playerName)
	local player = game.Players[playerName]

	if tags[player.UserId] then
		speaker:SetExtraData("Tags",{tags[player.UserId]})
	end
end)

and is there a function for chatservice to fire event every time someone speaks?

Oh, the guide didn’t mention this (because its from 2020) but that’s for the old chat system.
If you want to use the legacy chat version change the chatversion in TextChatService to LegacyChatService.
Here’s a guide for the newest chat system if you want to use that.

(Which I made sure to test)