local Module = require(game.ReplicatedStorage.MakeChatMessage)
local ChatService = require(game:GetService("ServerScriptService"):WaitForChild("ChatServiceRunner"):WaitForChild("ChatService"))
local Players = game:GetService("Players")
local OwnerNC = BrickColor.new("Crimson").Color
local NCs = {
BrickColor.new("Lilac").Color,
BrickColor.new("Linen").Color,
BrickColor.new("Cork").Color,
BrickColor.new("Dark green").Color,
BrickColor.new("Storm blue").Color,
BrickColor.new("Tawny").Color,
BrickColor.new("Royal purple").Color,
BrickColor.new("Burgundy").Color,
BrickColor.new("Brown").Color,
BrickColor.new("Steel blue").Color,
}
function PlayerAdded(player)
local plrdn_n = player.DisplayName.."(@"..player.Name..")"
Module.SendMessage(plrdn_n.." Just Joined!",Color3.fromRGB(147,187,147),"Join")
end
ChatService.SpeakerAdded:Connect(function(Speaker)
local player = game.Players:FindFirstChild(Speaker)
if player ~= nil then
local NC = NCs[math.random(1,#NCs)]
local NCV = Instance.new("Color3Value",player)
NCV.Name = "NameColor"
if player.UserId == game.CreatorId then
Speaker:SetExtraData("NameColor", OwnerNC)
Speaker:SetExtraData("ChatColor",Color3.fromRGB(147, 147, 147))
Speaker:SetExtraData("Tags", {{TagText = "Epic -->", TagColor = Color3.fromRGB(187, 147, 107)}})
NCV.Value = OwnerNC
else
Speaker:SetExtraData("NameColor", NC)
NCV.Value = NC
end
end
end)
function PlayerRemoved(player)
local plrdn_n = player.DisplayName.."(@"..player.Name..")"
Module.SendMessage(plrdn_n.." Just Left!",Color3.fromRGB(187,147,147),"Leave")
end
for _, player in pairs(Players:GetPlayers()) do
PlayerAdded(player)
end
Players.PlayerAdded:Connect(PlayerAdded)
Players.PlayerRemoving:Connect(PlayerRemoved)
I suppose you know what this topic is about as i have marked the possible line of error
but i still dont understand that why does it even happen!
SpeakerAdded returns a string, you can use GetSpeaker to get the real Speaker.
local Module = require(game.ReplicatedStorage.MakeChatMessage)
local ChatService = require(game:GetService("ServerScriptService"):WaitForChild("ChatServiceRunner"):WaitForChild("ChatService"))
local Players = game:GetService("Players")
local OwnerNC = BrickColor.new("Crimson").Color
local NCs = {
BrickColor.new("Lilac").Color,
BrickColor.new("Linen").Color,
BrickColor.new("Cork").Color,
BrickColor.new("Dark green").Color,
BrickColor.new("Storm blue").Color,
BrickColor.new("Tawny").Color,
BrickColor.new("Royal purple").Color,
BrickColor.new("Burgundy").Color,
BrickColor.new("Brown").Color,
BrickColor.new("Steel blue").Color,
}
function PlayerAdded(player)
local plrdn_n = player.DisplayName.."(@"..player.Name..")"
Module.SendMessage(plrdn_n.." Just Joined!",Color3.fromRGB(147,187,147),"Join")
end
ChatService.SpeakerAdded:Connect(function(SpeakerString:string)
local Speaker = ChatService:GetSpeaker(SpeakerString)
local player = game.Players:FindFirstChild(SpeakerString)
if player ~= nil then
local NC = NCs[math.random(#NCs)]
local NCV = Instance.new("Color3Value",player)
NCV.Name = "NameColor"
if player.UserId == game.CreatorId then
Speaker:SetExtraData("NameColor", OwnerNC)
Speaker:SetExtraData("ChatColor",Color3.fromRGB(147, 147, 147))
Speaker:SetExtraData("Tags", {{TagText = "Epic -->", TagColor = Color3.fromRGB(187, 147, 107)}})
NCV.Value = OwnerNC
else
Speaker:SetExtraData("NameColor", NC)
NCV.Value = NC
end
end
end)
function PlayerRemoved(player)
local plrdn_n = player.DisplayName.."(@"..player.Name..")"
Module.SendMessage(plrdn_n.." Just Left!",Color3.fromRGB(187,147,147),"Leave")
end
for _, player in pairs(Players:GetPlayers()) do
PlayerAdded(player)
end
Players.PlayerAdded:Connect(PlayerAdded)
Players.PlayerRemoving:Connect(PlayerRemoved)
You should add if Speaker to verify that the speaker (player instance) exists before attempting to call instance methods on it (the same applies when you intend to call any instance method on any instance).