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

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.

Sometimes zones do not work, but there’s no error in console. I’m using it in ServerScript like that:

local replicatedStorage = game:GetService("ReplicatedStorage")
local Zone = require(replicatedStorage.Zone)
local container = Zone.new(mainPart)
local eventConnect

eventConnect = container.playerEntered:Connect(function(player)
	eventConnect:Disconnect()
    --- (main code)
end)

This only works half the time. I’m using custom character with meshParts.

UPDATE: it seems like if your character has only MeshParts, ZonePlus not always working, you need to add at least one BasePart