I've tried the roblox wiki and everything but still can't figure out how to filter this chat can someone help?
game.ReplicatedStorage:WaitForChild("Events")
game.ReplicatedStorage.Events:WaitForChild("AddChat")
game.ReplicatedStorage.Events:WaitForChild("FillChats")
game.StarterGui:SetCoreGuiEnabled("Chat",false)
local Player = game.Players.LocalPlayer
local Tags = {
TheLuaDeveloper = "Dev",
}
local UIS = game:GetService("UserInputService")
local IntervalChat = 0
local Typing = false
local WaitChatting = true
function GetTags(plr)
if Tags[plr.Name] then
return " [" .. Tags[plr.Name] .. "] "
else
return " "
end
end
function GetNum(lin)
if lin < 45 then
return 20
elseif lin < 90 then
return 40
elseif lin < 135 then
return 60
end
end
function MakeChat(plr,cc,speech,tag,ccc)
local frame = Instance.new("Frame",script.Parent.Back.Chats)
frame.Size = UDim2.new(1,0,0,20)
frame.BackgroundTransparency = 1
local pn = Instance.new("TextLabel",frame)
pn.Text = tag .. "[" .. plr.Name .. "]: "
pn.BackgroundTransparency = 1
pn.TextColor3 = cc
pn.Name = "namtag"
pn.Font = "SourceSansBold"
pn.FontSize = "Size18"
pn.TextStrokeTransparency = .75
pn.TextXAlignment = "Left"
pn.Size = UDim2.new(0,2,0,20)
repeat
pn.Size = pn.Size + UDim2.new(0,1,0,0)
until pn.TextFits == true
local sn = Instance.new("TextLabel",frame)
sn.TextXAlignment = "Left"
sn.Font = "SourceSansBold"
sn.FontSize = "Size18"
sn.Name = "speech"
sn.TextColor3 = ccc
sn.Text = speech
sn.BackgroundTransparency = 1
sn.TextStrokeTransparency = .75
sn.TextWrapped = true
sn.Size = UDim2.new(0,5,0,20)
repeat
sn.Size = sn.Size + UDim2.new(0,1,0,0)
until sn.TextFits == true or sn.Size.X.Offset > 400 - pn.Size.X.Offset
if sn.TextFits == true then
sn.Position = pn.Position + UDim2.new(0,pn.Size.X.Offset,0,0)
frame.Position = UDim2.new(0,0,1,-sn.Size.Y.Offset)
else
sn.TextYAlignment = "Top"
sn.Size = UDim2.new(0,400 - pn.Size.X.Offset,0,20)
sn.Position = pn.Position + UDim2.new(0,2,0,20)
if sn.TextFits == false then
if string.len(speech) < 45 then
sn.Size = UDim2.new(0,400 - pn.Size.X.Offset,0,20)
elseif string.len(speech) < 90 then
sn.Size = UDim2.new(0,400 - pn.Size.X.Offset,0,40)
else
sn.Size = UDim2.new(0,400 - pn.Size.X.Offset,0,60)
end
end
frame.Size = UDim2.new(1,0,0,sn.Size.Y.Offset + 20)
frame.Position = UDim2.new(0,0,1,-sn.Size.Y.Offset - 20)
end
frame.Parent = nil
return frame
end
UIS.InputBegan:connect(function(key)
if key.KeyCode == Enum.KeyCode.Slash and not Typing then
script.Parent.Back.Type:CaptureFocus()
end
end)
script.Parent.Back.Type.Focused:connect(function()
Typing = true
script.Parent.Back.Type.BackgroundTransparency = 0
script.Parent.Back.Type.TextStrokeTransparency = 1
script.Parent.Back.Type.TextColor3 = Color3.new(0,0,0)
while Typing do
wait(.1)
local num = GetNum(string.len(script.Parent.Back.Type.Text))
if num == 20 then
script.Parent.Back.Type:TweenSizeAndPosition(UDim2.new(0,400,0,30),UDim2.new(0,5,1,-30),"Out","Quad",.05,true)
elseif num == 40 then
script.Parent.Back.Type:TweenSizeAndPosition(UDim2.new(0,400,0,50),UDim2.new(0,5,1,-30),"Out","Quad",.05,true)
else
script.Parent.Back.Type:TweenSizeAndPosition(UDim2.new(0,400,0,70),UDim2.new(0,5,1,-30),"Out","Quad",.05,true)
end
end
end)
script.Parent.Back.Type.FocusLost:connect(function(Entered)
Typing = false
script.Parent.Back.Type.BackgroundTransparency = 1
script.Parent.Back.Type.TextStrokeTransparency = .5
script.Parent.Back.Type.TextColor3 = Color3.new(255/255,255/255,255/255)
if Entered and script.Parent.Back.Type.Text ~= "" then
game.ReplicatedStorage.Events.AddChat:FireServer(Color3.new(255,255,255),GetTags(Player),script.Parent.Back.Type.Text)
script.Parent.Back.Type.Text = "Click here or type '/' to chat"
end
end)
game.ReplicatedStorage.Events.RepChat.OnClientEvent:connect(function(args,p)
if not WaitChatting then
local chat = MakeChat(p,p.TeamColor.Color,args[3],args[2],args[1])
for i,v in pairs(script.Parent.Back.Chats:GetChildren()) do
v:TweenPosition(UDim2.new(0,0,1,v.Position.Y.Offset - chat.Size.Y.Offset),"Out","Quad",.1,true)
if v.Position.Y.Offset < -v.Size.Y.Offset -200 then
v:Destroy()
end
end
chat.Parent = script.Parent.Back.Chats
end
end)
game.ReplicatedStorage.Events.FillChats.OnClientEvent:connect(function(chats)
print("Filling")
for i = #chats,1,-1 do
if chats[i] then
local chat = MakeChat(chats[i][2],chats[i][2].TeamColor.Color,chats[i][1][3],chats[i][1][2],chats[i][1][1])
for i,v in pairs(script.Parent.Back.Chats:GetChildren()) do
v:TweenPosition(UDim2.new(0,0,1,v.Position.Y.Offset - chat.Size.Y.Offset),"Out","Quad",1/30,true)
if v.Position.Y.Offset < -v.Size.Y.Offset -200 then
v:Destroy()
end
end
chat.Parent = script.Parent.Back.Chats
else
WaitChatting = false
end
wait()
end
WaitChatting = false
end)
