ZonePlus v3.2.0 | Construct dynamic zones and effectively determine players and parts within their boundaries

This isn’t something I can reproduce:

How are you setting up your zones? Can you provide your zone code?

1 Like

yeah I’m going to DM you a pastebin.

EDIT:

Wow as Iwas sending you a pastebin of my code, I realized i was connecting the event each ttime a player joined with the PlayerAdded event. OOF!

this module is amazing once again! When my game makes some money i want to buy you a car.

2 Likes

Is there a way to donate?
Cause this is awesome and I noticed the model is free.
I’d love to make a donation to this amazing resource!
Thanks so much this is probably the most helpful resource I’ve found in a while!

Appreciate it! I don’t take any donations although sharing resources like ZonePlus with people who may benefit from it and helping where you can is more than enough.

1 Like

Alright! Thanks for the amazing resources :smiley:

For those interested in switching to the Deferred Signal Behaviour who use ZonePlus we’ve just released an update to make it compatible:

3 Likes

Thank you so MUCH!
I’ve been struggling with zones for some time now, and you always get the solution done.

With this module I can now finally create SafeZones for people in my new game :slightly_smiling_face:

I appreciate your work for this community!

1 Like

Does credits work instead of the thread link?
Roblox doesn’t allow me to link your thread in my description.

-NH

Sure that’s absolutely fine. .

1 Like

Having an issue around legacy tools that still use mouse.Target and mouse.Hit touching on the edges of the Zone. I’ve fixed the majority of what I can with raytracing and ignoring zone parts.

Is there any plans to support not requiring zone parts inside of workspace?
I believe it possibly wouldn’t be feasible because of the use of Touched events etc.

I believe you can just make the parts in a new collision group, and make this group not collide with the default collision group.

This should prevent the default raycasting what mouse.Hit uses from colliding.

1 Like

I have 2 questions, since I am on mobile and I cannot test. If I move the Player’s character with CFrame, while this is in a zone, would the effects of the zone still happen, or they will de-activate?
And if I want to change what should trigger the event, how would that be? Because I want a simple part when entered to trigger the event, not a Player’s character.


Also great resource, I love it!!!

Yep that should be fine, they won’t deactivate assuming their body parts are still within the zone.

You can use the partEntered and exited events to achieve this. e.g.

zone.partEntered:Connect(function(part)
    print(("part '%s' entered the zone!"):format(part.Name))
end)

zone.partExited:Connect(function(part)
    print(("part '%s' exited the zone!"):format(part.Name))
end)

Do note, the part events only work for unanchored parts.

1 Like

Thank you! I asked because I am making a cube-activated-button-to-open-door thing and this really helps me, because if I use Touched and TouchEnded, the events will fire multiple times.

But how about if I move with CFrame the Player’s character outside the zone?

That should work fine too :+1:

1 Like

I have a question, if I have a model with a hollow center would ZonePlus take in all of the bounds of the model or just the parts?

It accounts for the parts within, not the boundary of the model.

1 Like

Ok, thanks for the help, and the module is amazing it has helped and made my job a lot easier!

1 Like

Instead of rotatedregion3 couldn’t you use some trig to figure out if the rootpart’s position is inside the rotated zone?

Say you have the red cube as the point and the white cube as the zone
image

Then you rotate the cube and the point around so the cube’s orientation is at 0,0,0

Then it’s easy, you just check if the point > min and point < max of the zone

You can do this method by rotating the point by -zone.Orientation with

I haven’t tested the performance difference but I think it’s fair to say this method is probably faster

Although this will just check if a point is inside a zone and not a cube inside a zone I don’t think it will matter too much

For cuboids this is fine, however without performing additional checks this won’t account for other geometries such as Spheres, Cylinders, etc and those from MeshParts and UnionParts.

As you mentioned as well, that only accounts for a singular point, whereas ZonePlus by default provides whole-body checking. It’s also important to note that player region checks are typically not performed on the zones, they’re instead performed on the characters who then determine the zones they are within.