You can write your topic however you want, but you need to answer these questions:
I have a TextBox for a whiteboard, and it is NOT filtering text whatsoever.
There are absolutely no errors or nothing.
Filtering Script
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local sign = game.Workspace.WhiteBoardd.Part.SurfaceGui.Middle
local signLabel = sign
local setSignText = ReplicatedStorage.Events.SetSignText
local function getTextObject(message, fromPlayerId)
local textObject
local success, errorMessage = pcall(function()
textObject = TextService:FilterStringAsync(message, fromPlayerId)
end)
if success then
return textObject
elseif errorMessage then
print("Error generating TextFilterResult:", errorMessage)
end
return false
end
local function getFilteredMessage(textObject)
local filteredMessage
local success, errorMessage = pcall(function()
filteredMessage = textObject:GetNonChatStringForBroadcastAsync()
end)
if success then
return filteredMessage
elseif errorMessage then
print("Error filtering message:", errorMessage)
end
return false
end
-- Fired when client sends a request to write on the sign
local function onSetSignText(player, text)
if text ~= "" then
-- Filter the incoming message and send the filtered message
local messageObject = getTextObject(text, player.UserId)
local filteredText = ""
filteredText = getFilteredMessage(messageObject)
signLabel.Text = filteredText
end
end
setSignText.OnServerEvent:Connect(onSetSignText)
ServerSideGUI
local gui = script.Parent.SurfaceGui
local RemoteEventMiddle = game.ReplicatedStorage.Events.updateText
local ClientToServer = game.ReplicatedStorage.Events
local setSignText = game.ReplicatedStorage.Events.SetSignText
local updated1 = false
local function updateText(player, middle)
script.Parent.SurfaceGui.Middle.Text = middle
if player.Pink.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(255, 152, 220)
elseif player.DarkBlue.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(8, 24, 124)
elseif player.LightBlue.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(29, 183, 248)
elseif player.Yellow.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(255, 255, 0)
elseif player.Purple.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(170, 0, 170)
elseif player.Green.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(75, 151, 75)
elseif player.Black.Value == true then
script.Parent.SurfaceGui.Middle.TextColor3 = Color3.fromRGB(0,0,0)
end
if not updated1 then
updated1 = true
wait(2.5)
ClientToServer.ClientToServer:FireAllClients(script.Parent.SurfaceGui.Middle.Text)
print(script.Parent.SurfaceGui.Middle.Text)
updated1 = false
end
end
RemoteEventMiddle.Parent.updateText.OnServerEvent:Connect(updateText)
ClientSideGUI
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local screen = playerGui.SurfaceGui.Middle
local setSignText = ReplicatedStorage.Events:WaitForChild("SetSignText")
local function onClick()
local message = screen.Text
if message ~= "" then
setSignText:FireServer(message)
print(message)
end
end
while true do
wait()
onClick()
print('clicked')
end