Hello. I just had a quick question. I currently have an Anti Cheat in one of my games which detects them players hacking and crashes their game. I wanted to make sure that this is allowed? If you have any information or areas in the TOS that warn against this type of thing or concerns please let me know. Kind Regards ZoomCode. (It sets an infinite while true loop on the client side which overloads their roblox game it doesn’t disrupt the server however)
I don’t find an issue with removing exploiters from the game, but my only question is why not just kick them? Why is there a dedicated section to crashing them instead of just kicking them?
You decide if it’s allowed in your game. You can make in your own game your own rules but that doesn’t affect roblox rules. But I think creating a banlist in your game storage so the server will remember to not allow the person to join game if banned.
Not sure Just haven’t figured out how to implment that yet but as soon as I do I will. Thanks for your feedback
Kind Regards ZoomCode
Indeed I’m currently working on a ban list Thanks for the feedback!
Always assume anything on the client can be modified, including stopping that while loop. I suggest kicking the player through the server.
It doesn’t mention anything about the legality of crashing a players game. There is no rule on using while true loops in Roblox, even if it is to crash the clients game. If you would like to crash an exploiters game which is understandable for sneaky payback I’d suggest you implement a 3 strike system, 3 strikes being a perminent ban from the game.
Thanks for the feedback. I had one more quick question. Would you happen to know if it’s possible to detect how long a players had their account for. It’s very unlikely that someone would make an account and play Island Jump within the first day of having their account.
You can do that by using this: Player | Documentation - Roblox Creator Hub and just using an if statement to check if it’s above a certain age/ number such as 1.
Yup will do I’ll be making it kick them instead. Thanks for the feedback!
Kind Regards ZoomCode!
Yea this is allowed and usually somewhat decent, obv they can prevent it from happening due to it being client-side but never under estimate the power of client-side checks. Most people just run scripts that they found and have no idea how they work, they just know what they are supposed to do. Crashing them can often make them think the script/injector is messing up causing them to just give up, atleast from what Ive seen in my own logs.
The Player includes the AccountAge (in days) which you can use to work out the join date (or very close join date depending upon the server time).
To work this out you first need to convert days → seconds then take this away from the current time (also in seconds). To convert this into a usable date you can now use os.date
Example:
local day = 60 * 60 * 24 -- seconds in a day
game.Players.PlayerAdded:Connect(function(plr)
local tm = os.time() - (day * plr.AccountAge) -- player join date in seconds
local date = os.date("!*t", tm) -- convert seconds to date
print(date.year .. "-" .. date.month .. "-" .. date.day) -- print date
end)
Hope this helps.
This is going to be very helpful Thank you!
Indeed. That’s normally the case however I have this 1 guy that checks back and seems to know how to make the Injections himself so he’s consistently making new ones as I patch them. Really annoying and I don’t quite understand why as Island Jump isn’t that big of a game.Thanks for the feedback!
Kind Regards ZoomCode.
Actually, you should always underestimate the power of clientside checks - assume they won’t secure anything, because in fact all they can do is slow a determined exploiter down.
Everyone here already said pretty much everything about this not being a very reasonable idea, but if you are 100% sure that the person in question is exploiting and your action is done manually, there are 2 ways of doing this.
The first one is the obvious while true do end loop. It will crash the client, but the exploiter will rejoin after a minute or 2.
The more interesting method is to create a massive memory leak. Just create a bunch of large strings that are different (1 character is enough) and store them all in a table so they won’t get collected. Call the Heartbeat:Wait() function now and then as not to crash the client immediately. The result might even make their system hold before the program stops responding.
But as I said, don’t make it automatic as people will think your game is broken and thus your visits will drop in case of false positives.
If you are worried about it being allowed, I would use the Player’s :Kick()
function.
local banned = {"Madchap32"}
game.Players.PlayerAdded:Connect(function(plr)
for i, v in pairs(banned) do
if(v == plr.Name) then plr:Kick() end
end
end)
Thank you guys for all the feedback and help! I’ll be putting all of this to use!
Kind Regards ZoomCode!