I put together a little safe zone module for myself where the CLIENT loops every 1 second and does Region3 checks to see what zone it might be in. Then if it finds itself in a zone, it sends a remote to the SERVER for verification. If the server can confirm that, it will apply a state to the player giving them invulnerability to any attack, a powerful thing to have! (if your not actually in a safe zone)
When the player leaves the zones, it also sends a remote to the server letting it know it left, server makes the checks again, and removes the state as needed.
Now here is the issue, an exploiter can simply head in to a safe zone, grab the status legitimately, then never send any reports to the server letting it know it left, thereby keeping the invulnerability as long as they want.
I wanted to avoid any looping checks on the server, yet I am now thinking I must do that or else face exploiting players pretty quickly.
Is there any other way? Has someone done this sort of thing before? Perhaps I could run a less frequent check to see fi they are actually still in the zone? Any advice would be very helpful
Why would I use a Touched event? Region3 is more reliable. Touched is also very unreliable in many way for such things. Not sure what you mean by this being better.
any client, even a old phone should be able to handle MANY 1 second loops. There are constant checks of all sorts happening. The client machine is much more capable of handling these things than the server.
When people say “.Touched is bad” it doesn’t mean for every context. Region3 is unreliable as well (given it’s based on a 4 stud voxels) and looping a region3 for multiple zones will be much more demanding than .Touched.
But I would recommend Zone+ since you’re refusing to use it. It’s an open source module unless you can show me a certified patent showing me you can’t access the API
I may be wrong about Zone+ being open source, the install instruction show it doing a require on an ID and I didn’t check that.
However it does rely on HD admin and HD maid and HD signal which I dont want.
from the source code:
local HDAdmin = replicatedStorage:WaitForChild("HDAdmin")
local Signal = require(HDAdmin:WaitForChild("Signal"))
local Maid = require(HDAdmin:WaitForChild("Maid"))
I don’t see how Zone+ could be more otimized than my system, it include features that I do not need for my game at all. My zones are simple region3 checks without any raycasts (I don’t need rotated zones or weird shapes).
this was never an attack on Zone+. I don’t need raycasts added to my Region3 checks, regardless of how optimized they are. I am not checking irregular shapes.
im askign for help on my own issue, not asking for suggestions on third-party modules. I thought that was clear in my OP, do I need to edit the OP to be more clear?