This is everything relating to zones whether it's polygon, box or 2d/3d circle zones
Register
This is how you register a zone this is best used if you need to check if a player has entered/exited a zone or whether they are contiously inside it
Core.Zones.Register("zoneIdentifier", { Type ="poly", --## "circle", "poly", "box" Zone = { --## "poly":table "circle":vec2(2d)/vec3(3d) "box":table {Width:2.0, Height:2.0, Pos:vector4(0,0,0,0)}vector3(0,0,0),vector3(0,0,0), }, Radius =2.5, --## "circle" ONLY Draw = { --## OPTIONAL: Used to determine if you are drawing the zone and if so what colour etc Enabled =false, Col = {R =255, G =0, B =100, A =50}, }, onStayLoopTime =500, --## OPTIONAL: WILL SEND YOUR onStay FUNCTION EVERY 500ms onStay=function() --## OPTIONALend,onEnter=function() --## OPTIONAL: Will be triggered when a player enters this zoneend,onExit=function() --## OPTIONAL: Will be triggered when a player exits this zoneend})
RemoveZone
Core.Zones.RemoveZone("zoneIdentifier")
ToggleDraw
Core.Zones.ToggleDraw("zoneIdentifier", true) --## true to draw, false to not draw...
EditColors
Core.Zones.EditColors("zoneIdentifier", {R =155, G =0, B =0, A =50})
CreatePolygon
This will allow you create a polygon in-game which then will be copied to your clipboard for easy pasting into your scripts etc
RegisterCommand("Dirk-Core:DrawPolygon", function(source,arg)local polygon = Core.Zones.CreatePolygon() Core.UI.Notify("Copied Polygon to Clipboard")print(Core.UI.CopyToClipboard(json.encode(polygon)))end)--## This is a command built into dirk-core for quickly creating polyzones but you --## could use this Core.Zones.CreatePolygon() anywhere you wanted...
IsPointInside
Could be used if you don't want to register polyzones for some reason and just want a one off check if a point is inside
local polygon = {vector3(0,0,0),vector3(0,0,0),vector3(0,0,0),}local isInside = Core.Polygon.IsPointInside(vector3(0,0,0), polygon)print("This point is inside this zone ", isInside)
plotPolygon
This will plot points within a polygon at seperation distances of your choosing aswell as the width of each cell
local polygon = {vector3(0,0,0),vector3(0,0,0),vector3(0,0,0),}local pointWidth =1.0--## How big these points arelocal pointSeperation =0.5--## How far apart the points arelocal plottedPoints = Core.Polygon.plotPolygon(polygon, pointSeperation, pointWidth)--## This will return a bunch of plotted points within the polygon with the settings --## that you have chosen, I used this for spawning a bunch of random objects at random --## points within a polygon.