60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local minZ, maxZ = nil, nil
 | |
| 
 | |
| local function handleInput(center)
 | |
|   local rot = GetGameplayCamRot(2)
 | |
|   center = handleArrowInput(center, rot.z)
 | |
|   return center
 | |
| end
 | |
| 
 | |
| function polyStart(name)
 | |
|   local coords = GetEntityCoords(PlayerPedId())
 | |
|   createdZone = PolyZone:Create({vector2(coords.x, coords.y)}, {name = tostring(name), useGrid=false})
 | |
|   Citizen.CreateThread(function()
 | |
|     while createdZone do
 | |
|       -- Have to convert the point to a vector3 prior to calling handleInput,
 | |
|       -- then convert it back to vector2 afterwards
 | |
|       lastPoint = createdZone.points[#createdZone.points]
 | |
|       lastPoint = vector3(lastPoint.x, lastPoint.y, 0.0)
 | |
|       lastPoint = handleInput(lastPoint)
 | |
|       createdZone.points[#createdZone.points] = lastPoint.xy
 | |
|       Wait(0)
 | |
|     end
 | |
|   end)
 | |
|   minZ, maxZ = coords.z, coords.z
 | |
| end
 | |
| 
 | |
| function polyFinish()
 | |
|   TriggerServerEvent("polyzone:printPoly",
 | |
|     {name=createdZone.name, points=createdZone.points, minZ=minZ, maxZ=maxZ})
 | |
| end
 | |
| 
 | |
| RegisterNetEvent("polyzone:pzadd")
 | |
| AddEventHandler("polyzone:pzadd", function()
 | |
|   if createdZone == nil or createdZoneType ~= 'poly' then
 | |
|     return
 | |
|   end
 | |
| 
 | |
|   local coords = GetEntityCoords(PlayerPedId())
 | |
| 
 | |
|   if (coords.z > maxZ) then
 | |
|     maxZ = coords.z
 | |
|   end
 | |
| 
 | |
|   if (coords.z < minZ) then
 | |
|     minZ = coords.z
 | |
|   end
 | |
| 
 | |
|   createdZone.points[#createdZone.points + 1] = vector2(coords.x, coords.y)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent("polyzone:pzundo")
 | |
| AddEventHandler("polyzone:pzundo", function()
 | |
|   if createdZone == nil or createdZoneType ~= 'poly' then
 | |
|     return
 | |
|   end
 | |
| 
 | |
|   createdZone.points[#createdZone.points] = nil
 | |
|   if #createdZone.points == 0 then
 | |
|     TriggerEvent("polyzone:pzcancel")
 | |
|   end
 | |
| end) | 
