0% found this document useful (0 votes)
38 views3 pages

Chat Ban Patch

The script is designed to prevent unauthorized chat interactions in a game by hooking into various methods and events related to the chat system. It denies attempts to send messages or report players through the game's remote events and provides notifications to the user if such attempts are detected. Additionally, it clears the chat input if the user is not focused on the chat bar and the input is not empty.

Uploaded by

canceledtw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views3 pages

Chat Ban Patch

The script is designed to prevent unauthorized chat interactions in a game by hooking into various methods and events related to the chat system. It denies attempts to send messages or report players through the game's remote events and provides notifications to the user if such attempts are detected. Additionally, it clears the chat input if the user is not focused on the chat bar and the input is not empty.

Uploaded by

canceledtw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

game.

Loaded:Wait()
getgenv().a=nil
getgenv().c=nil
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local
ChatBar=LocalPlayer.PlayerGui:WaitForChild("Chat"):WaitForChild("Frame").ChatBarPar
entFrame.Frame.BoxFrame.Frame.ChatBar
local ChatMain =
LocalPlayer.PlayerScripts:WaitForChild("ChatScript"):WaitForChild("ChatMain")
local MessagePostedEvent
local
SayMessageRequest=game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.
SayMessageRequest
local StarterGui=game:GetService("StarterGui")
for _, object in next, getgc(true) do
if type(object) ~= "table" then continue end
local MessagePosted = rawget(object, "MessagePosted")
if not MessagePosted then continue end
local Fire = rawget(MessagePosted, "fire")
if not Fire then continue end
local FunctionScript = getfenv(Fire).script
if FunctionScript ~= ChatMain then continue end
for _, Event in next, debug.getupvalues(Fire) do
if typeof(Event) == "Instance" then
MessagePostedEvent = Event
end
end
end
local old;
old=hookmetamethod(game,"__namecall",newcclosure(function(self,...)
local method=getnamecallmethod()
if not checkcaller() then
if method=="FireServer" and self==SayMessageRequest and
tostring(getcallingscript())~="ChatMain" then
warn("Game tried to chat for the player through the SayMessageRequest
remote event. Attempt denied.")
return
elseif method=="CaptureFocus" and self==ChatBar then
warn("Game tried to send a legit message through the chat as the local
player via capturing the chat focus. Attempt denied.")
if tostring(getcallingscript())~="ChatScript" then
if getgenv().a==nil then

setclipboard(getcallingscript().GetFullName(getcallingscript()))
StarterGui.SetCore(StarterGui,"SendNotification",{
Title="Copied to clipboard",
Text="The game is trying to force you to chat in
"..getcallingscript().GetFullName(getcallingscript()),
Button1="Okay!",
Duration=10})
StarterGui.SetCore(StarterGui,"SendNotification",{
Title="Copied to clipboard",
Text="It is recommended you go there (through dex) and
disable/delete it to avoid accidentally sending potentially inappropriate
messages.",
Button1="Okay!",
Duration=10})
StarterGui.SetCore(StarterGui,"SendNotification",{
Title="Copied to clipboard",
Text="The path has also been copied to clipboard so you
won't lose it in case this warning is gone too fast.",
Button1="Okay!",
Duration=10})
getgenv().a="e"
end
end
return
elseif method=="ReportAbuse" and self==Players then
warn("Game tried to report the player. Attempt denied.")
return error("Ha ha")
elseif method=="Fire" and self==MessagePostedEvent then
warn("Game tried using the MessagePosted bindable event. Attempt
denied.")
return
end
end
return old(self,...)
end))
local old2;
old2=hookmetamethod(game,"__index",newcclosure(function(self,b,...)
if not checkcaller() then
if b=="FireServer" and self==SayMessageRequest and
tostring(getcallingscript())~="ChatMain" then
warn("Game tried to chat for the player through the SayMessageRequest
remote event. Attempt denied.")
return
elseif b=="CaptureFocus" and self=="ChatBar" then
warn("Game tried to send a legit message through the chat as the local
player via capturing the chat focus. Attempt denied.")
if tostring(getcallingscript())~="ChatScript" then
if c==nil then
setclipboard(getcallingscript():GetFullName())
StarterGui:SetCore("SendNotification",{
Title="Copied to clipboard",
Text="The game is trying to force you to chat in
"..getcallingscript():GetFullName(),
Button1="Okay!",
Duration=10})
StarterGui:SetCore("SendNotification",{
Title="Copied to clipboard",
Text="It is recommended you go there (through dex) and
disable/delete it to avoid accidentally sending potentially inappropriate
messages.",
Button1="Okay!",
Duration=10})
StarterGui:SetCore("SendNotification",{
Title="Copied to clipboard",
Text="The path has also been copied to clipboard so you
won't lose it in case this warning is gone too fast.",
Button1="Okay!",
Duration=10})
c="e"
end
end
return
elseif b=="ReportAbuse" and self==Players then
warn("Game tried to report the player. Attempt denied.")
return error("Ha ha")
elseif b=="Fire" and self==MessagePostedEvent then
warn("Game tried using the MessagePosted bindable event. Attempt
denied.")
return
end
end
return old2(self,b,...)
end))
task.spawn(function()
while task.wait() do
if not ChatBar:IsFocused() and ChatBar.Text~="" then
ChatBar.Text=""
end
end
end)

You might also like