My game is constantly being attacked by exploiters, using third party software to delete the map in my experience, making players endlessly fall to their deaths when spawning
Me and my close team think they are doing this through remote events, however i am not an expert in scripting and the remote event side of things.
Below is a screenshot from the exploiters YouTube stream, in which he is exploiting my game, deleting the map and “Removing players from the Data Model”
you have a remote event set up to delete objects?
what i see in the picture is the exploiter using btools, which only affect client side, and exploiters cant just hack in remote events to replicate them, are you sure players are actually falling to their death? because, if i think about it, unless you made btools with remote events that replicate to the entire server, theres no other way the exploiter could make players fall to their death. so unless you made remote events for that, theres no way to stop the exploiter to hack on his client other than banning him
It is most likely an unsecure remoteevent as players will get kicked from the game with the message “Player has been removed from DataModel” if the player object has been deleted (not kicked)
Your only option now is to comb through all your scripts and find the remote event
The easiest way is by doing Ctrl + Shift + F and searching for .OnServerEvent or .OnServerInvoke
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ExampleRemoteEvent = ReplicatedStorage:WaitForChild("ExampleRemoteEvent")
-- Example function to fire an event
local function fireEvent()
local data = "Some data" -- This is an example. Replace with your actual data.
ExampleRemoteEvent:FireServer(data)
end
-- Call fireEvent when needed, e.g., on button click
Server
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ExampleRemoteEvent = Instance.new("RemoteEvent")
ExampleRemoteEvent.Name = "ExampleRemoteEvent"
ExampleRemoteEvent.Parent = ReplicatedStorage
-- Function to validate the data
local function isValidData(data)
-- Implement your validation logic here
-- Example: Check if data is a string and not too long
if typeof(data) == "string" and #data <= 100 then
return true
else
return false
end
end
ExampleRemoteEvent.OnServerEvent:Connect(function(player, data)
if isValidData(data) then
-- Proceed with the intended action
print(player.Name .. " sent valid data: " .. data)
else
-- Invalid data, log and take action if needed
warn(player.Name .. " sent invalid data: " .. tostring(data))
-- Optionally, kick the player or log the incident
end
end)
Or get some anti exploit detection of these remotes if that’s what you think caused it:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Log suspicious activity
local function logSuspiciousActivity(player, message)
print("Suspicious activity detected from " .. player.Name .. ": " .. message)
-- Optionally, kick the player or take other actions
player:Kick("Suspicious activity detected: " .. message)
end
-- Monitor Remote Event Usage
local function monitorRemoteEvents()
for _, remote in pairs(ReplicatedStorage:GetChildren()) do
if remote:IsA("RemoteEvent") or remote:IsA("RemoteFunction") then
remote.OnServerEvent:Connect(function(player, ...)
local args = {...}
-- Implement your checks here
-- Example: Log excessive usage or invalid arguments
logSuspiciousActivity(player, "Excessive or invalid usage of " .. remote.Name)
end)
end
end
end
monitorRemoteEvents()