Hello everyone! Since chat was blocked in Russia, I decided to create my own place to chat. I developed a system that works like this: a client sends a text message to the server, and the server sends the message to all clients in a specific area (to ensure privacy).
--Client UI
replicatedstorage = game:GetService("ReplicatedStorage")
local eventClientUI = replicatedstorage:WaitForChild("eventClientUi")
local eventText = replicatedstorage:WaitForChild("eventText")
local textBox = script.Parent.Parent
eventClientUI.OnClientEvent:Connect(function()
textBox.Visible = true
end)
script.Parent.MouseButton1Click:Connect(function()
eventText:FireServer(textBox.Text)
print("eventText Fired Server, Text: " .. textBox.Text)
end)
--Server Script inside the Table1
replicatedstorage = game:GetService("ReplicatedStorage")
local eventText = replicatedstorage:WaitForChild("eventText")
local eventClientUI = replicatedstorage:WaitForChild("eventClientUi")
local eventClientText = replicatedstorage:WaitForChild("eventClientText")
local playersInBox = {}
local TouchBox = script.Parent.TouchBox
TouchBox.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if not table.find(playersInBox, player) then
table.insert(playersInBox, player)
end
end
end)
TouchBox.TouchEnded:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if table.find(playersInBox, player) then
table.remove(playersInBox, table.find(playersInBox, player))
end
end
end)
local sign = script.Parent.sign
local screen = sign.screen
screen.ClickDetector.MouseClick:Connect(function(Player)
if table.find(playersInBox, Player) then
eventClientUI:FireClient(Player)
end
end)
eventText.OnServerEvent:Connect(function(Sender, Text)
print("eventText OnServerEvent, Text: " .. Text .. " Sender: " .. Sender.Name)
print(playersInBox)
for i, player in ipairs(playersInBox) do
eventClientText:FireClient(player, Text, Sender)
print("eventClientText fired client " .. player.Name .. " Text: " .. Text .. " Sender: " .. Sender.Name)
end
end)
--Client script inside the scrolling frame
replicatedstorage = game:GetService("ReplicatedStorage")
local eventClientText = replicatedstorage:WaitForChild("eventClientText")
eventClientText.OnClientEvent:Connect(function(Text, Player)
print("eventClientText Got OnClientEvent " .. "Text: " .. Text .. "Sender: " .. Player.Name)
local message = Instance.new("TextLabel")
message.Text = Player.Name .. ": " .. Text
message.Parent = script.Parent
message.TextColor3 = Player.TeamColor.Color
message.TextStrokeTransparency = 0
message.TextStrokeColor3 = Color3.new(0, 0, 0)
message.TextScaled = true
message.Font = Enum.Font.SourceSansBold
message.BackgroundTransparency = 1
message.Size = UDim2.new(1, 0, 0.1, 0)
message.Position = UDim2.new(0, 0, 0, 0)
end)
eventClientText is not responding to the eventClientText:FireClient
I cant understand why it isnt responding, please help me fix it.




