Crashing a Hackers game?

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)

2 Likes

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?

3 Likes

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.

1 Like

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

1 Like

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.

1 Like

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.

3 Likes

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.

1 Like

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.

1 Like

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. :herb:

2 Likes

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.

2 Likes

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)
1 Like

Thank you guys for all the feedback and help! I’ll be putting all of this to use!
Kind Regards ZoomCode!