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

I have custom characters in my game and for some reason .playerEntered or .playerExited does not fire on players. However .localPlayerEntered does.

The CanTouch and CanQuery properties are toggled on as well on the parts of the character. I have looked around for solution everywhere however I found little to no help to fix this issue.

I would appreciate any help. Thank you.

Customer characters aren’t the child <Player>.Character, hence why it doesn’t fire.

You can modify the code to work with it if you’re wanting to.

1 Like

Yes they are, I have already figured out the issue.

My custom character needed to have a Head part for the zone module to detect it, I’m not sure exactly why but thankfully it all works just fine now.

Thank you for the reply I appreciate it!

1 Like

I have this issue aswell for my custom characters

made a temporary fix dont know if it’ll break anything but works for me. replace line 44 in the tracker module to this:

1 Like

This is really neat! you should post this in its own topic. Its really super wonderful. Great alternative to the currently (Unusable) zone module.

1 Like

This works perfectly except for a major inconvience while setting up.

  1. The module “NetSignal” needs a folder in replicated storage called “NetworkEvents”, also needs a “Converter” module “modules.Utility.Converter” and among other things is practically unusable without these variables (Especially the module “Converter”).

Im pretty sure this resource has retired (Last update in repo in 2021).

Rip Zone! Such a good resource…

My new module SimpleZone has support for Zones inside Zones, however you won’t exit the bigger Zone, you’ll just enter the inner Zone. However, I think by setting the .Query callback to a custom one where you only consider players that arent in other zones, you can make the player exit the outer zone too!

1 Like

Hello, I’m having an issue with ZonePlus when using it with custom characters. Basically ZonePlus responds to all functions such as playerEntered and playerExited with my default roblox character, same thing happens with all other humanoid characters. However, the problem begins when I use a custom character that only contains HumanoidRootPart, Humanoid and a MeshPart (It’s basically an object, for example: a coffee cup).
Somehow ZonePlus doesn’t detect it as a player and I have been trying to solve this 2 days ago and no solutions yet, does ZonePlus depend of a specific part of the character or something to run the functions?

Yes, the answer was “ZonePlus depends of a specific part of the character to run the function”. I simply added a part to the custom character and named it Head, thanks to that now the script detects it as a player.

the zones currently dont fire their events after the players death (in a localscript), would there be any workaround to this apart from moving everything to a serverscript.
Thanks

Hello! I’ve run into a small issue with the autocomplete. I bet a lot of other people are having this issue. Requiring the module has the return type of any, which is inconvenient. The problematic code is as follows:

local referenceLocation = (game:GetService("RunService"):IsClient() and "Client") or "Server"
local referencePresent = referenceObject and referenceObject:FindFirstChild(referenceLocation)
if referencePresent then
	return require(referenceObject.Value)
end

The module returns something else before the last line, which confuses the type checker. They are going to be the same value, but it won’t have the correct type. Here’s how I fixed it:

local referenceLocation = (game:GetService("RunService"):IsClient() and "Client") or "Server"
local referencePresent = referenceObject and referenceObject:FindFirstChild(referenceLocation)

local Zone = {}
Zone.__index = Zone

if not referencePresent then
	ZonePlusReference.addToReplicatedStorage()
else
	return require(referenceObject.Value) :: typeof(Zone)
end

Just thought I would share this in case you wanted to merge this fix!


I always knew about ZonePlus, but I never needed it until now. Thanks for making great stuff! :heart:

1 Like

having trouble detecting item enter/exit. No errors during :trackitem, but itemEntered and itemExited are not firing

	local parts = attackZone:getParts()
	local characters = HitboxHandler.FilterCharacters(parts)
	print(characters)
	for _, character in characters do
		print('tracking ' .. character.Name)
		attackZone:trackItem(character)
	end
	
	table.insert(
		connections,
		attackZone.itemEntered:Connect(function(item)
			print(item.Name .. " entered")
		end)
	)
	
	table.insert(
		connections,
		attackZone.itemExited:Connect(function(item)
			print(item.Name .. " exited")
		end)
	)```
1 Like

a really great module, i used it a lot of times & it helped greatly!

It will be really hard to move away from it in the future. I suggest reading this post before you use it.

2 Likes

If zone plus is really so unperformant, why is it not reflecting in studio? I have been using it to create many zones with no issues with performance. Would I not see something as detrimental as this in the dev console?

Is anyone else having any issues with .itemEntered and .playerEntered? Neither of them are working for me right now in a new game I just started, and :getRandomPoint() causes an error and a timeout.

You still working on it man? It’s been some time and im curious.

Occasionally. Its useable. The release of SimpleZone quelled a lot of the motivation to make it feature complete however.