If the person doing it is communicating with you it’s possible they might be misleading you. A common way that exploiters crash games is by spamming remote events and functions. There’s no patch for it; you would have to monitor the remotes and detect when players are spamming, assuming that’s what the issue is.
You can’t really prevent it, they spam remotes to send request to the server. the server has to handle these request one way or another. I know that some of the exploits abuse the remote functions/events that deal with roblox’s chat.
You can count how many times a player has fired a remote event. If they fire so many times, just shut them off. Either kick them or immediately drop the event.
Have a table which the keys are players and the indices are integers. Add one to the player whenever they fire an event. Clear it after X seconds on a separate corountine. You can check if the player went over the allocated amount of requests when you clear it or whenever the event is fired. From there, you can do whatever you want with them.
You’d have to make some common-point of truth (like a module script) that other server scripts can use to keep track of how many times a player has fired events. Then, you can require it and modify the code as needed. You can make it so that module returns a function that can add one to the number of times the player has fired an event.
I have a fix for this! These players fire remotes to everybody spamming it Just do if a remote gets fired twice in a second they get banned like a trap remote
Let me say it in better words, my brother used to exploit and he had a chat script in remote spy! A remote gets fired when you chat so you wanna kinda prevent the remote from spamming randomly
If you have remote events in your game, the only best option is by adding a Player Debounce Table or better called as a Personalized Cooldown for the remote event.
Example, you create a table in the remote server script but outside the remote OnServerEvent. When they fire the event, the script will add that player into the table, if its fired again but they’re still in the table, it returns nil.
Add a delay function as well so you can remove the player from the table. Recommend putting the Player’s UserId instead of the Player’s instance.
Here is some code:
local remote = game.ReplicatedStorage.Remote
local PlayerDebounceTable = {}
remote.OnServerEvent:Connect(function(plr)
if PlayerDebounceTable[plr.UserId] == true then return end -- Checks if the player is in the table so the event wont do whatever you put in the event.
PlayerDebounceTable[plr.UserId] = true -- Adds the player in the table.
delay(5, function()
PlayerDebounceTable[plr.UserId] = nil -- Removes the player from the table.
end)
-- Your code here.
end)